: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{grid-template-columns:var(--layout-sidebar) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--surface-card);border-right:1px solid var(--border-subtle);padding:var(--space-6) var(--space-4);gap:var(--space-8);flex-direction:column;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}.nav{gap:var(--space-1);flex-direction:column;display:flex}.nav a{align-items:center;gap:var(--space-3);height:var(--control-lg);padding:0 var(--space-3);border-radius:var(--radius-button);color:var(--text-muted);font-size:var(--fs-sm);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:var(--space-3) var(--space-3)}.whoami{align-items:center;gap:var(--space-3);padding:var(--space-3);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)}.topbar{z-index:20;height:var(--layout-topbar);align-items:center;gap:var(--space-4);padding:0 var(--layout-gutter);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border-subtle);background:#ffffffb8;display:flex;position:sticky;top:0}.topbar h1{font-size:var(--fs-xl);flex:1}.content{padding:var(--space-6) var(--layout-gutter) var(--space-16);max-width:var(--layout-content-max)}.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)}.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}.rows.sessions .row{grid-template-columns:148px 1fr 168px 128px 44px}.rows.marks .row{grid-template-columns:40px 1fr 96px 132px 44px}.rows.students .row{grid-template-columns:40px 1fr 156px 92px 128px}.rows.hist .row{padding:0 var(--space-4);grid-template-columns:108px 1fr;min-height:44px}.rows.people .row{grid-template-columns:40px 1fr 168px 120px 44px}.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:wrap;display:flex}a.chip{text-decoration:none}a.chip:hover{border-color:var(--border-brand);text-decoration:none}a.chip.on:hover{border-color:var(--brand)}.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)}.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:1100px){.app{grid-template-columns:1fr}.sidebar{display:none}.split,.split.wide,.breakdown,.pair{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}}
