@import url("https://fonts.googleapis.com/css2?family=Unbounded:wght@600;700;800;900&family=Manrope:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap");:root{--vibe-yellow:#f1bf23;--vibe-yellow-bright:#ffd23f;--vibe-yellow-deep:#d9a815;--vibe-yellow-soft:#fff4c8;--ink-1000:#0e0e0f;--ink-900:#1a1a1c;--ink-700:#3a3a3f;--ink-500:#6b6b72;--ink-300:#b5b5bb;--ink-200:#dcdce0;--ink-100:#efeff1;--paper:#fafaf7;--paper-2:#f4f2ec;--paper-3:#ece9df;--white:#fff;--ok:#2ba84a;--warn:#e08a1a;--err:#d14b3d;--info:#2d6bd9;--fg-1:var(--ink-1000);--fg-2:var(--ink-700);--fg-3:var(--ink-500);--fg-on-yellow:var(--ink-1000);--fg-on-dark:var(--paper);--bg-1:var(--paper);--bg-2:var(--paper-2);--bg-3:var(--paper-3);--bg-inverse:var(--ink-1000);--bg-accent:var(--vibe-yellow);--border-1:var(--ink-200);--border-2:var(--ink-300);--border-strong:var(--ink-1000);--font-display:"Unbounded","Arial Black",system-ui,sans-serif;--font-body:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;--text-xs:12px;--text-sm:14px;--text-base:16px;--text-md:18px;--text-lg:22px;--text-xl:28px;--text-2xl:36px;--text-3xl:48px;--text-4xl:64px;--text-5xl:88px;--text-6xl:120px;--leading-tight:0.95;--leading-snug:1.1;--leading-normal:1.45;--leading-relaxed:1.65;--tracking-tight:-0.03em;--tracking-snug:-0.015em;--tracking-normal:0;--tracking-wide:0.04em;--tracking-caps:0.12em;--weight-regular:400;--weight-medium:500;--weight-semi:600;--weight-bold:700;--weight-black:900;--s-0:0;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:128px;--r-xs:6px;--r-sm:10px;--r-md:16px;--r-lg:24px;--r-xl:32px;--r-pill:999px;--shadow-sm:0 1px 2px rgba(14,14,15,.06);--shadow-md:0 6px 20px -8px rgba(14,14,15,.18);--shadow-lg:0 24px 60px -20px rgba(14,14,15,.25);--shadow-stamp:4px 4px 0 0 var(--ink-1000);--shadow-stamp-yellow:4px 4px 0 0 var(--vibe-yellow-deep);--ease-out:cubic-bezier(0.2,0.8,0.2,1);--ease-in-out:cubic-bezier(0.6,0.0,0.2,1);--dur-fast:120ms;--dur-base:220ms;--dur-slow:420ms;--container:1200px;--content:720px;--gutter:24px}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--paper);color:var(--fg-1);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-relaxed);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--fg-1);margin:0;letter-spacing:var(--tracking-snug);line-height:var(--leading-snug)}h1{font-weight:var(--weight-black);font-size:clamp(40px,6vw,var(--text-4xl));line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}h2{font-size:var(--text-3xl)}h2,h3{font-weight:var(--weight-bold)}h3{font-size:var(--text-xl)}h4{font-family:var(--font-body);font-weight:var(--weight-bold);font-size:var(--text-lg)}p{margin:0;line-height:var(--leading-relaxed);color:var(--fg-2)}a{color:var(--ink-1000);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px;transition:color var(--dur-fast) var(--ease-out)}a:hover{color:var(--vibe-yellow-deep)}code,kbd,pre,samp{font-family:var(--font-mono)}button{font-family:var(--font-body)}img,svg{display:block;max-width:100%}::selection{background:var(--vibe-yellow);color:var(--ink-1000)}.t-display{font-size:clamp(64px,9vw,var(--text-6xl))}.t-display,.t-h1{font-family:var(--font-display);font-weight:var(--weight-black);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--fg-1)}.t-h1{font-size:clamp(40px,6vw,var(--text-4xl))}.t-h2{font-size:var(--text-3xl)}.t-h2,.t-h3{font-family:var(--font-display);font-weight:var(--weight-bold);line-height:var(--leading-snug);letter-spacing:var(--tracking-snug);color:var(--fg-1)}.t-h3{font-size:var(--text-xl)}.t-h4{font-weight:var(--weight-bold);line-height:var(--leading-snug);color:var(--fg-1)}.t-h4,.t-lead{font-family:var(--font-body);font-size:var(--text-lg)}.t-lead{font-weight:var(--weight-medium);line-height:var(--leading-normal);color:var(--fg-2)}.t-body{font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--fg-2)}.t-body,.t-small{font-family:var(--font-body);font-weight:var(--weight-regular)}.t-small{font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--fg-3)}.t-caption{font-weight:var(--weight-medium);line-height:var(--leading-normal);letter-spacing:var(--tracking-wide)}.t-caption,.t-overline{font-family:var(--font-body);font-size:var(--text-xs);color:var(--fg-3)}.t-overline{font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-caps)}.t-code{font-family:var(--font-mono);font-weight:var(--weight-regular);font-size:.92em;background:var(--paper-3);padding:.12em .4em;border-radius:var(--r-xs);color:var(--ink-900)}.surface{background:var(--bg-1);color:var(--fg-1)}.surface-alt{background:var(--bg-2);color:var(--fg-1)}.surface-deep{background:var(--bg-3);color:var(--fg-1)}.surface-dark{background:var(--bg-inverse);color:var(--fg-on-dark)}.surface-yellow{background:var(--bg-accent);color:var(--fg-on-yellow)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);font-family:var(--font-body);font-weight:var(--weight-bold);font-size:var(--text-sm);letter-spacing:0;border:1.5px solid var(--ink-1000);border-radius:var(--r-sm);padding:12px 20px;background:transparent;color:var(--ink-1000);cursor:pointer;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out);text-decoration:none}.btn:hover{background:var(--paper-2)}.btn:disabled,.btn[aria-disabled=true]{opacity:.4;cursor:not-allowed;pointer-events:none}.btn-stamp{background:var(--vibe-yellow);color:var(--ink-1000);border:2px solid var(--ink-1000);border-radius:var(--r-sm);padding:14px 24px;font-size:var(--text-base);font-weight:var(--weight-bold);box-shadow:var(--shadow-stamp)}.btn-stamp:hover{background:var(--vibe-yellow-bright);transform:translateY(-1px);box-shadow:4px 5px 0 0 var(--ink-1000)}.btn-stamp:active{transform:translate(4px,4px);box-shadow:0 0 0 0 var(--ink-1000)}.btn-dark{background:var(--ink-1000);color:var(--paper);border:0;border-radius:var(--r-pill);padding:12px 20px;font-weight:var(--weight-semi);font-size:var(--text-sm)}.btn-dark:hover{box-shadow:inset 0 0 0 2px var(--vibe-yellow)}.btn-ghost{border:0;background:transparent;color:var(--ink-1000);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px;padding:12px 8px}.btn-ghost:hover{color:var(--vibe-yellow-deep);background:transparent}.input,.select,.textarea{font-family:var(--font-body);font-size:var(--text-base);color:var(--ink-1000);background:var(--white);border:1.5px solid var(--ink-200);border-radius:var(--r-sm);padding:12px 14px;width:100%;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--ink-1000);box-shadow:0 0 0 3px var(--vibe-yellow-soft)}.input::placeholder,.textarea::placeholder{color:var(--ink-300)}.card{background:var(--white);border:1px solid var(--border-1);border-radius:var(--r-md);padding:var(--s-5)}.card-stamp{box-shadow:var(--shadow-stamp)}.card-stamp,.card-yellow-stamp{background:var(--white);border:2px solid var(--ink-1000);border-radius:var(--r-md);padding:var(--s-5)}.card-yellow-stamp{box-shadow:var(--shadow-stamp-yellow)}.container{max-width:var(--container)}.container,.content{margin:0 auto;padding:0 var(--gutter)}.content{max-width:var(--content)}:focus-visible{outline:3px solid var(--vibe-yellow);outline-offset:2px;border-radius:var(--r-xs)}.vk-mark{font-family:var(--font-display);font-weight:var(--weight-black);font-size:22px;letter-spacing:-.04em;color:var(--ink-1000);text-decoration:none;line-height:1}.vk-mark>.dot{color:var(--vibe-yellow)}.tag{display:inline-flex;align-items:center;font-family:var(--font-body);font-weight:var(--weight-bold);font-size:11px;text-transform:uppercase;letter-spacing:.08em;padding:4px 10px;border-radius:var(--r-pill);background:var(--paper-3);color:var(--ink-900)}.tag-yellow{background:var(--vibe-yellow);color:var(--ink-1000)}.tag-dark{background:var(--ink-1000);color:var(--paper)}.tag-ok{background:rgba(43,168,74,.12);color:var(--ok)}.tag-warn{background:rgba(224,138,26,.12);color:var(--warn)}.tag-err{background:rgba(209,75,61,.12);color:var(--err)}.mono{font-family:var(--font-mono);font-size:12px;color:var(--ink-500);letter-spacing:.04em}.callout{background:var(--vibe-yellow-soft);border:1.5px solid var(--vibe-yellow-deep);border-radius:var(--r-md);padding:16px 20px}.field-label{display:block;font-family:var(--font-body);font-weight:var(--weight-bold);font-size:12px;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--ink-500);margin-bottom:8px}.form-stack{display:flex;flex-direction:column;gap:12px}.btn-block{width:100%}.msg-ok{color:var(--ok)}.msg-err,.msg-ok{font-size:14px;margin:0}.msg-err{color:var(--err)}.course-card{display:flex;flex-direction:column;gap:14px;background:var(--white);border:1px solid var(--ink-200);border-radius:var(--r-md);padding:var(--s-5);text-decoration:none;color:var(--ink-1000);transition:transform var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out);min-height:220px}.course-card:hover{transform:translateY(-2px);border-color:var(--ink-1000);box-shadow:var(--shadow-stamp-yellow);color:var(--ink-1000)}.app-header{display:flex;align-items:center;gap:24px;padding:14px 24px;border-bottom:1px solid var(--ink-200);background:var(--paper)}.app-header .divider{width:1px;height:22px;background:var(--ink-200)}.app-nav{display:flex;gap:24px;flex:1 1;align-items:center}.app-nav a{font-family:var(--font-body);font-weight:var(--weight-medium);font-size:14px;color:var(--ink-700);text-decoration:none;padding-bottom:4px;border-bottom:3px solid transparent;transition:color var(--dur-fast) var(--ease-out)}.app-nav a:hover{color:var(--ink-1000)}.app-nav a[aria-current=page]{color:var(--ink-1000);font-weight:var(--weight-bold);border-bottom-color:var(--vibe-yellow)}.user-chip{display:flex;align-items:center;gap:12px;margin-left:auto}.user-name{font-family:var(--font-body);font-weight:var(--weight-medium);font-size:14px;color:var(--ink-1000);text-decoration:none}.user-avatar{width:36px;height:36px;border-radius:999px;border:2px solid var(--ink-1000);background:var(--paper-2);background-size:cover;background-position:50%;display:grid;place-items:center;font-family:var(--font-display);font-weight:var(--weight-black);font-size:14px;color:var(--ink-1000);overflow:hidden}.lesson-shell{display:flex;min-height:calc(100vh - 64px)}.lesson-sidebar{width:320px;flex-shrink:0;border-right:1px solid var(--ink-200);background:var(--paper-2);padding:24px 0;overflow-y:auto}.lesson-sidebar .module-title{padding:0 24px 16px;font-family:var(--font-body);font-weight:var(--weight-bold);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-500)}.lesson-sidebar ul{list-style:none;margin:0;padding:0}.lesson-sidebar li a{display:flex;gap:12px;align-items:flex-start;padding:14px 24px;text-decoration:none;color:var(--ink-1000);border-left:3px solid transparent;transition:background-color var(--dur-fast) var(--ease-out)}.lesson-sidebar li a:hover{background:var(--paper-3)}.lesson-sidebar li.is-current a{background:var(--paper);border-left-color:var(--vibe-yellow)}.lesson-sidebar .indicator{width:22px;height:22px;border-radius:999px;flex-shrink:0;display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;font-weight:700}.lesson-sidebar .indicator.is-todo{background:transparent;border:1.5px solid var(--ink-300);color:var(--ink-1000)}.lesson-sidebar .indicator.is-current{background:var(--vibe-yellow);color:var(--ink-1000)}.lesson-sidebar .indicator.is-done{background:var(--ink-1000);color:var(--paper)}.lesson-sidebar .row-title{font-family:var(--font-body);font-weight:var(--weight-medium);font-size:14px;color:var(--ink-1000);line-height:1.3}.lesson-sidebar li.is-current .row-title{font-weight:var(--weight-bold)}.lesson-sidebar .row-meta{font-family:var(--font-mono);font-size:11px;color:var(--ink-500);margin-top:2px}.lesson-sidebar .row-live{margin-left:auto;font-family:var(--font-body);font-weight:var(--weight-bold);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--err)}.lesson-main{flex:1 1;min-width:0;display:flex;flex-direction:column}.lesson-scroll{flex:1 1;overflow-y:auto}.lesson-content{flex:1 1;min-width:0;padding:40px 56px 80px}.lesson-content .prose{max-width:720px}.lesson-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:28px;margin-bottom:12px;flex-wrap:wrap}.lesson-toolbar .left,.lesson-toolbar .right{display:flex;align-items:center;gap:8px}.lesson-toolbar .btn,.lesson-toolbar .btn-stamp,.lesson-toolbar .watched-on{padding:8px 14px;font-size:13px}.lesson-toolbar .watched-on{display:inline-flex;align-items:center;gap:6px;background:var(--paper-2);border:1.5px solid var(--ok);color:var(--ok);border-radius:var(--r-sm);font-family:var(--font-body);font-weight:var(--weight-bold);cursor:pointer;width:auto}.lesson-toolbar .watched-on:hover{background:var(--paper-3)}.chapters-list{list-style:none;padding:0;margin:0}.chapter-row{display:flex;align-items:baseline;gap:16px;width:100%;padding:10px 12px;margin:0 -12px;background:transparent;border:0;border-bottom:1px solid var(--ink-100);border-radius:var(--r-xs);cursor:pointer;font-family:var(--font-body);font-size:15px;color:var(--ink-1000);text-align:left;transition:background var(--dur-fast) var(--ease-out)}.chapter-row:hover{background:var(--paper-2)}.chapter-row .time{font-family:var(--font-mono);font-size:13px;color:var(--vibe-yellow-deep);font-weight:600;width:64px;flex-shrink:0}.chapter-row:hover .time{color:var(--ink-1000)}.chapter-row .title{flex:1 1}.lesson-rail{width:320px;flex-shrink:0;padding:40px 24px 80px;display:flex;flex-direction:column;gap:16px}@media (max-width:1280px){.lesson-rail{width:280px}}@media (max-width:1100px){.lesson-content{padding:32px 24px 80px}.lesson-rail{width:100%;padding:0 24px 40px}.lesson-with-rail{flex-direction:column}}.lesson-with-rail{display:flex;align-items:flex-start;justify-content:space-between;gap:32px}.video-frame{position:relative;width:100%;aspect-ratio:16/9;background:var(--ink-1000);background-image:linear-gradient(135deg,#1a1a1c,#0e0e0f);border-radius:var(--r-md);overflow:hidden}.video-frame video{height:100%;display:block;object-fit:contain}.video-frame video,.vp{width:100%;background:var(--ink-1000)}.vp{position:relative;aspect-ratio:16/9;background-image:linear-gradient(135deg,#1a1a1c,#0e0e0f);border-radius:var(--r-md);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vp video{width:100%;height:100%;display:block;background:var(--ink-1000);object-fit:contain;cursor:pointer}.vp.paused .vp-bar{opacity:1;pointer-events:auto}.vp:focus-within .vp-bar,.vp:hover .vp-bar{opacity:1;pointer-events:auto}.vp-center{position:absolute;inset:0;display:grid;place-items:center;background:rgba(14,14,15,.25);opacity:0;pointer-events:none;transition:opacity var(--dur-base) var(--ease-out)}.vp.paused .vp-center{opacity:1;pointer-events:auto}.vp-center button{width:88px;height:88px;border-radius:999px;background:var(--vibe-yellow);border:0;display:grid;place-items:center;cursor:pointer;box-shadow:0 12px 30px rgba(0,0,0,.5);transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.vp-center button:hover{background:var(--vibe-yellow-bright);transform:translateY(-2px)}.vp-center button:active{transform:translateY(0)}.vp-bar{position:absolute;left:0;right:0;bottom:0;padding:10px 14px 12px;background:linear-gradient(0deg,rgba(14,14,15,.92) 0,rgba(14,14,15,.6) 60%,rgba(14,14,15,0));display:flex;flex-direction:column;gap:6px;opacity:0;pointer-events:none;transition:opacity var(--dur-base) var(--ease-out)}.vp-track{position:relative;height:18px;display:flex;align-items:center;cursor:pointer}.vp-track-bg{position:absolute;left:0;right:0;height:4px;background:hsla(0,0%,100%,.18);border-radius:999px;overflow:hidden;transition:height var(--dur-fast) var(--ease-out)}.vp-track:hover .vp-track-bg{height:6px}.vp-track-fill{background:var(--vibe-yellow)}.vp-track-buffer,.vp-track-fill{position:absolute;left:0;top:0;bottom:0}.vp-track-buffer{background:hsla(0,0%,100%,.32)}.vp-track-thumb{position:absolute;width:12px;height:12px;border-radius:999px;background:var(--vibe-yellow);transform:translate(-50%,-50%);top:50%;pointer-events:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-out)}.vp-track:focus-visible .vp-track-thumb,.vp-track:hover .vp-track-thumb{opacity:1}.vp-row{display:flex;align-items:center;gap:10px}.vp-btn,.vp-row{color:var(--paper)}.vp-btn{background:transparent;border:0;width:36px;height:36px;border-radius:var(--r-sm);display:grid;place-items:center;cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.vp-btn:hover{background:hsla(0,0%,100%,.12);color:var(--vibe-yellow)}.vp-btn:disabled{opacity:.4;cursor:not-allowed}.vp-time{font-family:var(--font-mono);font-size:12px;color:var(--paper);letter-spacing:.02em;min-width:96px}.vp-time .sep{opacity:.5;margin:0 4px}.vp-spacer{flex:1 1}.vp-volume{display:flex;align-items:center;gap:4px}.vp-volume-slider{width:0;overflow:hidden;transition:width var(--dur-base) var(--ease-out)}.vp-volume:focus-within .vp-volume-slider,.vp-volume:hover .vp-volume-slider{width:80px}.vp-volume-slider input[type=range]{width:80px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;height:18px;cursor:pointer;margin:0}.vp-volume-slider input[type=range]::-webkit-slider-runnable-track{height:3px;background:hsla(0,0%,100%,.25);border-radius:999px}.vp-volume-slider input[type=range]::-moz-range-track{height:3px;background:hsla(0,0%,100%,.25);border-radius:999px}.vp-volume-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:999px;background:var(--vibe-yellow);margin-top:-4.5px;border:0}.vp-volume-slider input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:999px;background:var(--vibe-yellow);border:0}.vp-speed{position:relative}.vp-speed-toggle{background:transparent;border:0;color:var(--paper);font-family:var(--font-mono);font-size:13px;font-weight:600;padding:6px 10px;border-radius:var(--r-sm);cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.vp-speed-toggle:hover{background:hsla(0,0%,100%,.12);color:var(--vibe-yellow)}.vp-speed-menu{position:absolute;bottom:calc(100% + 8px);right:0;min-width:96px;background:var(--ink-1000);border:1px solid hsla(0,0%,100%,.12);border-radius:var(--r-sm);padding:4px;display:flex;flex-direction:column;box-shadow:0 10px 30px rgba(0,0,0,.4)}.vp-speed-menu button{background:transparent;border:0;color:var(--paper);font-family:var(--font-mono);font-size:13px;text-align:left;padding:6px 10px;border-radius:4px;cursor:pointer}.vp-speed-menu button:hover{background:hsla(0,0%,100%,.12)}.vp-speed-menu button[aria-current=true]{color:var(--vibe-yellow);font-weight:700}.video-frame .play-btn{position:absolute;inset:0;display:grid;place-items:center;background:transparent;border:0;cursor:pointer}.video-frame .play-disc{width:72px;height:72px;border-radius:999px;background:var(--vibe-yellow);display:grid;place-items:center;box-shadow:0 12px 30px rgba(0,0,0,.5)}.video-frame .play-time{position:absolute;left:16px;bottom:14px;font-family:var(--font-mono);font-size:12px;color:#dcdce0}.step-nav{position:-webkit-sticky;position:sticky;bottom:0;border-top:1px solid var(--ink-200);background:hsla(60,23%,97%,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:16px 32px;display:flex;align-items:center;gap:16px;z-index:5}.step-nav .step-counter{flex:1 1;font-family:var(--font-mono);font-size:12px;color:var(--ink-500);text-transform:uppercase;letter-spacing:.08em;text-align:center}.watched-on{display:block;width:100%;background:var(--paper-2);border:1.5px solid var(--ok);color:var(--ok);border-radius:var(--r-sm);padding:12px 16px;font-family:var(--font-body);font-weight:var(--weight-bold);font-size:14px;cursor:pointer}.watched-on:hover{background:var(--paper-3)}.checklist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.checklist .row,.checklist li{border-radius:var(--r-xs)}.checklist .row{display:flex;gap:10px;align-items:flex-start;padding:8px;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}.checklist .row:hover{background:var(--paper-2)}.checklist .box{width:22px;height:22px;flex-shrink:0;border-radius:var(--r-xs);border:1.5px solid var(--ink-300);background:var(--white);display:grid;place-items:center;font-family:var(--font-mono);font-weight:700;font-size:13px;color:transparent;transition:all var(--dur-fast) var(--ease-out)}.checklist .row.is-checked .box{background:var(--ink-1000);border-color:var(--ink-1000);color:var(--paper)}.checklist .row.is-checked .label{font-weight:var(--weight-medium);color:var(--ink-1000)}.checklist .label{font-family:var(--font-body);font-size:14px;color:var(--ink-900);line-height:1.4}.checklist .level{font-family:var(--font-mono);font-size:11px;color:var(--ink-500);margin-right:4px}.star-row{display:inline-flex;gap:4px}.star-btn{background:transparent;border:0;padding:2px;cursor:pointer;line-height:0}.star-btn svg{width:28px;height:28px}.discussion-list{display:flex;flex-direction:column;gap:16px}.discussion-msg{display:flex;gap:12px}.discussion-avatar{width:36px;height:36px;border-radius:999px;flex-shrink:0;border:1.5px solid var(--ink-1000);display:grid;place-items:center;font-family:var(--font-body);font-weight:var(--weight-bold);font-size:14px;color:var(--ink-1000)}.discussion-meta{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.discussion-author{font-family:var(--font-body);font-weight:var(--weight-bold);font-size:14px;color:var(--ink-1000)}.discussion-time{font-family:var(--font-mono);font-size:11px;color:var(--ink-500)}.discussion-text{font-family:var(--font-body);font-size:15px;color:var(--ink-900);line-height:1.5;white-space:pre-wrap;margin-top:4px}.otp-input{font-family:var(--font-mono);font-size:24px;font-weight:600;text-align:center;letter-spacing:12px;padding:14px 18px;width:100%;border:1.5px solid var(--ink-200);border-radius:var(--r-sm);background:var(--white)}.otp-input:focus{outline:none;border-color:var(--ink-1000);box-shadow:0 0 0 3px var(--vibe-yellow-soft)}.search-wrap{position:relative}.search-wrap .search-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--ink-500);pointer-events:none}.search-wrap .input{padding-left:48px;font-size:18px;padding-top:14px;padding-bottom:14px}.chip{display:inline-flex;align-items:center;padding:6px 12px;background:var(--vibe-yellow-soft);color:var(--ink-1000);border-radius:var(--r-pill);font-family:var(--font-body);font-weight:var(--weight-medium);font-size:13px}.code-block{background:var(--ink-1000);color:#fafaf7;border-radius:var(--r-sm);padding:18px 22px;font-family:var(--font-mono);font-size:13.5px;line-height:1.7;overflow-x:auto;white-space:pre}.link-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.link-list li{margin:0}.link-list a{display:inline-flex;align-items:center;padding:8px 4px;color:var(--ink-1000);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px;font-size:15px;font-weight:var(--weight-medium)}.link-list a:hover{color:var(--vibe-yellow-deep)}.footer-band{background:var(--ink-1000);color:var(--paper);padding:64px 24px;text-align:center}.footer-band .row{max-width:var(--container);margin:0 auto;display:flex;align-items:center;justify-content:center;gap:24px;flex-wrap:wrap}.footer-band .label{font-family:var(--font-body);font-weight:var(--weight-medium);font-size:18px;color:var(--paper)}.wall-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px}@media (max-width:720px){.wall-grid{grid-template-columns:1fr}}.quote-card{background:var(--white);border:2px solid var(--ink-1000);border-radius:var(--r-md);padding:var(--s-5);box-shadow:var(--shadow-stamp);display:flex;flex-direction:column;gap:14px}.quote-glyph{font-family:var(--font-display);font-weight:var(--weight-black);font-size:48px;line-height:.6;color:var(--ink-300)}.quote-body{font-family:var(--font-body);font-size:16px;color:var(--ink-900);line-height:1.55;white-space:pre-wrap}.quote-foot{display:flex;align-items:center;gap:12px;margin-top:auto}.quote-author{font-family:var(--font-body);font-weight:var(--weight-bold);font-size:14px;color:var(--ink-1000)}.quote-date{font-family:var(--font-mono);font-size:12px;color:var(--ink-500)}.admin-shell{min-height:100vh;background:var(--paper);display:flex;flex-direction:column}.admin-header{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;background:var(--ink-1000);color:var(--paper);border-bottom:2px solid var(--vibe-yellow)}.admin-header a{color:var(--paper);text-decoration:none}.admin-header a:hover{color:var(--vibe-yellow-bright)}.admin-header .brand{display:flex;align-items:center;gap:16px;font-family:var(--font-body);font-weight:var(--weight-semi);font-size:14px}.admin-header .brand .vk-mark{font-size:20px}.admin-header .meta{display:flex;align-items:center;gap:16px;font-size:14px;color:var(--paper)}.admin-header .meta .as-student{font-family:var(--font-mono);font-size:12px;color:var(--ink-300);text-transform:uppercase;letter-spacing:.08em}.admin-logout{background:transparent;border:1.5px solid var(--ink-300);color:var(--paper);border-radius:var(--r-sm);padding:8px 14px;font-family:var(--font-body);font-weight:var(--weight-semi);font-size:13px;cursor:pointer}.admin-logout:hover{border-color:var(--vibe-yellow);color:var(--vibe-yellow-bright)}.admin-body{display:flex;flex:1 1;min-height:0}.admin-sidebar{width:240px;flex-shrink:0;background:var(--paper-2);border-right:1px solid var(--border-1);padding:16px 0}.admin-sidebar nav{display:flex;flex-direction:column}.admin-sidebar a{font-family:var(--font-body);font-size:14px;font-weight:var(--weight-medium);color:var(--ink-700);padding:10px 20px;text-decoration:none;border-left:3px solid transparent;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.admin-sidebar a:hover{background:var(--paper-3);color:var(--ink-1000)}.admin-sidebar a[aria-current=page]{background:var(--paper);color:var(--ink-1000);font-weight:var(--weight-bold);border-left-color:var(--vibe-yellow)}.admin-sidebar .group-label{font-family:var(--font-body);font-weight:var(--weight-bold);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-500);padding:16px 20px 6px}.admin-main{flex:1 1;min-width:0;padding:32px 32px 80px;max-width:1200px}.admin-table{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--border-1);border-radius:var(--r-md);overflow:hidden}.admin-table thead th{font-weight:var(--weight-bold);font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-500);text-align:left;background:var(--paper-2);border-bottom:1px solid var(--border-1)}.admin-table tbody td,.admin-table thead th{font-family:var(--font-body);padding:12px 16px}.admin-table tbody td{font-size:14px;color:var(--ink-900);border-bottom:1px solid var(--ink-100)}.admin-table tbody tr:last-child td{border-bottom:0}.admin-table tbody tr:hover{background:var(--paper-2)}.admin-table a{color:var(--ink-1000);font-weight:var(--weight-semi);text-decoration:none}.admin-table a:hover{color:var(--vibe-yellow-deep);text-decoration:underline}.admin-table .mono{font-family:var(--font-mono);font-size:13px;color:var(--ink-700)}.action-row{flex-wrap:wrap;gap:12px;align-items:center}.action-row,.page-head{display:flex;margin-bottom:24px}.page-head{flex-direction:column;gap:6px}.page-head .breadcrumb{font-family:var(--font-mono);font-size:12px;color:var(--ink-500);text-transform:uppercase;letter-spacing:.08em}.page-head .breadcrumb a{color:var(--ink-500);text-decoration:none}.page-head .breadcrumb a:hover{color:var(--ink-1000)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:16px;gap:16px}.stat-card{background:var(--white);border:1px solid var(--border-1);border-radius:var(--r-md);padding:16px 20px}.stat-card .label{font-family:var(--font-body);font-weight:var(--weight-bold);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-500)}.stat-card .value{font-family:var(--font-display);font-weight:var(--weight-black);font-size:36px;letter-spacing:-.02em;color:var(--ink-1000);line-height:1.05;margin-top:4px}.upload-zone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;background:var(--paper-2);border:2px dashed var(--ink-300);border-radius:var(--r-md);text-align:center;cursor:pointer;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.upload-zone:hover{background:var(--paper-3);border-color:var(--ink-1000)}.upload-zone.drag{background:var(--vibe-yellow-soft);border-color:var(--vibe-yellow-deep);border-style:solid}.upload-zone.done,.upload-zone.uploading{cursor:default}.upload-zone input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:inherit}.upload-zone .uz-icon{width:56px;height:56px;border-radius:999px;background:var(--white);border:2px solid var(--ink-1000);display:grid;place-items:center;color:var(--ink-1000);box-shadow:4px 4px 0 0 var(--ink-1000)}.upload-zone.drag .uz-icon{background:var(--vibe-yellow);box-shadow:4px 4px 0 0 var(--vibe-yellow-deep)}.upload-zone .uz-title{font-family:var(--font-body);font-weight:var(--weight-bold);font-size:18px;color:var(--ink-1000)}.upload-zone .uz-hint{color:var(--ink-500)}.upload-zone .uz-cta,.upload-zone .uz-hint{font-family:var(--font-body);font-size:14px}.upload-zone .uz-cta{display:inline-flex;align-items:center;gap:6px;font-weight:var(--weight-bold);color:var(--ink-1000);border-bottom:2px solid var(--vibe-yellow);padding-bottom:2px}.upload-zone .uz-progress{width:min(420px,100%);height:6px;background:var(--ink-100);border-radius:999px;overflow:hidden}.upload-zone .uz-progress>span{display:block;height:100%;background:var(--vibe-yellow);transition:width var(--dur-fast) linear}.upload-zone .uz-meta{font-family:var(--font-mono);font-size:12px;color:var(--ink-500);letter-spacing:.04em}