/* 분석기 전용 */
.an{padding-top:24px;padding-bottom:24px}
.intro h1{font-size:clamp(1.8rem,4.6vw,2.6rem);font-weight:700;letter-spacing:-.03em;line-height:1.1;margin:0 0 10px}
.lede{color:var(--mute);margin:0;max-width:64ch;font-size:.98rem}
.drop{margin-top:24px;border:1.5px dashed rgba(165,139,255,.55);border-radius:var(--r-panel);padding:40px 20px;text-align:center;background:var(--glass);cursor:pointer;-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));
  display:flex;flex-direction:column;align-items:center;gap:6px;transition:background .2s,border-color .2s}
.drop>i{font-size:1.6rem;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;color:var(--on-primary);background:linear-gradient(135deg,var(--primary),var(--accent));box-shadow:var(--glow);margin-bottom:6px}
.drop.over{background:rgba(165,139,255,.14);border-color:var(--primary)}
.drop b{font-size:1.15rem;color:var(--ink)}
.drop span{color:var(--mute);font-size:.92rem}
.drop input{display:none}
.how{margin-top:16px;color:var(--mute);font-size:.92rem}
.how summary{cursor:pointer;color:var(--ink);font-weight:600;padding:4px 0}
.how ol{margin:8px 0 0;padding-left:1.3em}
.err{margin-top:12px}

.controls{display:grid;grid-template-columns:repeat(2,minmax(0,10rem)) 1fr 1fr auto;gap:12px 16px;align-items:end;margin-top:8px;padding:18px 20px;border-radius:var(--r-panel)}
.controls .cbtn{display:flex;gap:8px}
@media (max-width:860px){.controls{grid-template-columns:1fr 1fr}.controls .grow,.controls .cbtn{grid-column:1/-1}}
/* 요약 수치: KPI 칸 */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;padding:16px;border-radius:var(--r-panel);background:var(--glass);border:1px solid var(--glass-border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}
.facts div{padding:14px 16px;border-radius:var(--r-cell);background:var(--glass-tile);border:1px solid var(--glass-border);display:flex;flex-direction:column-reverse;justify-content:flex-end;gap:6px}
.facts div b{display:block;font-size:2rem;font-weight:700;letter-spacing:-.03em;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}
.facts div span{color:var(--mute);font-size:.76rem;font-weight:600;letter-spacing:.02em}

/* 섹션 = 유리 패널 */
.blk{margin-top:16px;padding:22px;border-radius:var(--r-panel);background:var(--glass);border:1px solid var(--glass-border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(var(--blur)) saturate(140%);backdrop-filter:blur(var(--blur)) saturate(140%);min-width:0}
@media (prefers-reduced-transparency:reduce){.blk{background:var(--glass-solid);backdrop-filter:none;-webkit-backdrop-filter:none}}
.blk h2{font-size:1.05rem;font-weight:600;letter-spacing:-.01em;margin:0 0 4px;line-height:1.3}
.sub{color:var(--mute);margin:0 0 16px;font-size:.84rem;max-width:72ch}
/* 대화 분석 탭: 대시보드 격자 */
#tab-analysis:not([hidden]){display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:16px;margin-top:16px;align-items:start}
#tab-analysis>.facts,#tab-analysis>.full{grid-column:1/-1}
#tab-analysis>.blk{margin-top:0}
#tab-analysis .two{grid-template-columns:1fr;gap:18px}
@media (max-width:980px){#tab-analysis:not([hidden]){grid-template-columns:1fr}}
.row-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:16px}

.rank{list-style:none;margin:0;padding:0}
.rank li{display:grid;grid-template-columns:2.2em minmax(5.5em,10.5em) 1fr 4.6em;align-items:center;gap:10px;padding:4px 0}
.rank .v{color:var(--ink)}
.rank .no{color:var(--mute);text-align:right;font-variant-numeric:tabular-nums}
.rank .bar{height:12px;background:linear-gradient(90deg,var(--primary-deep),var(--primary));border-radius:999px;transform-origin:left;opacity:.8}
@media (prefers-reduced-motion:no-preference){.rank .bar{animation:grow .7s var(--ease) both;animation-delay:calc(var(--i) * 25ms)}@keyframes grow{from{transform:scaleX(0)}}}
.rank li:first-child .bar{background:linear-gradient(90deg,var(--primary),var(--accent));opacity:1;box-shadow:var(--glow)}
.rank li:first-child .nm{font-family:var(--disp);font-weight:700;font-size:1.08rem}
/* 이름은 줄여도 상태 배지는 항상 보이게 */
.rank .nm{display:flex;align-items:center;min-width:0;white-space:nowrap}
.rank .nm .nmb{overflow:hidden;text-overflow:ellipsis;min-width:0}
.rank .nm .st{flex:none}
.rank .v{text-align:right;font-variant-numeric:tabular-nums}
@media (max-width:560px){.rank li{grid-template-columns:1.8em minmax(4.8em,8.5em) 1fr 3.8em;gap:8px}.rank .nm .st{padding:0 5px;gap:0;font-size:0}.rank .nm .st i{font-size:.85rem}}

.legend{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:.8rem;color:var(--mute);flex-wrap:wrap}
.legend i{width:15px;height:15px;border-radius:3px;display:inline-block}
.legend i.pk{outline:2px solid var(--pop);outline-offset:-2px;margin-left:12px}
/* 언제 가장 시끄러웠나: 개요 / 흐름 / 시간대 카드 */
.act-head{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:12px 0 14px}
.act-over{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px;align-items:start}
.act-kpi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.act-kpi div{padding:10px 12px;border-radius:var(--r-cell);background:var(--glass-tile);border:1px solid var(--glass-border);min-width:0}
.act-kpi span{display:block;font-size:.76rem;color:var(--mute);font-weight:600}
.act-kpi b{display:block;color:var(--ink);font-size:1.05rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.act-kpi small{font-size:.74rem;color:var(--mute);font-weight:500}
.act-cal{--cs:14px;display:grid;grid-template-columns:auto 1fr;column-gap:6px;row-gap:4px;overflow-x:auto;min-width:0}
.act-cal .cm{grid-column:2;display:grid;grid-auto-flow:column;grid-auto-columns:var(--cs);gap:3px;font-size:.68rem;color:var(--mute);height:1.1em}
.act-cal .cm span{white-space:nowrap}
.act-cal .cd{display:grid;grid-template-rows:repeat(7,var(--cs));gap:3px;font-size:.64rem;color:var(--mute);line-height:var(--cs)}
.act-cal .cg{display:grid;grid-template-rows:repeat(7,var(--cs));grid-auto-flow:column;grid-auto-columns:var(--cs);gap:3px}
.act-cal .legend{grid-column:2;margin-top:8px}
.act-cal i,.act .legend i{width:var(--cs,14px);height:var(--cs,14px);border-radius:3px;display:inline-block}
.act i.l0{background:rgba(255,255,255,.07)}.act i.l1{background:var(--h1)}.act i.l2{background:var(--h2)}.act i.l3{background:var(--h3)}.act i.l4{background:var(--h4)}
.act i.out{background:none}
.act i.peak{outline:2px solid var(--pop);outline-offset:-2px}
.act-flow{display:grid;grid-template-columns:auto 1fr;column-gap:8px;row-gap:4px}
.act-flow .fy{display:flex;flex-direction:column;justify-content:space-between;font-size:.68rem;color:var(--mute);text-align:right;height:150px;font-variant-numeric:tabular-nums;line-height:1}
.act-flow .fbars{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:2px;height:150px;align-items:end;border-bottom:1px solid var(--glass-border);
  background:linear-gradient(var(--glass-border),var(--glass-border)) 0 0/100% 1px no-repeat,linear-gradient(var(--glass-border),var(--glass-border)) 0 50%/100% 1px no-repeat}
.act-flow .fbars span{display:flex;flex-direction:column-reverse;height:100%;min-width:0}
.act-flow .fbars i{display:block;min-height:1px;flex:none}
.act-flow .fbars span i:last-child{border-radius:2px 2px 0 0}
.act-flow .fbars span:hover{background:rgba(255,255,255,.05)}
.act-flow .fx{grid-column:2;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));font-size:.68rem;color:var(--mute)}
.act-flow .fx span{white-space:nowrap}
.act-leg{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:4px;max-width:560px}
.act-leg li{display:grid;grid-template-columns:12px minmax(0,1fr) auto 4.5em;gap:10px;align-items:center;font-size:.86rem}
.act-leg i{width:12px;height:12px;border-radius:3px}
.act-leg b{color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.act-leg span{color:var(--mute);font-variant-numeric:tabular-nums}
.act-leg em{font-style:normal;color:var(--ink);font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.act-hour{display:grid;grid-template-columns:3fr 1fr;gap:22px}
.act-hour .h3{margin:0 0 8px}
.hb{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:3px;height:140px;align-items:end}
.hb.wd{grid-template-columns:repeat(7,minmax(0,1fr))}
.hb span{display:flex;flex-direction:column;justify-content:flex-end;height:100%;position:relative;padding-bottom:16px}
.hb i{display:block;background:var(--h2);border-radius:3px 3px 0 0}
.hb i.on{background:linear-gradient(180deg,var(--h4),var(--primary));box-shadow:var(--glow)}
.hb em{position:absolute;bottom:0;left:50%;transform:translateX(-50%);white-space:nowrap;font-style:normal;font-size:.66rem;color:var(--mute)}
.kept{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px;font-size:.84rem;color:var(--mute)}
.kept i{color:var(--success)}
.kept span{flex:1 1 260px}
@media (max-width:900px){.act-over,.act-hour{grid-template-columns:1fr}}
@media (max-width:520px){.act-kpi{grid-template-columns:repeat(2,minmax(0,1fr))}.act-cal{--cs:12px}}

/* 원형 워드클라우드 — 명세 §3.6 */
.cloudwrap{position:relative;width:100%;max-width:720px;margin:0 auto;aspect-ratio:1/0.86}
.cloudwrap::before{content:"";position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 50% 46%,rgba(165,139,255,.16) 0%,transparent 70%)}
.cloud{position:absolute;inset:0}
.cloud b{position:absolute;font-family:var(--disp);font-weight:800;letter-spacing:-.02em;white-space:nowrap;line-height:1;cursor:default;
  transform:translate(-50%,-50%) scale(1);transition:transform .18s cubic-bezier(.2,.8,.3,1.3),color .18s;transform-origin:50% 50%}
.cloud b:hover,.cloud b:focus-visible{transform:translate(-50%,-50%) scale(1.18);z-index:5;color:var(--accent)!important}
.cloud b .cnt{font-family:var(--body);font-size:.42em;color:var(--mute);margin-left:.15em;vertical-align:super}
.cloud b:hover .cnt,.cloud b:focus-visible .cnt{color:inherit}
.cloud .t3{color:var(--ink)}.cloud .t2{color:var(--h4)}.cloud .t1{color:var(--primary)}.cloud .t0{color:var(--mute)}
@media (prefers-reduced-motion:reduce){.cloud b{transition:none}}
@media (max-width:560px){.cloudwrap{aspect-ratio:1/1.05}}

.chips,.low{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.chips span,.low span{border:1px solid var(--glass-border);background:var(--glass-tile);border-radius:999px;padding:4px 12px;font-size:.84rem}
.chips b,.low b{font-family:var(--disp);font-weight:700;color:var(--ink);margin-left:4px}

.savebar{margin:8px 0 16px}
.savebar .panel{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center}
.savebar .panel p{margin:0;flex:1 1 280px}
.savebar form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;width:100%}
@media (max-width:640px){.savebar form{grid-template-columns:1fr}}
.save{font-size:.86rem;color:var(--mute);margin-left:auto}
.mtools{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:end;margin-bottom:12px}
.mtools .field{width:auto;min-width:9rem}
.mtbl input[type=date]{max-width:11em;min-height:34px;padding:4px 12px;font-size:.86rem}
.mtbl input[type=checkbox]{width:20px;height:20px;min-height:0;accent-color:var(--primary)}
.mtbl tr.left td{opacity:.55}
.mtbl td:first-child{min-width:7em}
.extras{margin-top:18px;display:grid;gap:4px}
.btnrow{display:flex;flex-wrap:wrap;gap:8px}
.auth{display:flex;align-items:center;gap:8px;font-size:.88rem;color:var(--mute);white-space:nowrap}
@media (max-width:520px){.auth .who{display:none}}

/* 포춘쿠키·운세 온오프 */
.switch{display:inline-flex;align-items:center;gap:10px;align-self:end;min-height:44px;font-size:.88rem;font-weight:600;color:var(--text);cursor:pointer;white-space:nowrap}
.switch input{position:absolute;opacity:0;width:1px;height:1px}
.switch .knob{width:40px;height:24px;border-radius:999px;background:var(--glass-well);border:1px solid var(--glass-border-strong);position:relative;flex:none;transition:background .15s}
.switch .knob::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--mute);transition:transform .18s var(--ease),background .15s}
.switch input:checked+.knob{background:var(--primary-deep);border-color:transparent}
.switch input:checked+.knob::after{transform:translateX(16px);background:#fff}
.switch input:focus-visible+.knob{outline:2px solid var(--primary);outline-offset:2px}

/* 위치를 모르는 벙: 기본 접힘 */
details.ubox>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px}
details.ubox>summary::-webkit-details-marker{display:none}
details.ubox>summary .h3{margin:0}
details.ubox>summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--mute);border-bottom:2px solid var(--mute);transform:rotate(45deg);transition:transform .15s}
details.ubox[open]>summary::after{transform:rotate(-135deg)}
details.ubox[open]>summary{margin-bottom:8px}
details.ubox>summary small{color:var(--mute);font-weight:500}

/* 톡게시판 벙: 월 달력 + 오른쪽 목록 */
.bcal{margin-top:14px}
.bcal-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.bcal-head b{font-size:1.02rem;color:var(--ink);min-width:7.5em;text-align:center}
.bcal-head .muted{margin-left:auto;font-size:.84rem}
.bcal-head .btn{width:36px;padding:0;justify-content:center}
.bcal-body{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px}
.bgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;align-content:start}
.bgrid .wdh{font-size:.72rem;color:var(--mute);text-align:center;padding:2px 0}
.bday{font:inherit;color:inherit;text-align:left;display:flex;flex-direction:column;gap:2px;min-height:86px;padding:6px;border-radius:10px;background:var(--glass-tile);border:1px solid transparent;cursor:pointer;min-width:0;overflow:hidden}
.bday.out{visibility:hidden}
.bday .dn{font-size:.76rem;color:var(--mute);font-variant-numeric:tabular-nums}
.bday.has .dn{color:var(--ink);font-weight:700}
.bday:hover{border-color:var(--glass-border-strong)}
.bday.sel{border-color:var(--primary);background:rgba(165,139,255,.12)}
.bday .ev{display:block;font-size:.7rem;line-height:1.35;padding:1px 6px;border-radius:999px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(165,139,255,.2);color:var(--ink)}
.bday .ev.s-open{background:rgba(251,191,36,.2);color:#ffe39a}
.bday .ev.s-cancel{background:var(--bad);color:var(--bad-ink);text-decoration:line-through}
.bday .ev.s-change{background:rgba(106,168,255,.18);color:#bcd6ff}
.bday .more{font-size:.68rem;color:var(--mute);padding-left:4px}
.bkey{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px;font-size:.76rem;color:var(--mute)}
.bkey span{display:inline-flex;align-items:center;gap:5px}
.bkey i{width:10px;height:10px;border-radius:3px;background:rgba(165,139,255,.5)}
.bkey i.s-open{background:var(--warning)}.bkey i.s-cancel{background:var(--error)}.bkey i.s-change{background:var(--info)}
.blist-wrap{position:relative;min-height:320px;border-radius:var(--r-cell);background:var(--glass-tile);border:1px solid var(--glass-border)}
.blist2{position:absolute;inset:0;overflow-y:auto;padding:4px 14px 14px;scrollbar-width:thin;scrollbar-color:var(--h2) transparent}
.blist2 h4{position:sticky;top:0;margin:0;padding:10px 0 6px;font-size:.8rem;color:var(--mute);background:var(--glass-solid);z-index:1}
.blist2 h4.sel{color:var(--primary)}
.blist2 ul{list-style:none;margin:0 0 4px;padding:0}
.blist2 li{padding:8px 0;border-bottom:1px solid var(--line)}
.blist2 li:last-child{border-bottom:0}
.blist2 .bt{display:block;color:var(--ink);font-weight:600;font-size:.9rem;line-height:1.4}
.blist2 li.x .bt{text-decoration:line-through;color:var(--mute)}
.blist2 small{display:flex;gap:6px;align-items:center;flex-wrap:wrap;color:var(--mute);font-size:.78rem;margin-top:3px}
.blist2 .tag{height:20px;font-size:.7rem;padding:0 8px}
@media (max-width:900px){
  .bcal-body{grid-template-columns:1fr}
  .blist-wrap{min-height:0}
  .blist2{position:static;max-height:380px}
}
@media (max-width:520px){.bday{min-height:52px;padding:4px}.bday .ev{font-size:0;height:6px;padding:0}.bday .more{display:none}}

/* 활동 카드 풍선 */
section.act{position:relative}
.act-tip{position:absolute;z-index:5;transform:translate(-50%,-100%);pointer-events:none;white-space:nowrap;padding:6px 10px;border-radius:8px;font-size:.8rem;font-weight:600;color:var(--ink);background:var(--glass-solid);border:1px solid var(--glass-border-strong);box-shadow:0 8px 24px rgba(0,0,0,.5)}
.act-cal .cg i:hover,.act-flow .fbars span:hover i{filter:brightness(1.25)}
.act-cal .cg i:hover{outline:1px solid var(--ink);outline-offset:-1px}

/* 벙 지도: 왼쪽 지도 → 시·도 순위, 오른쪽 톡게시판 달력 → 목록 */
@media (min-width:761px){.bmap .mapgrid{grid-template-columns:minmax(0,1.25fr) minmax(300px,1fr)}}
.mapleft{min-width:0}
.mapleft .side-t{margin:18px 0 6px}
.mapleft .rlist{columns:2;column-gap:28px}
.mapleft .rlist li{break-inside:avoid}
@media (max-width:520px){.mapleft .rlist{columns:1}}
.bside .h3:first-child{margin-top:0}
.bside .h3{margin:0 0 4px}
.bside .sub{font-size:.8rem;margin-bottom:10px}
.bside .bcal-body{grid-template-columns:1fr}
.bside .bcal-head b{min-width:0;text-align:left}
.bside .bday{min-height:54px;padding:4px 5px}
.bside .bday .ev{font-size:.64rem;padding:0 5px}
.bside .blist-wrap{min-height:0}
.bside .blist2{position:static;max-height:360px}
@media (max-width:520px){.bside .bday{min-height:44px}.bside .bday .ev{font-size:0;height:6px;padding:0}}

/* 아주 좁은 화면(갤럭시 폴드 접은 화면 280~340px) */
.bday .dn{white-space:nowrap}
@media (max-width:360px){
  .bgrid{gap:2px}
  .bday{padding:3px 2px;min-height:40px;border-radius:8px}
  .bday .dn{font-size:.66rem;letter-spacing:-.04em}
  .facts{padding:10px;gap:8px}
  .facts div{padding:10px 12px}
  .facts div b{font-size:1.45rem}
  .facts div span{font-size:.7rem}
}
