/* YYF Relay — shared UI. Quiet, warm-neutral, Apple-like. */
:root{
  color-scheme: light dark;
  --bg:#f6f5f3; --bg-2:#edebe8; --surface:#ffffff; --surface-2:#fafafa;
  --text:#1d1d1f; --text-2:#6e6e73; --text-3:#8e8e93;
  --sep:rgba(60,60,67,.13); --sep-strong:rgba(60,60,67,.22);
  --accent:#0071e3; --accent-soft:rgba(0,113,227,.10);
  --green:#157028; --green-dot:#34c759; --orange:#8f4700; --orange-dot:#ff9f0a;
  --red:#c4161c; --red-dot:#ff3b30; --gray-dot:#aeaeb2;
  --track:rgba(120,120,128,.14);
  --nav:rgba(246,245,243,.76);
  --shadow:0 0 0 .5px rgba(0,0,0,.05),0 1px 2px rgba(0,0,0,.03);
  --radius:12px; --radius-sm:9px;
  --ease:cubic-bezier(.22,.61,.36,1);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","PingFang SC","Hiragino Sans GB","Noto Sans CJK SC","Microsoft YaHei",system-ui,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#161618; --bg-2:#1f1f22; --surface:#232326; --surface-2:#2a2a2d;
    --text:#f5f5f7; --text-2:#b0b0b5; --text-3:#9a9a9f;
    --sep:rgba(235,235,245,.14); --sep-strong:rgba(235,235,245,.18);
    --accent:#2997ff; --accent-soft:rgba(41,151,255,.14);
    --green:#4cd964; --orange:#ffb340; --red:#ff6961;
    --track:rgba(235,235,245,.13);
    --nav:rgba(22,22,24,.72);
    --shadow:0 1px 0 rgba(255,255,255,.03) inset,0 10px 30px rgba(0,0,0,.25);
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:72px}
body{margin:0;background:var(--bg);color:var(--text);font:15px/1.47 var(--font);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
button{font:inherit;color:inherit}
.num,.tab{font-variant-numeric:tabular-nums}
.mono{font-family:var(--mono);font-size:.92em;letter-spacing:0}
.dim{color:var(--text-2)} .faint{color:var(--text-3)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip:focus{position:fixed;left:12px;top:12px;width:auto;height:auto;clip:auto;z-index:99;background:var(--surface);padding:8px 12px;border-radius:8px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}

/* ---------- Navigation ---------- */
.nav{position:sticky;top:0;z-index:30;background:var(--nav);
  -webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);
  border-bottom:.5px solid var(--sep)}
.nav-in{max-width:1180px;margin:0 auto;height:52px;padding:0 28px;display:flex;align-items:center;gap:28px}
.brand{display:flex;align-items:center;gap:9px;font-weight:600;font-size:15px;color:var(--text);letter-spacing:-.02em}
.brand:hover{text-decoration:none}
.brand i{width:18px;height:18px;border-radius:5px;background:linear-gradient(145deg,#3a3a3c,#1d1d1f);display:inline-block;position:relative}
.brand i::after{content:"";position:absolute;inset:5px;border-radius:50%;border:1.5px solid #f5f5f7}
.links{display:flex;gap:22px;font-size:13px;flex:1;overflow-x:auto;scrollbar-width:none}
.links::-webkit-scrollbar{display:none}
.links a{color:var(--text-2);white-space:nowrap;transition:color .2s var(--ease)}
.links a:hover{color:var(--text);text-decoration:none}
.links a[aria-current="page"]{color:var(--text);font-weight:500}

/* ---------- Segmented control ---------- */
.seg{display:inline-flex;background:var(--track);border-radius:9px;padding:2px;position:relative;flex:none}
.seg button{border:0;background:none;padding:4px 14px;font-size:13px;border-radius:7px;cursor:pointer;position:relative;z-index:1;color:var(--text-2);transition:color .25s var(--ease)}
.seg button[aria-pressed="true"]{color:var(--text);font-weight:500}
.seg .thumb{position:absolute;top:2px;bottom:2px;border-radius:7px;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.04);transition:transform .35s var(--ease),width .35s var(--ease)}

/* ---------- Layout ---------- */
main{max-width:1180px;margin:0 auto;padding:44px 28px 96px}
.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:34px;flex-wrap:wrap}
.hero h1{font-size:40px;line-height:1.1;font-weight:700;letter-spacing:-.035em;margin:0}
.hero p{margin:8px 0 0;color:var(--text-2);font-size:17px;letter-spacing:-.015em}
.live{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--gray-dot);flex:none;display:inline-block}
.dot.ok{background:var(--green-dot)} .dot.warn{background:var(--orange-dot);border-radius:2px;transform:rotate(45deg) scale(.9)} .dot.bad{background:transparent;border-radius:2px;box-shadow:inset 0 0 0 2.5px var(--red-dot)}
.live .dot.ok{box-shadow:0 0 0 0 rgba(52,199,89,.5);animation:pulse 2.4s var(--ease) infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(52,199,89,.45)}70%{box-shadow:0 0 0 7px rgba(52,199,89,0)}100%{box-shadow:0 0 0 0 rgba(52,199,89,0)}}

section{margin-top:52px}
.sec-h{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:0 4px 14px}
.sec-h h2{font-size:22px;font-weight:600;letter-spacing:-.025em;margin:0}
.sec-h .aside{font-size:13px;color:var(--text-2)}

/* ---------- Panels & grouped lists ---------- */
.panel{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.stats{display:grid;grid-template-columns:repeat(4,1fr)}
.stat{padding:22px 24px 20px;position:relative}
.stat+.stat::before{content:"";position:absolute;left:0;top:22px;bottom:22px;width:.5px;background:var(--sep)}
.stat .k{font-size:13px;color:var(--text-2)}
.stat .v{font-size:34px;font-weight:600;letter-spacing:-.03em;line-height:1.15;margin-top:6px;font-variant-numeric:tabular-nums}
.stat .v small{font-size:17px;font-weight:500;color:var(--text-2);margin-left:2px;letter-spacing:-.01em}
.stat .s{font-size:12.5px;color:var(--text-3);margin-top:4px}

.list{list-style:none;margin:0;padding:0}
.row{display:grid;align-items:center;gap:16px;padding:13px 20px;position:relative;min-height:52px;transition:background-color .2s var(--ease)}
.row+.row::before{content:"";position:absolute;top:0;left:20px;right:0;height:.5px;background:var(--sep)}
.row.click{cursor:pointer}
.row.click:hover{background:var(--surface-2)}
.row.click:active{background:var(--bg-2)}
.row .t{font-weight:500;letter-spacing:-.015em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row .sub{font-size:12.5px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row .r{text-align:right;font-variant-numeric:tabular-nums}
.chev{color:var(--text-3);font-size:17px;line-height:1}
.head{font-size:12px;color:var(--text-3);padding:10px 20px 8px;display:grid;gap:16px;border-bottom:.5px solid var(--sep)}
.head .r{text-align:right}
.empty{padding:28px 20px;text-align:center;color:var(--text-3);font-size:14px}

.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;padding:2px 9px 2px 8px;border-radius:999px;background:var(--track);color:var(--text-2);white-space:nowrap}
.pill.ok::before{content:"✓"}.pill.warn::before{content:"!";font-weight:700}.pill.bad::before{content:"×";font-weight:700}
.pill.ok{color:var(--green);background:rgba(52,199,89,.12)}
.pill.warn{color:var(--orange);background:rgba(255,159,10,.14)}
.pill.bad{color:var(--red);background:rgba(255,59,48,.11)}

/* ---------- Meters ---------- */
.bar{height:6px;border-radius:3px;background:var(--track);overflow:hidden}
.bar>i{display:block;height:100%;border-radius:3px;background:var(--text);transform-origin:left;transform:scaleX(0);transition:transform .9s var(--ease)}
.bar.ok>i{background:var(--green-dot)} .bar.warn>i{background:var(--orange-dot)} .bar.bad>i{background:var(--red-dot)} .bar.acc>i{background:var(--accent)}
.meter{display:grid;grid-template-columns:44px 1fr 46px;align-items:center;gap:10px;font-size:12.5px;color:var(--text-2)}
.meter .r{text-align:right;color:var(--text);font-variant-numeric:tabular-nums}

.ring{--p:0;--c:var(--accent);width:var(--sz,56px);height:var(--sz,56px);border-radius:50%;
  background:conic-gradient(var(--c) calc(var(--p)*1%),var(--track) 0);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 7px),#000 calc(100% - 6px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 7px),#000 calc(100% - 6px));transition:--p 1s var(--ease)}
@property --p{syntax:"<number>";inherits:false;initial-value:0}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.kv{display:flex;justify-content:space-between;gap:16px;padding:12px 20px;position:relative;font-size:14px}
.kv+.kv::before{content:"";position:absolute;top:0;left:20px;right:0;height:.5px;background:var(--sep)}
.kv .k{color:var(--text-2)} .kv .v{font-variant-numeric:tabular-nums;text-align:right;min-width:0;overflow-wrap:anywhere}
.cap{padding:16px 20px 4px;font-size:13px;font-weight:600;color:var(--text-2);letter-spacing:-.005em}

.note{margin:14px 6px 0;font-size:12.5px;color:var(--text-3);line-height:1.55}
.banner{display:flex;gap:12px;align-items:flex-start;padding:14px 18px;border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);font-size:14px;margin-bottom:12px}
.banner b{font-weight:600}
.banner.warn{box-shadow:var(--shadow),inset 3px 0 0 var(--orange-dot)}
.banner.bad{box-shadow:var(--shadow),inset 3px 0 0 var(--red-dot)}

.btn{display:inline-flex;align-items:center;gap:6px;border:0;border-radius:980px;padding:6px 14px;font-size:13px;background:var(--track);color:var(--text);cursor:pointer;transition:background-color .2s var(--ease),transform .15s var(--ease)}
.btn:hover{background:var(--sep-strong)}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--accent);color:#fff}
.btn[disabled]{opacity:.5;cursor:default}

/* ---------- Sheet (detail drawer) ---------- */
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.18);opacity:0;pointer-events:none;transition:opacity .3s var(--ease);z-index:40}
.scrim.on{opacity:1;pointer-events:auto}
.sheet{position:fixed;top:12px;right:12px;max-height:calc(100vh - 24px);width:min(440px,calc(100vw - 24px));background:var(--surface);border-radius:18px;
  box-shadow:0 24px 80px rgba(0,0,0,.22);z-index:41;transform:translateX(calc(100% + 24px));transition:transform .45s var(--ease);display:flex;flex-direction:column;overflow:hidden}
.sheet.on{transform:none}
.sheet header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 12px;border-bottom:.5px solid var(--sep)}
.sheet header h3{margin:0;font-size:17px;font-weight:600;letter-spacing:-.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet .body{overflow:auto;padding:6px 0 20px}
.x{border:0;width:30px;height:30px;border-radius:50%;background:var(--track);cursor:pointer;font-size:15px;color:var(--text-2);flex:none}
.x:hover{background:var(--sep-strong)}

/* ---------- Motion ---------- */
.reveal{animation:rise .8s var(--ease) both;animation-delay:calc(var(--i,0) * 70ms)}
@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.flash{animation:flash 1.2s var(--ease)}
@keyframes flash{0%{background:var(--accent-soft)}100%{background:transparent}}
.skel{display:inline-block;height:1em;width:5em;border-radius:6px;background:linear-gradient(90deg,var(--track),var(--sep),var(--track));background-size:200% 100%;animation:sk 1.4s linear infinite;vertical-align:middle}
@keyframes sk{to{background-position:-200% 0}}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none}
}

footer{max-width:1180px;margin:0 auto;padding:0 28px 48px;font-size:12px;color:var(--text-3);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* ---------- Responsive ---------- */
@media (max-width: 900px){
  .stats{grid-template-columns:1fr 1fr}
  .stat:nth-child(3)::before{display:none}
  .stat:nth-child(n+3){border-top:.5px solid var(--sep)}
  .grid2,.grid3{grid-template-columns:1fr}
}
@media (max-width: 640px){
  .nav-in{height:auto;flex-wrap:wrap;padding:8px 16px;gap:6px 14px}
  .links{order:2;flex:1 0 100%;gap:20px;padding-bottom:2px}
  .nav-in>.seg,.nav-in>.btn{margin-left:auto}
  html{scroll-padding-top:100px}
  .sec-h{flex-direction:column;align-items:flex-start;gap:3px}
  .sec-h h2{white-space:nowrap}
  main{padding:28px 16px 72px}
  .hero h1{font-size:32px}
  .hero p{font-size:15px}
  section{margin-top:40px}
  .stat{padding:18px 18px 16px}
  .stat .v{font-size:27px}
  .row{padding:12px 16px;gap:12px}
  .row+.row::before{left:16px}
  .head{padding:10px 16px 8px}
  .hide-m{display:none!important}
  footer{padding:0 16px 40px}
}


/* ======================================================================
   Liquid Glass — clear, refractive material for the control layer only.
   Glass:   .nav-in  .btn  .seg  .sheet  .x     (floating / functional layer)
   Content: .panel .banner .card .alert          (clean, near-opaque, no glass)
   Renderers (set on <html> by liquid-glass.js):
     lg-svg  Chromium   SVG displacement + chromatic split in backdrop-filter
     lg-gl   Safari/FF  WebGL rim-refraction overlay over a light backdrop-filter
     lg-css  no WebGL   light backdrop-filter only
   ====================================================================== */
:root{
  --text:#1c1c1e; --text-2:#515157; --text-3:#6f6f76;
  --surface:rgba(255,255,255,.70); --surface-2:rgba(255,255,255,.56);
  --sep:rgba(60,60,67,.14); --sep-strong:rgba(60,60,67,.24);
  --track:rgba(60,60,67,.11);
  --lg-tint:rgba(255,255,255,.07);
  --lg-blur:1.2px; --lg-sat:1.45;
  --lg-ambient:0 12px 32px -12px rgba(25,35,85,.26),0 2px 8px rgba(25,35,85,.07);
  --lg-thick:inset 0 1px 1.5px -.5px rgba(255,255,255,.5),inset 0 -1.5px 2px -1px rgba(20,30,70,.16),inset 0 0 16px rgba(255,255,255,.05);
  --lg-ease:cubic-bezier(.34,1.45,.55,1);
  --panel-shadow:0 .5px 0 rgba(255,255,255,.7) inset,0 0 0 .5px rgba(60,60,67,.06),0 10px 28px -14px rgba(30,40,90,.22);
  --shadow:var(--panel-shadow);
  --radius:22px; --radius-sm:16px;
  --bgc:#e9eefb;
}
@media (prefers-color-scheme: dark){:root{
  --text:#f5f5f7; --text-2:#c2c2c8; --text-3:#9d9da4;
  --surface:rgba(34,36,48,.66); --surface-2:rgba(44,46,60,.55);
  --sep:rgba(255,255,255,.12); --sep-strong:rgba(255,255,255,.2);
  --track:rgba(255,255,255,.13);
  --lg-tint:rgba(255,255,255,.035);
  --lg-ambient:0 14px 36px -12px rgba(0,0,0,.6),0 2px 10px rgba(0,0,0,.3);
  --lg-thick:inset 0 1px 1.5px -.5px rgba(255,255,255,.28),inset 0 -1.5px 2px -1px rgba(0,0,0,.4),inset 0 0 16px rgba(255,255,255,.025);
  --panel-shadow:0 .5px 0 rgba(255,255,255,.08) inset,0 0 0 .5px rgba(255,255,255,.05),0 12px 30px -14px rgba(0,0,0,.55);
  --bgc:#090b13;
}}
html{background:var(--bgc)}
body{background:transparent;position:relative}
body::before{content:"";position:fixed;inset:-10vmax;z-index:-2;pointer-events:none;
  background:
   radial-gradient(52vmax 46vmax at 10% 2%,#ffb98e 0%,rgba(255,185,142,0) 62%),
   radial-gradient(56vmax 50vmax at 98% 8%,#79b2ff 0%,rgba(121,178,255,0) 62%),
   radial-gradient(60vmax 52vmax at 72% 100%,#c8a3ff 0%,rgba(200,163,255,0) 62%),
   radial-gradient(46vmax 40vmax at 0% 88%,#8fead2 0%,rgba(143,234,210,0) 62%),
   radial-gradient(40vmax 34vmax at 48% 46%,#ffe3f1 0%,rgba(255,227,241,0) 70%),
   var(--bgc);
  animation:lg-drift 40s ease-in-out infinite alternate}
@media (prefers-color-scheme: dark){body::before{background:
   radial-gradient(52vmax 46vmax at 10% 2%,#8a3c1d 0%,rgba(138,60,29,0) 62%),
   radial-gradient(56vmax 50vmax at 98% 8%,#1f4fb4 0%,rgba(31,79,180,0) 62%),
   radial-gradient(60vmax 52vmax at 72% 100%,#5b34a6 0%,rgba(91,52,166,0) 62%),
   radial-gradient(46vmax 40vmax at 0% 88%,#0f6f5c 0%,rgba(15,111,92,0) 62%),
   var(--bgc)}}
@keyframes lg-drift{to{transform:translate3d(2.5vmax,-2vmax,0) scale(1.06)}}
html.lg-gl body::before{animation:none}   /* WebGL scene texture must match the page */

/* ---- content layer: clean, not glass ---- */
.panel,.banner,.card,.alert{position:relative;border-radius:var(--radius);background:var(--surface);box-shadow:var(--panel-shadow)}
.banner,.alert{border-radius:var(--radius-sm)}
.panel{overflow:hidden}
.alert{box-shadow:var(--panel-shadow),inset 4px 0 0 var(--red-dot)}
.banner.warn{box-shadow:var(--panel-shadow),inset 3px 0 0 var(--orange-dot)}
.banner.bad{box-shadow:var(--panel-shadow),inset 3px 0 0 var(--red-dot)}
.row.click:hover{background:rgba(255,255,255,.34)}
.row.click:active{background:rgba(255,255,255,.5)}
@media (prefers-color-scheme: dark){.row.click:hover{background:rgba(255,255,255,.06)}.row.click:active{background:rgba(255,255,255,.1)}}
.pill{box-shadow:inset 0 0 0 .5px rgba(255,255,255,.5)}
.bar,.ex .t{box-shadow:inset 0 1px 2px rgba(20,30,70,.16),0 .5px 0 rgba(255,255,255,.55)}
.bar.ok>i{box-shadow:0 0 8px rgba(52,199,89,.4)}.bar.warn>i{box-shadow:0 0 8px rgba(255,159,10,.4)}.bar.bad>i{box-shadow:0 0 8px rgba(255,59,48,.4)}
.hero h1{background:linear-gradient(180deg,var(--text) 40%,color-mix(in srgb,var(--text) 55%,#6a7cff));-webkit-background-clip:text;background-clip:text;color:transparent}

/* ---- glass material (control layer) ---- */
.nav-in,.btn,.seg,.x,.glass{position:relative}
.nav-in,.btn,.seg,.sheet,.x,.glass{isolation:isolate;
  background:var(--lg-tint);
  -webkit-backdrop-filter:blur(var(--lg-blur)) saturate(var(--lg-sat));backdrop-filter:blur(var(--lg-blur)) saturate(var(--lg-sat));
  box-shadow:var(--lg-ambient),var(--lg-thick)}
@supports (corner-shape:squircle){.nav-in,.btn,.seg,.sheet,.x,.panel,.banner,.card,.alert{corner-shape:squircle}}
/* pointer-following specular bloom (very faint) */
.nav-in::before,.btn::before,.seg::before,.sheet::before,.x::before,.glass::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;opacity:0;transition:opacity .5s var(--ease);
  background:radial-gradient(150px circle at var(--mx,50%) var(--my,0%),rgba(255,255,255,.2),transparent 65%)}
.nav-in:hover::before,.btn:hover::before,.seg:hover::before,.sheet:hover::before,.x:hover::before,.glass:hover::before{opacity:1}
/* Chromium: baked specular rim map (edge-normal dependent, see liquid-glass.js) */
html.lg-svg .nav-in::after,html.lg-svg .btn::after,html.lg-svg .seg::after,html.lg-svg .sheet::after,html.lg-svg .x::after,html.lg-svg .glass::after{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:5;background:var(--lg-spec,none) center/100% 100% no-repeat}

/* .glass = showcase glass cards (Claude 额度页): refractive rim + light fill so text stays readable on photo themes */
.glass{border-radius:var(--radius)}
.glass>*{position:relative;z-index:6}
.col.glass{background:color-mix(in srgb,var(--surface) 82%,transparent)}
.pillg.glass{background:color-mix(in srgb,var(--surface-2) 45%,transparent)}

/* floating capsule navigation */
.nav{background:none;border:0;-webkit-backdrop-filter:none;backdrop-filter:none;top:0;padding:12px 16px 0;pointer-events:none}
.nav-in{pointer-events:auto;max-width:1124px;height:54px;padding:0 10px 0 20px;gap:18px;border-radius:999px}
.nav-in>*{position:relative;z-index:6}
.brand i{background:linear-gradient(145deg,#4a8dff,#a06cff 60%,#ff9a62);box-shadow:inset 0 1px 1px rgba(255,255,255,.6),0 2px 6px rgba(80,90,200,.35)}
.brand i::after{border-color:rgba(255,255,255,.95)}
.links{gap:2px;align-items:center}
.links a{padding:7px 15px;border-radius:999px;font-weight:500;transition:background .35s var(--ease),color .2s,box-shadow .35s}
.links a:hover{background:rgba(255,255,255,.22)}
.links a[aria-current="page"]{color:var(--text);font-weight:600;background:rgba(255,255,255,.34);
  box-shadow:inset 0 .5px 0 rgba(255,255,255,.8),inset 0 -.5px 1px rgba(20,30,70,.1),0 2px 8px -2px rgba(30,40,90,.16)}
@media (prefers-color-scheme: dark){.links a:hover{background:rgba(255,255,255,.07)}
  .links a[aria-current="page"]{background:rgba(255,255,255,.13);box-shadow:inset 0 .5px 0 rgba(255,255,255,.3),0 2px 8px rgba(0,0,0,.3)}}

/* controls */
.btn{padding:7px 16px;transition:transform .55s var(--lg-ease),background-color .3s var(--ease)}
.btn:hover{background:rgba(255,255,255,.16);transform:scale(1.015)}
.btn:active{transform:scale(1.025);transition-duration:.18s}
.btn.primary{background:rgba(10,116,238,.58);color:#fff;text-shadow:0 1px 1px rgba(0,30,90,.25)}
.btn.primary:hover{background:rgba(10,116,238,.66)}
.seg{padding:3px}
.seg .thumb{background:rgba(255,255,255,.5);z-index:0;box-shadow:inset 0 .5px 0 rgba(255,255,255,.95),inset 0 -.5px 1px rgba(20,30,70,.12),0 3px 10px -2px rgba(30,40,90,.22);
  transition:transform .5s var(--lg-ease),width .5s var(--lg-ease)}
.x{background:var(--lg-tint)}
@media (prefers-color-scheme: dark){.btn:hover{background:rgba(255,255,255,.08)}.seg .thumb{background:rgba(255,255,255,.2);box-shadow:inset 0 .5px 0 rgba(255,255,255,.4),0 3px 10px rgba(0,0,0,.4)}
  .btn.primary{background:rgba(41,151,255,.55)}}

/* detail sheet = thick floating glass; reading surface keeps a modest fill */
.scrim{background:rgba(20,24,40,.16);-webkit-backdrop-filter:none;backdrop-filter:none}
.sheet{border-radius:32px;background:rgba(250,250,253,.5);
  -webkit-backdrop-filter:blur(3px) saturate(1.5);backdrop-filter:blur(3px) saturate(1.5);
  box-shadow:0 30px 70px -20px rgba(10,15,40,.38),0 4px 16px rgba(10,15,40,.1),var(--lg-thick);
  transition:transform .6s cubic-bezier(.22,1.15,.4,1)}
@media (prefers-color-scheme: dark){.sheet{background:rgba(30,32,46,.46)}}
.sheet header{border-bottom-color:var(--sep)}
.x{border-radius:50%}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .nav-in,.btn,.seg,.x,.glass{background:var(--surface)}.sheet{background:var(--surface)}}
@media (max-width:640px){
  .nav{padding:8px 10px 0}.nav-in{height:auto;border-radius:26px;padding:8px 14px 6px;flex-wrap:wrap}
  :root{--radius:20px}
}
@media (prefers-reduced-motion: reduce){
  body::before{animation:none}.btn,.btn:hover,.btn:active{transform:none}
  .nav-in::before,.btn::before,.seg::before,.sheet::before,.x::before,.glass::before{display:none}
}

/* ======================================================================
   Themes (data-theme on <html>, set by theme.js).  Mode-specific rules use the
   existing prefers-color-scheme blocks, which theme.js forces on/off.
   ====================================================================== */
.theme-wrap{position:relative;margin-left:auto;display:flex;align-items:center}
.theme-btn{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;font:inherit;font-size:13px;color:var(--text);cursor:pointer}
.theme-btn i{width:16px;height:16px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),0 1px 3px rgba(0,0,0,.3);flex:none}
.nav-in>.seg{margin-left:12px}
.theme-pop{position:absolute;right:0;top:calc(100% + 12px);width:min(320px,86vw);padding:8px;border-radius:22px;z-index:60;
  background:var(--surface);color:var(--text);
  -webkit-backdrop-filter:blur(22px) saturate(1.6);backdrop-filter:blur(22px) saturate(1.6);
  box-shadow:var(--panel-shadow),0 24px 60px -18px rgba(0,0,0,.45)}
.theme-pop[hidden]{display:none}
.theme-pop button{display:grid;grid-template-columns:30px 1fr 18px;grid-template-rows:auto auto;column-gap:12px;align-items:center;width:100%;text-align:left;
  padding:9px 10px;border:0;border-radius:15px;background:transparent;color:inherit;font:inherit;cursor:pointer}
.theme-pop button:hover,.theme-pop button:focus-visible{background:var(--accent-soft,rgba(120,120,128,.14))}
.theme-pop button i{grid-row:1/3;width:30px;height:30px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(255,255,255,.5),0 2px 6px rgba(0,0,0,.25)}
.theme-pop button b{font-weight:600;font-size:14px}
.theme-pop button small{grid-column:2;color:var(--text-2);font-size:12px}
.theme-pop button em{grid-row:1/3;grid-column:3;font-style:normal;font-weight:700;color:var(--accent);visibility:hidden}
.theme-pop button[aria-checked="true"] em{visibility:visible}
@media (max-width:640px){.theme-wrap{margin-left:auto}.theme-pop{right:-4px}.theme-btn .tn{display:none}}

/* --- 椎名真昼：奶油米白 + 琥珀，使用背景图 --- */
:root[data-theme="mahiru"]{
  --bgc:#f6ece8; --text:#33261f; --text-2:#56423c; --text-3:#6d5851;
  --surface:rgba(255,251,248,.86); --surface-2:rgba(255,246,240,.7);
  --sep:rgba(120,80,60,.15); --sep-strong:rgba(120,80,60,.26); --track:rgba(140,90,60,.12);
  --accent:#8f4c0e; --accent-soft:rgba(196,120,40,.16); --green:#156f28; --orange:#8a4500; --red:#a8141a;
  --nav:rgba(250,240,235,.7); --lg-tint:rgba(255,248,242,.14);
  --lg-ambient:0 12px 32px -12px rgba(150,80,50,.28),0 2px 8px rgba(150,80,50,.08);
  --panel-shadow:0 .5px 0 rgba(255,255,255,.8) inset,0 0 0 .5px rgba(140,90,60,.08),0 10px 28px -14px rgba(150,80,50,.28);
}
:root[data-theme="mahiru"] body::before{animation:none;
  background:linear-gradient(rgba(255,244,238,.28),rgba(255,244,238,.1)),url(/assets/mahiru-bg.jpg) center/cover no-repeat,var(--bgc)}
:root[data-theme="mahiru"] .brand i{background:linear-gradient(145deg,#f2b58b,#e88a9a 60%,#f6d9a0)}

/* --- 通往夏天的隧道，再见的出口：傍晚天色 + 隧道暗角 + 红叶光 --- */
:root[data-theme="tunnel"]{
  --bgc:#0c1a33; --text:#f6efe9; --text-2:#d3c6c0; --text-3:#b3a5a2;
  --surface:rgba(18,26,48,.70); --surface-2:rgba(30,38,64,.58);
  --sep:rgba(255,226,200,.15); --sep-strong:rgba(255,226,200,.24); --track:rgba(255,226,200,.14);
  --accent:#ffa764; --accent-soft:rgba(255,150,80,.18);
  --green:#7ddc9a; --orange:#ffc46b; --red:#ff8a80;
  --nav:rgba(12,22,44,.62); --lg-tint:rgba(255,200,160,.05);
  --lg-ambient:0 14px 36px -12px rgba(0,0,0,.6),0 2px 10px rgba(0,0,0,.3);
  --panel-shadow:0 .5px 0 rgba(255,220,190,.10) inset,0 0 0 .5px rgba(255,200,160,.08),0 12px 30px -14px rgba(0,0,0,.6);
}
:root[data-theme="tunnel"] body::before{animation:none;
  background:
   linear-gradient(180deg,rgba(6,10,22,.8) 0%,rgba(6,10,22,.6) 30%,rgba(8,8,16,.58) 70%,rgba(6,6,12,.82) 100%),
   radial-gradient(120% 90% at 50% 50%,rgba(0,0,0,0) 40%,rgba(4,6,14,.6) 100%),
   url(/assets/tunnel-bg.jpg) center/cover no-repeat,#120b14}
:root[data-theme="tunnel"] .hero,:root[data-theme="tunnel"] .sec-h,:root[data-theme="bus510"] .hero,:root[data-theme="bus510"] .sec-h{text-shadow:0 1px 14px rgba(0,0,0,.55)}
:root[data-theme="tunnel"] .brand i{background:linear-gradient(145deg,#4a78c8,#e58a52 60%,#c0302c)}

/* --- 510 路夜行：夜蓝 + 钠灯琥珀 + 车尾红 --- */
:root[data-theme="bus510"]{
  --bgc:#080e1c; --text:#f1ede4; --text-2:#c6c1b6; --text-3:#a39e94;
  --surface:rgba(14,22,40,.72); --surface-2:rgba(24,34,58,.6);
  --sep:rgba(255,230,180,.13); --sep-strong:rgba(255,230,180,.22); --track:rgba(255,230,180,.13);
  --accent:#f2b04a; --accent-soft:rgba(242,176,74,.17);
  --nav:rgba(8,14,28,.66); --lg-tint:rgba(255,220,150,.04);
  --panel-shadow:0 .5px 0 rgba(255,230,180,.09) inset,0 0 0 .5px rgba(255,220,150,.07),0 12px 30px -14px rgba(0,0,0,.65);
}
:root[data-theme="bus510"] body::before{animation:none;
  background:
   radial-gradient(5vmax 5vmax at 14% 22%,rgba(255,196,96,.85),rgba(255,196,96,0) 70%),
   radial-gradient(4vmax 4vmax at 31% 12%,rgba(255,196,96,.6),rgba(255,196,96,0) 70%),
   radial-gradient(4vmax 4vmax at 52% 26%,rgba(255,196,96,.55),rgba(255,196,96,0) 70%),
   radial-gradient(5vmax 5vmax at 78% 14%,rgba(255,196,96,.7),rgba(255,196,96,0) 70%),
   radial-gradient(22vmax 8vmax at 86% 90%,rgba(220,52,52,.5),rgba(220,52,52,0) 70%),
   radial-gradient(60vmax 40vmax at 20% 100%,#1c3a63 0%,rgba(28,58,99,0) 70%),
   linear-gradient(180deg,#0a1226 0%,#101e3b 55%,#16243c 100%)}
:root[data-theme="bus510"] .brand i{background:linear-gradient(145deg,#2a4a7c,#f2b04a 62%,#dc3434)}

/* 深色玻璃按钮/弹层在非系统深色时的补丁（与 prefers-color-scheme 区块等价） */

:root[data-theme="mahiru"] .hero,:root[data-theme="mahiru"] .sec-h{text-shadow:0 0 10px rgba(255,248,244,.8)}
:root[data-theme="mahiru"] .sec-h .aside,:root[data-theme="mahiru"] .live{color:#4a3731}

/* charts */
.spark{width:100%;height:56px;display:block;color:var(--accent)}
.vbars{display:flex;align-items:flex-end;gap:6px;height:84px;padding-top:4px}
.vb{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;color:var(--accent)}
.vb i{display:block;width:100%;max-width:34px;border-radius:7px 7px 3px 3px;background:currentColor;opacity:.85}
.vb span{font-size:10.5px;color:var(--text-2);white-space:nowrap}
.metric{display:grid;gap:3px}.metric .k{font-size:12px;color:var(--text-2)}.metric .v{font-size:26px;font-weight:700;letter-spacing:-.03em}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.cards .panel{padding:18px 20px;display:grid;gap:12px}
.cards h3{margin:0;font-size:15px;display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.cards h3 small{font-weight:500;color:var(--text-2);font-size:12px}
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{font-size:12px;color:var(--text-2);font-weight:600;text-align:left;padding:10px 16px;border-bottom:.5px solid var(--sep)}
.tbl td{padding:11px 16px;border-bottom:.5px solid var(--sep);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl .r,.tbl th.r{text-align:right;font-variant-numeric:tabular-nums}
.chip{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;background:var(--surface-2);box-shadow:inset 0 0 0 .5px var(--sep-strong)}
.chip.ok{color:var(--green)}.chip.warn{color:var(--orange)}.chip.bad{color:var(--red)}
.scroll-x{overflow-x:auto}
.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 4px 14px}
@media (prefers-reduced-motion: no-preference){.vb i{transition:height .6s var(--ease)}}

:root[data-theme="tunnel"] .seg{background:rgba(10,14,28,.55)}

/* grouped navigation (built by ui.js) */
.links.grouped{overflow:visible;gap:2px}
.ng{position:relative}
.ng-b{display:inline-flex;align-items:center;gap:6px;padding:7px 13px 7px 15px;border:0;border-radius:999px;background:transparent;color:var(--text-2);font:inherit;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .35s var(--ease),color .2s}
.ng-b:hover,.ng.open .ng-b{background:rgba(255,255,255,.22);color:var(--text)}
.ng-b svg{width:9px;height:6px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;opacity:.6;transition:transform .3s var(--ease)}
.ng.open .ng-b svg{transform:rotate(180deg)}
.ng.on .ng-b{color:var(--text);font-weight:600;background:rgba(255,255,255,.34);box-shadow:inset 0 .5px 0 rgba(255,255,255,.8),inset 0 -.5px 1px rgba(20,30,70,.1),0 2px 8px -2px rgba(30,40,90,.16)}
.ng-cur{font-weight:500;color:var(--text-2)}.ng-cur::before{content:"·";margin:0 5px 0 1px;opacity:.6}
.ng-pop{position:absolute;left:0;top:calc(100% + 12px);min-width:236px;padding:6px;border-radius:20px;z-index:60;display:grid;gap:1px;
  background:linear-gradient(var(--surface),var(--surface)),var(--bgc,var(--bg,#fff));color:var(--text);
  box-shadow:0 0 0 .5px var(--sep-strong,rgba(0,0,0,.08)),0 24px 60px -18px rgba(0,0,0,.45);animation:ngIn .22s var(--ease)}
.ng-pop[hidden]{display:none}
.links .ng-pop a{display:grid;gap:2px;padding:9px 12px;border-radius:14px;white-space:nowrap;color:var(--text);box-shadow:none;background:transparent}
.links .ng-pop a b{font-weight:600;font-size:13.5px}.links .ng-pop a small{font-size:11.5px;color:var(--text-2);font-weight:400}
.links .ng-pop a:hover,.links .ng-pop a:focus-visible{background:var(--accent-soft,rgba(120,120,128,.14))}
.links .ng-pop a[aria-current="page"]{background:var(--accent-soft,rgba(120,120,128,.14));box-shadow:inset 3px 0 0 var(--accent)}
@keyframes ngIn{from{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}
@media (prefers-color-scheme: dark){.ng-b:hover,.ng.open .ng-b{background:rgba(255,255,255,.07)}.ng.on .ng-b{background:rgba(255,255,255,.13);box-shadow:inset 0 .5px 0 rgba(255,255,255,.3),0 2px 8px rgba(0,0,0,.3)}}
@media (max-width:640px){.links.grouped{justify-content:space-between}.ng-b{padding:7px 10px}.ng-cur{display:none}.links.grouped{position:relative}.ng{position:static}.ng-pop{left:0!important;right:0;top:calc(100% + 8px);min-width:0}}
@media (prefers-reduced-motion: reduce){.ng-pop{animation:none}}
