:root{--font-display:"Montserrat","Golos Text","Helvetica Neue",Arial,sans-serif;--font-ui:"Golos Text","Montserrat","Helvetica Neue",Arial,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--purple-50:#f4effc;--purple-100:#e9e0f9;--purple-200:#d3c1f2;--purple-300:#b79ae8;--purple-400:#9664d5;--purple-500:#7943cc;--purple-600:#6733b4;--purple-700:#54289a;--purple-800:#3e1c74;--purple-900:#2a1250;--lilac-100:#ede8ff;--lilac-200:#d8ceff;--lilac-300:#c4b4ff;--lilac-400:#ae9aff;--lilac-500:#9683f0;--white:#fff;--ink-025:#f3f3f3;--ink-050:#e8e6ea;--ink-100:#e2e0e4;--ink-200:#c7c3d0;--ink-300:#928da0;--ink-400:#6e697c;--ink-500:#4e4a5a;--ink-700:#2b2833;--ink-900:#14121a;--ink-000:#000;--stage-900:#100c1c;--stage-800:#171326;--stage-700:#211a38;--stage-600:#2e2450;--stage-500:#433e78;--glow-lilac:#b99cff;--glow-pink:#e4a9d2;--mint-100:#ddf5ec;--mint-500:#16a97b;--mint-700:#0e7b59;--amber-100:#fcf0d7;--amber-500:#e0a11b;--amber-700:#a6720a;--rose-100:#fce1e8;--rose-500:#e23d6e;--rose-700:#ac2049;--brand:var(--purple-500);--brand-hover:var(--purple-600);--brand-press:var(--purple-700);--brand-soft:var(--purple-100);--brand-soft-hover:var(--purple-200);--brand-contrast:var(--white);--brand-lilac:var(--lilac-400);--text-strong:var(--ink-000);--text-body:var(--ink-700);--text-muted:var(--ink-400);--text-subtle:var(--ink-300);--text-brand:var(--purple-500);--text-on-brand:var(--white);--text-on-stage:#f1edff;--text-on-stage-muted:#b3acc9;--text-link:var(--purple-600);--text-link-hover:var(--purple-700);--surface-page:var(--ink-050);--surface-card:var(--white);--surface-sunken:var(--ink-025);--surface-raised:var(--white);--surface-inset:#fafafb;--surface-stage:var(--stage-800);--surface-stage-raised:var(--stage-700);--surface-brand:var(--purple-500);--border-subtle:var(--ink-100);--border-default:var(--ink-200);--border-strong:var(--ink-300);--border-brand:var(--purple-300);--border-stage:#b99cff2e;--focus-ring:var(--purple-400);--gradient-page:linear-gradient(158deg,#e8e6ea 0%,#e5e3e7 46%,#e0dee3 100%);--gradient-brand:linear-gradient(135deg,#7943cc 0%,#ae9aff 100%);--gradient-brand-deep:linear-gradient(135deg,#54289a 0%,#7943cc 100%);--gradient-stage:linear-gradient(180deg,#211a38 0%,#100c1c 100%);--gradient-protect:linear-gradient(180deg,#100c1c00 0%,#100c1c8c 58%,#100c1ce6 100%);--gradient-seam:linear-gradient(90deg,#e8e6ea 0%,#e8e6ea00 100%);--scrim:#14121a94;--scrim-light:#ffffffb8;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-black:800;--fs-3xs:11px;--fs-2xs:12px;--fs-xs:13px;--fs-sm:14px;--fs-md:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:24px;--fs-3xl:30px;--fs-4xl:38px;--fs-5xl:48px;--fs-6xl:64px;--fs-7xl:80px;--lh-tight:1.05;--lh-snug:1.2;--lh-normal:1.45;--lh-relaxed:1.6;--ls-display:-.02em;--ls-tight:-.01em;--ls-normal:0em;--ls-wide:.04em;--ls-caps:.08em;--type-hero-family:var(--font-ui);--type-hero-size:var(--fs-6xl);--type-hero-weight:var(--fw-bold);--type-hero-lh:var(--lh-tight);--type-hero-ls:var(--ls-display);--type-display-size:var(--fs-4xl);--type-title-size:var(--fs-2xl);--type-heading-size:var(--fs-xl);--type-subheading-size:var(--fs-lg);--type-body-size:var(--fs-md);--type-body-sm-size:var(--fs-sm);--type-caption-size:var(--fs-xs);--type-caps-family:var(--font-display);--type-caps-weight:var(--fw-bold);--type-caps-ls:var(--ls-caps);--type-caps-size:var(--fs-xs);--type-numeric-family:var(--font-mono);--type-numeric-ls:var(--ls-tight);--space-0:0px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-10:40px;--space-12:48px;--space-14:56px;--space-16:64px;--space-20:80px;--space-24:96px;--space-32:128px;--pad-control-x:16px;--pad-control-y:10px;--pad-card:20px;--pad-card-lg:28px;--pad-section:64px;--layout-sidebar:264px;--layout-sidebar-collapsed:76px;--layout-topbar:64px;--layout-content-max:1160px;--layout-gutter:24px;--layout-gutter-mobile:16px;--layout-tabbar:84px;--layout-row:56px;--control-sm:32px;--control-md:40px;--control-lg:48px;--control-xl:56px;--hit-min:44px;--radius-xs:6px;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:24px;--radius-2xl:32px;--radius-pill:999px;--radius-button:12px;--radius-input:12px;--radius-card:18px;--radius-card-lg:24px;--radius-chip:999px;--radius-sheet:28px;--radius-media:14px;--radius-avatar:999px;--shadow-xs:0 1px 2px #14121a0f;--shadow-sm:0 2px 6px #14121a12;--shadow-md:0 8px 20px -4px #14121a1a;--shadow-lg:0 20px 48px -12px #14121a2e;--shadow-xl:0 32px 72px -20px #14121a3d;--shadow-card:0 4px 16px -6px #2b28331f;--shadow-card-hover:0 12px 28px -10px #2b283333;--shadow-brand:0 8px 24px -6px #7943cc73;--shadow-brand-press:0 2px 8px -2px #7943cc66;--shadow-glow:0 0 0 1px #b99cff59,0 0 32px #b99cff59;--shadow-glow-strong:0 0 0 1px #b99cff80,0 0 56px #b99cff8c;--shadow-stage:0 24px 64px -24px #000000b3;--inset-hairline:inset 0 0 0 1px #14121a0f;--inset-top-light:inset 0 1px 0 #ffffff8c;--ring-brand:0 0 0 3px #7943cc38;--ring-danger:0 0 0 3px #e23d6e38;--ring-stage:0 0 0 3px #b99cff47;--dur-instant:80ms;--dur-fast:.14s;--dur-base:.22s;--dur-slow:.36s;--dur-slower:.56s;--dur-scene:.9s;--beat:.5s;--beat-half:.25s;--beat-quarter:.125s;--bar:2s;--eight-count:4s;--ease-out:cubic-bezier(.22,1,.36,1);--ease-in:cubic-bezier(.55,0,1,.45);--ease-in-out:cubic-bezier(.65,0,.35,1);--ease-snap:cubic-bezier(.2,.8,.2,1);--ease-pop:cubic-bezier(.34,1.56,.64,1);--ease-stage:cubic-bezier(.16,1,.3,1);--ease-linear:linear;--stagger-step:60ms;--stagger-step-slow:90ms;--transition-control:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out);--transition-card:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out);--transition-sheet:transform var(--dur-slow) var(--ease-stage),opacity var(--dur-base) var(--ease-out);--press-scale:.97;--lift-y:-2px}@keyframes vs-fade-in{0%{opacity:0}to{opacity:1}}@keyframes vs-fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes vs-fade-up-lg{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}@keyframes vs-fade-down{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}@keyframes vs-fade-left{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:none}}@keyframes vs-fade-right{0%{opacity:0;transform:translate(-18px)}to{opacity:1;transform:none}}@keyframes vs-pop-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes vs-zoom-in{0%{opacity:0;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}@keyframes vs-blur-in{0%{opacity:0;filter:blur(10px);transform:scale(1.02)}to{opacity:1;filter:blur();transform:none}}@keyframes vs-reveal-up{0%{clip-path:inset(100% 0 0);transform:translateY(10px)}to{clip-path:inset(0);transform:none}}@keyframes vs-reveal-left{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes vs-slide-up-sheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes vs-slide-down-panel{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes vs-drop-in{0%{opacity:0;transform:translateY(-16px)scale(.96)}60%{opacity:1}to{opacity:1;transform:none}}@keyframes vs-beat{0%,to{transform:scale(1)}18%{transform:scale(1.06)}36%{transform:scale(1)}}@keyframes vs-beat-strong{0%,to{transform:scale(1)}14%{transform:scale(1.14)}30%{transform:scale(.98)}44%{transform:scale(1)}}@keyframes vs-pulse-glow{0%,to{box-shadow:0 0 #b99cff73}70%{box-shadow:0 0 0 14px #b99cff00}}@keyframes vs-breathe{0%,to{opacity:.72;transform:scale(1)}50%{opacity:1;transform:scale(1.03)}}@keyframes vs-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes vs-wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-4deg)}75%{transform:rotate(4deg)}}@keyframes vs-nudge-right{0%,to{transform:translate(0)}50%{transform:translate(4px)}}@keyframes vs-sparkle{0%,to{opacity:.35;transform:scale(.86)rotate(0)}50%{opacity:1;transform:scale(1.1)rotate(12deg)}}@keyframes vs-glow-cycle{0%,to{box-shadow:0 0 0 1px #b99cff4d,0 0 18px #b99cff40}50%{box-shadow:0 0 0 1px #b99cff8c,0 0 44px #b99cff80}}@keyframes vs-shine-sweep{0%{transform:translate(-120%)}to{transform:translate(120%)}}@keyframes vs-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes vs-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes vs-stage-sweep{0%{opacity:0;transform:translate(-40%)rotate(8deg)}30%{opacity:.5}to{opacity:0;transform:translate(140%)rotate(8deg)}}@keyframes vs-gradient-shift{0%,to{background-position:0%}50%{background-position:100%}}@keyframes vs-bar-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes vs-bar-rise{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes vs-ring-fill{0%{stroke-dashoffset:var(--vs-ring-len,300)}to{stroke-dashoffset:var(--vs-ring-to,90)}}@keyframes vs-draw-check{0%{stroke-dashoffset:26px}to{stroke-dashoffset:0}}@keyframes vs-count-in{0%{opacity:0;transform:scale(1.4)}30%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}@keyframes vs-roll-up{0%{opacity:0;transform:translateY(60%)}to{opacity:1;transform:none}}@keyframes vs-equalize{0%,to{height:22%}50%{height:100%}}@keyframes vs-spin{to{transform:rotate(360deg)}}@keyframes vs-dot-bounce{0%,80%,to{opacity:.45;transform:translateY(0)}40%{opacity:1;transform:translateY(-6px)}}@keyframes vs-sweep-arc{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vs-anim-fade-in{animation:vs-fade-in var(--dur-base) var(--ease-out) both}.vs-anim-fade-up{animation:vs-fade-up var(--dur-slow) var(--ease-out) both}.vs-anim-fade-up-lg{animation:vs-fade-up-lg var(--dur-slower) var(--ease-stage) both}.vs-anim-fade-down{animation:vs-fade-down var(--dur-slow) var(--ease-out) both}.vs-anim-fade-left{animation:vs-fade-left var(--dur-slow) var(--ease-out) both}.vs-anim-fade-right{animation:vs-fade-right var(--dur-slow) var(--ease-out) both}.vs-anim-pop{animation:vs-pop-in var(--dur-base) var(--ease-pop) both}.vs-anim-zoom{animation:vs-zoom-in var(--dur-slow) var(--ease-stage) both}.vs-anim-blur{animation:vs-blur-in var(--dur-slower) var(--ease-stage) both}.vs-anim-reveal{animation:vs-reveal-up var(--dur-slow) var(--ease-stage) both}.vs-anim-reveal-left{animation:vs-reveal-left var(--dur-slower) var(--ease-stage) both}.vs-anim-drop{animation:vs-drop-in var(--dur-slow) var(--ease-pop) both}.vs-anim-sheet{animation:vs-slide-up-sheet var(--dur-slow) var(--ease-stage) both}.vs-anim-beat{animation:vs-beat var(--beat) var(--ease-in-out) infinite}.vs-anim-beat-strong{animation:vs-beat-strong var(--beat) var(--ease-in-out) infinite}.vs-anim-glow{animation:vs-pulse-glow var(--bar) var(--ease-out) infinite}.vs-anim-glow-cycle{animation:vs-glow-cycle var(--bar) var(--ease-in-out) infinite}.vs-anim-breathe{animation:vs-breathe var(--bar) var(--ease-in-out) infinite}.vs-anim-float{animation:vs-float 3.2s var(--ease-in-out) infinite}.vs-anim-wiggle{animation:vs-wiggle var(--beat) var(--ease-in-out) infinite}.vs-anim-nudge{animation:vs-nudge-right var(--bar) var(--ease-in-out) infinite}.vs-anim-sparkle{animation:vs-sparkle var(--bar) var(--ease-in-out) infinite}.vs-anim-spin{animation:vs-spin .7s var(--ease-linear) infinite}.vs-anim-marquee{animation:vs-marquee 18s var(--ease-linear) infinite}.vs-anim-bar{transform-origin:0;animation:vs-bar-grow var(--dur-slower) var(--ease-out) both}.vs-anim-rise{transform-origin:bottom;animation:vs-bar-rise var(--dur-slower) var(--ease-out) both}.vs-anim-roll{animation:vs-roll-up var(--dur-slow) var(--ease-pop) both}.vs-anim-count{animation:vs-count-in var(--eight-count) var(--ease-out) infinite}.vs-anim-gradient{background:linear-gradient(120deg,var(--purple-700),var(--purple-500),var(--lilac-400),var(--purple-500));animation:vs-gradient-shift 9s var(--ease-in-out) infinite;background-size:300% 300%}.vs-skeleton{background:linear-gradient(90deg,var(--ink-100) 25%,var(--ink-050) 37%,var(--ink-100) 63%);animation:vs-shimmer 1.4s var(--ease-linear) infinite;border-radius:var(--radius-sm);background-size:200% 100%}.vs-dots{align-items:flex-end;gap:5px;display:inline-flex}.vs-dots>span{width:6px;height:6px;animation:vs-dot-bounce 1.1s var(--ease-in-out) infinite;background:currentColor;border-radius:99px}.vs-dots>span:nth-child(2){animation-delay:.14s}.vs-dots>span:nth-child(3){animation-delay:.28s}.vs-eq{align-items:flex-end;gap:3px;height:100%;display:inline-flex}.vs-eq>span{min-width:3px;height:22%;animation:vs-equalize var(--beat) var(--ease-in-out) infinite alternate;background:currentColor;border-radius:2px;flex:1}.vs-eq>span:nth-child(2n){animation-duration:calc(var(--beat) * .74)}.vs-eq>span:nth-child(3n){animation-duration:calc(var(--beat) * 1.18)}.vs-eq>span:nth-child(4n){animation-duration:calc(var(--beat) * .62)}.vs-eq>span:nth-child(5n){animation-duration:calc(var(--beat) * .92)}.vs-stage-sweep{position:relative;overflow:hidden}.vs-stage-sweep:after{content:"";pointer-events:none;width:34%;animation:vs-stage-sweep 6s var(--ease-in-out) infinite;background:linear-gradient(90deg,#b99cff00,#d8ceff59,#b99cff00);position:absolute;top:-40%;bottom:-40%;left:0}.vs-shine{position:relative;overflow:hidden}.vs-shine:after{content:"";pointer-events:none;background:linear-gradient(100deg,#fff0,#ffffff61,#fff0);width:45%;position:absolute;top:-50%;bottom:-50%;left:0;transform:translate(-140%)}.vs-shine:hover:after{animation:vs-shine-sweep .72s var(--ease-out)}.vs-stagger>*{animation:vs-fade-up var(--dur-slow) var(--ease-out) both}.vs-stagger>:first-child{animation-delay:0s}.vs-stagger>:nth-child(2){animation-delay:60ms}.vs-stagger>:nth-child(3){animation-delay:.12s}.vs-stagger>:nth-child(4){animation-delay:.18s}.vs-stagger>:nth-child(5){animation-delay:.24s}.vs-stagger>:nth-child(6){animation-delay:.3s}.vs-stagger>:nth-child(7){animation-delay:.36s}.vs-stagger>:nth-child(8){animation-delay:.42s}.vs-stagger>:nth-child(9){animation-delay:.48s}.vs-stagger>:nth-child(10){animation-delay:.54s}.vs-stagger>:nth-child(11){animation-delay:.6s}.vs-stagger>:nth-child(12){animation-delay:.66s}.vs-stagger>:nth-child(n+13){animation-delay:.72s}.vs-stagger-fast>*{animation-duration:var(--dur-base)}.vs-stagger-slow>:nth-child(2){animation-delay:90ms}.vs-stagger-slow>:nth-child(3){animation-delay:.18s}.vs-stagger-slow>:nth-child(4){animation-delay:.27s}.vs-stagger-slow>:nth-child(5){animation-delay:.36s}.vs-stagger-slow>:nth-child(6){animation-delay:.45s}.vs-delay-1{animation-delay:60ms}.vs-delay-2{animation-delay:.12s}.vs-delay-3{animation-delay:.18s}.vs-delay-4{animation-delay:.24s}.vs-delay-5{animation-delay:.3s}.vs-delay-6{animation-delay:.42s}.vs-delay-7{animation-delay:.56s}.vs-hover-lift{transition:var(--transition-card)}.vs-hover-lift:hover{transform:translateY(var(--lift-y));box-shadow:var(--shadow-card-hover)}.vs-hover-glow{transition:box-shadow var(--dur-base) var(--ease-out)}.vs-hover-glow:hover{box-shadow:var(--shadow-glow)}.vs-hover-zoom{overflow:hidden}.vs-hover-zoom img{transition:transform var(--dur-slow) var(--ease-out)}.vs-hover-zoom:hover img{transform:scale(1.05)}.vs-hover-nudge :where(svg){transition:transform var(--dur-fast) var(--ease-out)}.vs-hover-nudge:hover :where(svg){transform:translate(3px)}.vs-press{transition:transform var(--dur-instant) var(--ease-out)}.vs-press:active{transform:scale(var(--press-scale))}@media (prefers-reduced-motion:reduce){[class*=vs-anim-],.vs-skeleton,.vs-stagger>*,.vs-dots>span,.vs-eq>span{animation:none!important}.vs-stage-sweep:after,.vs-shine:after{opacity:0;animation:none!important}.vs-hover-lift:hover,.vs-press:active,.vs-hover-zoom:hover img,.vs-hover-nudge:hover :where(svg){transform:none!important}*{transition-duration:1ms!important}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-ui);font-size:var(--fs-md);line-height:var(--lh-normal);color:var(--text-body);background:var(--gradient-page);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}h1,h2,h3,h4,h5{font-family:var(--font-ui);color:var(--text-strong);font-weight:var(--fw-bold);letter-spacing:var(--ls-tight);line-height:var(--lh-snug);margin:0}p{text-wrap:pretty;margin:0}a{color:var(--text-link);transition:color var(--dur-fast) var(--ease-out);text-decoration:none}a:hover{color:var(--text-link-hover);text-underline-offset:3px;text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}::selection{background:var(--purple-200);color:var(--ink-900)}img{max-width:100%;display:block}[data-theme=stage]{color:var(--text-on-stage);background:var(--gradient-stage)}[data-theme=stage] h1,[data-theme=stage] h2,[data-theme=stage] h3{color:var(--text-on-stage)}[data-theme=stage] a{color:var(--glow-lilac)}[data-theme=stage] a:hover{color:#d8ceff}.vs-caps{font-family:var(--type-caps-family);font-weight:var(--type-caps-weight);letter-spacing:var(--type-caps-ls);text-transform:uppercase}.vs-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
body{min-height:100vh}.ic{flex:none;display:block}.app{min-height:100vh;display:block}.sidebar{display:none}.main{flex-direction:column;height:100dvh;display:flex}.scroll{flex:auto;min-height:0;overflow-y:auto}@media (min-width:1024px){.app{grid-template-columns:var(--layout-sidebar) 1fr;align-items:stretch;display:grid}.sidebar{background:var(--surface-card);border-right:1px solid var(--border-subtle);flex-direction:column;padding:20px 16px;display:flex}}.wordmark{font-family:var(--font-display);font-weight:var(--fw-black);font-size:var(--fs-sm);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-strong);line-height:var(--lh-snug)}.wordmark span{color:var(--brand);display:block}.sidebar .wordmark{margin-bottom:22px}.sidebar .wordmark span{display:inline}.nav{flex-direction:column;gap:2px;display:flex}.nav a{align-items:center;gap:var(--space-3);height:var(--hit-min);padding:0 var(--space-3);border-radius:var(--radius-button);color:var(--text-muted);font-size:var(--fs-md);font-weight:var(--fw-medium);transition:var(--transition-control);text-decoration:none;display:flex}.nav a:hover{background:var(--surface-sunken);color:var(--text-strong);text-decoration:none}.nav a.on{background:var(--brand-soft);color:var(--purple-700);font-weight:var(--fw-semibold)}.nav .sep{background:var(--border-subtle);height:1px;margin:14px var(--space-2)}.nav .sep~a{height:var(--control-md);font-size:var(--fs-sm)}.nav .sep~a svg{width:18px;height:18px}.nav.rest a{height:var(--control-md);font-size:var(--fs-sm)}.nav.rest a svg{width:18px;height:18px}.navcount{border-radius:var(--radius-pill);background:var(--rose-500);color:#fff;min-width:20px;height:20px;font-family:var(--font-mono);font-size:11px;font-weight:var(--fw-bold);flex:none;justify-content:center;align-items:center;padding:0 4px;display:inline-flex}.whoami{align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:var(--radius-md);margin-top:auto;display:flex}.whoami .name{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-strong)}.whoami .role{font-size:var(--fs-2xs);color:var(--text-subtle)}.whoami .iconbtn{width:var(--control-sm);height:var(--control-sm)}.topbar{z-index:15;align-items:center;gap:var(--space-3);height:56px;padding:0 60px 0 var(--layout-gutter-mobile);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border-subtle);background:#ffffffc7;display:flex;position:sticky;top:0}.topbar h1{min-width:0;font-size:var(--fs-xl);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}@media (min-width:1024px){.topbar{height:var(--layout-topbar);background:#ffffffb8;padding:0 32px}.topbar h1{font-size:var(--fs-2xl)}}.topbar-bell{top:calc(8px + env(safe-area-inset-top,0px));right:var(--layout-gutter-mobile);z-index:16;border-radius:var(--radius-button);width:40px;height:40px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:none;position:fixed}.topbar-bell .dot{border-radius:var(--radius-pill);background:var(--rose-500);border:2px solid #fff;width:8px;height:8px;position:absolute;top:7px;right:7px}@media (max-width:1023px){.topbar-bell{display:flex}}.topbar-actions{align-items:center;gap:var(--space-2);display:none}.mobile-actions{gap:var(--space-2);display:flex}@media (min-width:1024px){.topbar-actions{display:flex}.mobile-actions{display:none}}.content{padding:var(--space-5) var(--layout-gutter-mobile) var(--space-12);max-width:var(--layout-content-max);margin-inline:auto}@media (min-width:1024px){.content{padding:var(--space-6) var(--layout-gutter) var(--space-16)}}.tabbar{height:calc(var(--layout-tabbar) + env(safe-area-inset-bottom,0px));padding-top:var(--space-2);padding-bottom:env(safe-area-inset-bottom,0px);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:1px solid var(--border-subtle);z-index:20;background:#ffffffdb;flex:none;align-items:flex-start;display:flex;position:relative}.tabbtn{cursor:pointer;min-width:44px;height:60px;color:var(--text-subtle);font-weight:var(--fw-medium);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:5px;text-decoration:none;display:flex}.tabbtn:hover{color:var(--text-subtle);text-decoration:none}.tabbtn.on{color:var(--brand);font-weight:var(--fw-bold)}.tabbtn .lbl{font-size:10px}@media (min-width:1024px){.tabbar{display:none}}.sheet-scrim{z-index:29;background:var(--scrim);position:fixed;inset:0}.sheet-more{z-index:30;background:var(--surface-card);border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;padding:var(--space-3) var(--space-3) calc(var(--space-6) + env(safe-area-inset-bottom,0px));position:fixed;bottom:0;left:0;right:0;box-shadow:0 -20px 48px -12px #14121a59}.sheet-more .handle{border-radius:var(--radius-pill);background:var(--ink-200);width:44px;height:4px;margin:0 auto 14px}.sheet-more .items{flex-direction:column;gap:2px;display:flex}.sheet-more .item{width:100%;height:56px;padding:0 var(--space-3);border-radius:var(--radius-md);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:14px;text-decoration:none;display:flex}.sheet-more .item:hover{background:var(--surface-sunken);text-decoration:none}.sheet-more .item .lbl{font-size:var(--fs-lg);font-weight:var(--fw-medium);color:var(--text-strong);flex:1}.sheet-more .item .chev{color:var(--text-subtle);display:flex}.sheet-more .sep{background:var(--border-subtle);height:1px;margin:10px var(--space-3)}.sheet-more .foot{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);display:flex}.sheet-more .foot .name{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text-strong)}.sheet-more .foot .role{font-size:var(--fs-xs);color:var(--text-muted)}.sheet-more .foot .logout{border:1px solid var(--border-default);border-radius:var(--radius-button);background:var(--surface-card);width:44px;height:44px;color:var(--text-muted);cursor:pointer;flex:none;justify-content:center;align-items:center;display:flex}@media (min-width:1024px){.sheet-scrim,.sheet-more{display:none}}.card{background:var(--surface-card);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--pad-card)}.card.flush{padding:0;overflow:hidden}.card.sunken{background:var(--surface-sunken);border:1px solid var(--border-subtle);box-shadow:none}.card h2{font-size:var(--fs-lg);margin-bottom:var(--space-4)}.grid{gap:var(--space-4);display:grid}.cols-2{grid-template-columns:1fr 1fr}.cols-3{grid-template-columns:repeat(3,1fr)}.stack{gap:var(--space-4);flex-direction:column;display:flex}.rowline{align-items:center;gap:var(--space-3);display:flex}.spread{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.muted{color:var(--text-muted)}.subtle{color:var(--text-subtle)}.small{font-size:var(--fs-xs)}.tiny{font-size:var(--fs-2xs)}.caps{font-family:var(--type-caps-family);font-weight:var(--type-caps-weight);letter-spacing:var(--type-caps-ls);text-transform:uppercase;font-size:var(--fs-3xs)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:var(--ls-tight)}.eyebrow{color:var(--brand);margin-bottom:var(--space-2)}.rows{flex-direction:column;display:flex}.row{align-items:center;gap:var(--space-4);min-height:var(--layout-row);padding:0 var(--pad-card);border-bottom:1px solid var(--border-subtle);font-size:var(--fs-sm);transition:var(--transition-control);display:grid}.row:last-child{border-bottom:none}.row:hover{background:var(--surface-sunken)}.row.head{background:var(--surface-sunken);min-height:44px;color:var(--text-subtle);font-size:var(--fs-2xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:var(--ls-wide)}.row.head:hover{background:var(--surface-sunken)}.row .strong{font-weight:var(--fw-semibold);color:var(--text-strong)}.btn{justify-content:center;align-items:center;gap:var(--space-2);height:var(--control-md);border-radius:var(--radius-button);font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-xs);letter-spacing:var(--ls-caps);text-transform:uppercase;white-space:nowrap;cursor:pointer;transition:var(--transition-control);border:1px solid #0000;padding:0 18px;display:inline-flex}.btn.primary{background:var(--brand);color:var(--text-on-brand);box-shadow:var(--shadow-brand), var(--inset-top-light)}.btn.secondary{background:var(--surface-card);color:var(--text-strong);border-color:var(--border-default);box-shadow:var(--shadow-xs)}.btn.ghost{color:var(--brand);background:0 0}.btn.danger{background:var(--rose-500);color:#fff;box-shadow:var(--shadow-sm)}.btn.lg{height:var(--control-lg);font-size:var(--fs-sm);padding:0 24px}.btn.xl{height:var(--control-xl);font-size:var(--fs-md);padding:0 30px}.btn.wide{width:100%}.btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none}.iconbtn{width:var(--control-md);height:var(--control-md);border-radius:var(--radius-button);color:var(--text-muted);cursor:pointer;transition:var(--transition-control);background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;display:inline-flex}.iconbtn:hover{background:var(--surface-sunken);color:var(--text-strong)}.iconbtn.outline{background:var(--surface-card);border-color:var(--border-default)}.field{gap:var(--space-2);flex-direction:column;display:flex}.field>label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-muted)}.control{align-items:center;gap:var(--space-3);height:var(--control-md);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-input);color:var(--text-body);font-size:var(--fs-sm);transition:var(--transition-control);padding:0 14px;display:flex}.control.lg{height:var(--control-lg);font-size:var(--fs-md)}.control.focus{border-color:var(--border-brand);box-shadow:var(--ring-brand)}.control .ph{color:var(--text-subtle)}.control .grow{flex:1;min-width:0}.hint{font-size:var(--fs-2xs);color:var(--text-subtle)}.err{font-size:var(--fs-2xs);color:var(--rose-500)}.search{max-width:320px}.badge{border-radius:var(--radius-chip);white-space:nowrap;height:24px;font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-3xs);letter-spacing:var(--ls-caps);text-transform:uppercase;background:var(--brand-soft);color:var(--purple-700);align-items:center;gap:6px;padding:0 10px;display:inline-flex}.badge.ok{background:var(--mint-100);color:var(--mint-700)}.badge.warn{background:var(--amber-100);color:var(--amber-700)}.badge.bad{background:var(--rose-100);color:var(--rose-700)}.badge.neutral{background:var(--surface-sunken);color:var(--text-muted)}.badge .dot{border-radius:var(--radius-pill);background:currentColor;width:6px;height:6px}.chip{border:1px solid var(--border-default);border-radius:var(--radius-chip);height:34px;font-size:var(--fs-sm);font-weight:var(--fw-medium);background:var(--surface-card);color:var(--text-body);cursor:pointer;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}.avatar{border-radius:var(--radius-avatar);background:var(--brand-soft);width:40px;height:40px;color:var(--purple-700);font-family:var(--font-display);font-weight:var(--fw-bold);flex:none;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.avatar.sm{width:32px;height:32px;font-size:12px}.stat .k{font-size:var(--fs-2xs);color:var(--text-muted)}.stat .v{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-4xl);font-weight:var(--fw-bold);color:var(--text-strong);line-height:var(--lh-tight)}.stat .n{font-size:var(--fs-2xs);color:var(--text-subtle)}.bar{border-radius:var(--radius-pill);background:var(--surface-sunken);height:8px;overflow:hidden}.bar>i{border-radius:var(--radius-pill);background:var(--brand);height:100%;display:block}.qr{border-radius:var(--radius-md);width:208px;height:208px;box-shadow:var(--inset-hairline);background:#fff;flex:none;padding:12px}.qr img,.qr svg{width:100%;height:100%;display:block}.phone{background:var(--gradient-page);width:390px;height:844px;box-shadow:var(--shadow-xl), var(--inset-hairline);border-radius:44px;flex-direction:column;display:flex;position:relative;overflow:hidden}.phone .statusbar{height:44px;font-size:var(--fs-2xs);font-weight:var(--fw-semibold);color:var(--text-strong);flex:none;justify-content:space-between;align-items:center;padding:0 26px;display:flex}.phone .screen{padding:0 var(--layout-gutter-mobile);flex:1;overflow:hidden}.phone .tabbar{height:var(--layout-tabbar);padding-top:var(--space-3);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:1px solid var(--border-subtle);background:#ffffffb8;flex:none;grid-template-columns:repeat(2,1fr);align-items:start;display:grid}.phone .tabbar a{color:var(--text-subtle);font-size:var(--fs-3xs);flex-direction:column;align-items:center;gap:4px;text-decoration:none;display:flex}.phone .tabbar a.on{color:var(--brand)}.stagepad{padding:var(--space-8);gap:var(--space-8);flex-wrap:wrap;align-items:flex-start;display:flex}.framecap{font-size:var(--fs-2xs);color:var(--text-muted);margin-bottom:var(--space-2)}input.control,select.control,textarea.control{width:100%;font-family:var(--font-ui);appearance:none;outline:none}input.control::placeholder{color:var(--text-subtle)}input.control:focus,select.control:focus,textarea.control:focus{border-color:var(--border-brand);box-shadow:var(--ring-brand)}input.control:disabled,select.control:disabled{background:var(--surface-sunken);color:var(--text-subtle)}select.control{background-image:linear-gradient(45deg, transparent 50%, var(--text-subtle) 50%), linear-gradient(135deg, var(--text-subtle) 50%, transparent 50%);cursor:pointer;background-position:calc(100% - 18px) 52%,calc(100% - 13px) 52%;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:38px}input.control.mono{font-family:var(--font-mono)}.auth{min-height:100vh;padding:var(--space-12) var(--space-6);place-items:center;display:grid}.authcard{width:400px;max-width:100%}.authcard .wordmark{font-size:var(--fs-lg);text-align:center;margin-bottom:var(--space-8)}a.row,a.sess,a.visit{color:inherit;text-decoration:none}a.row:hover,a.sess:hover,a.visit:hover{text-decoration:none}.empty{padding:var(--space-12) var(--pad-card);text-align:center}.empty .t{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--text-strong);margin-bottom:var(--space-2)}.empty .s{font-size:var(--fs-sm);color:var(--text-muted)}.empty .ic-circle{width:80px;height:80px;margin:0 auto var(--space-3);border-radius:var(--radius-pill);background:var(--brand-soft);color:var(--brand);justify-content:center;align-items:center;display:flex}.slist .empty .ic-circle{width:72px;height:72px}.bell{position:relative}.bell .cnt{border-radius:var(--radius-pill);background:var(--rose-500);color:#fff;min-width:16px;height:16px;font-family:var(--font-mono);text-align:center;padding:0 4px;font-size:10px;line-height:16px;position:absolute;top:4px;right:4px}.notif{padding:var(--space-3) var(--pad-card);border-bottom:1px solid var(--border-subtle);flex-direction:column;gap:2px;display:flex}.notif:last-child{border-bottom:none}.notif .t{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-strong)}.notif .b{font-size:var(--fs-2xs);color:var(--text-muted)}.qr svg,.qrbig svg{width:100%;height:100%;display:block}.slist{gap:var(--space-2);flex-direction:column;display:flex}.scard{gap:var(--space-2);padding:14px var(--space-4);background:var(--surface-card);border-radius:var(--radius-card);box-shadow:var(--shadow-card);color:inherit;cursor:pointer;border:1px solid #0000;flex-direction:column;text-decoration:none;display:flex}.scard:hover{text-decoration:none}.scard.live{background:var(--purple-50);border-color:var(--border-brand)}.scard .r1{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.scard .r1 .date{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--text-strong)}.scard.live .r1 .date{color:var(--purple-700)}.scard .r1 .rel{font-size:var(--fs-xs);color:var(--text-muted)}.scard .r1 .fill{flex:1;min-width:8px}.scard .r2{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--text-strong);line-height:var(--lh-snug);text-wrap:pretty}.scard .r3{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.scard .r3 .teach{font-size:var(--fs-xs);color:var(--text-muted);flex:1;min-width:100px}.scard .r3 .n{font-family:var(--font-mono);font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--text-strong)}.scard.live .r3 .n{color:var(--mint-700)}.scard .r3 .word{font-size:var(--fs-xs);color:var(--text-muted)}.stable-wrap{display:none}.stable .row-head,.stable .row-data{column-gap:var(--space-4);grid-template-columns:200px minmax(0,1.3fr) minmax(0,1fr) 190px 44px;align-items:center;padding:0 20px;display:grid}.stable .row-head{background:var(--surface-sunken);border-bottom:1px solid var(--border-subtle);height:44px;font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-3xs);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-muted)}.stable .row-data{border-bottom:1px solid var(--border-subtle);min-height:56px;color:inherit;cursor:pointer;transition:var(--transition-control);text-decoration:none}.stable .row-data:last-child{border-bottom:none}.stable .row-data:hover{background:var(--surface-sunken)}.stable .row-data.live{background:var(--purple-50)}.stable .row-data .when{flex-direction:column;gap:1px;min-width:0;display:flex}.stable .row-data .when b{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.stable .row-data.live .when b{color:var(--purple-700)}.stable .row-data .when span{color:var(--text-subtle);font-size:12px}.stable .row-data .dir{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.stable .row-data .teach{font-size:var(--fs-sm);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.stable .row-data .chev{color:var(--text-subtle);justify-content:flex-end;display:flex}.stable .empty{grid-column:1/-1}@media (min-width:768px){.slist{display:none}.stable-wrap{display:block}}.rows.marks .row{grid-template-columns:40px 1fr 96px minmax(132px,auto) 44px}.rows.students .row{grid-template-columns:40px 1fr 156px 92px minmax(128px,auto)}.rows.hist .row{padding:0 var(--space-4);grid-template-columns:108px 1fr;min-height:44px}.rows.people .row{grid-template-columns:40px minmax(0,1fr) 168px minmax(148px,auto) minmax(104px,auto)}.when b{font-weight:var(--fw-semibold);color:var(--text-strong);display:block}.when span{font-size:var(--fs-2xs);color:var(--text-subtle)}.filters{gap:var(--space-2);flex-wrap:nowrap;align-items:center;padding:2px 0 4px;display:flex;overflow-x:auto}.filters>*{flex:none}.filters .flabel{font-family:var(--font-display);font-weight:var(--fw-bold);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-subtle);padding-right:var(--space-1);font-size:11px}a.chip{text-decoration:none}a.chip:hover{border-color:var(--border-brand);text-decoration:none}a.chip.on:hover{border-color:var(--brand)}@media (max-width:767px){.filters{padding-right:var(--space-1);-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000 100%);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000 100%)}}@media (min-width:768px){.filters{flex-wrap:wrap;padding:0;overflow-x:visible}}.split{gap:var(--space-4);grid-template-columns:1fr 320px;align-items:start;display:grid}.split.wide{grid-template-columns:1fr 340px}.link{align-items:center;gap:var(--space-2);height:var(--control-md);background:var(--surface-sunken);border-radius:var(--radius-input);font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-body);padding:0 12px;display:flex}.link .grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.meta{gap:var(--space-2) var(--space-3);font-size:var(--fs-xs);grid-template-columns:auto 1fr;display:grid}.meta dt{color:var(--text-subtle)}.meta dd{color:var(--text-body);font-weight:var(--fw-medium);margin:0}.qrwrap{align-items:center;gap:var(--space-3);color:var(--ink-900);flex-direction:column;display:flex}.checkin{min-height:100vh;padding:var(--space-6) var(--layout-gutter-mobile) var(--space-12);justify-content:center;display:flex}.checkin-inner{width:100%;max-width:420px}.checkin .hero{text-align:center;padding:var(--space-8) 0 var(--space-6)}.checkin .hero h1{font-size:var(--fs-3xl);margin:var(--space-2) 0}.checkin .hero .when{font-family:var(--font-mono);color:var(--text-muted);font-size:var(--fs-sm)}.big-ok,.locked{width:96px;height:96px;margin:0 auto var(--space-5);border-radius:var(--radius-pill);justify-content:center;align-items:center;display:flex}.big-ok{background:var(--mint-100);color:var(--mint-700)}.locked{background:var(--amber-100);color:var(--amber-700)}.form{max-width:640px}.pair{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}label.rowline{-webkit-user-select:none;user-select:none}label.rowline input[type=checkbox]{width:18px;height:18px;accent-color:var(--brand);flex:none}.mob{max-width:460px;padding:var(--space-5) var(--layout-gutter-mobile) var(--space-16);margin:0 auto}.mob .h-mob{font-size:var(--fs-2xl);margin:var(--space-4) 0 var(--space-5)}.sess,.visit{align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--surface-card);border-radius:var(--radius-card);box-shadow:var(--shadow-card);margin-bottom:var(--space-3);display:flex}.sess.now{box-shadow:var(--shadow-card), var(--ring-brand)}.sess .when2{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-subtle)}.sess .name{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text-strong)}.visit .d{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-subtle);flex:none;width:62px}.visit .n{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text-strong)}.visit .t{font-size:var(--fs-2xs);color:var(--text-subtle)}.mstat{gap:var(--space-3);margin-bottom:var(--space-5);display:flex}.mstat>div{background:var(--surface-card);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--space-4);flex:1}.mstat .v{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-3xl);font-weight:var(--fw-bold);color:var(--text-strong);line-height:1}.mstat .k{font-size:var(--fs-3xs);color:var(--text-muted);margin-top:4px}.qrbig{aspect-ratio:1;border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-card);color:var(--ink-900);background:#fff;padding:14px}.noticed{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-card);background:var(--surface-sunken);display:flex}.stats{gap:var(--space-4);grid-template-columns:repeat(5,1fr);display:grid}.breakdown{gap:var(--space-4);grid-template-columns:1fr 1fr;align-items:start;display:grid}.brow{gap:var(--space-3);margin-bottom:var(--space-3);grid-template-columns:1fr 56px;align-items:center;display:grid}.brow:last-child{margin-bottom:0}.brow .lbl{font-size:var(--fs-sm)}.brow .num{text-align:right;font-weight:var(--fw-semibold);color:var(--text-strong)}.brow .bar{grid-column:1/-1;margin-top:-2px}@media (max-width:1023px){.split,.split.wide,.breakdown,.pair{grid-template-columns:1fr}}@media (max-width:1100px){.stats{grid-template-columns:repeat(2,1fr)}}@media (max-width:767px){.control,.control.lg{font-size:var(--fs-lg)}}.upd-toast{z-index:60;left:var(--layout-gutter-mobile);right:var(--layout-gutter-mobile);bottom:calc(var(--layout-tabbar) + env(safe-area-inset-bottom,0px) + var(--space-3));align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface-card);color:var(--text-body);border:1px solid var(--border-subtle);border-radius:var(--radius-card);box-shadow:var(--shadow-lg);animation:vs-fade-up var(--dur-slow) var(--ease-out) both;display:flex;position:fixed}.upd-toast-text{min-width:0;font-weight:var(--fw-semibold);color:var(--text-strong);flex:1}.upd-toast-btn{flex:none}@media (min-width:1024px){.upd-toast{left:auto;right:var(--layout-gutter);bottom:var(--layout-gutter);width:min(360px, calc(100vw - var(--layout-gutter) * 2))}}
.authcard{flex-direction:column;gap:18px;width:100%;max-width:440px;padding:24px;display:flex}.authcard .wordmark{margin-bottom:0}@media (min-width:768px){.authcard{gap:20px;padding:32px}}.auth-head{flex-direction:column;gap:6px;display:flex}.auth-head.center{text-align:center;align-items:center;gap:8px}.auth-head h1{font-size:var(--fs-2xl)}@media (min-width:768px){.auth-head h1{font-size:var(--fs-3xl)}}.auth-phone{font-size:var(--fs-xs)}@media (min-width:768px){.auth-phone{font-size:var(--fs-sm)}}.authcard form.stack{gap:18px}@media (min-width:768px){.authcard form.stack{gap:20px}}.auth-tip{background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:var(--radius-md);gap:10px;padding:14px;display:flex}.auth-tip-icon{color:var(--brand);flex:none;display:flex}.auth-tip .hint{font-size:var(--fs-xs);color:var(--text-muted)}@media (min-width:768px){.auth-tip{gap:12px;padding:16px}.auth-tip .hint{font-size:var(--fs-sm)}}.auth-dead{text-align:center;flex-direction:column;align-items:center;gap:16px;display:flex}@media (min-width:768px){.auth-dead{gap:18px}}@media (max-width:767px){.authcard .locked{width:76px;height:76px}.auth-dead .btn{width:100%}}.authcard .locked svg{width:38px;height:38px}@media (min-width:768px){.authcard .locked svg{width:48px;height:48px}}.auth-lock-title{font-size:22px;font-weight:var(--fw-bold);color:var(--text-strong)}@media (min-width:768px){.auth-lock-title{font-size:26px}}.mstat>div:first-child{background:var(--gradient-brand-deep);box-shadow:var(--shadow-brand)}.mstat>div:first-child .v{color:#fff}.mstat>div:first-child .k{color:#fff;opacity:.82}.visit .daycol{flex-direction:column;flex:none;align-items:flex-start;display:flex}.visit .daycol .day{font-family:var(--font-mono);font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--text-strong);line-height:1.1}.visit .daycol .mon{font-family:var(--font-display);font-weight:var(--fw-bold);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-subtle);font-size:9px}.visit .ok{color:var(--mint-500);flex:none;display:flex}.mv-table-wrap{display:none}@media (min-width:768px){.mob:has(>.h-mob){max-width:640px}.mv-list{display:none}.mv-table-wrap{display:block}}.mv-table .row-head,.mv-table .row-data{column-gap:var(--space-4);grid-template-columns:90px minmax(0,1.4fr) minmax(0,1fr) 44px;align-items:center;padding:0 20px;display:grid}.mv-table .row-head{background:var(--surface-sunken);border-bottom:1px solid var(--border-subtle);height:44px;font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-3xs);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-muted)}.mv-table .row-data{border-bottom:1px solid var(--border-subtle);min-height:56px}.mv-table .row-data:last-child{border-bottom:none}.mv-table .row-data .when{flex-direction:column;gap:1px;min-width:0;display:flex}.mv-table .row-data .when b{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong)}.mv-table .row-data .when span{color:var(--text-subtle);text-transform:uppercase;font-size:12px}.mv-table .row-data .when span.time{font-family:var(--font-mono);color:var(--text-muted);text-transform:none}.mv-table .row-data .dir{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.mv-table .row-data .teach{font-size:var(--fs-sm);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.mv-table .row-data .ok{color:var(--mint-500);flex:none;justify-content:flex-end;display:flex}.mv-table .empty{grid-column:1/-1}
