@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Bricolage+Grotesque:opsz,wght@12..96,500..800&display=swap";:root{--paper:#f6f5f1;--surface:#fff;--surface-2:#efede7;--surface-3:#e7e4dc;--line:#e2dfd6;--line-strong:#cbc6b9;--ink:#1b1a17;--ink-2:#4b4943;--ink-3:#87847b;--ink-inverse:#faf9f6;--accent:#556900;--accent-hover:#455500;--accent-soft:#eef7c6;--present:#2e7a4d;--present-soft:#e3f0e7;--absent:#b0412d;--absent-soft:#f6e4df;--flagged:#9c6410;--flagged-soft:#f6ecd9;--focus:0 0 0 3px #84a0004d;--shadow-1:0 1px 2px #1b1a170d;--shadow-2:0 10px 30px -12px #1b1a1740;--r-sm:5px;--r-md:8px;--r-lg:12px;--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--font-display:"Bricolage Grotesque", "IBM Plex Sans", system-ui, sans-serif;--sidebar-w:236px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--paper:#131311;--surface:#1a1a17;--surface-2:#21211d;--surface-3:#2a2a25;--line:#2d2c28;--line-strong:#3f3e38;--ink:#ecebe5;--ink-2:#b3b1a8;--ink-3:#7d7b72;--ink-inverse:#151513;--accent:#d6f53b;--accent-hover:#e4ff6a;--accent-soft:#283012;--present:#67c08b;--present-soft:#1c2e23;--absent:#ec8068;--absent-soft:#36201b;--flagged:#e2ab52;--flagged-soft:#33281a;--focus:0 0 0 3px #d6f53b4d;--shadow-1:0 1px 2px #0006;--shadow-2:0 14px 34px -14px #000000b3;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;font-size:15px;line-height:1.5;overflow-x:hidden}h1,h2,h3,h4{letter-spacing:-.012em;color:var(--ink);font-weight:600;line-height:1.2}a{color:inherit}button{font:inherit;color:inherit}img,svg{display:block}::selection{background:var(--accent-soft)}.mono{font-family:var(--font-mono);font-feature-settings:"zero" 0}.num{font-variant-numeric:tabular-nums}.serif{font-family:var(--font-display);letter-spacing:-.035em;font-weight:700}.muted{color:var(--ink-3)}.soft{color:var(--ink-2)}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:.72rem;font-weight:600}.link{color:var(--accent);font-weight:500;text-decoration:none}.link:hover{text-underline-offset:3px;text-decoration:underline}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-strong);background-clip:content-box;border:3px solid #0000;border-radius:10px}::-webkit-scrollbar-track{background:0 0}.brand{color:var(--ink);letter-spacing:-.015em;align-items:center;gap:.55rem;font-size:1.02rem;font-weight:600;text-decoration:none;display:inline-flex}.brand-mark{flex-shrink:0}.brand-mark rect{stroke:currentColor}.brand-mark path{stroke:var(--accent)}.shell{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:var(--paper);flex-direction:column;gap:1.5rem;height:100vh;padding:1.25rem .85rem 1rem;display:flex;position:sticky;top:0}.sidebar-brand{padding:.25rem .55rem}.side-nav{flex-direction:column;gap:2px;display:flex}.side-nav-label{margin-top:.75rem;padding:0 .6rem .35rem}.side-link{border-radius:var(--r-md);color:var(--ink-2);align-items:center;gap:.65rem;padding:.5rem .6rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .12s,color .12s;display:flex}.side-link svg{color:var(--ink-3);transition:color .12s}.side-link:hover{background:var(--surface-2);color:var(--ink)}.side-link.active{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line), var(--shadow-1)}.side-link.active svg{color:var(--accent)}.sidebar-foot{border-top:1px solid var(--line);flex-direction:column;gap:.6rem;margin-top:auto;padding-top:1rem;display:flex}.user-chip{align-items:center;gap:.6rem;min-width:0;padding:.35rem .5rem;display:flex}.avatar{background:var(--surface-3);width:32px;height:32px;color:var(--ink);letter-spacing:.02em;border-radius:50%;flex-shrink:0;place-items:center;font-size:.75rem;font-weight:600;display:grid}.user-chip-text{min-width:0}.user-chip-name{white-space:nowrap;text-overflow:ellipsis;font-size:.86rem;font-weight:600;overflow:hidden}.user-chip-meta{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-size:.76rem;overflow:hidden}.sidebar-actions{gap:.4rem;display:flex}.sidebar-actions .btn:first-child{flex:1}.topbar{display:none}.content{min-width:0;padding:2.25rem clamp(1rem,3.2vw,3rem) 4rem}.content-inner{max-width:1120px;margin:0 auto}@media (width<=900px){.shell{display:block}.sidebar{display:none}.topbar{z-index:50;background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:.7rem 1rem;display:flex;position:sticky;top:0}.content{padding:1.25rem 1rem 3rem}}.drawer-backdrop{z-index:80;background:#14131066;animation:.15s ease-out fade;position:fixed;inset:0}.drawer{z-index:90;background:var(--paper);border-right:1px solid var(--line);width:min(300px,86vw);box-shadow:var(--shadow-2);flex-direction:column;gap:1.25rem;padding:1rem .85rem;animation:.18s ease-out slide-in;display:flex;position:fixed;top:0;bottom:0;left:0}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:none}}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 1.5rem;margin-bottom:1.75rem;display:flex}.page-head h1{margin-top:.3rem;font-size:clamp(1.45rem,2.4vw,1.8rem)}.page-head p{color:var(--ink-2);max-width:62ch;margin-top:.35rem;font-size:.93rem}.page-head-actions{flex-wrap:wrap;gap:.5rem;display:flex}@media (width<=640px){.page-head{align-items:stretch}.page-head-actions{width:100%}.page-head-actions .btn{flex:1}}.btn{--btn-h:38px;height:var(--btn-h);border-radius:var(--r-md);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;justify-content:center;align-items:center;gap:.45rem;padding:0 .95rem;font-size:.875rem;font-weight:500;line-height:1;text-decoration:none;transition:background .12s,border-color .12s,color .12s,box-shadow .12s;display:inline-flex}.btn:focus-visible{box-shadow:var(--focus);outline:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{flex-shrink:0}.btn-primary{background:var(--ink);color:var(--ink-inverse)}.btn-primary:hover:not(:disabled){background:color-mix(in srgb, var(--ink) 86%, var(--paper))}.btn-accent{background:var(--accent);color:#fff}.btn-accent:hover:not(:disabled){background:var(--accent-hover)}[data-theme=dark] .btn-accent{color:#10142a}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong);box-shadow:var(--shadow-1)}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-ghost{color:var(--ink-2);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--ink)}.btn-danger{background:var(--surface);color:var(--absent);border-color:color-mix(in srgb, var(--absent) 35%, var(--line))}.btn-danger:hover:not(:disabled){background:var(--absent-soft)}.btn-sm{--btn-h:30px;border-radius:var(--r-sm);padding:0 .65rem;font-size:.8rem}.btn-lg{--btn-h:46px;padding:0 1.3rem;font-size:.95rem}.btn-icon{width:var(--btn-h);padding:0}.btn-block{width:100%}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.panel-pad{padding:1.25rem}.panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:.75rem;padding:.95rem 1.25rem;display:flex}.panel-head h2{font-size:.98rem}.panel-head .muted{font-size:.8rem}.stat-strip{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:1.5rem;display:grid}.stat{border-left:1px solid var(--line);min-width:0;padding:1rem 1.25rem 1.1rem}.stat:first-child{border-left:none}.stat-label{color:var(--ink-3);font-size:.78rem;font-weight:500}.stat-value{font-family:var(--font-mono);letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:.3rem;font-size:1.6rem;font-weight:500;line-height:1.1}.stat-value small{color:var(--ink-3);letter-spacing:0;margin-left:.15rem;font-size:.85rem}.stat-note{color:var(--ink-3);margin-top:.25rem;font-size:.76rem}@media (width<=760px){.stat-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.stat:nth-child(3){border-left:none}.stat:nth-child(n+3){border-top:1px solid var(--line)}}.field{flex-direction:column;gap:.35rem;margin-bottom:1rem;display:flex}.field-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.label{color:var(--ink-2);font-size:.82rem;font-weight:500}.label-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.hint{color:var(--ink-3);font-size:.78rem}.input,.select,.textarea{border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);width:100%;height:40px;color:var(--ink);font:inherit;padding:0 .75rem;font-size:.92rem;transition:border-color .12s,box-shadow .12s}.textarea{resize:vertical;height:auto;min-height:140px;padding:.6rem .75rem;line-height:1.55}.input::placeholder,.textarea::placeholder{color:var(--ink-3)}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:var(--focus);outline:none}.input.mono,.textarea.mono{font-family:var(--font-mono);font-size:.88rem}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2387847b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right .7rem center;background-repeat:no-repeat;padding-right:2rem}.input-wrap{position:relative}.input-wrap>svg{color:var(--ink-3);pointer-events:none;position:absolute;top:50%;left:.75rem;transform:translateY(-50%)}.input-wrap .input{padding-left:2.2rem}input[type=range]{width:100%;accent-color:var(--accent)}@media (width<=640px){.input,.select,.textarea{font-size:16px}}.choice-group{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.choice{text-align:left;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);cursor:pointer;padding:.75rem .85rem;transition:border-color .12s,background .12s}.choice:hover{background:var(--surface-2)}.choice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.choice-title{align-items:center;gap:.4rem;font-size:.88rem;font-weight:600;display:flex}.choice-desc{color:var(--ink-2);margin-top:.2rem;font-size:.78rem;line-height:1.4}@media (width<=480px){.choice-group,.field-row{grid-template-columns:1fr}}.tabs{border-bottom:1px solid var(--line);gap:1.25rem;margin-bottom:1rem;display:flex}.tab{color:var(--ink-3);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.55rem 0;font-size:.86rem;font-weight:500}.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--ink)}.tag{letter-spacing:.01em;white-space:nowrap;background:var(--surface-2);height:22px;color:var(--ink-2);border-radius:4px;align-items:center;gap:.35rem;padding:0 .5rem;font-size:.74rem;font-weight:600;display:inline-flex}.tag-dot:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.tag-present{background:var(--present-soft);color:var(--present)}.tag-absent{background:var(--absent-soft);color:var(--absent)}.tag-flagged{background:var(--flagged-soft);color:var(--flagged)}.tag-accent{background:var(--accent-soft);color:var(--accent)}.tag-outline{box-shadow:inset 0 0 0 1px var(--line-strong);background:0 0}.live-dot{background:#e5484d;border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:1.8s infinite pulse;box-shadow:0 0 #e5484d80}@keyframes pulse{0%{box-shadow:0 0 #e5484d73}70%{box-shadow:0 0 0 7px #e5484d00}to{box-shadow:0 0 #e5484d00}}.table-scroll{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:.875rem}.table th{text-align:left;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface);padding:.65rem 1.25rem;font-size:.74rem;font-weight:600}.table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:.8rem 1.25rem}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:color-mix(in srgb, var(--surface-2) 55%, transparent)}.table .right{text-align:right}.table .nowrap{white-space:nowrap}.table-min{min-width:680px}.cell-title{color:var(--ink);font-weight:500}.cell-sub{color:var(--ink-3);margin-top:1px;font-size:.78rem}.row-actions{justify-content:flex-end;gap:.35rem;display:flex}.row-link{cursor:pointer}.empty{text-align:center;color:var(--ink-3);padding:3rem 1.5rem}.empty svg{color:var(--line-strong);margin:0 auto .75rem}.empty h3{color:var(--ink);margin-bottom:.3rem;font-size:.98rem}.empty p{max-width:42ch;margin:0 auto;font-size:.86rem}.empty .btn{margin-top:1rem}.loading-line{text-align:center;color:var(--ink-3);padding:2.5rem 1.5rem;font-size:.88rem}.alert{border-radius:var(--r-md);border:1px solid #0000;align-items:flex-start;gap:.6rem;padding:.7rem .85rem;font-size:.86rem;line-height:1.45;display:flex}.alert svg{flex-shrink:0;margin-top:2px}.alert-error{background:var(--absent-soft);color:var(--absent);border-color:color-mix(in srgb, var(--absent) 25%, transparent)}.alert-warn{background:var(--flagged-soft);color:var(--flagged);border-color:color-mix(in srgb, var(--flagged) 25%, transparent)}.alert-ok{background:var(--present-soft);color:var(--present);border-color:color-mix(in srgb, var(--present) 25%, transparent)}.alert-info{background:var(--surface-2);color:var(--ink-2);border-color:var(--line)}.callout{border-radius:var(--r-lg);border:1px solid var(--line);background:var(--surface);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:1rem 1.25rem;display:flex}.secret{border-radius:var(--r-sm);background:var(--surface-2);border:1px dashed var(--line-strong);font-family:var(--font-mono);letter-spacing:.02em;align-items:center;gap:.5rem;padding:.3rem .55rem;font-size:.95rem;font-weight:500;display:inline-flex}.modal-backdrop{z-index:200;background:#14131073;justify-content:center;align-items:flex-start;padding:8vh 1rem 1rem;animation:.12s ease-out fade;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);width:100%;max-width:480px;box-shadow:var(--shadow-2);animation:.16s ease-out rise}.modal-wide{max-width:560px}.modal-head{justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.15rem 1.25rem 0;display:flex}.modal-head h2{font-size:1.08rem}.modal-head p{color:var(--ink-2);margin-top:.25rem;font-size:.85rem}.modal-body{padding:1.15rem 1.25rem}.modal-foot{border-top:1px solid var(--line);background:color-mix(in srgb, var(--surface-2) 45%, var(--surface));border-radius:0 0 var(--r-lg) var(--r-lg);justify-content:flex-end;gap:.5rem;padding:.85rem 1.25rem;display:flex}@media (width<=480px){.modal-backdrop{padding-top:1rem}.modal-foot .btn{flex:1}}.meter{background:var(--surface-3);border-radius:6px;height:6px;position:relative;overflow:visible}.meter-fill{background:var(--present);border-radius:6px;height:100%;transition:width .4s}.meter-fill.warn{background:var(--flagged)}.meter-fill.low{background:var(--absent)}.meter-mark{background:var(--ink);opacity:.55;border-radius:2px;width:2px;position:absolute;top:-4px;bottom:-4px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;display:grid}.split{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:1.25rem;display:grid}.split-wide{grid-template-columns:340px minmax(0,1fr)}@media (width<=960px){.split,.grid-2{grid-template-columns:1fr}}.toolbar{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.75rem;padding:.75rem 1.25rem;display:flex}.toolbar .input-wrap{flex:1;min-width:200px;max-width:360px}.list{flex-direction:column;display:flex}.list-item{text-align:left;border:none;border-bottom:1px solid var(--line);cursor:pointer;background:0 0;width:100%;padding:.8rem 1.1rem;transition:background .1s;display:block}.list-item:last-child{border-bottom:none}.list-item:hover{background:var(--surface-2)}.list-item[aria-current=true]{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.kv{grid-template-columns:auto 1fr;gap:.4rem 1rem;font-size:.86rem;display:grid}.kv dt{color:var(--ink-3)}.kv dd{color:var(--ink);font-weight:500}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.divider{background:var(--line);height:1px;margin:1rem 0}.room-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:1rem;display:grid}.room{flex-direction:column;padding:1.1rem 1.15rem .95rem;display:flex}.room-top{justify-content:space-between;gap:.75rem;display:flex}.room-where{color:var(--ink-2);margin-top:.1rem;font-size:.84rem}.room-fence{align-items:center;gap:.9rem;margin:1rem 0 .9rem;display:flex}.room-fence-text{color:var(--ink-2);font-size:.82rem;line-height:1.5}.room-foot{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:.5rem;margin-top:auto;padding-top:.75rem;display:flex}.auth{grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:100vh;display:grid}.auth-main{flex-direction:column;padding:1.5rem clamp(1.25rem,5vw,4rem);display:flex}.auth-top{justify-content:space-between;align-items:center;display:flex}.auth-form{width:100%;max-width:380px;margin:auto;padding:2.5rem 0}.auth-form h1{font-size:1.6rem}.auth-form>p{color:var(--ink-2);margin:.4rem 0 1.75rem;font-size:.93rem}.auth-foot{color:var(--ink-3);flex-wrap:wrap;gap:1rem;font-size:.8rem;display:flex}.auth-aside{background:var(--ink);color:var(--ink-inverse);flex-direction:column;justify-content:flex-end;padding:clamp(2rem,5vw,4rem);display:flex;position:relative;overflow:hidden}[data-theme=dark] .auth-aside{color:#ecebe5;border-left:1px solid var(--line);background:#0c0c0b}.auth-aside blockquote{font-family:var(--font-display);letter-spacing:-.03em;max-width:18ch;font-size:clamp(1.6rem,2.6vw,2.3rem);font-weight:700;line-height:1.1;position:relative}.auth-aside figcaption{opacity:.6;margin-top:1rem;font-size:.85rem;position:relative}@media (width<=860px){.auth{grid-template-columns:1fr}.auth-aside{display:none}}.ledger{opacity:.9;width:min(360px,70%);position:absolute;inset:2.5rem 2.5rem auto auto}.ledger-row{height:34px;font-family:var(--font-mono);color:#ffffff8c;border-bottom:1px solid #ffffff17;grid-template-columns:6.5rem 1fr;align-items:center;font-size:.74rem;display:grid}.ledger-ticks{gap:.55rem;display:flex}.ledger-ticks span{text-align:center;color:#ffffffd9;width:14px}.ledger-ticks span.a{color:#ffffff40}.projector{--p-bg:#0e0e0d;--p-panel:#171715;--p-line:#2a2926;--p-ink:#f3f2ed;--p-ink-2:#a9a79f;--p-ink-3:#6f6d66;background:var(--p-bg);min-height:100vh;color:var(--p-ink);flex-direction:column;padding:1.1rem clamp(1rem,2.5vw,2rem) 1.5rem;display:flex}.projector h1,.projector h2{color:var(--p-ink)}.projector .btn-secondary{color:var(--p-ink);border-color:var(--p-line);box-shadow:none;background:0 0}.projector .btn-secondary:hover:not(:disabled){background:#22211e}.projector .btn-danger{color:#f08a75;background:0 0;border-color:#4a2a23}.projector .btn-danger:hover:not(:disabled){background:#2a1814}.proj-head{border-bottom:1px solid var(--p-line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-bottom:1rem;display:flex}.proj-title{align-items:center;gap:1rem;min-width:0;display:flex}.proj-course{font-family:var(--font-mono);color:var(--p-ink-2);font-size:.85rem}.proj-name{white-space:nowrap;text-overflow:ellipsis;font-size:1.15rem;font-weight:600;overflow:hidden}.proj-meta{color:var(--p-ink-3);flex-wrap:wrap;gap:.9rem;margin-top:.15rem;font-size:.8rem;display:flex}.proj-meta strong{color:var(--p-ink-2);font-weight:500}.proj-actions{flex-wrap:wrap;gap:.45rem;display:flex}.proj-body{flex:1;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:1.25rem;padding-top:1.25rem;display:grid}.proj-stage{background:var(--p-panel);border:1px solid var(--p-line);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:1.25rem;padding:1.5rem;display:flex}.proj-instructions{text-align:center;color:var(--p-ink-2);max-width:46ch;font-size:.98rem}.proj-instructions strong{color:var(--p-ink);font-weight:600}.proj-qr-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:clamp(1.5rem,4vw,3.5rem);display:flex}.proj-qr{aspect-ratio:1;background:#fff;border-radius:14px;place-items:center;width:min(52vh,420px);padding:14px;display:grid}.proj-qr img{object-fit:contain;width:100%;height:100%;image-rendering:pixelated}.proj-qr-wait{color:#555;font-size:.9rem}.proj-timer{width:min(52vh,420px)}.proj-timer-bar{background:var(--p-line);border-radius:4px;height:4px;overflow:hidden}.proj-timer-fill{background:var(--p-ink);height:100%;transition:width 50ms linear}.proj-timer-text{color:var(--p-ink-3);font-size:.78rem;font-family:var(--font-mono);justify-content:space-between;margin-top:.45rem;display:flex}.proj-pin{text-align:center}.proj-pin-label{letter-spacing:.12em;text-transform:uppercase;color:var(--p-ink-3);font-size:.78rem}.proj-pin-digit{font-family:var(--font-mono);letter-spacing:-.04em;margin-top:.25rem;font-size:clamp(6rem,16vh,10rem);font-weight:500;line-height:1}.proj-pin-note{color:var(--p-ink-3);max-width:18ch;margin-top:.5rem;font-size:.8rem}.proj-chips{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.proj-chip{border:1px solid var(--p-line);color:var(--p-ink-2);border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .6rem;font-size:.74rem;display:inline-flex}.proj-roster{background:var(--p-panel);border:1px solid var(--p-line);border-radius:16px;flex-direction:column;min-height:0;display:flex;overflow:hidden}.proj-count{border-bottom:1px solid var(--p-line);padding:1.25rem 1.35rem 1rem}.proj-count-num{font-family:var(--font-mono);letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:clamp(2.6rem,6vh,3.6rem);font-weight:500;line-height:1}.proj-count-num span{color:var(--p-ink-3);letter-spacing:0;margin-left:.35rem;font-size:1.1rem}.proj-count-bar{background:var(--p-line);border-radius:4px;height:4px;margin-top:.9rem;overflow:hidden}.proj-count-bar div{background:#67c08b;height:100%;transition:width .4s}.proj-list{flex:1;min-height:260px;max-height:62vh;overflow-y:auto}.proj-row{border-bottom:1px solid #201f1c;grid-template-columns:1fr auto;align-items:center;gap:.75rem;padding:.65rem 1.35rem;animation:.25s ease-out rise;display:grid}.proj-roll{font-family:var(--font-mono);font-size:.9rem}.proj-sname{color:var(--p-ink-3);font-size:.78rem}.proj-time{font-family:var(--font-mono);color:var(--p-ink-3);text-align:right;font-size:.74rem}.proj-empty{text-align:center;color:var(--p-ink-3);padding:3rem 1.5rem;font-size:.9rem}.proj-tabs{display:none}@media (width<=900px){.proj-body{grid-template-columns:1fr}.proj-tabs{background:var(--p-panel);border:1px solid var(--p-line);border-radius:10px;grid-template-columns:1fr 1fr;gap:.35rem;margin-top:1rem;padding:.3rem;display:grid}.proj-tabs button{height:36px;color:var(--p-ink-2);cursor:pointer;background:0 0;border:none;border-radius:7px;font-size:.86rem;font-weight:500}.proj-tabs button[aria-selected=true]{color:var(--p-ink);background:#2a2926}.proj-hide-mobile{display:none!important}.proj-qr,.proj-timer{width:min(78vw,360px)}.proj-list{max-height:none}}.scan{flex-direction:column;max-width:460px;min-height:100vh;margin:0 auto;padding:.9rem 1rem 2rem;display:flex}.scan-top{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.steps{align-items:center;gap:.4rem;margin-bottom:1.1rem;display:flex}.step-pill{color:var(--ink-3);white-space:nowrap;align-items:center;gap:.4rem;font-size:.76rem;font-weight:500;display:flex}.step-pill i{width:20px;height:20px;font-size:.7rem;font-style:normal;font-family:var(--font-mono);border:1px solid var(--line-strong);background:var(--surface);border-radius:50%;place-items:center;display:grid}.step-pill.on{color:var(--ink)}.step-pill.on i{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}.step-pill.done{color:var(--present)}.step-pill.done i{background:var(--present-soft);color:var(--present);border-color:#0000}.steps-line{background:var(--line-strong);flex:1;min-width:8px;height:1px}.scan-card{padding:1.35rem 1.25rem}.scan-card h2{font-size:1.2rem}.scan-card>p{color:var(--ink-2);margin-top:.3rem;font-size:.88rem}.gps-line{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);color:var(--ink-2);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.55rem .75rem;font-size:.8rem;display:flex}.gps-line>span{align-items:center;gap:.45rem;display:flex}.qr-frame{border-radius:var(--r-lg);background:#000;min-height:260px;margin-top:1rem;position:relative;overflow:hidden}.qr-frame #qr-reader{border:none!important}.qr-frame #qr-reader video{border-radius:0}.keypad{grid-template-columns:repeat(3,1fr);gap:.6rem;max-width:300px;margin:1.25rem auto;display:grid}.key{border-radius:var(--r-lg);border:1px solid var(--line-strong);background:var(--surface);height:64px;font-family:var(--font-mono);cursor:pointer;box-shadow:0 1px 0 var(--line-strong);font-size:1.6rem;font-weight:500;transition:transform 60ms,background .1s}.key:active:not(:disabled){box-shadow:none;transform:translateY(1px)}.key:disabled{opacity:.45;cursor:not-allowed}.key[aria-pressed=true]{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink);opacity:1}.face-ring{aspect-ratio:1;background:var(--surface-3);width:min(270px,72vw);box-shadow:0 0 0 4px var(--surface), 0 0 0 5px var(--line-strong);border-radius:50%;margin:1.25rem auto 0;transition:box-shadow .2s;position:relative;overflow:hidden}.face-ring.capturing{box-shadow:0 0 0 4px var(--surface), 0 0 0 7px var(--accent)}.face-ring video{object-fit:cover;width:100%;height:100%;transform:scaleX(-1)}.face-overlay{text-align:center;color:#fff;background:#0a0a096b;place-content:center;font-size:1.05rem;font-weight:600;display:grid;position:absolute;inset:0}.face-overlay small{opacity:.8;margin-top:.2rem;font-size:.78rem;font-weight:400;display:block}.result-icon{border-radius:50%;place-items:center;width:56px;height:56px;margin:0 auto 1rem;display:grid}.result-icon.ok{background:var(--present-soft);color:var(--present)}.result-icon.bad{background:var(--absent-soft);color:var(--absent)}.result-icon.wait{background:var(--accent-soft);color:var(--accent)}.receipt{border-radius:var(--r-md);background:var(--surface-2);margin-top:1.25rem;padding:.9rem 1rem;font-size:.86rem}.receipt div{justify-content:space-between;gap:1rem;padding:.25rem 0;display:flex}.receipt dt{color:var(--ink-3)}.receipt dd{text-align:right;font-weight:500}.portal{max-width:860px;margin:0 auto;padding:1rem 1rem 4rem}.portal-top{justify-content:space-between;align-items:center;padding:.4rem 0 1.5rem;display:flex}.portal-hero{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:1.5rem;margin-bottom:1.5rem;padding-bottom:1.5rem;display:grid}.portal-hero h1{font-family:var(--font-display);letter-spacing:-.035em;font-size:clamp(2rem,5vw,2.8rem);font-weight:700;line-height:1.05}.portal-overall{text-align:right}.portal-overall-num{font-family:var(--font-mono);letter-spacing:-.04em;font-size:2.4rem;line-height:1}@media (width<=560px){.portal-hero{grid-template-columns:1fr}.portal-overall{text-align:left}}.course-row{cursor:pointer;padding:1.1rem 1.25rem}.course-row-head{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.course-row-pct{font-family:var(--font-mono);letter-spacing:-.03em;text-align:right;font-size:1.35rem;line-height:1.1}.course-row .meter{margin:.85rem 0 .55rem}.course-row-foot{color:var(--ink-3);flex-wrap:wrap;justify-content:space-between;gap:1rem;font-size:.8rem;display:flex}.course-detail{border-top:1px solid var(--line);background:color-mix(in srgb, var(--surface-2) 40%, var(--surface))}.page-head h1,.auth-form h1,.scan-card h2{font-family:var(--font-display);letter-spacing:-.03em;font-weight:700}.lp{--lp-ink:#0d0d0c;--lp-ink-2:#161614;--lp-ink-3:#1f1f1c;--lp-line:#2b2a26;--lp-text:#f4f3ee;--lp-text-2:#b7b5ac;--lp-text-3:#7b7970;--lp-lime:#d6f53b;--lp-lime-ink:#1a1f00;background:var(--paper);overflow-x:hidden}.lp .wrap{max-width:1200px;margin:0 auto;padding:0 clamp(1rem,4vw,2rem)}.lp-display{font-family:var(--font-display);letter-spacing:-.035em;font-weight:800;line-height:.95}.lp-kicker{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:.5rem;font-size:.74rem;display:inline-flex}.lp-kicker:before{content:"";background:currentColor;width:18px;height:2px}.lp-dark .lp-kicker{color:var(--lp-lime)}.lp-btn-lime{background:var(--lp-lime);color:var(--lp-lime-ink);font-weight:600}.lp-btn-lime:hover:not(:disabled){background:#e4ff6a}.lp-btn-ghost{color:var(--lp-text);background:0 0;border-color:#3a3934}.lp-btn-ghost:hover:not(:disabled){background:#1d1d1a}.lp-btn-ink{background:var(--lp-ink);color:var(--lp-text)}.lp-btn-ink:hover:not(:disabled){background:#232320}.lp-dark{background:var(--lp-ink);color:var(--lp-text)}.lp-dark h2,.lp-dark h3{color:var(--lp-text)}.lp-nav{z-index:50;-webkit-backdrop-filter:saturate(1.3)blur(12px);background:#0d0d0c;border-bottom:1px solid #0000;transition:border-color .2s,background .2s;position:sticky;top:0}.lp-nav.scrolled{border-bottom-color:var(--lp-line);background:#0d0d0ceb}.lp-nav .wrap{justify-content:space-between;align-items:center;gap:1rem;height:64px;display:flex}.lp-nav .brand,.lp-foot .brand{color:var(--lp-text)}.lp-nav .brand-mark path,.lp-foot .brand-mark path{stroke:var(--lp-lime)}.lp-links{gap:1.75rem;font-size:.88rem;display:flex}.lp-links a{color:var(--lp-text-2);text-decoration:none;transition:color .12s}.lp-links a:hover{color:var(--lp-text)}.lp-nav-actions{align-items:center;gap:.5rem;display:flex}.lp-nav-actions .btn-ghost{color:var(--lp-text-2)}.lp-nav-actions .btn-ghost:hover{color:var(--lp-text);background:#1d1d1a}@media (width<=880px){.lp-links{display:none}}@media (width<=440px){.lp-nav-actions .hide-xs{display:none}}.lp-hero{background:var(--lp-ink);color:var(--lp-text);isolation:isolate;position:relative}.lp-hero:before{content:"";z-index:-1;background-image:linear-gradient(#ffffff0b 1px,#0000 1px),linear-gradient(90deg,#ffffff0b 1px,#0000 1px);background-size:56px 56px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0%,#0009 55%,#0000 100%);mask-image:linear-gradient(#000 0%,#0009 55%,#0000 100%)}.lp-hero-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center;gap:clamp(2rem,5vw,4rem);padding-top:clamp(4rem,9vw,7rem);padding-bottom:clamp(3rem,6vw,5rem);display:grid}.lp-live-pill{border:1px solid var(--lp-line);background:var(--lp-ink-2);color:var(--lp-text-2);border-radius:999px;align-items:center;gap:.55rem;padding:.35rem .75rem .35rem .55rem;font-size:.8rem;display:inline-flex}.lp-live-pill b{color:var(--lp-text);font-variant-numeric:tabular-nums;font-weight:600}.lp-hero h1{color:var(--lp-text);margin-top:1.4rem;font-size:clamp(3rem,6.4vw,6.2rem)}.lp-mark{background:var(--lp-lime);color:var(--lp-lime-ink);border-radius:.12em;margin-top:.06em;padding:0 .14em .05em;display:inline-block;transform:rotate(-1.6deg)}.lp-hero-lede{max-width:47ch;color:var(--lp-text-2);margin-top:1.6rem;font-size:1.1rem;line-height:1.6}.lp-hero-lede strong{color:var(--lp-text);font-weight:500}.lp-cta{flex-wrap:wrap;gap:.65rem;margin-top:2.1rem;display:flex}.lp-proof{color:var(--lp-text-3);flex-wrap:wrap;gap:.5rem 1.25rem;margin-top:1.6rem;font-size:.83rem;display:flex}.lp-proof span{align-items:center;gap:.4rem;display:inline-flex}.lp-proof svg{color:var(--lp-lime)}@media (width<=960px){.lp-hero-grid{grid-template-columns:1fr}}.lp-stage{perspective:1600px;padding:1.5rem 0 3rem;position:relative}.lp-screen{border:1px solid var(--lp-line);transform-origin:0;background:linear-gradient(#181816,#121211);border-radius:18px;padding:1rem;position:relative;transform:rotateY(-7deg)rotateX(3deg);box-shadow:0 40px 80px -30px #000000e6,inset 0 0 0 1px #ffffff05}.lp-screen-bar{font-family:var(--font-mono);color:var(--lp-text-3);white-space:nowrap;justify-content:space-between;align-items:center;gap:.5rem;padding:0 .2rem .85rem;font-size:.72rem;display:flex;overflow:hidden}.lp-screen-bar b{color:var(--lp-text);font-weight:500}.lp-screen-bar .live{color:var(--lp-text-2);align-items:center;gap:.4rem;display:inline-flex}.lp-screen-body{grid-template-columns:1.1fr .9fr;gap:.75rem;display:grid}.lp-qr-panel{background:var(--lp-ink-3);border:1px solid var(--lp-line);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:1.1rem;display:flex}.lp-qr-ring{aspect-ratio:1;width:100%;max-width:230px;position:relative}.lp-qr-ring svg.ring{width:100%;height:100%;position:absolute;inset:0;transform:rotate(-90deg)}.lp-qr-ring svg.ring circle{fill:none;stroke-width:2.5px}.lp-qr-img{background:#fff;border-radius:10px;padding:7px;position:absolute;inset:12%}.lp-qr-img img{width:100%;height:100%;image-rendering:pixelated;animation:.35s ease-out qr-swap}@keyframes qr-swap{0%{opacity:.25;transform:scale(.97)}to{opacity:1;transform:none}}.lp-qr-caption{font-family:var(--font-mono);color:var(--lp-text-3);text-align:center;margin-top:.7rem;font-size:.68rem}.lp-qr-caption b{color:var(--lp-lime);font-weight:500}.lp-roster{background:var(--lp-ink-3);border:1px solid var(--lp-line);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.lp-roster-head{border-bottom:1px solid var(--lp-line);padding:.8rem .9rem .7rem}.lp-roster-head small{color:var(--lp-text-3);text-transform:uppercase;letter-spacing:.08em;font-size:.66rem;display:block}.lp-count{font-family:var(--font-display);letter-spacing:-.05em;font-variant-numeric:tabular-nums;margin-top:.25rem;font-size:2.6rem;font-weight:800;line-height:1}.lp-count span{font-family:var(--font-mono);letter-spacing:0;color:var(--lp-text-3);margin-left:.3rem;font-size:.72rem;font-weight:400}.lp-count-bar{background:var(--lp-line);border-radius:3px;height:3px;margin-top:.6rem;overflow:hidden}.lp-count-bar div{background:var(--lp-lime);height:100%;transition:width .6s}.lp-rows{flex:1;overflow:hidden}.lp-row{font-family:var(--font-mono);color:#d3d1c8;white-space:nowrap;border-bottom:1px solid #262622;justify-content:space-between;align-items:center;gap:.5rem;padding:.48rem .9rem;font-size:.68rem;display:flex}.lp-row:first-child{background:#d6f53b12;animation:.45s cubic-bezier(.2,.9,.3,1.2) drop-in}.lp-row i{color:var(--lp-text-3);font-style:normal}.lp-row .tick{color:var(--lp-lime);margin-right:.35rem}@keyframes drop-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:none}}.lp-float{z-index:2;color:#1b1a17;background:#f6f5f1;border-radius:12px;align-items:center;gap:.6rem;padding:.6rem .85rem .6rem .6rem;font-size:.78rem;animation:6s ease-in-out infinite bob;display:flex;position:absolute;box-shadow:0 18px 40px -16px #000c}.lp-float b{white-space:nowrap;font-size:.8rem;font-weight:600;display:block}.lp-float small{color:#6c6a62;white-space:nowrap;font-size:.7rem;display:block}.lp-float-icon{width:30px;height:30px;color:var(--lp-lime);background:#1b1a17;border-radius:8px;flex-shrink:0;place-items:center;display:grid}.lp-float-a{animation-delay:-2s;top:-1.6rem;right:-.75rem}.lp-float-b{animation-delay:-4s;bottom:.5rem;left:-1rem}@keyframes bob{0%,to{translate:0}50%{translate:0 -8px}}.lp-phone{z-index:3;background:#1b1a17;border-radius:26px;width:158px;padding:7px;animation:7s ease-in-out infinite bob;position:absolute;bottom:-.5rem;right:1.5rem;rotate:4deg;box-shadow:0 30px 60px -20px #000000e6,0 0 0 1px #34332e}.lp-phone-screen{color:#1b1a17;text-align:center;background:#f6f5f1;border-radius:20px;padding:.95rem .7rem .85rem}.lp-phone-notch{background:#d9d6cc;border-radius:5px;width:44px;height:5px;margin:-.35rem auto .7rem}.lp-phone-face{color:#8a877d;background:#e7e4dc;border-radius:50%;place-items:center;width:70px;height:70px;margin:0 auto .65rem;display:grid;position:relative;box-shadow:0 0 0 3px #f6f5f1,0 0 0 6px #2e7a4d}.lp-phone-check{color:#fff;background:#2e7a4d;border-radius:50%;place-items:center;width:24px;height:24px;display:grid;position:absolute;bottom:-4px;right:-4px;box-shadow:0 0 0 3px #f6f5f1}.lp-phone b{font-size:.82rem;font-weight:700;font-family:var(--font-display);letter-spacing:-.02em;display:block}.lp-phone small{color:#6c6a62;margin-top:.1rem;font-size:.64rem;display:block}.lp-phone .chip{color:#2e7a4d;font-family:var(--font-mono);background:#e3f0e7;border-radius:5px;margin-top:.55rem;padding:.2rem .45rem;font-size:.6rem;display:inline-block}@media (width<=960px){.lp-screen{transform:none}}@media (width<=600px){.lp-screen-body{grid-template-columns:1fr}.lp-roster{display:none}.lp-phone{width:124px;bottom:-1rem;right:0}.lp-float-a{top:-.75rem;right:0}.lp-float-b{bottom:0;left:0}.lp-qr-ring{max-width:200px}}.lp-marquee{border-top:1px solid var(--lp-line);background:var(--lp-ink);overflow:hidden}.lp-marquee-track{gap:3rem;width:max-content;padding:1.1rem 0;animation:40s linear infinite marquee;display:flex}.lp-marquee-track span{font-family:var(--font-mono);color:var(--lp-text-3);white-space:nowrap;align-items:center;gap:.65rem;font-size:.82rem;display:inline-flex}.lp-marquee-track span:before{content:"✦";color:var(--lp-lime);font-size:.7rem}@keyframes marquee{to{transform:translate(-50%)}}.lp-section{padding:clamp(4.5rem,10vw,8rem) 0}.lp-head{grid-template-columns:minmax(0,1fr) minmax(0,.8fr);align-items:end;gap:2rem;margin-bottom:clamp(2.5rem,5vw,4rem);display:grid}.lp-head h2{color:var(--ink);margin-top:.85rem;font-size:clamp(2.4rem,5.4vw,4.4rem)}.lp-head p{color:var(--ink-2);max-width:46ch;font-size:1.02rem;line-height:1.6}.lp-dark .lp-head h2{color:var(--lp-text)}.lp-dark .lp-head p{color:var(--lp-text-2)}@media (width<=860px){.lp-head{grid-template-columns:1fr;gap:1rem}}.lp-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;display:grid}.lp-stat{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:1.5rem 1.4rem 1.6rem;position:relative;overflow:hidden}.lp-stat:nth-child(2){background:var(--lp-ink);border-color:var(--lp-ink);color:var(--lp-text)}.lp-stat:nth-child(3){background:var(--lp-lime);border-color:var(--lp-lime);color:var(--lp-lime-ink)}[data-theme=dark] .lp-stat:nth-child(2){border-color:var(--line);background:#000}.lp-stat-num{font-family:var(--font-display);letter-spacing:-.06em;font-size:clamp(3.2rem,6vw,4.8rem);font-weight:800;line-height:.9}.lp-stat-num small{letter-spacing:-.02em;opacity:.7;margin-left:.1rem;font-size:.42em}.lp-stat-label{margin-top:1rem;font-size:.95rem;font-weight:600}.lp-stat-text{opacity:.72;margin-top:.3rem;font-size:.85rem;line-height:1.5}@media (width<=900px){.lp-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=480px){.lp-stats{grid-template-columns:1fr}}.lp-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;display:grid}.lp-step{background:var(--surface);border:1px solid var(--line);border-radius:20px;transition:transform .2s,box-shadow .2s;overflow:hidden}.lp-step:hover{box-shadow:var(--shadow-2);transform:translateY(-4px)}.lp-step-art{background:var(--surface-2);border-bottom:1px solid var(--line);height:200px;color:var(--ink);place-items:center;display:grid;position:relative}.lp-step-art svg{width:72%;max-width:240px;height:auto}.lp-step-n{background:var(--lp-ink);width:34px;height:34px;color:var(--lp-lime);font-family:var(--font-display);border-radius:50%;place-items:center;font-weight:800;display:grid;position:absolute;top:.9rem;left:.9rem}.lp-step-body{padding:1.3rem 1.35rem 1.5rem}.lp-step-body h3{font-family:var(--font-display);letter-spacing:-.025em;font-size:1.35rem;font-weight:700}.lp-step-body p{color:var(--ink-2);margin-top:.5rem;font-size:.92rem;line-height:1.6}.lp-step-tags{flex-wrap:wrap;gap:.35rem;margin-top:1rem;display:flex}.lp-step-tags span{font-family:var(--font-mono);background:var(--surface-2);color:var(--ink-2);border-radius:5px;padding:.2rem .45rem;font-size:.7rem}@media (width<=900px){.lp-steps{grid-template-columns:1fr}}.lp-race{flex-direction:column;gap:2.25rem;display:flex}.lp-lane-top{justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:.75rem;display:flex}.lp-lane-name{font-size:1rem;font-weight:600}.lp-lane-name small{color:var(--lp-text-3);margin-top:.1rem;font-size:.82rem;font-weight:400;display:block}.lp-lane-time{font-family:var(--font-display);letter-spacing:-.05em;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:clamp(2rem,4.5vw,3.2rem);font-weight:800;line-height:1}.lp-lane-time.lime{color:var(--lp-lime)}.lp-track{background:var(--lp-ink-3);border:1px solid var(--lp-line);border-radius:22px;height:22px;overflow:hidden}.lp-fill{border-radius:22px;width:0;height:100%}.lp-fill.slow{background:repeating-linear-gradient(-45deg,#45443e 0 10px,#393832 10px 20px)}.lp-fill.fast{background:var(--lp-lime)}.lp-race.go .lp-fill.slow{width:100%;transition:width 6s linear}.lp-race.go .lp-fill.fast{width:2.5%;min-width:22px;transition:width .9s cubic-bezier(.2,.9,.3,1)}.lp-race-notes{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:3rem;display:grid}.lp-note{background:var(--lp-ink-2);border:1px solid var(--lp-line);border-radius:16px;padding:1.2rem 1.25rem}.lp-note b{font-family:var(--font-display);letter-spacing:-.02em;color:var(--lp-text);font-size:1.1rem;font-weight:700;display:block}.lp-note p{color:var(--lp-text-2);margin-top:.35rem;font-size:.88rem;line-height:1.55}@media (width<=760px){.lp-race-notes{grid-template-columns:1fr}}.lp-checks{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;display:grid}.lp-check{background:var(--surface);border:1px solid var(--line);border-radius:20px;flex-direction:column;padding:1.4rem 1.3rem 1.3rem;transition:transform .2s,border-color .2s;display:flex}.lp-check:hover{border-color:var(--ink);transform:translateY(-4px)}.lp-check-icon{background:var(--lp-ink);width:52px;height:52px;color:var(--lp-lime);border-radius:14px;place-items:center;display:grid}[data-theme=dark] .lp-check-icon{box-shadow:inset 0 0 0 1px var(--line);background:#000}.lp-check-n{font-family:var(--font-mono);color:var(--ink-3);margin-top:1.4rem;font-size:.72rem}.lp-check h3{font-family:var(--font-display);letter-spacing:-.025em;margin-top:.3rem;font-size:1.25rem;font-weight:700;line-height:1.15}.lp-check p{color:var(--ink-2);flex:1;margin-top:.55rem;font-size:.88rem;line-height:1.58}.lp-stops{border-top:1px dashed var(--line-strong);color:var(--ink-2);margin-top:1.1rem;padding-top:.9rem;font-size:.8rem}.lp-stops b{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--absent);margin-bottom:.2rem;font-size:.66rem;font-weight:500;display:block}@media (width<=1000px){.lp-checks{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.lp-checks{grid-template-columns:1fr}}.lp-eng{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:stretch;gap:1.25rem;display:grid}.lp-panel{background:var(--lp-ink-2);border:1px solid var(--lp-line);border-radius:20px;min-width:0;padding:1.3rem}.lp-panel-title{font-family:var(--font-mono);color:var(--lp-text-3);justify-content:space-between;align-items:center;margin-bottom:1rem;font-size:.72rem;display:flex}.lp-dots{gap:5px;display:inline-flex}.lp-dots span{background:#34332e;border-radius:50%;width:9px;height:9px}.lp-schema svg{width:100%;height:auto}.lp-code{font-family:var(--font-mono);color:#d8d6ce;white-space:pre;font-size:.8rem;line-height:1.75;overflow-x:auto}.lp-code .k{color:var(--lp-lime)}.lp-code .c{color:#6f6d66}.lp-code .s{color:#f2b8a2}.lp-eng-points{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:1.25rem;display:grid}.lp-eng-points div{border:1px solid var(--lp-line);border-radius:16px;padding:1.1rem 1.15rem}.lp-eng-points b{color:var(--lp-text);font-family:var(--font-display);letter-spacing:-.02em;font-size:1.05rem;font-weight:700;display:block}.lp-eng-points p{color:var(--lp-text-2);margin-top:.35rem;font-size:.86rem;line-height:1.55}.lp-eng-points code{font-family:var(--font-mono);color:var(--lp-lime);white-space:nowrap;font-size:.8em}.lp-stack{flex-wrap:wrap;gap:.45rem;margin-top:1.25rem;display:flex}.lp-stack span{border:1px solid var(--lp-line);color:var(--lp-text-2);border-radius:999px;padding:.3rem .65rem;font-size:.78rem}@media (width<=900px){.lp-eng,.lp-eng-points{grid-template-columns:1fr}}.lp-cta-band{background:var(--lp-lime);color:var(--lp-lime-ink);padding:clamp(4rem,9vw,6.5rem) 0;position:relative;overflow:hidden}.lp-cta-band:after{content:"✓";font-family:var(--font-display);color:#1a1f0014;pointer-events:none;font-size:26rem;font-weight:800;line-height:1;position:absolute;bottom:-8rem;right:-1rem}.lp-cta-band h2{color:var(--lp-lime-ink);z-index:1;max-width:14ch;font-size:clamp(2.6rem,6.4vw,5.4rem);position:relative}.lp-cta-band p{opacity:.8;z-index:1;max-width:44ch;margin-top:1.1rem;font-size:1.05rem;position:relative}.lp-cta-band .lp-cta{z-index:1;position:relative}.lp-btn-outline-ink{color:var(--lp-lime-ink);background:0 0;border-color:#1a1f0059}.lp-btn-outline-ink:hover:not(:disabled){background:#1a1f000f}.lp-foot{background:var(--lp-ink);color:var(--lp-text-3);padding:2.25rem 0 2.75rem;font-size:.84rem}.lp-foot .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.lp-foot nav{flex-wrap:wrap;gap:1.25rem;display:flex}.lp-foot a{color:var(--lp-text-2);text-decoration:none}.lp-foot a:hover{color:var(--lp-text)}.reveal{opacity:0;transition:opacity .7s,transform .7s cubic-bezier(.2,.8,.2,1);transform:translateY(18px)}.reveal.in{opacity:1;transform:none}:root{--ink-band:#0d0d0c;--ink-band-2:#171715;--ink-band-3:#22221e;--ink-band-line:#2b2a26;--band-text:#f4f3ee;--band-text-2:#b7b5ac;--band-text-3:#7b7970;--lime:#d6f53b;--lime-ink:#1a1f00}.sidebar,.drawer{background:var(--ink-band);border-right-color:var(--ink-band-line);color:var(--band-text)}.sidebar .brand,.drawer .brand,.topbar .brand{color:var(--band-text)}.sidebar .brand-mark path,.drawer .brand-mark path,.topbar .brand-mark path{stroke:var(--lime)}.sidebar .side-nav-label,.drawer .side-nav-label{color:var(--band-text-3)}.sidebar .side-link,.drawer .side-link{color:var(--band-text-2);position:relative}.sidebar .side-link svg,.drawer .side-link svg{color:var(--band-text-3)}.sidebar .side-link:hover,.drawer .side-link:hover{background:var(--ink-band-2);color:var(--band-text)}.sidebar .side-link.active,.drawer .side-link.active{background:var(--ink-band-3);color:var(--band-text);box-shadow:none}.sidebar .side-link.active:before,.drawer .side-link.active:before{content:"";background:var(--lime);border-radius:0 3px 3px 0;width:3px;position:absolute;top:8px;bottom:8px;left:-.85rem}.sidebar .side-link.active svg,.drawer .side-link.active svg{color:var(--lime)}.sidebar-foot{border-top-color:var(--ink-band-line)}.sidebar .avatar,.drawer .avatar{background:var(--lime);color:var(--lime-ink)}.sidebar .user-chip-meta,.drawer .user-chip-meta{color:var(--band-text-3)}.sidebar .btn-secondary,.drawer .btn-secondary{background:var(--ink-band-2);border-color:var(--ink-band-line);color:var(--band-text);box-shadow:none}.sidebar .btn-secondary:hover:not(:disabled),.drawer .btn-secondary:hover:not(:disabled){background:var(--ink-band-3)}.drawer .btn-ghost{color:var(--band-text-2)}.drawer .btn-ghost:hover{background:var(--ink-band-2);color:var(--band-text)}@media (width<=900px){.topbar{background:var(--ink-band);border-bottom-color:var(--ink-band-line)}.topbar .btn-ghost{color:var(--band-text)}.topbar .btn-ghost:hover{background:var(--ink-band-2)}}.btn-lime{background:var(--lime);color:var(--lime-ink);font-weight:600}.btn-lime:hover:not(:disabled){background:#e4ff6a}.btn-on-ink{color:var(--band-text);background:0 0;border-color:#3a3934}.btn-on-ink:hover:not(:disabled){background:var(--ink-band-3)}.stat-value,.portal-overall-num,.course-row-pct{font-family:var(--font-display);letter-spacing:-.045em;font-weight:800}.tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem;margin-bottom:1.5rem;display:grid}.tile{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-1);border-radius:16px;min-width:0;padding:1.05rem 1.15rem 1.15rem;position:relative;overflow:hidden}.tile-label{color:var(--ink-3);font-size:.78rem;font-weight:500}.tile-value{font-family:var(--font-display);letter-spacing:-.05em;font-variant-numeric:tabular-nums;margin-top:.45rem;font-size:clamp(2rem,3.4vw,2.6rem);font-weight:800;line-height:.95}.tile-value small{letter-spacing:-.01em;opacity:.6;margin-left:.15rem;font-size:.45em;font-weight:700}.tile-note{color:var(--ink-3);margin-top:.4rem;font-size:.77rem}.tile.ink{background:var(--ink-band);border-color:var(--ink-band);color:var(--band-text)}.tile.ink .tile-label,.tile.ink .tile-note{color:var(--band-text-3)}.tile.lime{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}.tile.lime .tile-label,.tile.lime .tile-note{color:#1a1f009e}.tile.warn .tile-value{color:var(--absent)}[data-theme=dark] .tile.ink{border-color:var(--line);background:#000}[data-theme=dark] .today{box-shadow:inset 0 0 0 1px var(--line);background:#000}[data-theme=dark] .sidebar{border-right-color:var(--line);background:#0a0a09}@media (width<=860px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}.today{background:var(--ink-band);color:var(--band-text);isolation:isolate;border-radius:18px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1.25rem;margin-bottom:1rem;padding:1.35rem 1.5rem;display:grid;position:relative;overflow:hidden}.today:before{content:"";z-index:-1;background-image:linear-gradient(#ffffff0a 1px,#0000 1px),linear-gradient(90deg,#ffffff0a 1px,#0000 1px);background-size:34px 34px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(90deg,#0000,#000 60%);mask-image:linear-gradient(90deg,#0000,#000 60%)}.today-kicker{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--lime);align-items:center;gap:.5rem;font-size:.72rem;display:inline-flex}.today h2{color:var(--band-text);font-family:var(--font-display);letter-spacing:-.035em;margin-top:.35rem;font-size:clamp(1.4rem,2.6vw,1.9rem);font-weight:800;line-height:1.05}.today p{color:var(--band-text-2);margin-top:.35rem;font-size:.88rem}.today-actions{flex-wrap:wrap;gap:.5rem;display:flex}.today-count{font-family:var(--font-display);letter-spacing:-.05em;color:var(--lime);text-align:right;font-size:3.2rem;font-weight:800;line-height:.9}.today-count small{font-family:var(--font-sans);letter-spacing:0;color:var(--band-text-3);margin-top:.3rem;font-size:.74rem;font-weight:500;display:block}@media (width<=680px){.today{grid-template-columns:1fr}.today-count{text-align:left}}.chart{padding:1.1rem 1.25rem .9rem}.chart-bars{border-bottom:1px solid var(--line);align-items:flex-end;gap:clamp(4px,1vw,10px);height:180px;padding-top:18px;display:flex;position:relative}.chart-bars,.chart-labels{justify-content:center}.chart-bar,.chart-labels span{max-width:56px}.chart-bar{flex:1;align-items:flex-end;min-width:0;height:100%;display:flex;position:relative}.chart-bar span{background:var(--ink);border-radius:6px 6px 2px 2px;width:100%;min-height:3px;transition:height .5s cubic-bezier(.2,.8,.2,1);display:block}.chart-bar.live span{background:var(--lime);box-shadow:inset 0 0 0 1px #1a1f0040}.chart-bar:hover span{opacity:.8}.chart-bar b{font-family:var(--font-mono);color:var(--ink-2);white-space:nowrap;font-size:.68rem;font-weight:500;position:absolute;left:50%;transform:translate(-50%)}.chart-avg{border-top:1px dashed var(--ink-3);pointer-events:none;position:absolute;left:0;right:0}.chart-avg i{font-style:normal;font-family:var(--font-mono);color:var(--ink-3);background:var(--surface);padding:0 .25rem;font-size:.66rem;position:absolute;top:-1.15rem;right:0}.chart-labels{gap:clamp(4px,1vw,10px);margin-top:.4rem;display:flex}.chart-labels span{text-align:center;min-width:0;font-family:var(--font-mono);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.62rem;overflow:hidden}.chart-empty{height:180px;color:var(--ink-3);border-bottom:1px dashed var(--line);place-items:center;font-size:.86rem;display:grid}.dash-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:1rem;margin-bottom:1rem;display:grid}@media (width<=960px){.dash-grid{grid-template-columns:1fr}}.course-quick{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1.25rem;display:flex}.course-quick:last-child{border-bottom:none}.course-quick .mono{color:var(--ink-3);font-size:.78rem}.chips{flex-wrap:wrap;gap:.35rem;display:flex}.chip{border:1px solid var(--line-strong);background:var(--surface);height:30px;color:var(--ink-2);cursor:pointer;border-radius:999px;align-items:center;gap:.4rem;padding:0 .7rem;font-size:.8rem;font-weight:500;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.chip:hover{background:var(--surface-2);color:var(--ink)}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--ink-inverse)}.chip .count{font-family:var(--font-mono);opacity:.7;font-size:.72rem}.verdict{border-bottom:1px solid var(--line);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:1.5rem;padding:1.15rem 1.25rem 1.25rem;display:grid}.verdict-pct{font-family:var(--font-display);letter-spacing:-.06em;font-size:3.4rem;font-weight:800;line-height:.9}.verdict-pct small{font-family:var(--font-sans);letter-spacing:0;color:var(--ink-3);margin-top:.35rem;font-size:.74rem;font-weight:500;display:block}.stack-bar{background:var(--surface-3);border-radius:14px;height:14px;display:flex;position:relative;overflow:hidden}.stack-bar>span{height:100%;transition:width .5s}.stack-bar .p{background:var(--present)}.stack-bar .f{background:var(--flagged)}.stack-bar .a{background:var(--absent);opacity:.75}.stack-wrap{position:relative}.stack-wrap .meter-mark{top:-5px;bottom:-5px}.stack-wrap .mark-label{font-family:var(--font-mono);color:var(--ink-2);font-size:.66rem;position:absolute;top:-1.35rem;transform:translate(-50%)}.legend{color:var(--ink-2);flex-wrap:wrap;gap:1rem;margin-top:.7rem;font-size:.8rem;display:flex}.legend span{align-items:center;gap:.4rem;display:inline-flex}.legend i{border-radius:3px;width:9px;height:9px;display:inline-block}.legend b{font-family:var(--font-mono);color:var(--ink);font-weight:500}@media (width<=560px){.verdict{grid-template-columns:1fr;gap:1rem}}.table-scroll.tall{max-height:62vh;overflow:auto}.table-scroll.tall .table th{z-index:1;box-shadow:inset 0 -1px 0 var(--line);position:sticky;top:0}.who{align-items:center;gap:.7rem;min-width:0;display:flex}.who .avatar{background:var(--surface-3);width:34px;height:34px;font-size:.74rem}.who .avatar.ok{background:var(--lime);color:var(--lime-ink)}.skel{background:linear-gradient(90deg, var(--surface-2) 0%, var(--surface-3) 40%, var(--surface-2) 80%);background-size:300% 100%;border-radius:6px;animation:1.3s ease-in-out infinite shimmer;display:block}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.skel-rows{padding:.5rem 1.25rem 1rem}.skel-row{border-bottom:1px solid var(--line);grid-template-columns:1.4fr .6fr .8fr .5fr;align-items:center;gap:1.25rem;padding:.85rem 0;display:grid}.skel-row:last-child{border-bottom:none}.skel-row .skel{height:12px}.skel-row .skel:first-child{height:14px}.skel-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:1rem;display:grid}.skel-card{border-radius:12px;height:280px}.room-map{background-color:var(--surface-2);background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);border-top:1px solid var(--line);border-bottom:1px solid var(--line);background-size:22px 22px;height:170px;margin:.9rem -1.15rem;position:relative;overflow:hidden}.room-map-tag{background:var(--ink-band);color:var(--lime);font-family:var(--font-mono);border-radius:6px;padding:.2rem .5rem;font-size:.7rem;position:absolute;bottom:.6rem;left:.6rem}.room-code{font-family:var(--font-display);letter-spacing:-.04em;font-size:1.6rem;font-weight:800}.proj-timer-fill,.proj-count-bar div{background:var(--lime)}.proj-count-num{font-family:var(--font-display);font-weight:800}.proj-pin-digit{color:var(--lime)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
