/* 3판(11/10 규진님) — 무채색 + 비대칭 잡지형. 이 파일이 rr.css 위에 덮인다.
   단계: #0A0A0A · #141414 · #1F1F1F · #8A8A85 · #D9D7D2 · #F4F2EE · 빨강은 「우리 가게 표시 · 경보 · 핵심 숫자 하나」에만, 얇은 선·점·글자로 */
:root{--g1:#141414;--g2:#1F1F1F;--g3:#8A8A85;--g4:#D9D7D2;--sh:color-mix(in srgb,var(--fg) 22%,transparent)}
:root,.light{--p1:color-mix(in srgb,var(--fg) 5%,var(--bg));--p2:color-mix(in srgb,var(--fg) 9%,var(--bg));--p3:color-mix(in srgb,var(--fg) 15%,var(--bg));--mu:var(--g3);--sh:color-mix(in srgb,var(--fg) 22%,transparent);--pop:4px 4px 0 var(--sh)}
:root{--p1:var(--g1);--p2:var(--g2)}

/* ── 큰 빨강 면 → 무채색 ── */
.bdg.proxy{border-color:var(--fg);color:var(--fg)}
.bdg.need{background:transparent;color:var(--fg);border:1.5px solid var(--fg)}
.bdg.need::before{background:var(--red)}
.src.s-입력{border-color:var(--fg);color:var(--fg)}
.kpi.hot{border-color:var(--fg);box-shadow:var(--pop)}
.verdict{border-left-color:var(--fg)}
.chip.on{border-color:var(--fg);color:var(--fg);background:var(--p2)}
.btn.pri{background:var(--fg);border-color:var(--fg);color:var(--bg)}
.stars{color:var(--fg)}
.mapl .it.me{background:var(--p2);outline:1.5px solid var(--red)}
.stk{background:var(--fg);color:var(--bg);box-shadow:2px 2px 0 var(--sh)}
.stk.inv{background:transparent;color:var(--fg);outline:1.5px solid var(--fg);outline-offset:-1.5px;box-shadow:none}
.stk.alert{background:transparent;color:var(--red);outline:1.5px solid var(--red);outline-offset:-1.5px;box-shadow:none}
.card.popc{border:0;border-top:1px solid var(--ln2);box-shadow:none}
.ledger{box-shadow:none;border:0;border-top:1px solid var(--ln2);border-bottom:1px solid var(--ln2);border-radius:0}
.ledger>div:first-child{background:transparent;color:var(--fg)}
.ledger>div:first-child small{color:var(--mu)}
.ledger>div:first-child b::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red);margin-right:7px;vertical-align:2px}
.ray .rwave{stroke:var(--g3)}
.ray .rc,.ray .rbg{fill:var(--g3)}
.ray .rbang text{fill:var(--ink)}
.ctitle h1 em{background:transparent;color:var(--fg);box-shadow:none;border-bottom:3px solid var(--fg);transform:none;padding:0}
.say{box-shadow:none;border:0;border-top:1px solid var(--ln2);border-radius:0;padding:18px 0}
.kp.hot,.kp.tilt.hot,.rxc.p1,.rxc.tilt.p1{box-shadow:4px 4px 0 var(--sh),0 22px 30px -18px color-mix(in srgb,var(--ink) 45%,transparent)}
.kp.tilt,.rxc.tilt{box-shadow:4px 4px 0 var(--sh),0 22px 30px -18px color-mix(in srgb,var(--ink) 45%,transparent)}
.sp-r{fill:var(--fg)}
.ladder .fl{stroke:var(--fg)}
.ladder .flt{fill:var(--fg)}
.ladder .first{fill:var(--p2)}
.hb.me .tr i{box-shadow:none}
.phone{box-shadow:0 0 0 1.5px var(--ln2),8px 10px 0 var(--sh),0 40px 60px -30px var(--ink)}
.ring .fgc{stroke:var(--fg)}
.ring.alert .fgc{stroke:var(--red)}
.chk.no b{color:var(--fg)}
.bubbles .bb.top{background:var(--fg);color:var(--bg);border-color:var(--fg);box-shadow:3px 3px 0 var(--sh)}
.lowc{border:1px solid var(--ln2);border-left:3px solid var(--red)}
.rxc .no{background:var(--fg);color:var(--bg);box-shadow:2px 2px 0 var(--sh)}
.flow span.on{background:var(--p3);color:var(--fg);border-color:var(--p3)}
.flow span.now{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.rm-hud b{color:var(--fg)}
.a4-hd .lg i{background:var(--ink)}
.a4 mark{background:linear-gradient(transparent 55%,color-mix(in srgb,var(--ink) 16%,transparent) 55%)}
.a4-cm{border-left-color:var(--ink);background:color-mix(in srgb,var(--ink) 5%,transparent)}
.a4 .seal{border-color:var(--ink);color:var(--ink)}
.a4{box-shadow:0 1px 2px color-mix(in srgb,var(--ink) 20%,transparent),0 24px 40px -24px var(--ink),8px 8px 0 color-mix(in srgb,var(--ink) 18%,transparent)}
.pop-card{box-shadow:0 2px 4px color-mix(in srgb,var(--ink) 20%,transparent),calc(var(--sx,0px) * -1) calc(60px + var(--sy,0px) * -1) 100px -30px var(--ink),0 0 0 1px color-mix(in srgb,var(--paper) 8%,transparent)}
.pop-head button{border-bottom-color:var(--ink)}
.folder3d::before{background:#2A2A28}
.folder3d .pocket{background:var(--g2);border:1px solid #2A2A28}
.light .folder3d::before{background:var(--g4)}
.light .folder3d .pocket{background:var(--g3)}
.xbar{background:var(--g2);color:var(--g4);border-bottom:1px solid #2A2A28}
.xbar::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red);margin-right:8px;vertical-align:1px}
.toast{box-shadow:4px 4px 0 var(--sh)}

/* ── 카드 = 잡지 칸(바탕 없이 얇은 괘선) ── */
.card{background:transparent;border:0;border-top:1px solid var(--ln2);border-radius:0;padding:18px 0 24px}
.card .card{border-top:1px dashed var(--ln)}
.ch h3{font-size:12.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.ch h3 .stk{font-size:9.5px}
.kp{background:var(--bg)}
.light .kp{background:var(--paper)}

/* ── 비대칭 잡지 격자 ── */
.mag{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:32px;row-gap:0;align-items:start}
.mag>*{min-width:0}
.mag>.vr{border-left:1px solid var(--ln2);padding-left:28px;margin-left:-29px}
.mag>.card{margin-top:0!important}
.c1{grid-column:span 1}.c2{grid-column:span 2}.c3{grid-column:span 3}.c4{grid-column:span 4}.c5{grid-column:span 5}.c6{grid-column:span 6}.c7{grid-column:span 7}.c8{grid-column:span 8}.c9{grid-column:span 9}.c12{grid-column:1/-1}
.r2{grid-row:span 2}.r3{grid-row:span 3}
.cap{font-size:11px;color:var(--mu);font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.giant{font-family:var(--f-num);font-weight:700;font-size:clamp(150px,17vw,270px);line-height:.8;letter-spacing:-.07em;margin:6px 0 0 -8px;white-space:nowrap}
.giant .u{font-size:.2em;letter-spacing:-.02em;margin-left:6px;color:var(--mu)}
.giant.hot{color:var(--red)}
.giant.m{font-size:clamp(90px,10vw,160px)}
.bigline{font-size:clamp(22px,2.2vw,32px);font-weight:900;letter-spacing:-.04em;line-height:1.3}
.strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--ln2)}
.strip>div{padding:14px 18px 16px 0;border-right:1px solid var(--ln)}
.strip>div+div{padding-left:18px}
.strip>div:last-child{border-right:0}
.strip b{display:block;font-family:var(--f-num);font-size:40px;line-height:1.05;letter-spacing:-.04em;margin:6px 0 2px}
.strip b small{font-size:13px;color:var(--mu);margin-left:3px}
.strip .b{font-size:11px;color:var(--mu)}
.dot-r{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--red);vertical-align:1px;margin-right:6px}
/* 타임라인(세로) */
.tl{list-style:none;margin:0;padding:0;position:relative}
.tl::before{content:'';position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--ln2)}
.tl li{position:relative;padding:0 0 14px 22px;font-size:13px}
.tl li::before{content:'';position:absolute;left:0;top:5px;width:11px;height:11px;border-radius:50%;background:var(--bg);border:1.5px solid var(--fg)}
.tl li.k-진단::before{background:var(--fg)}
.tl li.k-리포트::before{border-radius:2px}
.tl li.last::before{background:var(--red);border-color:var(--red)}
.tl time{display:block;font-family:var(--f-num);font-size:11px;color:var(--mu)}
.tl em{font-style:normal;font-size:10.5px;font-weight:800;color:var(--mu);margin-right:6px}
/* 업종 기준 위치 게이지 */
.pct{margin:12px 0}
.pct .t{display:flex;justify-content:space-between;font-size:12.5px;font-weight:700}
.pct .tr{position:relative;height:10px;margin-top:6px;background:repeating-linear-gradient(90deg,var(--p3) 0 1px,transparent 1px 10%);border-bottom:1px solid var(--ln2)}
.pct .tr i{position:absolute;top:-4px;width:2px;height:18px;background:var(--fg)}
.pct .tr i::after{content:attr(data-l);position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-family:var(--f-num);font-size:10px;font-weight:700;white-space:nowrap}
.pct .tr .mid{background:var(--g3);width:1px}
/* 동네 검색어 지도(글자 거품) */
.wmap{position:relative;height:250px;border:1px solid var(--ln);background-image:var(--dot);background-size:8px 8px}
.wmap span{position:absolute;transform:translate(-50%,-50%);font-weight:900;letter-spacing:-.04em;white-space:nowrap;line-height:1}
.wmap span small{display:block;font-family:var(--f-num);font-size:10px;font-weight:700;color:var(--mu);text-align:center;margin-top:2px}
.wmap span.me{color:var(--red)}
/* 열지도 · 산점도 */
.heat{display:grid;gap:3px;font-size:11px}
.heat .hc{height:30px;display:grid;place-items:center;font-family:var(--f-num);font-weight:700;border-radius:2px}
.heat .hl{display:flex;align-items:center;font-weight:700;font-size:12px;white-space:nowrap;overflow:hidden}
.heat .ghost{border:1px dashed var(--ln2)}
.scat{width:100%;height:auto;display:block;overflow:visible}
.scat .ax{stroke:var(--ln2)}.scat .gl{stroke:var(--ln);stroke-dasharray:2 4}
.scat text{font-size:10.5px;fill:var(--mu);font-family:var(--f-num)}
.scat .p{fill:var(--fg)}.scat .p.me{fill:var(--red)}
.scat .pl{font-family:var(--f-ui);font-weight:800;fill:var(--fg);font-size:11.5px}
.scat .zone{fill:var(--p2)}
/* 리뷰 대표 문장 카드 · 요일 */
.quotes{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.qc{border-top:3px solid var(--fg);padding:12px 0 0}
.qc b{font-size:15px;font-weight:900;letter-spacing:-.03em}
.qc .pc{font-family:var(--f-num);font-size:34px;font-weight:700;letter-spacing:-.04em;line-height:1}
.qc p{font-size:13px;line-height:1.55;margin:8px 0 0;font-family:'Nanum Pen Script','Noto Sans KR',cursive;font-size:19px;line-height:1.3}
.wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;align-items:end;height:130px}
.wk div{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font-size:11px;font-weight:700;gap:4px}
.wk i{display:block;width:100%;background:var(--fg);border-radius:2px 2px 0 0;min-height:2px}
/* 사진 목록 썸네일 자리 · 메뉴판 점검 */
.thumbs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}
.thumbs div{aspect-ratio:1;border:1px solid var(--ln2);display:grid;place-items:center;font-size:10px;color:var(--mu);text-align:center;background-image:var(--dot);background-size:6px 6px;line-height:1.2;padding:2px}
.thumbs div.on{background:var(--p3);color:var(--fg);font-weight:800}
.thumbs div.big{grid-column:span 2;grid-row:span 2;font-size:12px}
.menuck{width:100%;font-size:12.5px}
.menuck td{padding:6px 4px}
.menuck .o{font-weight:900}.menuck .x{color:var(--mu)}
/* 가격 사다리 · 카드 넘기기 */
.pladder{position:relative;height:330px;border-left:1px solid var(--ln2);margin-left:54px}
.pladder .tk{position:absolute;left:-54px;width:48px;text-align:right;font-family:var(--f-num);font-size:10.5px;color:var(--mu);transform:translateY(-50%)}
.pladder .it{position:absolute;left:0;right:0;display:flex;align-items:center;gap:8px;transform:translateY(-50%);font-size:12px;font-weight:700}
.pladder .it::before{content:'';width:22px;height:1px;background:var(--fg)}
.pladder .it.me{color:var(--red)}.pladder .it.me::before{background:var(--red);height:2px}
.pladder .it .num{font-weight:700}
.carou{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 4px 14px;scrollbar-width:thin}
.carou>*{flex:0 0 min(300px,80%);scroll-snap-align:start}
.carbtn{display:flex;gap:6px}
/* 메뉴 판매량(예시 데이터) */
.demo-tag{display:inline-block;font-size:10px;font-weight:900;letter-spacing:.12em;padding:2px 7px;border:1.5px dashed var(--fg);margin-left:6px;vertical-align:2px}
.src.s-예시{border:1px dashed var(--fg);color:var(--fg)}
.hrs{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:3px;align-items:end;height:150px}
.hrs div{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;font-size:10px;color:var(--mu);gap:3px}
.hrs i{display:block;width:100%;background:var(--fg);min-height:2px}
.hrs .pk i{background:var(--fg);outline:2px solid var(--fg);outline-offset:1px}
.mtop{display:grid;grid-template-columns:22px minmax(0,1fr) 70px 70px;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--ln);font-size:13px}
.mtop .n{font-family:var(--f-num);font-weight:700;text-align:right}
.mtop .rk{font-family:var(--f-num);font-weight:700;color:var(--mu)}
.mtop .bar{grid-column:2/-1;height:4px;margin-top:-4px}
.donut{display:flex;gap:16px;align-items:center}
.donut ul{list-style:none;padding:0;margin:0;font-size:12px}
.donut li{display:flex;gap:6px;align-items:center;margin:3px 0}
.donut li i{width:10px;height:10px;display:inline-block}
.combo{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px dashed var(--ln);font-size:13px}
.combo b{flex:1}
.combo .plus{font-weight:900;color:var(--mu)}
.dayheat{display:grid;grid-template-columns:28px repeat(12,minmax(0,1fr));gap:2px;font-size:10px}
.dayheat span{display:grid;place-items:center;height:20px}
.dayheat .lb{color:var(--mu);font-weight:700}
/* 리포트 책(표지 · 목차 · 넘김) */
.book{position:relative;perspective:1800px}
.book .pg{display:none;transform-origin:0 50%}
.book .pg.on{display:block;animation:flip .7s cubic-bezier(.2,.8,.2,1) both}
.book .pg.on.back{animation-name:flipb}
@keyframes flip{from{transform:rotateY(-70deg);opacity:0}}
@keyframes flipb{from{transform:rotateY(40deg);opacity:0}}
.bookbar{display:flex;align-items:center;gap:10px;justify-content:center;margin:18px 0 0;font-size:13px;font-weight:800}
.bookbar .dots{display:flex;gap:5px}
.bookbar .dots i{width:8px;height:8px;border-radius:50%;border:1.5px solid var(--fg);cursor:pointer}
.bookbar .dots i.on{background:var(--fg)}
.a4.cover{display:flex;flex-direction:column;justify-content:space-between;min-height:640px;background:var(--ink);color:var(--paper);--fg:var(--paper);--bg:var(--ink);--mu:var(--g3);--ln2:color-mix(in srgb,var(--paper) 26%,transparent)}
.a4.cover::before{display:none}
.a4.cover h1{font-family:var(--f-pop);font-weight:400;font-size:clamp(40px,6vw,72px);line-height:1.05;letter-spacing:-.02em}
.a4.cover .giant{font-size:clamp(120px,16vw,200px)}
.a4 .toc{list-style:none;padding:0;margin:20px 0 0;counter-reset:t}
.a4 .toc li{display:flex;gap:12px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--ln2);font-size:17px;font-weight:800;cursor:pointer;counter-increment:t}
.a4 .toc li::before{content:counter(t,decimal-leading-zero);font-family:var(--f-num);font-size:13px;color:var(--mu)}
.a4 .toc li span{margin-left:auto;font-size:12px;color:var(--mu);font-weight:600}
/* 앱 미리보기 · 나란히 보기 */
.pop-in.phonepop{width:min(430px,100%)}
.pop-in.phonepop .pop-card{background:transparent;box-shadow:none;overflow:visible;max-height:none}
.pop-in.phonepop .pop-card::after{display:none}
.pop-in.phonepop .pop-head{border:0;color:var(--paper);padding:0 6px 10px}
.pop-in.phonepop .pop-head button{color:var(--paper);border-color:var(--paper)}
.pop-in.phonepop .pop-body{padding:0}
.devp{border:12px solid #050505;border-radius:52px;background:#050505;box-shadow:0 0 0 1.5px var(--g3),0 50px 90px -30px #000,inset 0 0 0 1px #2A2A28;overflow:hidden;position:relative}
.devp::before{content:'';position:absolute;top:10px;left:50%;width:96px;height:26px;border-radius:20px;background:#050505;transform:translateX(-50%);z-index:3}
.devp iframe{display:block;width:100%;height:min(780px,calc(100vh - 140px));border:0;border-radius:40px;background:var(--paper)}
.side-on .lay{grid-template-columns:240px minmax(0,1fr) 410px!important;max-width:1800px!important}
.sidephone{position:sticky;top:76px}
.sidephone .devp iframe{height:calc(100vh - 140px);max-height:800px}
@media (max-width:1100px){.side-on .lay{grid-template-columns:minmax(0,1fr)!important}.sidephone{display:none}}
/* ── 레이 — 제작대행/레이_캐릭터.html 움직임 그대로(이름만 rr- 붙임) ── */
.ray{overflow:visible;flex:none;height:auto}
.ray .dreads{transform-origin:130px 46px;animation:rrSway 3.4s ease-in-out infinite}
.ray .dread-dot{animation:rrBlink 2.4s infinite}
.ray .dread-dot:nth-of-type(2){animation-delay:.3s}.ray .dread-dot:nth-of-type(3){animation-delay:.6s}.ray .dread-dot:nth-of-type(4){animation-delay:.9s}.ray .dread-dot:nth-of-type(5){animation-delay:1.2s}.ray .dread-dot:nth-of-type(6){animation-delay:1.5s}
.ray .head{transform-origin:130px 140px;transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.ray .body-bob{animation:rrBob 3.4s ease-in-out infinite;transform-origin:130px 300px}
.ray.beep .head{transform:rotate(-14deg) translate(-6px,-6px)}
.ray.beep .dreads{animation:rrJump .6s ease-out}
.ray.alert .dread-dot{animation-duration:.5s}
.ray.alert .body-bob{animation:rrShake .25s 6}
.ray .tie-tail{transform-origin:133px 175px;animation:flutter 1.7s ease-in-out infinite}
@keyframes flutter{50%{transform:rotate(-7deg)}}
@keyframes rrSway{50%{transform:rotate(6deg)}}
@keyframes rrBlink{0%,70%{opacity:1}80%{opacity:.15}100%{opacity:1}}
@keyframes rrBob{50%{transform:translateY(-5px)}}
@keyframes rrJump{30%{transform:translateY(-18px) rotate(-10deg)}70%{transform:translateY(4px) rotate(5deg)}}
@keyframes rrShake{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
.rayslot{position:relative;display:inline-block;line-height:0}
.rayslot img{max-width:100%;height:auto}
/* 레이 도우미(오른쪽 아래) */
.raydock{position:fixed;right:22px;bottom:22px;z-index:60;display:flex;align-items:flex-end;gap:8px;filter:drop-shadow(0 14px 20px rgba(0,0,0,.45));transition:transform .2s}
.raydock:hover{transform:translateY(-3px)}
.raydock .bub{background:#0A0A0A;color:#F4F2EE;border:1.5px solid #F4F2EE;border-radius:14px 14px 4px 14px;padding:8px 12px;font-size:12.5px;font-weight:800;margin-bottom:46px;white-space:nowrap}
.raydock.r-alert .bub{border-color:#E1251B}
.raydock.r-alert .bub::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#E1251B;margin-right:6px;vertical-align:1px}
.owner-app .raydock{bottom:calc(92px + env(safe-area-inset-bottom));right:10px}
.owner-app .raydock svg{width:56px;height:auto}
.owner-app .raydock .bub{display:none}
/* 매거진 */
.magz .mcover{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;align-items:end;border-top:6px solid var(--fg);border-bottom:1px solid var(--ln2);padding:22px 0;background-image:var(--dot);background-size:7px 7px}
.magz .mcover h1{font-family:var(--f-pop);font-weight:400;font-size:clamp(56px,7vw,118px);line-height:.95;letter-spacing:-.03em;margin:14px 0}
.magz .mcov-r{text-align:center}
.magz .mcov-r img{max-height:300px}
.magz .mtoc{padding:18px 0;border-bottom:1px solid var(--ln2)}
.magz .mtoc ol{list-style:none;padding:0;margin:10px 0 0;columns:3 240px;column-gap:32px}
.magz .mtoc li{break-inside:avoid;padding:8px 0;border-bottom:1px dashed var(--ln);font-weight:800;cursor:pointer;display:flex;gap:10px}
.magz .mtoc li .num{color:var(--mu);font-size:12px;padding-top:2px}
.mgrid{row-gap:28px;margin-top:24px}
.mart{position:relative;border-top:2px solid var(--fg);padding:14px 0 6px;cursor:pointer;min-width:0}
.mart .magimg{height:150px}
.mart.big .magimg{height:330px}
.mart.wide .magimg{height:180px}
.mart h3{font-size:19px;font-weight:900;letter-spacing:-.04em;line-height:1.3;margin:10px 0 6px}
.mart.big h3{font-family:var(--f-pop);font-weight:400;font-size:clamp(30px,3.4vw,46px);line-height:1.1}
.mart p{font-size:13px;color:var(--mu);margin:0}
.mart>.stk{position:absolute;top:24px;left:10px;z-index:2}
.magimg{position:relative;display:block;overflow:hidden;background-color:var(--p2);background-image:radial-gradient(color-mix(in srgb,var(--fg) 30%,transparent) 1.2px,transparent 1.8px);background-size:9px 9px;height:220px;margin-bottom:6px}
.magimg .mfb{position:absolute;right:10px;bottom:-14px;font-family:var(--f-num);font-weight:700;font-size:120px;letter-spacing:-.06em;color:var(--bg);-webkit-text-stroke:1.5px var(--fg);line-height:1}
.magimg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.1)}
.pop-body .dek{font-size:18px;font-weight:900;letter-spacing:-.03em}
.pop-body .magimg{height:240px}
.lic .c3.ghost .f{background:transparent;outline:1px dashed var(--fg)}
.ring500{position:absolute;inset:6%;border-radius:50%;border:1.5px dashed var(--ln2)}
@media (max-width:760px){.magz .mcover{grid-template-columns:minmax(0,1fr)}.magz .mcover h1{font-size:54px}.mart.big .magimg{height:200px}}
@media (max-width:760px){.mag{column-gap:0}.mag>*{grid-column:1/-1!important;grid-row:auto!important}.mag>.vr{border-left:0;padding-left:0;margin-left:0}.strip{grid-template-columns:minmax(0,1fr)}.strip>div{border-right:0;border-bottom:1px solid var(--ln);padding-left:0!important}.giant{font-size:clamp(110px,34vw,170px)}.thumbs{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* 나란히 보기: 콘솔 도우미는 콘텐츠 위에 뜨지 않고 폰 열 머리줄에 접혀 앉는다(얼굴 원형 + 작은 말풍선) */
.side-on #main>.raydock{display:none}
.sp-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;min-height:52px}
.sp-head .cap{flex:1}
.sp-head .raydock{position:static;filter:none;align-items:center;gap:6px;transform:none}
.sp-head .raydock .rayslot{width:48px;height:48px;border-radius:50%;overflow:hidden;border:1.5px solid var(--fg);background:var(--g2);display:grid;place-items:start center}
.sp-head .raydock .rayslot svg{width:60px;height:auto;margin-top:-2px}
.sp-head .raydock .bub{margin:0;font-size:11px;padding:6px 9px;border-radius:12px 12px 12px 4px}
.sidephone .devp iframe{height:calc(100vh - 200px)}
@media (max-width:1100px){.side-on #main>.raydock{display:flex}}

/* 좁은 콘솔 열(나란히 보기 1280)에서 숫자 줄바꿈 막기 */
.strip b{white-space:nowrap;font-size:clamp(24px,2.6vw,40px)}
.strip .b{overflow-wrap:anywhere}

/* ── 4판: 이음 그림 레이 · 레이의 한 줄 · 여러 매장 · 리뷰 정밀 · 매출 메뉴 ── */
.rayslot.rp img{display:block;width:100%;height:auto;filter:drop-shadow(4px 5px 0 rgba(0,0,0,.35))}
.rayslot.alert img,.rayslot.alert svg{animation:rrShake .25s 6}
.rayslot.beep img{transform:rotate(-8deg) translateY(-4px);transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
.sp-head .raydock .rayslot{width:48px!important}
.sp-head .raydock .rayslot img{width:62px;max-width:none;margin-top:-1px}
.raycard{position:relative;overflow:hidden}
.raycard .yface{position:absolute;right:-60px;top:-30px;width:300px;height:300px;background-size:cover;background-position:center;opacity:.22;filter:contrast(1.1);pointer-events:none;mask:radial-gradient(circle,#000 45%,transparent 72%);-webkit-mask:radial-gradient(circle,#000 45%,transparent 72%)}
.raycard>*{position:relative}
.rline{display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px;align-items:start;margin-top:14px;padding-top:12px;border-top:1px dashed var(--ln2)}
.rline .who{line-height:0}
.rline p{margin:4px 0 0;font-size:13.5px;font-weight:700;line-height:1.5}
.rline .gr{font-size:10.5px;font-weight:900;padding:1px 8px;border-radius:99px;border:1.5px solid var(--fg)}
.rline.g-mid .gr{border-color:var(--red);color:var(--red)}
.rline.g-bad .gr{background:var(--red);border-color:var(--red);color:var(--paper)}
.strip .rline{margin-top:10px;grid-template-columns:30px minmax(0,1fr)}
.strip .rline p{font-size:12px}
/* 여러 매장 */
.stores{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}
.scard{position:relative;border-top:2px solid var(--fg);padding:12px 0 6px;cursor:pointer;min-width:0}
.scard h4{font-size:18px;font-weight:900;letter-spacing:-.03em;margin:4px 0 2px}
.scard .k4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:10px}
.scard .k4 div{border-left:1px solid var(--ln2);padding-left:7px;min-width:0}
.scard .k4 small{display:block;font-size:10.5px;color:var(--mu);font-weight:700;white-space:nowrap}
.scard .k4 b{font-family:var(--f-num);font-size:20px;white-space:nowrap}
.scard.best{border-top-color:var(--fg);border-top-width:4px}
.scard.worst::after{content:'';position:absolute;top:-5px;right:0;width:9px;height:9px;border-radius:50%;background:var(--red)}
.ssearch{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ssearch .in{flex:1 1 200px;width:auto}
.ssearch select{padding:8px;border:1px solid var(--ln2);background:var(--bg);border-radius:var(--r)}
.switcher{border:1px solid var(--ln2);background:var(--bg);border-radius:99px;padding:6px 10px;font-weight:800;font-size:13px;max-width:52vw}
.side .st.demo{opacity:.9}
.side .st .chip{font-size:10px;padding:0 6px}
/* 리뷰 정밀 */
.tp{display:grid;grid-template-columns:88px minmax(0,1fr) 54px;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--ln);cursor:pointer}
.tp b{font-size:14px}
.tp .pn{display:flex;height:16px;border:1px solid var(--ln2)}
.tp .pn i{display:block;height:100%}
.tp .pn .p{background:var(--fg)}
.tp .pn .n{background:var(--red)}
.tp .num{text-align:right;font-weight:700}
.sugg{border-top:2px solid var(--fg);padding:12px 0 6px}
.sugg h5{font-size:15px;font-weight:900;margin:0 0 4px}
.sugg .rp2{margin-top:8px;border:1.5px dashed var(--fg);padding:9px 11px;font-size:13px;background:var(--p1)}
.tagz{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.tagz span{font-size:10.5px;font-weight:800;border:1px solid var(--fg);padding:0 6px}
/* 매출 메뉴 */
.legend2{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:2px}
.legend2 li{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:8px;align-items:center;font-size:12.5px;padding:4px 0;border-bottom:1px dotted var(--ln);cursor:pointer;min-width:0}
.legend2 li i{width:10px;height:10px;display:block}
.legend2 li span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-break:keep-all}
.legend2 li b{font-family:var(--f-num);white-space:nowrap}
.tb10{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}
.tb10 td{padding:7px 4px;border-bottom:1px solid var(--ln);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb10 tr{cursor:pointer}
.tb10 tr:hover td{background:var(--p2)}
.tb10 .bar{height:6px;background:var(--p2)}
.tb10 .bar i{display:block;height:100%;background:var(--fg)}
.up{font-weight:800}.dn{color:var(--red);font-weight:800}
.insight{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.insight>div{border-top:2px solid var(--fg);padding-top:10px;font-size:13.5px;font-weight:700;line-height:1.5;min-width:0}
.insight>div.g-bad{border-top-color:var(--red)}
.insight .xs{font-weight:500}
.donut{flex-wrap:wrap}
.donut>div:first-child{margin:0 auto}

/* ── 이음 그림 자리 ── */
.sweep{position:relative;min-height:220px;background-color:#000;background-size:cover;background-position:left center;border-radius:4px;overflow:hidden;display:flex;justify-content:flex-end;align-items:center}
.sweep .sw-t{width:54%;padding:22px 26px 22px 0;color:#F4F2EE}
.sweep .sw-t b{display:block;font-size:22px;font-weight:900;letter-spacing:-.03em;margin:6px 0}
.sweep .sw-t p{margin:0;font-size:13.5px;color:#D9D7D2;line-height:1.55}
.sweep .bdg{margin:0}
.a4.rcover{background-size:cover;background-position:center bottom;min-height:760px;display:block;position:relative}
.a4.rcover .ct{position:relative;margin-top:26px;font-family:var(--f-pop);font-weight:400;font-size:clamp(40px,5.4vw,64px);line-height:1.05;color:#F4F2EE;text-shadow:3px 3px 0 #000}
.a4.rcover .cbox{position:absolute;right:30px;top:46%;text-align:right;color:#F4F2EE;text-shadow:2px 2px 0 #000}
.a4.rcover .cbox .giant{font-size:clamp(90px,10vw,140px)}
.a4.rcover .a4-ft{background:rgba(0,0,0,.6);padding:8px 10px;bottom:16px}
.mcover2{position:relative;min-height:560px;background-color:#F3E7D3;background-size:auto 100%;background-position:right center;background-repeat:no-repeat;color:#0A0A0A;border-top:6px solid var(--fg);padding:26px 24px;--fg:#0A0A0A;--mu:#5A5A56}
.mcover2 .mcov-l{max-width:42%}
.mcover2 h1{font-family:var(--f-pop);font-weight:400;font-size:clamp(52px,6vw,104px);line-height:.95;letter-spacing:-.03em;margin:16px 0}
.beep{position:relative;aspect-ratio:1448/1086;background-size:cover;border:2px solid var(--ink)}
.beep .bb2{position:absolute;left:60%;top:7%;width:33%;height:23%;display:grid;place-items:center;text-align:center;font-weight:900;font-size:clamp(13px,1.8vw,19px);line-height:1.3;color:#0A0A0A;letter-spacing:-.03em}
.rgroup .rayslot.rp img{filter:none}
@media (max-width:760px){.sweep{min-height:170px;background-size:auto 100%}.sweep .sw-t{width:58%;padding:14px 14px 14px 0}.sweep .sw-t b{font-size:16px}.sweep .sw-t p{font-size:12px}
 .a4.rcover{min-height:520px}.a4.rcover .cbox{top:auto;bottom:70px;right:16px}.mcover2{min-height:400px;background-size:auto 100%;background-position:120% center}.mcover2 .mcov-l{max-width:60%}.mcover2 h1{font-size:44px}
 .rgroup .row>div:first-child{display:none}}

/* 리포트 표지: 그림은 아래로 붙이고 위 검정 자리에 제목 */
.a4.rcover{background-color:#000;background-size:100% auto;background-position:center bottom;min-height:1040px}
.a4.rcover .ct{font-size:clamp(34px,4.4vw,52px);margin-top:18px}
.magz .mtoc li .num{white-space:nowrap}
@media (max-width:760px){.a4.rcover{min-height:600px}.a4.rcover .ct{font-size:30px}}
.a4.rcover{background-repeat:no-repeat}
.a4.rcover .cbox{top:64px;bottom:auto}
.a4.rcover .cbox .giant{font-size:clamp(70px,8vw,110px)}
@media (max-width:760px){.a4.rcover .cbox{top:auto;bottom:62px}}

/* ── 5판 ── */
.ray.rhead{overflow:hidden}
.rline .who{width:40px}
/* 운영자 첫 화면 */
.opshead{border-top:2px solid var(--fg);padding-top:6px}
.todos{list-style:none;padding:0;margin:10px 0 0}
.todo{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--ln);font-size:13px;flex-wrap:wrap}
.todo label{display:flex;align-items:flex-start;gap:8px;flex:1 1 260px;min-width:0;cursor:pointer}
.todo input{accent-color:var(--fg);margin-top:3px}
.todo .tk{flex:none;font-size:10.5px;font-weight:900;border:1.5px solid var(--fg);padding:0 6px;border-radius:3px}
.todo b{flex:none}
.todo .tx{color:var(--mu);min-width:0}
.todo.done b,.todo.done .tx{text-decoration:line-through;opacity:.5}
.btn.sm{padding:4px 10px;font-size:12px}
.watches{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin-top:10px}
.watch{border-top:1.5px solid var(--fg);padding:10px 0 4px;cursor:pointer;min-width:0}
.watch.wtop{border-top-width:4px}
.watch .wn{font-size:16px}
.wd{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:8px 0 4px}
.wd div{border-left:1px solid var(--ln2);padding-left:6px;min-width:0}
.wd small{display:block;font-size:10.5px;color:var(--mu);font-weight:700}
.wd b{font-family:var(--f-num);font-size:16px;white-space:nowrap}
.wd .bad b{color:var(--red)}
.wd .good b{font-weight:900;text-decoration:underline;text-underline-offset:3px}
.dchip{display:inline-block;font-size:10.5px;font-weight:900;padding:1px 7px;border:1px solid var(--ln2);border-radius:99px;white-space:nowrap}
.dchip.bad{border-color:var(--red);color:var(--red)}
.dchip.good{border-color:var(--fg);background:var(--fg);color:var(--bg)}
/* 매출 메뉴 순위 전환 */
.tbflip{position:relative;perspective:1200px}
.tbpage{display:none}
.tbpage.on{display:block;animation:tbin .45s cubic-bezier(.2,.8,.2,1) both;transform-origin:0 50%}
.tbpage.on.back{animation-name:tbinb}
@keyframes tbin{from{opacity:0;transform:rotateY(-35deg) translateX(30px)}}
@keyframes tbinb{from{opacity:0;transform:rotateY(35deg) translateX(-30px)}}
/* 동네 그래프 */
.tbox{position:relative}
.tbox.flipin{animation:tbin .45s cubic-bezier(.2,.8,.2,1) both}
.tchart{width:100%;height:auto;display:block;overflow:visible}
.tchart .axis{stroke:var(--fg);stroke-width:1.5}
.tchart .avg{stroke:var(--fg);stroke-width:1.2;stroke-dasharray:4 4;opacity:.7}
.tchart .avg.r{stroke:var(--red)}
.tchart .ly{fill:none;stroke:var(--fg);stroke-width:1.3;stroke-dasharray:3 3}
.tchart .ly.r{stroke:var(--red)}
.tchart .cum{fill:none;stroke:var(--fg);stroke-width:2;stroke-dasharray:1.5 4;stroke-linecap:round}
.tchart .t-s{font-size:11px;fill:var(--mu);font-family:var(--f-num)}
.tchart .t-rk{font-size:18px;font-weight:700;fill:var(--fg);font-family:var(--f-num)}
.tchart .t-nm{font-size:13px;font-weight:800;fill:var(--fg);font-family:var(--f-ui)}
.tchart .t-nm.me{fill:var(--red)}
.tchart .t-v{font-size:12px;fill:var(--fg);font-family:var(--f-num)}
.tchart .tipg{cursor:pointer}
.tchart .tipg.hov rect:first-child{fill:var(--p2)}
.tlegend{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:11.5px;color:var(--mu);margin:8px 0 4px}
.tlegend i{display:inline-block;width:14px;height:10px;margin-right:5px;vertical-align:-1px}
.tlegend i.o{background:var(--fg)}.tlegend i.c{background:var(--red)}
.tlegend i.lyl{border:1.3px dashed var(--fg)}.tlegend i.avgl{border-top:1.5px dashed var(--fg);height:0;vertical-align:3px}
.tlegend i.cuml{border-top:2px dotted var(--fg);height:0;vertical-align:3px}
.ttip{position:absolute;z-index:20;width:240px;background:var(--bg);color:var(--fg);border:1.5px solid var(--fg);padding:9px 11px;font-size:12px;line-height:1.5;box-shadow:4px 4px 0 var(--sh);pointer-events:none}
.ttip u{text-decoration:none;font-weight:900}

/* 5판: 잘림 0 — 말줄임·줄 자르기 대신 줄바꿈 */
.rv .body{display:block!important;-webkit-line-clamp:unset!important;overflow:visible!important}
.hb{grid-template-columns:150px minmax(0,1fr)}
.hb span{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25;word-break:keep-all}
.owner-app .hb{grid-template-columns:110px minmax(0,1fr)}
.tb10{table-layout:auto}
.tb10 td{white-space:nowrap;overflow:visible;text-overflow:clip}
.tb10 td:nth-child(2){white-space:normal;word-break:keep-all}
.duel .cols{bottom:84px}
.duel .nm{height:auto;max-height:none;overflow:visible;bottom:-62px;word-break:keep-all}
.duel{height:360px}
.wd{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:6px}
.wd small{white-space:nowrap}
.legend2 li span{white-space:normal;overflow:visible;text-overflow:clip}

/* 나란히 보기(콘솔 열이 좁음) = 잡지 칸을 한 줄씩 */
.side-on .mag>*{grid-column:1/-1!important;grid-row:auto!important}
.side-on .mag>.vr{border-left:0;padding-left:0;margin-left:0}
.side-on .tb10 td:nth-child(2){min-width:7em}

/* ── 6판: 비교 기준 · 위험 경고 · 날씨 · 맞춤 화면 · 슬라이드 ── */
.cmpbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--ln2);margin-bottom:12px}
.cmpbar .seg{margin-left:0}
.cmpv,.cmpb{display:none}
body.cmp-day .b-day,body.cmp-week .b-week,body.cmp-month .b-month,body.cmp-year .b-year{display:inline}
body.cmp-day .cmpb.b-day,body.cmp-week .cmpb.b-week,body.cmp-month .cmpb.b-month,body.cmp-year .cmpb.b-year{display:block}
.cmpbox[class*="cl-"] .cmpv,.cmpbox[class*="cl-"] .cmpb{display:none!important}
.cmpbox.cl-day .cmpv.b-day,.cmpbox.cl-week .cmpv.b-week,.cmpbox.cl-month .cmpv.b-month,.cmpbox.cl-year .cmpv.b-year{display:inline!important}
.cmpbox.cl-day .cmpb.b-day,.cmpbox.cl-week .cmpb.b-week,.cmpbox.cl-month .cmpb.b-month,.cmpbox.cl-year .cmpb.b-year{display:block!important}
.cmpwrap{display:inline-block;margin:4px 6px 0 0}
.cmpv{font-size:12px;font-weight:800;padding:2px 7px;border:1px solid var(--ln2);border-radius:99px;white-space:normal;line-height:1.5}
.cmpv.g{border-color:var(--fg)}
.cmpv.b{color:var(--fg)}
.cmpv.b.warn{border-color:var(--red);color:var(--red)}
.cmpv.wait{color:var(--mu);border-style:dashed;font-weight:600}
.cmpv .src{margin-left:3px}
.cmpsel{display:inline-flex;margin-left:6px;vertical-align:1px}
.cmpsel button{font-size:9.5px;font-weight:800;color:var(--mu);border:1px solid var(--ln2);padding:0 4px;margin-left:-1px;line-height:16px}
.cmpsel button.on{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.alc{display:grid;grid-template-columns:88px minmax(0,1fr) auto;gap:2px 10px;align-items:center;padding:9px 10px;border:1px solid var(--ln2);margin-bottom:6px;border-left-width:5px}
.alc .sv{grid-row:span 2;font-size:11px;font-weight:900}
.alc b{font-size:14px}
.alc .src{grid-row:1;grid-column:3}
.alc.s3{border-left-color:var(--red);background:color-mix(in srgb,var(--red) 16%,transparent)}
.alc.s3 .sv{color:var(--red)}
.alc.s2{border-left-color:color-mix(in srgb,var(--red) 70%,var(--bg))}
.alc.s2 .sv{color:color-mix(in srgb,var(--red) 80%,var(--fg))}
.alc.s1{border-left-color:var(--g3)}
.alc.s0{border-style:dashed;border-left-width:1px;opacity:.75}
.wxr{display:grid;gap:2px;margin-top:6px}
.wxr div{display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 0;font-size:10px;border:1px solid transparent}
.wxr div b{font-family:var(--f-num);font-size:11px}
.wxr div small{color:var(--mu);font-size:9.5px}
.wxr .rain,.heat .wxc.rain{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--red) 22%,transparent) 0 3px,transparent 3px 7px);border-color:color-mix(in srgb,var(--red) 40%,transparent)}
.heat .wxc{height:24px;display:grid;place-items:center;color:var(--fg)}
.wxi{display:inline-block;vertical-align:middle;color:var(--fg)}
.fcs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.fc{border-top:1px solid var(--ln2);padding-top:8px}
.tchart .tbg{paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.pnote{border-left:4px solid var(--fg);padding:12px 14px;background:var(--p1);margin-bottom:14px}
.pnote p{margin:6px 0 0;font-size:16px;font-weight:800;line-height:1.5;font-family:'Nanum Pen Script','Noto Sans KR',cursive;font-size:22px}
.hlbox{margin-top:18px}
.blist{list-style:none;padding:0;margin:8px 0 0}
.blist li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--ln2);margin-bottom:5px;background:var(--bg);cursor:grab}
.blist li.drag{opacity:.4}
.blist li .grip{color:var(--mu);font-weight:900;letter-spacing:-2px}
.blist li label{flex:1;cursor:pointer}
.cust .chip input{accent-color:var(--fg);margin-right:3px}
/* 사장님 앱 슬라이드 */
.owner-app #main{touch-action:pan-y}
.swdots{position:fixed;left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom));display:flex;justify-content:center;gap:5px;z-index:39;pointer-events:none}
.swdots i{width:6px;height:6px;border-radius:50%;border:1.3px solid var(--fg);background:var(--bg)}
.swdots i.on{background:var(--fg);width:16px;border-radius:4px}
.swiping{transition:none!important}
.swin-l{animation:swinl .38s cubic-bezier(.2,.8,.2,1) both}.swin-r{animation:swinr .38s cubic-bezier(.2,.8,.2,1) both}
@keyframes swinl{from{transform:translateX(70%);opacity:.3}}@keyframes swinr{from{transform:translateX(-70%);opacity:.3}}
@media (prefers-reduced-motion:reduce){.swin-l,.swin-r{animation:none}}

/* 같이 보기(요소별 외부 데이터) */
.exbox{margin-top:10px;border:1px dashed var(--ln2);padding:8px 10px;background:var(--p1)}
.exbox.tight{padding:6px 8px}
.exh{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.exh .who{line-height:0}
.exr{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:4px 8px;align-items:start;padding:5px 0;border-top:1px dotted var(--ln);font-size:12.5px}
.exr:first-of-type{border-top:0}
.exr .exi{width:20px;height:20px;border:1.3px solid var(--fg);border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:900}
.exr .ext{font-weight:700;line-height:1.45;min-width:0}
.exr .exs{grid-column:2;white-space:normal}
.exr .btn{grid-column:3;grid-row:1}
.exr .btn.on{background:var(--fg);color:var(--bg)}
.exbox .cmpwrap{margin:2px 0 0}
.ovl{position:absolute;inset:0 0 18px 0;width:100%;height:calc(100% - 18px);pointer-events:none;overflow:visible}
.ovl polyline{fill:none;stroke:var(--red);stroke-width:1.6;stroke-dasharray:3 2;vector-effect:non-scaling-stroke}
.ovl circle{fill:var(--red)}
.wk,.hrs{position:relative}
.wxr .hol{outline:1.5px solid var(--red);outline-offset:-1.5px}
.wxr .hd{display:block;font-style:normal;color:var(--red);font-weight:900;font-size:9px}
.owner-app .exr{font-size:13px}

.wxr.dense div b{font-size:9.5px}.wxr.dense .wxi{width:12px;height:12px}

.cmpv.dim{opacity:.45;text-decoration:line-through}

.exh .cap{white-space:nowrap}
.exbox.tight .exh{flex-wrap:wrap}
.exbox.tight .exr{grid-template-columns:20px minmax(0,1fr)}
.exbox.tight .exr .btn{grid-column:2;grid-row:auto;justify-self:start}

/* 추세 차트 · 상황 점선 */
.tchart2{width:100%;height:auto;display:block;overflow:visible}
.tc-bg{fill:none}
.tc-ax{font-size:12px;fill:var(--mu);font-family:var(--f-num)}
.tc-line{fill:none;stroke:var(--fg);stroke-width:1.8;stroke-linejoin:round}
.tc-base,.tchart .tc-base{stroke:var(--fg);stroke-width:1.4;stroke-dasharray:5 4}
.tchart .tc-base.r{stroke:var(--red)}
.tc-bl{font-size:12px;fill:var(--fg);font-weight:800;paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.tc-ev{stroke:var(--mu);stroke-width:1;stroke-dasharray:2 4}
.tc-ev.hol{stroke:var(--red)}.tc-ev.base{stroke:var(--fg);stroke-dasharray:6 3}
.tc-evt{font-size:11px;fill:var(--mu);font-weight:700}.tc-evt.hol{fill:var(--red)}
.tc-zone{fill:none;stroke-width:1.6}
.tc-zone.dn{stroke:var(--red);stroke-dasharray:4 3;fill:url(#none);fill:color-mix(in srgb,var(--red) 10%,transparent)}
.tc-zone.up{stroke:var(--fg);stroke-width:2.6;stroke-dasharray:6 3}
.tc-zt{font-size:13px;font-weight:900;paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.tc-zt.dn{fill:var(--red)}.tc-zt.up{fill:var(--fg)}
.tc-note{font-size:12px;fill:var(--mu)}
.tc-say{font-size:12.5px;font-weight:800;text-align:right;color:var(--fg);line-height:1.3;font-family:var(--f-ui)}
.tc-say.dn{color:var(--red)}
.tc-ray{line-height:0}
.tchart.big .t-s{font-size:12px}
.tchart .t-s{font-size:12px}
.rxsay{margin:6px 0 8px 12px;font-size:13px;font-weight:700;line-height:1.5}

/* 왜 빠졌나 */
.whyhead{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px}
.wfs{display:grid;gap:2px}
.wf{display:grid;grid-template-columns:150px minmax(0,1fr) 110px;gap:4px 12px;align-items:center;padding:6px 0;border-bottom:1px dotted var(--ln)}
.wf b{font-size:13px}
.wf .wbar{position:relative;height:14px;background:var(--p2)}
.wf .wbar .mid{position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--fg)}
.wf .wbar i{position:absolute;top:0;bottom:0}
.wf .wbar i.dn{background:var(--red)}.wf .wbar i.up{background:var(--fg)}
.wf .num{text-align:right;font-weight:800;font-size:12.5px}
.wf .wev{grid-column:1/-1;font-size:12px;color:var(--mu)}
.wf.off{opacity:.45}
.whyone{display:block}
@media (max-width:760px){.wf{grid-template-columns:96px minmax(0,1fr) 80px}}
.watch.isdown{border-top-color:var(--red)}
/* 포스 고도화 */
.dayheat.big span{height:26px;font-size:10.5px;font-family:var(--f-num);font-weight:700}
.ideas{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.idea{border-top:2px solid var(--fg);padding:8px 0}
.idea.g-bad{border-top-color:var(--red)}
.idea.staff{border:1.5px solid var(--fg);padding:10px;box-shadow:4px 4px 0 var(--sh)}
.idea p{margin:6px 0;font-size:13.5px;font-weight:700;line-height:1.5}
.toph{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px}
.toph div{display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--ln2);padding-top:4px;font-size:11px;min-width:0}
.toph b{font-size:11.5px;word-break:keep-all;line-height:1.25}
.toph small{color:var(--mu)}
.tb10 td.dn{color:var(--red);font-weight:800}.tb10 td.up{font-weight:900}
@media (max-width:760px){.toph{grid-template-columns:repeat(4,minmax(0,1fr))}.dayheat.big span{font-size:9px}}

/* 7판: 포스 30초 연결 */
.pcx{border:1.5px solid var(--fg);padding:16px;background:var(--bg);box-shadow:4px 4px 0 var(--sh)}
.vcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}
.vcard{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;border:1.5px solid var(--ln2);padding:12px 4px;cursor:pointer;text-align:center}
.vcard input{position:absolute;opacity:0}
.vcard .lg{font-family:var(--f-stk);font-size:16px;letter-spacing:.02em}
.vcard .nm{font-size:12px;font-weight:700}
.vcard:has(input:checked){border-color:var(--fg);background:var(--fg);color:var(--bg)}
.pcx-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pcx-fields label{font-size:12px;font-weight:700}
.agree{display:flex;gap:8px;align-items:flex-start;margin:12px 0 4px;font-size:13px;cursor:pointer}
.agree input{margin-top:3px;accent-color:var(--fg);width:18px;height:18px}
.btn.big{width:100%;padding:14px;font-size:16px;margin-top:10px}
.pinv{border:1.5px solid var(--fg);padding:14px;margin:14px 0;background:var(--p1)}
.more summary{cursor:pointer;padding:10px 0;border-top:1px solid var(--ln2)}
@media (max-width:420px){.pcx-fields{grid-template-columns:minmax(0,1fr)}}

/* 사장님 앱 도우미 = 탭바 위 오른쪽 작은 동그라미(얼굴만 44px) · 글자·입력과 겹치면 비킴 */
.owner-app .raydock{bottom:calc(74px + env(safe-area-inset-bottom));right:10px;filter:drop-shadow(0 6px 10px rgba(0,0,0,.3));transition:opacity .2s,transform .2s}
.owner-app .raydock .rayslot{width:44px!important;height:44px;border-radius:50%;overflow:hidden;border:1.5px solid var(--ink);background:#141414;display:block}
.owner-app .raydock .rayslot svg{width:62px!important;height:auto;margin:-3px 0 0 -9px}
.owner-app .raydock.away{opacity:0;pointer-events:none;transform:translateY(10px)}
.swdots{position:absolute!important;left:0;right:0;top:2px;bottom:auto!important}
.tbar{position:fixed}

.owner-app .raydock.away{transition:none}

/* 8판: 시간대 차트 */
.hchart{position:relative}
.hcsvg{width:100%;height:auto;display:block;overflow:visible}
.hc-band{fill:var(--p2)}
.hc-bt{font-size:12px;font-weight:800;fill:var(--fg)}
.hc-bar{fill:color-mix(in srgb,var(--fg) 72%,var(--bg))}
.hc-bar.pk{fill:var(--fg)}
.hc-bar.lo{fill:var(--g3)}
.tipg.hov .hc-bar{fill:var(--red)}
.hc-ax{font-size:12px;fill:var(--mu);font-family:var(--f-num)}
.hc-pk{font-size:13px;font-weight:900;fill:var(--fg);paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.hc-lo{font-size:12px;fill:var(--g3);font-weight:700}
.hc-avg{stroke:var(--fg);stroke-dasharray:5 4;stroke-width:1.2}
.hc-avgt{font-size:12px;font-weight:800;fill:var(--fg);paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.hcwrap .num,.hc-ax,.hc-pk{white-space:nowrap}
/* 8판: 서류철에서 검은 표지가 떠오름 */
.folder2{position:relative;padding:44px 0 0;perspective:1600px;max-width:820px;margin:0 auto}
.folder2 .fback{position:absolute;left:0;right:0;top:0;bottom:0;background:#3A3A38;border-radius:10px 10px 6px 6px;clip-path:polygon(0 22px,26% 22px,30% 0,58% 0,62% 22px,100% 22px,100% 100%,0 100%)}
.folder2 .ftab{position:absolute;left:31%;top:4px;font-family:var(--f-stk);font-size:11px;color:#D9D7D2;letter-spacing:.06em}
.folder2 .book{position:relative;z-index:1;padding:0 18px 90px}
.folder2 .ffront{position:absolute;left:-6px;right:-6px;bottom:0;height:120px;z-index:2;background:linear-gradient(#8A8A85,#6E6C68);border-radius:4px 4px 8px 8px;box-shadow:0 -14px 24px -12px rgba(0,0,0,.6);display:flex;align-items:flex-end;padding:12px 18px;pointer-events:none}
.folder2 .ffront span{font-family:var(--f-stk);color:#F4F2EE;font-size:12px;letter-spacing:.08em}
.folder2 .a4{margin:0;box-shadow:0 2px 4px rgba(0,0,0,.2),0 30px 50px -20px rgba(0,0,0,.8)}
.folder2 .pg.on{animation:rise2 .9s cubic-bezier(.2,.9,.25,1) both;transform-origin:50% 100%}
.folder2 .pg.on.back{animation:rise2 .9s cubic-bezier(.2,.9,.25,1) both}
.folder2 .pg.sink{display:block;animation:sink2 .28s ease-in both}
@keyframes rise2{0%{transform:translateY(62%) rotateX(14deg) rotateZ(-2deg);box-shadow:none}55%{transform:translateY(-10px) rotateX(-3deg) rotateZ(.6deg)}100%{transform:none}}
@keyframes sink2{to{transform:translateY(60%) rotateX(10deg);opacity:.2}}
.a4.rcover2{position:relative;overflow:hidden;background:#0A0A0A;color:#F4F2EE;min-height:620px;--fg:#F4F2EE;--bg:#0A0A0A;--mu:#8A8A85;--ln2:rgba(244,242,238,.26)}
.a4.rcover2 .rcbg{position:absolute;right:-30px;bottom:0;width:62%;height:100%;background-size:auto 100%;background-position:right bottom;background-repeat:no-repeat;opacity:.55;filter:brightness(.6) contrast(1.1);-webkit-mask:linear-gradient(90deg,transparent,#000 35%);mask:linear-gradient(90deg,transparent,#000 35%)}
.a4.rcover2>*{position:relative}
.a4.rcover2 .ct{font-family:var(--f-pop);font-weight:400;font-size:clamp(36px,5vw,58px);line-height:1.05;margin-top:34px;color:#F4F2EE}
.a4.rcover2 .cbox{margin-top:30px}
.a4.rcover2 .cbox .giant{font-size:clamp(110px,14vw,170px)}
.a4.rcover2 .a4-ft{background:transparent}
@media (prefers-reduced-motion:reduce){.folder2 .pg.on{animation:none}}
@media (max-width:760px){.folder2 .book{padding:0 8px 80px}.a4.rcover2{min-height:520px}.a4.rcover2 .rcbg{width:80%;opacity:.4}}

/* 8판: 이용 기간 */
.lcv .strip{grid-template-columns:repeat(5,minmax(0,1fr))}
.lcv .strip .riskc b{color:var(--red)}
.lc{display:grid;gap:6px}
.lc-row{display:grid;grid-template-columns:200px minmax(0,1fr);gap:12px;align-items:center}
.lc-nm{font-size:13px;font-weight:800}
.lc-tr{position:relative;height:24px;background:repeating-linear-gradient(90deg,transparent 0 calc(8.33% - 1px),var(--ln) calc(8.33% - 1px) 8.33%)}
.lc-bar{position:absolute;top:4px;bottom:4px;background:var(--fg)}
.lc-bar.trial,.lc-bar.pause{background:var(--g3)}
.lc-bar.churn{background:transparent;border:1.5px dashed var(--red)}
.lc-end{position:absolute;top:0;bottom:0;width:2px;background:var(--fg)}
.lc-lab{position:absolute;top:4px;margin-left:6px;font-size:11.5px;font-weight:800;font-family:var(--f-num);white-space:nowrap;paint-order:stroke}
.lc-axis .lc-tr{background:none;height:20px;border-bottom:1px solid var(--ln2)}
.lc-axis .lc-tr>span{position:absolute;font-size:11px;color:var(--mu);transform:translateX(-50%)}
.lc-today{position:absolute;top:0;height:calc(100% + 9999px);max-height:none;border-left:1.5px dashed var(--red);z-index:2}
.lc{position:relative;overflow:hidden}
.lc-today b{position:absolute;top:-2px;left:4px;font-size:11px;color:var(--red)}
.lct td{vertical-align:middle}
.lct .in{padding:5px 8px}
@media (max-width:900px){.lcv .strip{grid-template-columns:repeat(2,minmax(0,1fr))}.lc-row{grid-template-columns:120px minmax(0,1fr)}}
.hrs.hchart{display:block;height:auto}
.hcsvg{display:block;width:100%;height:auto;overflow:visible}
.hc-bt{font-size:13.5px}.hc-ax{font-size:13.5px}.hc-pk{font-size:14.5px}.hc-lo{font-size:13.5px}.hc-avgt{font-size:13.5px}
.lc-today b{white-space:nowrap}
.lc-tr{background:none;border-bottom:1px dotted var(--ln)}
.folder2 .pg.on,.folder2 .pg.on.back{animation:rise2 1.15s cubic-bezier(.33,.75,.25,1) both}
.a4.rcover2 .rcbg{height:80%;top:auto;opacity:.34;filter:brightness(.45) contrast(1.05) grayscale(.2);-webkit-mask:linear-gradient(90deg,transparent,#000 40%),linear-gradient(0deg,#000 70%,transparent);-webkit-mask-composite:source-in;mask:linear-gradient(90deg,transparent,#000 40%) intersect,linear-gradient(0deg,#000 70%,transparent)}
@media (max-width:760px){.a4.rcover2 .rcbg{width:78%;opacity:.28}}
@media (prefers-reduced-motion:reduce){.folder2 .pg.on,.folder2 .pg.on.back{animation:none}}
td.n,th.n{white-space:nowrap}
.nw{white-space:nowrap}
.heat>.xs{white-space:nowrap}

/* 8판 추가: 전체 보기 / 매장 하나 보기 · 오른쪽 레일 */
.allbtn{display:grid;width:100%;text-align:left;padding:10px 12px;border:1px solid var(--ln2);border-radius:var(--r2);background:var(--bg)}
.allbtn b{font-family:var(--f-pop);font-weight:400;font-size:20px}.allbtn small{font-size:11.5px;color:var(--mu)}
.mode-all .allbtn{background:var(--fg);color:var(--bg);border-color:var(--fg)}.mode-all .allbtn small,.mode-all .allbtn .cap{color:color-mix(in srgb,var(--bg) 70%,var(--fg))}
.allhead{background:var(--fg);color:var(--bg);border-radius:var(--r2);padding:22px 26px 20px;margin:4px 0 18px;position:relative;overflow:hidden}
.allhead .cap{color:color-mix(in srgb,var(--bg) 65%,var(--fg))}
.allhead h1{font-family:var(--f-num);font-weight:700;font-size:clamp(40px,5vw,68px);letter-spacing:.02em;line-height:1}
.allhead h1 span{color:var(--red)}
.allhead p{margin-top:8px;color:color-mix(in srgb,var(--bg) 75%,var(--fg))}
.allhead::after{content:"";position:absolute;right:-30px;top:-30px;width:180px;height:180px;border-radius:50%;border:18px solid var(--red);opacity:.85}
.allsec{scroll-margin-top:84px;padding:6px 0 26px;border-bottom:1px solid var(--ln)}
.allsec+.allsec{margin-top:14px}
.allh{font-family:var(--f-pop);font-weight:400;font-size:26px;margin:4px 0 12px}
.alist{display:grid;gap:6px}
.arow{display:grid;grid-template-columns:auto 150px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--ln);border-radius:var(--r2)}
.arow b{overflow-wrap:anywhere}
.allnums{grid-template-columns:repeat(5,minmax(0,1fr))}
.amap{display:block;width:100%;max-width:620px;height:auto;margin:0 auto}
.am-a{fill:var(--p2);stroke:var(--ln2);stroke-dasharray:4 4}
.am-n{font-size:13px;fill:var(--mu);font-weight:800}
.am-s{cursor:pointer}.am-s circle{fill:var(--g3);stroke:var(--bg);stroke-width:2}.am-s.real circle{fill:var(--fg)}.am-s.risk circle{fill:var(--red)}
.am-s text{font-size:12.5px;font-weight:800;fill:var(--fg);paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.magcfg td{vertical-align:middle}.mcaud .chip{margin:2px 2px 2px 0;cursor:pointer}.mcaud .chip input{margin-right:3px}
.storehead h1{font-family:var(--f-pop);font-size:46px;border-bottom:4px solid var(--red);display:inline-block;padding-bottom:2px}
.storehead .sstat{margin-top:6px;font-size:15px}.storehead .sstat .num{font-size:20px;font-weight:800}.storehead .sstat small{color:var(--mu);margin-left:6px}
.backall{margin-bottom:2px}
.rail{position:fixed;right:12px;top:84px;width:172px;max-height:calc(100vh - 220px);z-index:55;display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--ln2);border-radius:12px;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(8px)}
.rail ol{list-style:none;margin:0;padding:0;overflow-y:auto;scrollbar-width:thin;display:grid;gap:1px;min-height:0}
.rail button{display:flex;gap:8px;align-items:center;width:100%;text-align:left;padding:5px 6px;border-radius:7px;font-size:12.5px;color:var(--mu);position:relative}
.rail button:hover{background:var(--p2);color:var(--fg)}
.rail .ri{flex:none;width:24px;height:24px;display:grid;place-items:center;border-radius:6px;font-family:var(--f-num);font-weight:700;font-size:11px;background:var(--p2);color:var(--fg)}
.rail .rt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rail [data-i].on{color:var(--fg);font-weight:800}.rail [data-i].on .ri{background:var(--red);color:#fff}
.rail .rl-mode{border:1px solid var(--fg);color:var(--fg);font-weight:800}.rail .rl-mode .ri{background:var(--fg);color:var(--bg)}
.rail .rl-top{border-top:1px solid var(--ln);border-radius:0 0 7px 7px;padding-top:7px}
body.has-rail .lay{padding-right:206px}
@media (max-width:1280px){
  .rail{width:46px;padding:6px 5px}.rail .rt{position:absolute;right:calc(100% + 8px);top:50%;transform:translateY(-50%);background:var(--fg);color:var(--bg);padding:5px 9px;border-radius:6px;font-size:12px;opacity:0;pointer-events:none;transition:opacity .12s;overflow:visible}
  .rail button:hover .rt{opacity:1}.rail button{padding:4px;justify-content:center}
  body.has-rail .lay{padding-right:76px}
}
.side-on .rail{width:46px;padding:6px 5px}.side-on .rail .rt{position:absolute;right:calc(100% + 8px);top:50%;transform:translateY(-50%);background:var(--fg);color:var(--bg);padding:5px 9px;border-radius:6px;font-size:12px;opacity:0;pointer-events:none;overflow:visible}
.side-on .rail button:hover .rt{opacity:1}.side-on .rail button{padding:4px;justify-content:center}
body.has-rail.side-on .lay{padding-right:76px}
@media (max-width:860px){.rail{display:none}body.has-rail .lay{padding-right:20px}.arow{grid-template-columns:1fr auto}.allnums{grid-template-columns:repeat(2,minmax(0,1fr))}}
.raydock{z-index:56}
body.has-rail #main>.raydock{right:72px}
@media (min-width:1281px){body.has-rail:not(.side-on) #main>.raydock{right:200px}}

/* 매거진 데이터 글 · 메뉴판 사다리 · 객단가 */
.mgdata{margin:18px 0 8px}
.mgd{gap:14px}
.mdart{position:relative;border:1px solid var(--ln2);border-radius:var(--r2);padding:16px 16px 14px;cursor:pointer;background:var(--bg);overflow:hidden;min-width:0}
.mdart:hover{border-color:var(--fg);box-shadow:var(--pop)}
.mdart .mfb{position:absolute;right:10px;top:-8px;font-family:var(--f-num);font-weight:700;font-size:64px;color:var(--p2);z-index:0}
.mdart>*{position:relative}.mdart h3{font-size:17px;margin:8px 0 6px}.mdart p{font-size:13px;line-height:1.5}
.mdchart{margin:6px 0;max-height:170px;overflow:hidden}.mdchart svg{display:block;width:100%;height:auto;max-height:170px}
.mgbody .dek{font-size:15px;font-weight:700;margin-bottom:10px}
.mg-ray{display:flex;gap:8px;align-items:flex-start;margin:10px 0;padding:10px 12px;border-left:3px solid var(--red);background:var(--p2)}
.mg-ray b{font-size:14px;line-height:1.5}
.mg-mine{margin:8px 0;padding:8px 12px;border:1px dashed var(--ln2);border-radius:8px;font-size:13.5px}
.mg-src{margin-top:4px}
.mg-bars{display:grid;gap:4px;margin:6px 0}.mg-bars>div{display:grid;grid-template-columns:minmax(70px,120px) minmax(0,1fr) auto;gap:8px;align-items:center;font-size:12.5px}
.mg-bars i{display:block;height:10px;background:var(--fg);border-radius:2px}.mg-bars .me i{background:var(--red)}.mg-bars b{font-family:var(--f-num);white-space:nowrap}
.mg-bars span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mg-t{width:100%}.mg-t td,.mg-t th{padding:5px 6px}
.mg-two{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:10px 0}.mg-two p{font-size:13.5px}
.mg-how{margin:8px 0 6px;padding-left:18px;font-size:13.5px;line-height:1.6}
.mg-bands{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0}.mg-bands>div{border:1px solid var(--ln);border-radius:8px;padding:8px 10px;display:grid}
.mg-bands>div.on{border-color:var(--fg);box-shadow:inset 0 -3px 0 var(--red)}.mg-bands b{font-size:22px;font-family:var(--f-num)}
.mg-leg{display:flex;flex-wrap:wrap;gap:6px 14px;margin:6px 0}.mg-leg span{display:inline-flex;gap:5px;align-items:center;white-space:nowrap}
.lg-d{width:10px;height:10px;border-radius:50%;background:var(--g3);display:inline-block}.lg-d.pil{background:var(--fg)}.lg-d.top{background:var(--bg);border:2px solid var(--fg)}.lg-d.bait{background:var(--g3)}
.lg-q{width:16px;height:5px;background:var(--red);opacity:.55;display:inline-block}.lg-l{width:16px;border-top:2px dashed var(--fg);display:inline-block}.lg-l.tw{border-color:var(--red)}
.mlsvg,.tksvg,.plsvg{display:block;width:100%;height:auto}
.ml-gl{stroke:var(--ln)}.ml-ax{font-size:12px;fill:var(--mu);font-family:var(--f-num)}
.ml-nm{font-size:12.5px;fill:var(--fg);font-weight:700}.ml-p{font-size:12px;fill:var(--fg);font-family:var(--f-num);font-weight:700}
.ml-stem{stroke:var(--ln2);stroke-width:1.5}.ml-q{fill:var(--red);opacity:.55}
.ml-dot{fill:var(--g3);stroke:var(--bg);stroke-width:1.5}.ml-dot.pil{fill:var(--fg)}.ml-dot.top{fill:var(--bg);stroke:var(--fg);stroke-width:2.5}
.ml-tt{stroke:var(--fg);stroke-dasharray:5 4;stroke-width:1.4}.ml-ttt{font-size:12px;font-weight:800;fill:var(--fg);paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.ml-tw{stroke:var(--red);stroke-dasharray:2 3;stroke-width:1.6}.ml-twt{font-size:12px;font-weight:800;fill:var(--red);paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.tipg.hov .ml-dot{fill:var(--red)}
.tk-line{fill:none;stroke:var(--fg);stroke-width:2}.tk-dot{fill:var(--fg)}.tk-v{font-size:13px;font-weight:800;fill:var(--fg);paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.tk-town{stroke:var(--red);stroke-dasharray:6 4;stroke-width:1.6}.tk-tt{font-size:12.5px;font-weight:800;fill:var(--red);paint-order:stroke;stroke:var(--bg);stroke-width:4px}.tk-ax{font-size:11.5px;fill:var(--mu)}
.pl-ax{stroke:var(--ln2)}.pl-md{stroke:var(--fg);stroke-dasharray:4 3}.pl-mdt{font-size:12px;font-weight:800;fill:var(--fg)}
.pl-dot{fill:var(--g3)}.pl-me{fill:var(--red)}.pl-met{font-size:13px;font-weight:900;fill:var(--red)}.pl-lb{font-size:11.5px;fill:var(--fg);font-family:var(--f-num)}
.t5g{display:grid;gap:8px}.t5{display:grid;grid-template-columns:34px minmax(0,1fr);gap:2px 10px;padding:8px 10px;border:1px solid var(--ln);border-radius:8px}
.t5 .t5r{grid-row:1/5;font-family:var(--f-num);font-weight:700;font-size:26px;color:var(--red)}
.calc8 .cgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.calc8 label{display:grid;gap:3px;font-size:12.5px}
.calc8 .cout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.calc8 .cout>div{border:1px solid var(--fg);border-radius:8px;padding:8px 10px;display:grid}
.calc8 .cout b{font-family:var(--f-num);font-size:20px;white-space:nowrap}
.mg-calcico{font-family:var(--f-num);font-size:34px;font-weight:700;padding:16px 0;text-align:center}
.mghome{display:grid;gap:4px;position:relative;padding:4px 0}.mghome .mfb{position:absolute;right:0;top:-14px;font-family:var(--f-num);font-weight:700;font-size:56px;color:var(--p2)}
.mghome b{font-size:17px;position:relative}.mghome .stk{justify-self:start}
@media (max-width:760px){.mg-two,.calc8 .cgrid{grid-template-columns:1fr}.mg-bands b{font-size:18px}}
.lc-axis .lc-tr>span{white-space:nowrap}

/* 9판: 원가 · 남는 돈 */
.costsec{margin-top:10px}
.crt td,.crt th{vertical-align:middle}.crt tr[data-pop]{cursor:pointer}.crt tr[data-pop]:hover{background:var(--p2)}
.cr-bar{position:relative;display:inline-block;width:90px;height:8px;background:var(--p2);vertical-align:middle;margin-right:6px;border-radius:2px}
.cr-bar i{position:absolute;left:0;top:0;bottom:0;background:var(--fg);border-radius:2px}.cr-bar.over i{background:repeating-linear-gradient(135deg,var(--red) 0 3px,transparent 3px 6px);border:1px solid var(--red)}
.cr-bar b{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--red)}
.cr-over td:first-child{box-shadow:inset 3px 0 0 var(--red)}
.qdsvg{display:block;width:100%;height:auto}.qd{fill:transparent}.qd.q1{fill:var(--p2)}.qd.q2{fill:url(#none);stroke:none}
.qd-t{font-size:13px;font-weight:900;fill:var(--fg)}.qd-t.warn{fill:var(--red)}.qd-t.mu{fill:var(--mu)}
.qd-ax{stroke:var(--ln2)}.qd-l{font-size:11.5px;fill:var(--mu)}.qd-p{fill:var(--fg);stroke:var(--bg);stroke-width:1.5}.qd-p.over{fill:var(--bg);stroke:var(--red);stroke-width:2.5}
.qd-n{font-size:11.5px;font-weight:700;fill:var(--fg);paint-order:stroke;stroke:var(--bg);stroke-width:3px}
.tipg.hov .qd-p{fill:var(--red)}
.qd-g{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:8px 0}.qd-g>div{border-top:2px solid var(--fg);padding-top:4px}
.calert{border:1px solid var(--ln2);border-radius:8px;padding:10px 12px;margin-bottom:8px}.calert.bad{border-color:var(--red)}
.costfill .cf-steps{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.cf-steps span{font-size:12px;padding:3px 9px;border-radius:99px;border:1px solid var(--ln2)}.cf-steps span.on{border-color:var(--fg);font-weight:800}
.cfpre{white-space:pre-wrap;font-size:12px;background:var(--p2);padding:10px;border-radius:8px;max-height:220px;overflow:auto}
.navifr{width:100%;height:70vh;border:1px solid var(--ln2);border-radius:8px;background:#fff}
.pop-in.navipop{width:min(980px,96vw)}
.s-입력{background:var(--fg);color:var(--bg)}
@media (max-width:760px){.qd-g{grid-template-columns:repeat(2,minmax(0,1fr))}}
.qdsvg{max-width:760px;margin:0 auto}
.calert td:first-child{white-space:nowrap}

/* ═══ 다듬기: 글자 위계 6단계 · 여백 단계 (토큰) ═══ */
:root{--fs-1:40px;--fs-2:26px;--fs-3:15px;--fs-num:22px;--fs-body:13px;--fs-note:11px;--sp-1:6px;--sp-2:12px;--sp-3:20px;--sp-4:32px}
.owner-app{--fs-1:26px;--fs-2:22px;--fs-3:15px;--fs-num:22px}
/* 1 화면 대제목 */
.shead h1,.storehead h1{font-size:var(--fs-1)}
.owner-app h2.pt{font-size:var(--fs-1);line-height:1.15}
/* 2 구역 제목 */
.allh,.tdh,.costsec .allh{font-size:var(--fs-2);line-height:1.2}
/* 3 칸 제목 — 본문보다 커야 함(전엔 12.5px로 본문 13px보다 작았음) */
.card .ch h3{font-size:var(--fs-3);font-weight:800;letter-spacing:-.01em}
.mdart h3{font-size:var(--fs-3)}
.owner-app .mart h3{font-size:17px}.owner-app .mart.big h3{font-size:22px}
/* 4 큰 숫자 — 칸 제목보다 약하면 안 됨(전엔 감시 카드 16px) */
.wd b,.strip b,.mg-bands b,.allnums b{font-size:var(--fs-num)}
/* 5 본문 */
td,.sm,.mg-t td,.alist .sm{font-size:var(--fs-body)}
.card p{font-size:var(--fs-body)}
/* 6 주석·출처 — 본문보다 크면 안 됨 · 10~11.5px 네 가지 → 11px 하나 */
.xs,.cap,.ch .tip,.at,.mg-src span,.qd-l{font-size:var(--fs-note)}
.src{font-size:10.5px}
/* 여백 단계: 구역 사이 32 · 칸 사이 20 · 칸 안 12 */
.allsec{padding-bottom:var(--sp-4)}.allsec+.allsec{margin-top:var(--sp-3)}
.mt2{margin-top:var(--sp-3)}.mag{gap:var(--sp-3)}
.card{padding:16px}

/* ═══ 강조 대제목 = 반대색 띠(글자 폭만 · 빨강 그림자 하나) ═══ */
.hlb{background:var(--fg);color:var(--bg);padding:.02em .28em .06em;box-decoration-break:clone;-webkit-box-decoration-break:clone;box-shadow:4px 4px 0 var(--red);line-height:1.35}
.allhead{background:none;color:var(--fg);padding:8px 0 6px;border-bottom:1px solid var(--ln2);border-radius:0}
.allhead .cap,.allhead p{color:var(--mu)}.allhead::after{display:none}
.allhead h1 .n{color:var(--mu);font-size:.6em;vertical-align:.12em}
.storehead h1{border-bottom:0;padding-bottom:0}
.tdh{margin:0 0 6px}
.card .ch h3 .hlb{box-shadow:3px 3px 0 var(--red)}

/* ═══ 운영자 콘솔 색감 한 단계 빼기 — 회색 무채색 · 빨강은 선·점·숫자만 ═══ */
body.console{--paper:#EDEDED;--ink:#0B0B0B}
body.console{--p1:color-mix(in srgb,var(--fg) 4%,var(--bg));--p2:color-mix(in srgb,var(--fg) 7%,var(--bg));--p3:color-mix(in srgb,var(--fg) 12%,var(--bg));--ln:color-mix(in srgb,var(--fg) 12%,transparent);--ln2:color-mix(in srgb,var(--fg) 24%,transparent);--mu:color-mix(in srgb,var(--fg) 58%,var(--bg))}
body.console .stk{background:transparent;color:var(--red);border:1px solid var(--red);box-shadow:none;transform:none}
body.console .stk.inv{color:var(--fg);border-color:var(--fg)}
body.console .rail [data-i].on .ri{background:transparent;color:var(--red);box-shadow:inset 0 0 0 1.5px var(--red)}
body.console .ledger>div:first-child{background:transparent;color:var(--red);box-shadow:inset 3px 0 0 var(--red)}
body.console .rline.g-bad .gr,body.console .flow span.now,body.console .pin .lb.hot,body.console .bubbles .bb.top{background:transparent;color:var(--red);border-color:var(--red);box-shadow:none}
body.console .rxc .no{background:var(--bg);color:var(--red);box-shadow:inset 0 0 0 2px var(--red)}
body.console .tp .pn .n,body.console .wf .wbar i.dn,body.console .hb.me .tr i,body.console .duel .cl.me .bx,body.console .mg-bars .me i,body.console .tlegend i.c{background:repeating-linear-gradient(135deg,var(--red) 0 2px,transparent 2px 5px);box-shadow:inset 0 0 0 1px var(--red)}
body.console .ctitle h1 em{background:transparent;color:var(--red);box-shadow:none;border-bottom:3px solid var(--red)}
body.console .tipg.hov .hc-bar,body.console .tipg.hov .qd-p,body.console .tipg.hov .ml-dot{fill:var(--bg);stroke:var(--red);stroke-width:2}
body.console .ml-q{fill:none;stroke:var(--red);stroke-width:1}
body.console .side .st.on{box-shadow:none;border-color:var(--red)}
body.console .card,body.console .scard{box-shadow:none}
body.console .hlb{box-shadow:3px 3px 0 var(--red)}
.allhead h1 .hlb{color:var(--bg)}
.combo{flex-wrap:wrap}.combo b{flex:1 1 auto;white-space:nowrap}
.num{white-space:nowrap}
.tbw td:first-child b,.crt td:first-child{white-space:nowrap}
.pinv b{white-space:nowrap}
td:first-child>b:only-child{white-space:nowrap}
.costfill p b{white-space:nowrap}
.folder2 .fback{clip-path:polygon(0 22px,22% 22px,26% 0,66% 0,70% 22px,100% 22px,100% 100%,0 100%)}
.folder2 .ftab{left:27%;right:31%;text-align:center;white-space:nowrap}

/* ═══ 11/11 복구판 — 오른쪽 레일 걷음(8판 화면 폭으로) · 위쪽 「전체 화면 ⇄ 매장 고르기」 띠 · 전체 화면(통합전산 홈 결) ═══ */
.rail{display:none!important}
body.has-rail .lay,body.has-rail.side-on .lay{padding-right:0}
body.has-rail #main>.raydock{right:22px}
@media (min-width:1281px){body.has-rail:not(.side-on) #main>.raydock{right:22px}}
.scope{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0 12px;margin-bottom:14px;border-bottom:1px dashed var(--ln2)}
.scope .seg{margin-left:0}
.scope .sc-sel{width:auto;min-width:200px;padding:6px 10px;font-size:13px;font-weight:700}
.scope .sc-tip{margin-left:auto}
@media (max-width:760px){.scope .sc-tip{display:none}.scope .sc-sel{flex:1 1 160px;min-width:0}}
.ovhead{align-items:end;margin-bottom:6px}
.ovhead .allhead{border-bottom:0}
.ovray{display:flex;gap:12px;align-items:flex-end;justify-content:flex-end;min-width:0}
.ovray .rayslot{flex:none}
.say2{border-top:1px dashed var(--ln2);padding-top:8px;min-width:0;max-width:260px}
.say2 b{display:block;font-size:15px;font-weight:800;line-height:1.45;letter-spacing:-.02em;margin-top:2px}
.ovnums{grid-template-columns:repeat(6,minmax(0,1fr))}
@media (max-width:1100px){.ovnums{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.ovnums{grid-template-columns:repeat(2,minmax(0,1fr))}.ovray{justify-content:flex-start}}
.ovgrid{margin-top:var(--sp-3,20px)}
.ovgrid>.allsec{border-bottom:0}
.ovt tr.ovr{cursor:pointer}
.ovt tr.ovr:hover td,.ovt tr.ovr:focus td{background:var(--p2)}
.ovt tr.ovr.real td:first-child{box-shadow:inset 3px 0 0 var(--red)}
.ovt td{vertical-align:middle}
.ovt .dcell{display:flex;align-items:center;gap:8px;white-space:nowrap}
.neg{color:var(--red)}
/* 점선 등락 막대 — 가운데 점선 = 기준과 같음 · 빠진 쪽은 빨강 점선 · 오른 쪽은 회색 점무늬 */
.db{position:relative;display:inline-block;width:110px;height:14px;flex:none;background:linear-gradient(var(--ln2),var(--ln2)) 50% 0/1px 100% no-repeat}
.db::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:1px dashed var(--ln2)}
.db i{position:absolute;top:3px;bottom:3px}
.db i.up{background-image:radial-gradient(var(--fg) 1px,transparent 1.4px);background-size:4px 4px;border:1px solid color-mix(in srgb,var(--fg) 55%,transparent)}
.db i.dn{border:1.5px dashed var(--red);background:color-mix(in srgb,var(--red) 10%,transparent)}
.urgl{display:grid;gap:8px}
.urg{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;text-align:left;padding:10px 0 10px 12px;border-left:2px dashed var(--red);border-bottom:1px solid var(--ln)}
.urg .xs{grid-column:1;color:var(--mu)}
.urg .go{grid-row:1/3;grid-column:2;align-self:center;font-size:12px;font-weight:800;color:var(--mu)}
.urg:hover .go{color:var(--fg)}
.flow3{display:grid;gap:2px}
.flr{display:grid;grid-template-columns:minmax(110px,1.2fr) repeat(3,minmax(0,1fr));gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--ln);cursor:pointer}
.flr.fh{cursor:default;border-bottom:1px solid var(--ln2);padding-top:0}
.flr:not(.fh):hover{background:var(--p1)}
.flr b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.flr .fc{display:flex;align-items:center;gap:6px;min-width:0}
.flr .fc .db{width:auto;flex:1 1 60px;min-width:40px}
.flr .fc em{font-style:normal;font-size:12px;min-width:48px;text-align:right}
.tdl{list-style:none;margin:10px 0 0;padding:0}
.tdl li{padding:8px 0;border-bottom:1px dashed var(--ln);cursor:pointer;font-size:13px}
.tdl li:hover{background:var(--p1)}
.tdl .stk{font-size:9.5px;vertical-align:1px}
@media (max-width:900px){.ovgrid>.c4,.ovgrid>.c5,.ovgrid>.c7,.ovgrid>.c8,.ovhead>.c4,.ovhead>.c8{grid-column:1/-1}.ovgrid>.vr{border-left:0;padding-left:0;margin-left:0}.flr{grid-template-columns:minmax(80px,1fr) repeat(3,minmax(0,1fr))}.flr .fc .db{display:none}}

/* ═══ 11/11 색 한 턴 빼기(운영 콘솔만) — 블랙 → 따뜻한 차콜 · 레드 → 낮춘 벽돌색, 우리 가게·경보에만 · 점선·점무늬는 그대로 ═══ */
body.console{--ink:#1E1E1C;--paper:#E2E0DA;--red:#B9493F;--g1:#252523;--g2:#2D2D2A;--g3:#8E8C86;--g4:#CFCCC5}
body.console{--p1:color-mix(in srgb,var(--fg) 5%,var(--bg));--p2:color-mix(in srgb,var(--fg) 8%,var(--bg));--p3:color-mix(in srgb,var(--fg) 13%,var(--bg));--ln:color-mix(in srgb,var(--fg) 13%,transparent);--ln2:color-mix(in srgb,var(--fg) 26%,transparent);--mu:color-mix(in srgb,var(--fg) 60%,var(--bg));--dot:radial-gradient(color-mix(in srgb,var(--fg) 14%,transparent) 1px,transparent 1.6px)}
body.console .hlb,body.console .card .ch h3 .hlb{box-shadow:3px 3px 0 color-mix(in srgb,var(--fg) 28%,transparent)}
body.console .storehead h1{border-bottom-color:var(--ln2)}
body.console .watch.isdown{border-top-color:color-mix(in srgb,var(--red) 70%,var(--bg));border-top-style:dashed}
body.console .xbar{background:var(--g1)}
body.console .ctitle h1 em{color:var(--fg);border-bottom-color:var(--ln2)}
body.console .stk{color:var(--fg);border-color:var(--ln2)}
body.console .stk.alert{color:var(--red);border-color:var(--red)}
body.console .btn.pri{background:var(--fg);border-color:var(--fg);color:var(--bg)}
body.console .top{background:var(--bg)}
.alrt{font-size:12px;font-weight:800;color:var(--red);white-space:nowrap}
.alrt i{display:inline-block;width:7px;height:7px;border-radius:50%;border:1.5px solid var(--red);margin-right:5px;vertical-align:0}
body.console .hlb{background:color-mix(in srgb,var(--fg) 88%,var(--bg))}
@media (max-width:760px){.top .logo b{white-space:nowrap}body.console #who{display:none}}

/* ═══ 11/11 콘솔 = 블랙 유지 · 시인성 올리기 — 칸을 한 겹 띄우고, 보조 글자 밝게·크게, 빨강은 검정 위에서 보이는 밝기 ═══ */
body.console{--red:#FF4D3F;--panel:#151514;--panel2:#1E1E1C;--edge:#2C2C29;
 --mu:color-mix(in srgb,var(--fg) 76%,var(--bg));--mu2:color-mix(in srgb,var(--fg) 58%,var(--bg));
 --ln:color-mix(in srgb,var(--fg) 18%,transparent);--ln2:color-mix(in srgb,var(--fg) 34%,transparent)}
body.console .allsec,body.console .card{background:var(--panel);border:1px solid var(--edge);border-radius:12px;padding:18px 20px}
body.console .cap{color:var(--mu);font-size:12px;letter-spacing:.06em}
body.console th{background:var(--panel2);color:var(--fg);font-size:12px;border-bottom:1px solid var(--edge)}
body.console tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--fg) 3%,transparent)}
body.console tbody tr:hover td{background:color-mix(in srgb,var(--fg) 7%,transparent)}
body.console td{font-size:13.5px}
body.console .allsec.board-sec{padding:16px 14px}
body.console .ovt th,body.console .ovt td{padding-left:5px;padding-right:5px}
body.console .ovt .dcell .db{max-width:110px}
body.console .ovt td{font-size:13px}
body.console .ovt th,body.console .ovt td{padding-left:4px;padding-right:4px}
body.console .ovt .dcell{gap:5px}
body.console .allsec.board-sec{padding:16px 8px}
