/* usage.css — Claude 사용량 대시보드 */

.aurora-mini{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.aurora-mini span{position:absolute;border-radius:50%;filter:blur(110px);opacity:.28;mix-blend-mode:screen}
.aurora-mini .m1{width:44vw;height:44vw;left:-10vw;top:-14vw;background:radial-gradient(circle,#6d28d9,transparent 70%)}
.aurora-mini .m2{width:40vw;height:40vw;right:-12vw;top:20vw;background:radial-gradient(circle,#0e7490,transparent 70%)}

main{position:relative;z-index:2;max-width:1200px;margin:0 auto;padding:112px 22px 80px}

.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:14px}
.page-head h1{font-family:var(--font-display);font-weight:700;letter-spacing:-.03em;
  font-size:clamp(30px,5vw,50px);line-height:1}
.page-head .grad{background:var(--grad-aurora);-webkit-background-clip:text;background-clip:text;color:transparent;
  background-size:200% auto;animation:hue 8s linear infinite}
@keyframes hue{to{background-position:200% center}}
.page-head .sub{color:var(--fg-dim);margin-top:10px;font-size:15px;display:inline-flex;align-items:center;gap:8px}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 8px var(--lime);
  flex:0 0 auto;animation:live-pulse 2s ease-in-out infinite}
@keyframes live-pulse{50%{opacity:.3;transform:scale(.65)}}
.live-dot.lag{background:var(--amber);box-shadow:0 0 8px var(--amber)}
.head-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:999px;font-size:12.5px;
  font-family:var(--font-mono);border:1px solid var(--line-2);color:var(--fg-dim);background:rgba(255,255,255,.03)}
.pill b{color:var(--fg)}
.pill .dot{width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 8px var(--lime)}
#refresh{width:40px;height:40px;border-radius:12px;border:1px solid var(--line-2);color:var(--fg-dim);
  display:grid;place-items:center;font-size:16px;background:rgba(255,255,255,.03);transition:.25s}
#refresh:hover{color:var(--fg);border-color:var(--cyan);transform:rotate(90deg)}
#refresh.spin{animation:spin-slow .8s linear infinite}
@keyframes spin-slow{to{transform:rotate(360deg)}}
#refresh.done{animation:refresh-done .5s var(--ease)}
@keyframes refresh-done{0%{box-shadow:0 0 0 0 rgba(163,230,53,.6);border-color:var(--lime)}
  70%{box-shadow:0 0 0 8px rgba(163,230,53,0)}100%{border-color:var(--line-2)}}

.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:18px;margin-top:26px;align-items:start}
.card{grid-column:span 12;border-radius:var(--radius);border:1px solid var(--line);
  background:linear-gradient(160deg,var(--bg-2),var(--bg-1));padding:24px;position:relative;overflow:hidden}
.card h2{font-family:var(--font-display);font-size:16px;font-weight:600;letter-spacing:.02em;
  color:var(--fg-dim);text-transform:uppercase;display:flex;align-items:center;gap:9px;margin-bottom:4px}
.card h2 .tag{font-size:11px;font-family:var(--font-mono);color:var(--fg-faint)}
.col-6{grid-column:span 6}.col-4{grid-column:span 4}.col-8{grid-column:span 8}
@media(max-width:820px){.col-6,.col-4,.col-8{grid-column:span 12}}

/* 서로 다른 카드끼리 높이를 강제로 맞춰야 할 때 (콘텐츠 양이 달라도 바닥선을 정렬) */
.dual-row{grid-column:span 12;display:flex;gap:18px;align-items:stretch}
.dual-row > .card{flex:1;min-width:0;display:flex;flex-direction:column}
.dual-row.split-8-4 > .card:first-child{flex:2}
.dual-row.split-8-4 > .card:last-child{flex:1}
@media(max-width:820px){.dual-row{flex-direction:column}}

/* 데이터출처: 팝오버 트리거를 카드 하단에 고정 */
.src-more-btn{margin-top:auto;padding-top:14px;align-self:flex-start;color:var(--cyan);
  font-size:12.5px;font-family:var(--font-mono);border-top:1px solid var(--line);width:100%;text-align:left}
.src-more-btn:hover{color:#fff}

/* 고정 팝오버 (다른 PC 합치기) — X로만 닫힘 */
.popover{position:fixed;z-index:400;display:none;width:min(420px,calc(100vw - 32px));
  background:rgba(12,14,22,.98);backdrop-filter:blur(18px);border:1px solid var(--line-2);
  border-radius:var(--radius-sm);padding:18px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.popover-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;
  font-family:var(--font-display);font-weight:600;font-size:15px}
.popover-close{width:26px;height:26px;border-radius:50%;color:var(--fg-dim);display:grid;place-items:center;
  transition:.2s;flex:0 0 auto}
.popover-close:hover{background:rgba(255,255,255,.1);color:#fff}
.popover .note{margin-top:0;margin-bottom:10px}
.copy-row{display:flex;gap:8px;align-items:stretch;margin:10px 0}
.copy-row pre{flex:1;min-width:0;font-family:var(--font-mono);font-size:11px;overflow-x:auto;white-space:pre-wrap;
  word-break:break-all;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:8px;
  padding:9px 10px;margin:0;color:var(--fg-dim)}
.btn-copy{flex:0 0 auto;padding:0 14px;border-radius:8px;border:1px solid var(--line-2);color:var(--fg);
  font-size:12.5px;font-family:var(--font-mono);transition:.2s;white-space:nowrap}
.btn-copy:hover{background:rgba(255,255,255,.08)}
.btn-copy.copied{color:var(--lime);border-color:rgba(163,230,53,.5)}

/* 한 카드 안에서 주제가 다른 두 섹션을 위아래로 나눌 때 */
.split-sec{display:flex;flex-direction:column;flex:1}
.split-sec:not(:last-child){padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--line)}

/* 게이지 카드 (5시간/주간) */
.gauge-card{display:flex;gap:24px;align-items:center}
.gauge{position:relative;width:150px;height:150px;flex:0 0 auto}
.gauge svg{transform:rotate(-90deg)}
.gauge .val{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.gauge .val .big{font-family:var(--font-display);font-size:38px;font-weight:700;line-height:1}
.gauge .val .lbl{font-size:11px;color:var(--fg-faint);font-family:var(--font-mono);margin-top:2px;letter-spacing:.05em}
.gauge-info{flex:1;min-width:0}
.gauge-info .title{font-family:var(--font-display);font-size:20px;font-weight:600;margin-bottom:12px}
.metric{display:flex;justify-content:space-between;padding:9px 0;border-top:1px solid var(--line);font-size:14px}
.metric:first-of-type{border-top:none}
.metric .k{color:var(--fg-dim)}
.metric .v{font-family:var(--font-mono);color:var(--fg);font-weight:500}
.metric .v.count{color:var(--cyan)}
.sev-normal{color:var(--lime)!important}.sev-warning{color:var(--amber)!important}.sev-critical{color:var(--red)!important}

/* 막대(스킬/도구/모델) */
.bars{display:flex;flex-direction:column;gap:2px;margin-top:16px}
.bar-row{display:grid;grid-template-columns:minmax(90px,170px) 1fr auto;gap:12px;align-items:center;
  font-size:13.5px;padding:7px 8px;border-radius:8px;border-bottom:1px solid var(--line);transition:background .15s}
.bars > .bar-row:last-child, .bars > *:last-child .bar-row{border-bottom:none}
.bar-row:hover{background:rgba(255,255,255,.045)}
.bar-row .name{color:var(--fg-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--font-mono)}
.bar-track{height:8px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden}
.bar-fill{height:100%;border-radius:999px;background:var(--grad-cool);transform-origin:left;
  transform:scaleX(0);transition:transform 1s var(--ease)}
.bar-row .cnt{font-family:var(--font-mono);color:var(--fg);font-size:12.5px;min-width:64px;text-align:right;white-space:nowrap}
.bar-row .cnt .cost{color:var(--amber)}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}
@media(max-width:640px){.two-col{grid-template-columns:1fr}}
.stat-group{border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 12px;background:rgba(255,255,255,.015)}
.stat-group .bar-row{grid-template-columns:minmax(90px,230px) 1fr auto}
.subhead{font-family:var(--font-mono);font-size:12px;color:var(--cyan);letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px}
.subhead .unit{color:var(--fg-faint);letter-spacing:0;text-transform:none;margin-left:8px;font-size:11px}

/* 토큰 요약 */
.tok-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:6px}
.tok-grid.five{grid-template-columns:repeat(5,1fr)}
.tok-grid.six{grid-template-columns:repeat(3,1fr)}
@media(max-width:640px){.tok-grid,.tok-grid.five,.tok-grid.six{grid-template-columns:repeat(2,1fr)}}

.tok-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.tok-head h2{margin-bottom:0}
.period-toggle{display:flex;gap:4px;padding:4px;border-radius:999px;background:rgba(255,255,255,.03);
  border:1px solid var(--line)}
.period-toggle button{padding:6px 14px;border-radius:999px;font-size:12.5px;font-family:var(--font-mono);
  color:var(--fg-faint);transition:.2s}
.period-toggle button:hover{color:var(--fg-dim)}
.period-toggle button.on{background:var(--grad-cool);color:#fff}

/* 재미용 비용 환산 타일 */
.tok-cost{border-color:rgba(251,191,36,.3);background:linear-gradient(160deg,rgba(251,191,36,.08),rgba(255,255,255,.02))}
.tok-cost .l{display:flex;align-items:center;gap:4px}
.tok-cost .l svg{opacity:.6}

/* 사용 히트맵 (요일×시간) */
.hm{display:grid;grid-template-columns:30px repeat(24,1fr);gap:3px;margin-top:14px;align-items:center}
.hm .lbl{font-family:var(--font-mono);font-size:10px;color:var(--fg-faint)}
.hm .hlbl{font-family:var(--font-mono);font-size:9px;color:var(--fg-faint);text-align:center}
.hm .cell{aspect-ratio:1;border-radius:3px;background:rgba(255,255,255,.045);min-width:0;
  transition:transform .15s}
.hm .cell:hover{transform:scale(1.35);outline:1px solid rgba(255,255,255,.5)}

/* 히트맵 범례 */
.hm-legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px;
  font-size:12px;color:var(--fg-dim);font-family:var(--font-mono)}
.hm-legend .k{color:var(--fg-faint);margin-right:auto}
.hm-legend .sw{width:14px;height:14px;border-radius:3px;flex:0 0 auto}

/* 히트맵 커서 툴팁 */
.hm-tip{position:fixed;z-index:300;pointer-events:none;display:none;
  padding:8px 12px;border-radius:10px;font-family:var(--font-mono);font-size:12.5px;
  background:rgba(10,12,20,.95);border:1px solid var(--line-2);color:var(--fg);
  box-shadow:0 8px 30px rgba(0,0,0,.6);white-space:nowrap}
.hm-tip b{color:var(--cyan)}
.tok{border:1px solid var(--line);border-radius:var(--radius-sm);padding:16px;background:rgba(255,255,255,.02);
  cursor:pointer;transition:border-color .2s,transform .15s}
.tok:hover{border-color:var(--line-2);transform:translateY(-2px)}
.tok .n{font-family:var(--font-display);font-size:26px;font-weight:700;letter-spacing:-.02em;
  display:inline-block;transform-style:preserve-3d}
.tok .n.flip{animation:num-flip .44s cubic-bezier(.3,.1,.3,1)}
@keyframes num-flip{0%{transform:rotateX(0)}48%{transform:rotateX(-90deg)}52%{transform:rotateX(90deg)}100%{transform:rotateX(0)}}
.tok .l{font-size:12px;color:var(--fg-faint);font-family:var(--font-mono);margin-top:4px}

/* 일별 차트 */
#chart{width:100%;height:220px;display:block;margin-top:8px}
.chart-legend{display:flex;gap:16px;font-size:12px;color:var(--fg-dim);font-family:var(--font-mono);margin-top:8px}
.chart-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}

/* 자동 활성화 */
.act-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.switch{position:relative;width:54px;height:30px;border-radius:999px;background:rgba(255,255,255,.1);
  border:1px solid var(--line-2);transition:.25s;flex:0 0 auto}
.switch::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;
  background:var(--fg-faint);transition:.25s}
.switch.on{background:rgba(163,230,53,.25);border-color:rgba(163,230,53,.5)}
.switch.on::after{left:27px;background:var(--lime);box-shadow:0 0 12px var(--lime)}
.switch{cursor:pointer}
.switch.bump::after{animation:switch-bump .38s cubic-bezier(.34,1.8,.64,1)}
@keyframes switch-bump{0%{transform:scale(1)}40%{transform:scale(1.35)}100%{transform:scale(1)}}

/* 지금 워밍업 버튼: 클릭시 번개 플래시 */
#warmup-now{position:relative;overflow:hidden}
#warmup-now svg{transition:transform .25s var(--ease),filter .25s}
#warmup-now:hover svg{transform:scale(1.15) rotate(-6deg);filter:drop-shadow(0 0 4px rgba(251,191,36,.8))}
#warmup-now.zap::after{content:'';position:absolute;inset:0;background:radial-gradient(circle,rgba(251,191,36,.55),transparent 70%);
  animation:zap-flash .5s ease-out}
@keyframes zap-flash{from{opacity:1}to{opacity:0}}

/* 복사 완료: 팝 애니메이션 */
.btn-copy.copied{animation:copy-pop .35s cubic-bezier(.34,1.8,.64,1)}
@keyframes copy-pop{0%{transform:scale(1)}45%{transform:scale(1.12)}100%{transform:scale(1)}}
.timeline{margin-top:20px;padding:20px;border-radius:var(--radius-sm);border:1px solid var(--line);
  background:rgba(255,255,255,.02)}
.tl-row{display:flex;align-items:center;gap:12px;padding:8px 0;font-size:14px}
.tl-row .t{font-family:var(--font-mono);color:var(--cyan);width:56px;flex:0 0 auto}
.tl-row .bar{flex:1;height:6px;border-radius:999px;background:linear-gradient(90deg,var(--violet),var(--cyan))}
.tl-row .desc{color:var(--fg-dim);white-space:nowrap}
.times-edit{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;align-items:center}
.times-edit input[type=time]{background:var(--bg-3);border:1px solid var(--line-2);color:var(--fg);
  border-radius:10px;padding:9px 12px;font-family:var(--font-mono);font-size:14px}
.warmlog{margin-top:16px;font-family:var(--font-mono);font-size:12.5px;color:var(--fg-dim);
  max-height:150px;overflow:auto}
.dual-row .warmlog{flex:1;min-height:80px}
.warmlog div{padding:5px 0;border-top:1px solid var(--line);display:flex;gap:10px;align-items:center}
.warmlog .ok{color:var(--lime)}.warmlog .no{color:var(--red)}

.note{color:var(--fg-faint);font-size:13px;margin-top:12px;line-height:1.6}

.err{color:var(--red);font-family:var(--font-mono);font-size:13px;padding:10px 14px;border:1px solid rgba(251,113,133,.3);
  border-radius:10px;background:rgba(251,113,133,.06);margin-top:10px}
.skeleton{color:var(--fg-faint);font-family:var(--font-mono);font-size:13px}
.muted{color:var(--fg-faint)}
