@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,:root[data-theme=light] .auth{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#050a14;--bg-raised:#08101f;--surface:#0c1628;--surface-2:#111e35;--surface-3:#172743;--line:#92b0e41c;--line-strong:#92b0e433;--text:#e9eefa;--text-2:#a3b0c9;--text-3:#6d7c99;--accent:#35e0cf;--accent-ink:#032722;--accent-soft:#35e0cf1a;--accent-line:#35e0cf52;--blue:#5b94ff;--blue-soft:#5b94ff1f;--success:#3fd99a;--warning:#ffb547;--warning-soft:#ffb5471a;--danger:#ff6b7d;--gold:#f6c95b;--font-sans:"Inter Variable", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, monospace;--fs-xs:.75rem;--fs-sm:.875rem;--fs-md:1rem;--fs-lg:1.125rem;--fs-xl:1.375rem;--fs-2xl:clamp(1.6rem, 1.2rem + 1.6vw, 2.1rem);--fs-hero:clamp(1.9rem, 1.3rem + 2.6vw, 2.9rem);--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:22px;--r-pill:999px;--shadow-1:0 1px 0 #ffffff08 inset, 0 8px 24px -12px #0009;--shadow-2:0 1px 0 #ffffff0a inset, 0 18px 40px -18px #000000bf;--sidebar-w:248px;--content-max:1120px;--gutter:16px;--tap:44px;--bottom-nav-h:64px;--ease:cubic-bezier(.2, .7, .2, 1);--bar-bg:#050a14db;--sidebar-bg:#08101fb3;--panel-end:#0c1628bf;--empty-bg:#0c162873;--accent-hover:#5ff0e1;--lecture-fg:#9fc0ff;--lab-fg:#ffcf85;--error-fg:#ffb3bd;--course-l:70%}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f5fa;--bg-raised:#fff;--surface:#fff;--surface-2:#f1f4fa;--surface-3:#e5eaf3;--line:#16284e1a;--line-strong:#16284e2e;--text:#0e1628;--text-2:#46536b;--text-3:#76829a;--accent:#0d9488;--accent-ink:#fff;--accent-soft:#0d94881a;--accent-line:#0d948859;--accent-hover:#0b8077;--blue:#2f6fe0;--blue-soft:#2f6fe01a;--success:#15955f;--warning:#b86e00;--warning-soft:#b86e001a;--danger:#d1344a;--gold:#a87a00;--shadow-1:0 1px 2px #0f1e3c0f, 0 6px 18px -10px #0f1e3c2e;--shadow-2:0 2px 4px #0f1e3c0f, 0 18px 40px -20px #0f1e3c47;--bar-bg:#ffffffe6;--sidebar-bg:#fff;--panel-end:#fff;--empty-bg:#f7f9fc;--lecture-fg:#2856b8;--lab-fg:#8f5400;--error-fg:#b4233a;--course-l:40%}:root[data-theme=light] body{background:radial-gradient(1100px 520px at 85% -10%, #2f6fe014, transparent 60%), radial-gradient(800px 420px at -10% 110%, #0d94880f, transparent 60%), var(--bg)}:root[data-theme=light] .score-card--presidential .score-card__value{color:var(--gold);background:0 0}:root[data-theme=light] .nav-badge{color:#fff}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg)}body{min-width:320px;min-height:100dvh;font-family:var(--font-sans);font-size:var(--fs-md);color:var(--text);background:radial-gradient(1100px 520px at 85% -10%, #5b94ff17, transparent 60%), radial-gradient(800px 420px at -10% 110%, #35e0cf0d, transparent 60%), var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-attachment:fixed;margin:0;line-height:1.5;overflow-x:hidden}h1,h2,h3,p,dl,dd{margin:0}h1,h2,h3{letter-spacing:-.02em;font-weight:650;line-height:1.2}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}img,svg{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}::selection{background:#35e0cf4d}.eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);font-size:.6875rem;font-weight:500}.stack-lg{gap:var(--s-6);flex-direction:column;min-width:0;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app-shell{min-height:100dvh}.app-main{min-width:0;padding-bottom:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom) + var(--s-6))}.page{width:100%;max-width:var(--content-max);padding:var(--s-4) var(--gutter) var(--s-8);margin:0 auto}.brand{align-items:center;gap:var(--s-3);min-height:var(--tap);display:flex}.brand__text{flex-direction:column;line-height:1.15;display:flex}.brand strong{letter-spacing:.06em;font-size:1.125rem;font-weight:750}.brand small{letter-spacing:.08em;color:var(--text-3);font-size:.75rem;font-weight:600}.brand-mark__bg{fill:var(--surface-2);stroke:var(--line-strong)}.brand-mark__orbit{fill:none;stroke:var(--accent);stroke-width:1.4px;opacity:.85}.brand-mark__core{fill:var(--blue)}.brand-mark__sat{fill:var(--accent)}.mobile-topbar{z-index:20;padding:calc(var(--s-2) + env(safe-area-inset-top)) var(--gutter) var(--s-2);isolation:isolate;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.mobile-topbar:before{content:"";z-index:-1;border-bottom:1px solid var(--line);background:var(--bar-bg);-webkit-backdrop-filter:blur(16px)saturate(140%);backdrop-filter:blur(16px)saturate(140%);opacity:0;pointer-events:none;transition:opacity .2s;position:absolute;inset:0}.mobile-topbar.is-scrolled:before{opacity:1}.brand--compact strong{font-size:1rem}.bottom-nav{z-index:30;height:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom));padding:0 var(--s-1) env(safe-area-inset-bottom);isolation:isolate;grid-template-columns:repeat(5,1fr);display:grid;position:fixed;inset:auto 0 0}.bottom-nav:before{content:"";z-index:-1;border-top:1px solid var(--line);background:var(--bar-bg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);pointer-events:none;position:absolute;inset:0}.bottom-nav__item{min-width:0;color:var(--text-3);transition:color .18s var(--ease);flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:.6875rem;font-weight:550;display:flex;position:relative}.bottom-nav__item>span:not(.nav-icon){text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.bottom-nav__item:before{content:"";background:var(--accent);width:28px;height:2px;transition:transform .22s var(--ease);border-radius:0 0 2px 2px;position:absolute;top:0;left:50%;transform:translate(-50%)scaleX(0)}.bottom-nav__item.active{color:var(--text)}.bottom-nav__item.active svg{color:var(--accent)}.bottom-nav__item.active:before{transform:translate(-50%)scaleX(1)}.sidebar{display:none}@media (width>=640px){:root{--gutter:24px}}@media (width>=1024px){:root{--gutter:40px}.mobile-topbar,.bottom-nav{display:none}.app-shell{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);display:grid}.app-main{padding-bottom:var(--s-10)}.page{padding-top:var(--s-6)}.sidebar{gap:var(--s-8);height:100dvh;padding:var(--s-6) var(--s-4);background:var(--sidebar-bg);border-right:1px solid var(--line);flex-direction:column;display:flex;position:sticky;top:0}.sidebar .brand{padding:0 var(--s-2)}.side-nav{flex-direction:column;gap:2px;display:flex}.side-nav__item{align-items:center;gap:var(--s-3);min-height:42px;padding:0 var(--s-3);border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--text-2);transition:background .15s var(--ease), color .15s var(--ease);font-weight:550;display:flex}.side-nav__item:hover{color:var(--text);background:#92b0e40f}.side-nav__item.active{background:var(--accent-soft);color:var(--text);box-shadow:inset 2px 0 0 var(--accent)}.side-nav__item.active svg{color:var(--accent)}.sidebar__footer{gap:var(--s-3);flex-direction:column;margin-top:auto;display:flex}.sidebar__version{padding:0 var(--s-3);font-family:var(--font-mono);color:var(--text-3);font-size:.6875rem}}.button{justify-content:center;align-items:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-5);border-radius:var(--r-md);font-size:var(--fs-sm);white-space:nowrap;transition:transform .12s var(--ease), background .15s var(--ease), border-color .15s var(--ease), opacity .15s;border:1px solid #0000;max-width:100%;font-weight:600;display:inline-flex}.button--wrap{white-space:normal;text-align:center;padding-top:10px;padding-bottom:10px;line-height:1.3}.button:active:not(:disabled){transform:scale(.98)}.button:disabled{opacity:.45;cursor:not-allowed}.button--primary{background:var(--accent);color:var(--accent-ink)}.button--primary:hover:not(:disabled){background:var(--accent-hover)}.button--ghost{border-color:var(--line-strong);color:var(--text);background:#92b0e40d}.button--ghost:hover{background:#92b0e41a}.icon-button{width:var(--tap);height:var(--tap);border-radius:var(--r-md);color:var(--text-2);border:1px solid var(--line);background:var(--surface);place-items:center;display:inline-grid}.icon-button.active{color:var(--accent);border-color:var(--accent-line)}.text-link{min-height:32px;font-size:var(--fs-sm);color:var(--accent);background:0 0;border:0;align-items:center;gap:2px;padding:0;font-weight:550;display:inline-flex}a.text-link{min-height:40px}.text-link:hover{text-underline-offset:3px;text-decoration:underline}.back-link{align-items:center;gap:var(--s-2);min-height:36px;font-size:var(--fs-sm);color:var(--text-2);align-self:flex-start;display:inline-flex}.back-link:hover{color:var(--text)}.panel{min-width:0;padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-lg);background:linear-gradient(180deg, var(--surface) 0%, var(--panel-end) 100%);box-shadow:var(--shadow-1)}@media (width>=640px){.panel{padding:var(--s-5)}}.page-header{justify-content:space-between;align-items:flex-end;gap:var(--s-4);flex-wrap:wrap;display:flex}.page-header__text{gap:var(--s-2);flex-direction:column;min-width:0;max-width:640px;display:flex}.page-header__title{font-size:var(--fs-2xl)}.page-header__desc{font-size:var(--fs-sm);color:var(--text-2)}.page-header__actions{gap:var(--s-2);flex-wrap:wrap;display:flex}.section-title{justify-content:space-between;align-items:center;gap:var(--s-3);margin-bottom:var(--s-3);display:flex}.section-title h2{font-size:var(--fs-lg)}.section-title__end{align-items:center;gap:var(--s-3);display:flex}.section-title__meta{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3)}.tag{border-radius:var(--r-pill);font-family:var(--font-mono);letter-spacing:.02em;align-items:center;gap:6px;padding:3px 10px;font-size:.6875rem;display:inline-flex}.tag--pending{color:var(--warning);background:var(--warning-soft);border:1px solid #ffb54738}.empty-state{align-items:center;gap:var(--s-2);padding:var(--s-10) var(--s-5);text-align:center;border:1px dashed var(--line-strong);border-radius:var(--r-lg);background:var(--empty-bg);flex-direction:column;display:flex}.empty-state--compact{padding:var(--s-6) var(--s-4);background:0 0;border-style:dashed}.empty-state__icon{width:48px;height:48px;margin-bottom:var(--s-1);border-radius:var(--r-md);color:var(--text-2);background:var(--surface-2);border:1px solid var(--line);place-items:center;display:grid}.empty-state--compact .empty-state__icon{width:38px;height:38px}.empty-state__title{font-size:var(--fs-md);font-weight:600}.empty-state__text{max-width:420px;font-size:var(--fs-sm);color:var(--text-2)}.empty-state__action{margin-top:var(--s-3)}.info-note{align-items:flex-start;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--blue-soft);font-size:var(--fs-sm);color:var(--text-2);border:1px solid #5b94ff38;display:flex}.info-note svg{color:var(--blue);flex:none;margin-top:2px}.toolbar{gap:var(--s-3);flex-direction:column;display:flex}@media (width>=720px){.toolbar{flex-direction:row;justify-content:space-between;align-items:center}.toolbar .select-wrap{width:300px}}.segmented{scrollbar-width:none;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);gap:2px;max-width:100%;padding:3px;display:flex;overflow-x:auto}.segmented::-webkit-scrollbar{display:none}.segmented__item{min-height:38px;padding:0 var(--s-4);font-size:var(--fs-sm);color:var(--text-2);white-space:nowrap;transition:background .15s var(--ease), color .15s var(--ease);background:0 0;border:0;border-radius:9px;flex:1 0 auto;font-weight:550}.segmented__item:hover{color:var(--text)}.segmented__item.is-active{background:var(--surface-3);color:var(--text);box-shadow:inset 0 1px #ffffff0d,0 2px 8px #0000004d}.input{width:100%;min-height:var(--tap);padding:0 var(--s-3);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--bg-raised);font-size:var(--fs-md);color:var(--text);transition:border-color .15s var(--ease), box-shadow .15s var(--ease)}.input:hover{border-color:#92b0e452}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input[aria-invalid=true]{border-color:var(--danger)}.select-wrap{min-width:0;position:relative}.select-wrap:after{content:"";border-right:1.5px solid var(--text-3);border-bottom:1.5px solid var(--text-3);pointer-events:none;width:7px;height:7px;position:absolute;top:50%;right:14px;transform:translateY(-70%)rotate(45deg)}.select-wrap select{appearance:none;text-overflow:ellipsis;padding-right:36px}.course-code{min-width:44px;height:30px;padding:0 var(--s-2);border-radius:var(--r-sm);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--course-color,var(--accent));background:var(--course-soft,var(--accent-soft));border:1px solid var(--course-line,var(--accent-line));place-items:center;font-weight:600;display:inline-grid}.course-code--lg{border-radius:var(--r-lg);min-width:64px;height:64px;font-size:var(--fs-md)}.toggle{align-items:center;gap:var(--s-3);min-height:var(--tap);font-size:var(--fs-sm);color:var(--text-2);cursor:pointer;display:flex;position:relative}.toggle>span:first-of-type{flex:1}.toggle input{opacity:0;width:1px;height:1px;position:absolute}.toggle__track{border-radius:var(--r-pill);background:var(--surface-3);border:1px solid var(--line-strong);width:42px;height:24px;transition:background .18s var(--ease);flex:none;position:relative}.toggle__track:after{content:"";background:var(--text-2);width:16px;height:16px;transition:transform .2s var(--ease), background .2s;border-radius:50%;position:absolute;top:3px;left:3px}.toggle input:checked+.toggle__track{background:var(--accent-soft);border-color:var(--accent-line)}.toggle input:checked+.toggle__track:after{background:var(--accent);transform:translate(18px)}.toggle input:focus-visible+.toggle__track{outline:2px solid var(--accent);outline-offset:2px}.page-loading{gap:var(--s-3);padding-top:var(--s-2);flex-direction:column;display:flex}.page-loading span{border-radius:var(--r-lg);background:linear-gradient(90deg, var(--surface) 0%, var(--surface-2) 50%, var(--surface) 100%);background-size:200% 100%;height:72px;animation:1.4s ease-in-out infinite skeleton}.page-loading span:first-child{width:60%;height:48px}.hero{isolation:isolate;padding:var(--s-6) var(--s-5);border:1px solid var(--line-strong);border-radius:var(--r-xl);background:linear-gradient(135deg, var(--blue-soft) 0%, transparent 55%), linear-gradient(180deg, var(--surface-2) 0%, var(--surface) 100%);box-shadow:var(--shadow-2);position:relative;overflow:hidden}.hero__grid{z-index:-1;background-image:linear-gradient(#92b0e40f 1px,#0000 1px),linear-gradient(90deg,#92b0e40f 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 90% at 85% 40%,#000 0%,#0000 70%);mask-image:radial-gradient(70% 90% at 85% 40%,#000 0%,#0000 70%)}.hero__orbit{z-index:-1;opacity:.55;width:240px;height:240px;position:absolute;top:-40px;right:-70px}.hero__ring{border:1px solid var(--line-strong);border-radius:50%;position:absolute;inset:0}.hero__ring--inner{border-color:#35e0cf40;inset:50px}.hero__planet{background:radial-gradient(circle at 35% 30%,#8fb6ff,#2b57b8 60%,#142a5c);border-radius:50%;position:absolute;inset:92px;box-shadow:0 0 40px #5b94ff40}.hero__sat{animation:22s linear infinite orbit;position:absolute;inset:0}.hero__sat:after{content:"";background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 4px var(--accent-soft);border-radius:50%;position:absolute;top:50%;left:-4px}@keyframes orbit{to{transform:rotate(360deg)}}.hero__content{gap:var(--s-3);flex-direction:column;max-width:520px;display:flex}.hero__title{font-size:var(--fs-hero);letter-spacing:-.03em;font-weight:700}.hero__text{max-width:440px;font-size:var(--fs-sm);color:var(--text-2)}.hero__actions{gap:var(--s-2);margin-top:var(--s-2);flex-wrap:wrap;display:flex}@media (width>=640px){.hero{padding:var(--s-10) var(--s-8)}.hero__orbit{opacity:1;width:280px;height:280px;margin-top:-140px;top:50%;right:24px}.hero__ring--inner{inset:58px}.hero__planet{inset:108px}.hero__text{font-size:var(--fs-md)}}@media (width<=400px){.hero__actions .button{flex:100%}}.home-columns{gap:var(--s-4);display:grid}@media (width>=820px){.home-columns{grid-template-columns:1fr 1fr}}.course-grid{gap:var(--s-3);display:grid}@media (width>=560px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1180px){.course-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.course-card{gap:var(--s-2);min-width:0;padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);transition:border-color .18s var(--ease), transform .18s var(--ease), background .18s var(--ease);flex-direction:column;display:flex;position:relative}.course-card:before{content:"";background:var(--course-color);opacity:.7;border-radius:0 2px 2px 0;width:2px;position:absolute;top:18px;bottom:18px;left:0}.course-card:hover{border-color:var(--course-line);background:var(--surface-2)}@media (hover:hover){.course-card:hover{transform:translateY(-2px)}}.course-card:active{transform:scale(.99)}.course-card__top{justify-content:space-between;align-items:center;display:flex}.course-card__arrow{color:var(--text-3);transition:color .18s, transform .18s var(--ease)}.course-card:hover .course-card__arrow{color:var(--course-color);transform:translate(2px,-2px)}.course-card__name{margin-top:var(--s-1);font-size:var(--fs-md);overflow-wrap:anywhere;font-weight:600}.course-card__teacher{font-size:var(--fs-sm);color:var(--text-2)}.course-card__meta{gap:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--line);grid-template-columns:1fr 1fr;margin-top:auto;display:grid}.course-card__meta dt{color:var(--text-3);font-size:.6875rem}.course-card__meta dd{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-2)}.course-hero{align-items:center;gap:var(--s-4);padding:var(--s-5);border:1px solid var(--course-line);border-radius:var(--r-xl);background:linear-gradient(135deg, var(--course-soft) 0%, transparent 70%), var(--surface);display:flex}.course-hero__title{font-size:var(--fs-xl);overflow-wrap:anywhere}.course-hero__teacher{margin-top:var(--s-1);font-size:var(--fs-sm);color:var(--text-2);align-items:center;gap:6px;display:flex}@media (width>=640px){.course-hero{padding:var(--s-8)}.course-hero__title{font-size:var(--fs-2xl)}}.chip-nav{gap:var(--s-2);margin:0 calc(var(--gutter) * -1);padding:0 var(--gutter) 2px;scrollbar-width:none;display:flex;overflow-x:auto}.chip-nav::-webkit-scrollbar{display:none}.chip-nav a{min-height:36px;padding:0 var(--s-4);border:1px solid var(--line-strong);border-radius:var(--r-pill);font-size:var(--fs-sm);color:var(--text-2);flex:none;align-items:center;display:inline-flex}.chip-nav a:hover{color:var(--text);border-color:var(--accent-line)}.detail-grid{gap:var(--s-4);display:grid}.detail-grid>section{scroll-margin-top:80px}@media (width>=820px){.detail-grid{grid-template-columns:1fr 1fr}.detail-grid__wide{grid-column:1/-1}}.week-strip{gap:var(--s-2);grid-template-columns:repeat(6,minmax(0,1fr));display:grid}.week-strip__day{min-height:58px;padding:var(--s-2) 0;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);font-size:var(--fs-sm);color:var(--text-2);transition:border-color .15s var(--ease), background .15s var(--ease);flex-direction:column;align-items:center;gap:2px;font-weight:600;display:flex;position:relative}.week-strip__day small{font-family:var(--font-mono);color:var(--text-3);font-size:.6875rem;font-weight:500}.week-strip__day.is-today:after{content:"";background:var(--accent);border-radius:50%;width:5px;height:5px;position:absolute;top:6px;right:6px}.week-strip__day.is-selected{border-color:var(--accent-line);background:var(--accent-soft);color:var(--text)}.week-strip__day.is-selected small{color:var(--accent)}.day-head{align-items:center;gap:var(--s-2);margin-bottom:var(--s-3);display:flex}.day-head h2{font-size:var(--fs-lg)}.day-head__tag{border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent);font-size:var(--fs-xs);padding:2px 8px;font-weight:600}.day-head__count{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3);margin-left:auto}.session-list{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.session{gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);transition:opacity .2s,border-color .2s;display:flex;position:relative}.session:before{content:"";background:var(--course-color);border-radius:0 3px 3px 0;width:3px;position:absolute;top:12px;bottom:12px;left:0}.session--past{opacity:.5}.session--next{border-color:var(--course-line);background:linear-gradient(90deg, var(--course-soft), transparent 70%), var(--bg-raised)}.session__time{width:52px;padding-left:var(--s-1);flex-direction:column;flex:none;align-items:flex-start;display:flex}.session__time strong{font-family:var(--font-mono);font-size:var(--fs-md);font-variant-numeric:tabular-nums}.session__time small{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3)}.session__now{border-radius:var(--r-pill);background:var(--course-color);color:var(--accent-ink);letter-spacing:.02em;margin-top:4px;padding:1px 6px;font-size:.625rem;font-weight:700}.session__body{flex:1;min-width:0}.session__course{font-size:var(--fs-sm);overflow-wrap:anywhere;font-weight:600;line-height:1.35;display:block}.session__course:hover{color:var(--course-color)}.session__meta{align-items:center;gap:4px var(--s-3);font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;margin-top:6px;display:flex}.session__meta>span{align-items:center;gap:4px;display:inline-flex}.session__type{border-radius:var(--r-pill);padding:1px 8px;font-weight:600}.session__type--lecture{background:var(--blue-soft);color:var(--lecture-fg)}.session__type--lab{color:var(--lab-fg);background:#ffb5471f}.session__room{font-family:var(--font-mono);color:var(--text-2)}.course-week{gap:var(--s-4);display:grid}@media (width>=820px){.course-week{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}}.course-week__day h3{margin-bottom:var(--s-2);font-size:var(--fs-sm);color:var(--text-2)}.prose{font-size:var(--fs-sm);color:var(--text-2);white-space:pre-line}.skeleton-list{gap:var(--s-2);flex-direction:column;display:flex}.skeleton-list span{border-radius:var(--r-md);background:linear-gradient(90deg, var(--surface) 0%, var(--surface-2) 50%, var(--surface) 100%);background-size:200% 100%;height:64px;animation:1.4s ease-in-out infinite skeleton}.skeleton-list--compact span{height:48px}@keyframes skeleton{0%{background-position:100% 0}to{background-position:-100% 0}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.gpa-layout{gap:var(--s-4);grid-template-areas:"score""courses""extra";display:grid}.gpa-score{grid-area:score}.gpa-courses{grid-area:courses}.gpa-extra{gap:var(--s-3);flex-direction:column;grid-area:extra;display:flex}@media (width>=1280px){.gpa-layout{grid-template:"courses score""courses extra"1fr/minmax(0,1fr) 340px;align-items:start}.gpa-score{top:var(--s-6);position:sticky}}.gpa-courses{gap:var(--s-3);flex-direction:column;display:flex}.gpa-row{gap:var(--s-3);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);display:grid}.gpa-row__head{align-items:center;gap:var(--s-3);min-width:0;display:flex}.gpa-row__name{font-size:var(--fs-sm);overflow-wrap:anywhere;font-weight:600}.gpa-row__inputs{gap:var(--s-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.score-field{flex-direction:column;gap:4px;min-width:0;display:flex}.score-field>span{font-family:var(--font-mono);color:var(--text-3);font-size:.6875rem}.input--score{padding:0 var(--s-2);text-align:center;font-family:var(--font-mono);font-variant-numeric:tabular-nums;-moz-appearance:textfield}.input--score::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.input--score::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.gpa-row__result{justify-content:space-between;align-items:baseline;gap:var(--s-2);padding-top:var(--s-3);border-top:1px solid var(--line);font-size:var(--fs-sm);color:var(--text-3);display:flex}.gpa-row__result strong{font-family:var(--font-mono);font-size:var(--fs-lg);font-variant-numeric:tabular-nums;color:var(--course-color)}.gpa-row__result small{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3)}.gpa-row__result--invalid{color:var(--danger)}@media (width>=720px){.gpa-row{grid-template-columns:minmax(0,1.3fr) minmax(0,1.5fr) 110px;align-items:center}.gpa-row__result{text-align:right;border-top:0;flex-direction:column;align-items:flex-end;gap:0;padding-top:0}}.score-card{gap:var(--s-1);padding:var(--s-6) var(--s-5);border:1px solid var(--line-strong);border-radius:var(--r-xl);background:linear-gradient(180deg, var(--surface-2), var(--surface));box-shadow:var(--shadow-2);transition:border-color .4s var(--ease), box-shadow .4s var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.score-card__value{font-family:var(--font-mono);letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:clamp(2.6rem,2rem + 3vw,3.4rem);font-weight:600;line-height:1.1}.score-card__scale{font-size:var(--fs-xs);color:var(--text-3)}.score-card__hint{margin-top:var(--s-3);font-size:var(--fs-xs);color:var(--text-3)}.score-card--scholarship{border-color:var(--accent-line)}.score-card--scholarship .score-card__value{color:var(--accent)}.score-card--presidential{box-shadow:var(--shadow-2), 0 0 0 1px #f6c95b1f, 0 20px 50px -25px #f6c95b73;border-color:#f6c95b73}.score-card--presidential .score-card__value{background:linear-gradient(120deg, #ffe7a3, var(--gold) 40%, #fff3cf 55%, var(--gold) 70%);color:#0000;animation:shimmer 3.2s var(--ease) infinite;background-size:250% 100%;-webkit-background-clip:text;background-clip:text}.score-card--presidential:before{content:"";pointer-events:none;background:radial-gradient(400px 160px at 50% -20%,#f6c95b29,#0000 70%);position:absolute;inset:0}@keyframes shimmer{0%{background-position:100% 0}60%,to{background-position:0 0}}.reward{gap:var(--s-3);margin-top:var(--s-4);padding:var(--s-3);border-radius:var(--r-md);background:var(--accent-soft);border:1px solid var(--accent-line);animation:rise .45s var(--ease);display:flex}.reward svg{color:var(--accent);flex:none;margin-top:1px}.reward strong{font-size:var(--fs-sm)}.reward p{font-size:var(--fs-xs);color:var(--text-2)}.score-card--presidential .reward{background:#f6c95b1a;border-color:#f6c95b59}.score-card--presidential .reward svg{color:var(--gold)}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.formula{gap:var(--s-3);flex-direction:column;display:flex}.formula__expr{padding:var(--s-3);border-radius:var(--r-md);background:var(--bg-raised);border:1px solid var(--line);font-family:var(--font-mono);font-size:var(--fs-sm);overflow-wrap:anywhere}.formula__legend{gap:var(--s-1);margin:0;padding:0;list-style:none;display:grid}.formula__legend li{font-size:var(--fs-sm);color:var(--text-2);justify-content:space-between;display:flex}.formula__legend strong{font-family:var(--font-mono);color:var(--text)}.formula__note{font-size:var(--fs-xs);color:var(--text-3)}.toggles{gap:var(--s-1);flex-direction:column;display:flex}.feature-list{gap:var(--s-3);display:grid}@media (width>=720px){.feature-list{grid-template-columns:1fr 1fr}}.feature-list__item{gap:var(--s-3);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);display:flex}.feature-list__item svg{color:var(--accent);flex:none;margin-top:2px}.feature-list__item strong{font-size:var(--fs-sm)}.feature-list__item p{font-size:var(--fs-sm);color:var(--text-2)}.grade-chip{font-family:var(--font-mono);font-size:var(--fs-md);color:var(--course-color);white-space:nowrap}.grade-chip b{margin-right:4px}.gpa-scale summary{cursor:pointer;font-size:var(--fs-sm);color:var(--accent)}.gpa-scale table{width:100%;margin-top:var(--s-2);border-collapse:collapse;font-family:var(--font-mono);font-size:var(--fs-xs)}.gpa-scale td{border-bottom:1px solid var(--line);color:var(--text-2);padding:4px 0}.gpa-scale td:nth-child(2){color:var(--text);font-weight:600}.gpa-scale td:last-child{text-align:right}.session--now{border-color:var(--course-color);background:linear-gradient(90deg, var(--course-soft), transparent 80%), var(--bg-raised);box-shadow:0 0 0 1px var(--course-line), 0 8px 24px -14px var(--course-color);overflow:hidden}.session--now:before{width:4px;top:0;bottom:0}.session__now--live{align-items:center;gap:4px;display:inline-flex}.session__now--live:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px;animation:1.6s ease-in-out infinite live-pulse}@keyframes live-pulse{50%{opacity:.25}}.session__left{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--course-color);font-weight:600}.session__progress{background:var(--course-soft);height:3px;position:absolute;bottom:0;left:0;right:0}.session__progress span{background:var(--course-color);height:100%;transition:width 1s linear;display:block}.splash{justify-content:center;align-items:center;gap:var(--s-4);flex-direction:column;min-height:100dvh;display:flex}.splash .brand-mark{animation:pulse 1.6s var(--ease) infinite}.splash__text{font-size:var(--fs-sm);color:var(--text-3)}@keyframes pulse{50%{opacity:.5;transform:scale(.96)}}.auth{isolation:isolate;background:var(--bg);min-height:100dvh;position:relative;overflow:hidden}.auth__media,.auth__shade{z-index:-2;position:absolute;inset:0}.auth__media img{object-fit:cover;object-position:50% 0%;width:100%;height:100%;animation:30s ease-in-out infinite alternate auth-drift}@keyframes auth-drift{0%{transform:scale(1.04)}to{transform:scale(1.1)translate(-1%,.5%)}}.auth__shade{z-index:-1;background:linear-gradient(180deg, #050a140d 0%, #050a1459 32%, #050a14eb 58%, var(--bg) 78%)}.auth__inner{justify-content:flex-end;align-items:center;gap:var(--s-4);min-height:100dvh;padding:calc(34dvh + env(safe-area-inset-top)) var(--gutter) calc(var(--s-6) + env(safe-area-inset-bottom));flex-direction:column;display:flex}.auth__card{width:100%;max-width:420px;padding:var(--s-6) var(--s-5);border-radius:var(--r-xl);-webkit-backdrop-filter:blur(20px)saturate(1.3);animation:rise .5s var(--ease);background:#09101fb8;border:1px solid #92b0e42e;box-shadow:0 30px 80px -30px #000000d9,inset 0 1px #ffffff0f}@media (width>=480px){.auth__card{padding:var(--s-8)}}@media (width>=720px){.auth__media img{object-position:70% 50%}.auth__shade{background:linear-gradient(90deg,#050a14e0 0%,#050a148c 38%,#050a140d 70%),linear-gradient(#0000 70%,#050a1499 100%)}.auth__inner{padding:var(--s-10) clamp(24px, 7vw, 120px);justify-content:center;align-items:flex-start}}.auth__brand{align-items:center;gap:var(--s-3);margin-bottom:var(--s-6);display:flex}.auth__brand strong{letter-spacing:.06em;font-size:1.125rem;display:block}.auth__brand small{letter-spacing:.08em;color:var(--text-3);font-size:.75rem;font-weight:600}.auth__title{font-size:var(--fs-2xl)}.auth__subtitle{margin-top:var(--s-2);font-size:var(--fs-sm);color:var(--text-2)}.auth__footer{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--line);font-size:var(--fs-sm);color:var(--text-2)}.auth__footer .text-link{min-height:0}.auth__program{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#e9eefa8c;text-align:center;font-size:.6875rem}@media (width>=720px){.auth__program{width:100%;max-width:420px}}.code-field{align-items:stretch;gap:var(--s-3);display:flex}.code-field__input{flex:0 0 88px}.code-field__name{align-items:center;gap:var(--s-2);min-width:0;padding:0 var(--s-3);border:1px dashed var(--line-strong);border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--text-3);transition:border-color .2s var(--ease), background .2s var(--ease);flex:1;display:flex}.code-field__name strong{text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:var(--fs-md);overflow:hidden}.code-field__name--found{border-style:solid;border-color:var(--accent-line);background:var(--accent-soft);animation:rise .3s var(--ease)}.code-field__name--missing{color:var(--error-fg);border-style:solid;border-color:#ff6b7d59}.code-field__check{color:var(--accent);flex:none;margin-left:auto}.code-field__dots{letter-spacing:.2em;animation:1s ease-in-out infinite pulse}.avatar--sm{width:26px;height:26px;font-size:var(--fs-xs)}.form{gap:var(--s-4);margin-top:var(--s-6);flex-direction:column;display:flex}.form__row{align-items:flex-end;gap:var(--s-3);display:flex}.field{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.field--narrow{flex:0 0 88px}.field__label{font-size:var(--fs-sm);color:var(--text-2);font-weight:550}.field__hint{font-size:var(--fs-xs);color:var(--text-3)}.input--code{font-family:var(--font-mono);letter-spacing:.08em;text-align:center;font-size:1.125rem}.input-affix{position:relative}.input-affix .input{padding-right:48px}.input-affix__button{width:var(--tap);height:var(--tap);color:var(--text-3);background:0 0;border:0;place-items:center;display:grid;position:absolute;top:0;right:0}.input-affix__button:hover{color:var(--text)}.form__error{padding:var(--s-3) var(--s-4);border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--error-fg);background:#ff6b7d14;border:1px solid #ff6b7d4d}.button--block{width:100%}.button--sm{min-height:38px;padding:0 var(--s-3);font-size:var(--fs-xs)}.avatar{width:34px;height:34px;font-weight:650;font-size:var(--fs-sm);color:var(--accent-ink);background:linear-gradient(140deg, var(--accent), var(--blue));border-radius:50%;flex:none;place-items:center;display:inline-grid}.avatar--lg{width:64px;height:64px;font-size:var(--fs-xl)}.avatar-button{width:var(--tap);height:var(--tap);border-radius:50%;place-items:center;display:grid}.avatar-button.active .avatar{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent)}.user-chip{align-items:center;gap:var(--s-3);padding:var(--s-2);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);display:flex}.user-chip:hover,.user-chip.active{border-color:var(--accent-line)}.user-chip__text{flex-direction:column;min-width:0;line-height:1.25;display:flex}.user-chip__text strong{font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.user-chip__text small{font-family:var(--font-mono);color:var(--text-3);font-size:.6875rem}.tag{border:1px solid var(--line-strong);color:var(--text-2)}.tag--admin{margin-left:var(--s-2);color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.status{font-size:var(--fs-xs)}.status:before{content:"";vertical-align:middle;background:currentColor;border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}.status--ok{color:var(--success)}.status--pending{color:var(--warning)}.status--idle{color:var(--text-3)}.muted{color:var(--text-3);font-size:var(--fs-sm)}.small{font-size:var(--fs-xs)}.profile-card{align-items:center;gap:var(--s-4);padding:var(--s-5);border:1px solid var(--line-strong);border-radius:var(--r-xl);background:linear-gradient(135deg, #35e0cf14, transparent 60%), var(--surface);display:flex}.profile-card__name{font-size:var(--fs-xl)}.profile-card__program{font-size:var(--fs-sm);color:var(--text-2)}.profile-card__tags{gap:var(--s-2);margin-top:var(--s-2);flex-wrap:wrap;display:flex}.profile-card__tags .tag--admin{margin-left:0}.info-list{padding-top:var(--s-1);padding-bottom:var(--s-1);gap:0;display:grid}.info-list>div{justify-content:space-between;gap:var(--s-3);padding:var(--s-3) 0;border-bottom:1px solid var(--line);font-size:var(--fs-sm);display:flex}.info-list>div:last-child{border-bottom:0}.info-list dt{color:var(--text-2)}.info-list dd{text-align:right;font-weight:600}.action-list{padding:var(--s-1) var(--s-2);flex-direction:column;display:flex}.action-list__item{align-items:center;gap:var(--s-3);min-height:52px;padding:0 var(--s-2);border:0;border-bottom:1px solid var(--line);font-size:var(--fs-sm);text-align:left;color:var(--text);background:0 0;display:flex}.action-list__item:last-child{border-bottom:0}.action-list__item>span{flex:1}.action-list__item svg{color:var(--text-2);flex:none}.action-list__item--static{color:var(--text-2);cursor:default;padding-top:var(--s-3);padding-bottom:var(--s-3)}.action-list__item--danger,.action-list__item--danger svg{color:var(--danger)}.roster{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.roster__row{align-items:center;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);display:flex}.roster__code{width:40px;font-family:var(--font-mono);font-size:var(--fs-sm);text-align:center;color:var(--text-2);flex:none}.roster__main{flex:1;min-width:0}.roster__main strong{font-size:var(--fs-sm)}.roster__meta{gap:4px var(--s-3);font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;margin-top:2px;display:flex}@media (width<=420px){.roster__row .button span{display:none}}.issued{gap:var(--s-3);padding:var(--s-5);border:1px solid var(--accent-line);border-radius:var(--r-xl);background:linear-gradient(180deg, #35e0cf14, var(--surface));box-shadow:var(--shadow-2);animation:rise .35s var(--ease);flex-direction:column;display:flex}.issued__head{justify-content:space-between;align-items:flex-start;gap:var(--s-3);display:flex}.issued__head h2{font-size:var(--fs-lg);margin-top:4px}.issued__code{padding:var(--s-4);border-radius:var(--r-md);background:var(--bg-raised);border:1px dashed var(--accent-line);font-family:var(--font-mono);letter-spacing:.12em;text-align:center;color:var(--accent);-webkit-user-select:all;user-select:all;font-size:clamp(1.6rem,1.2rem + 2vw,2.2rem);font-weight:600}.issued__note{font-size:var(--fs-xs);color:var(--text-2)}.admin-tabs{gap:var(--s-2);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);align-self:flex-start;padding:3px;display:flex}.admin-tabs__item{align-items:center;gap:var(--s-2);min-height:38px;padding:0 var(--s-4);font-size:var(--fs-sm);color:var(--text-2);border-radius:9px;font-weight:550;display:inline-flex}.admin-tabs__item.active{background:var(--surface-3);color:var(--text)}.admin-tabs__item.active svg{color:var(--accent)}.admin-sessions{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.admin-session{align-items:center;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);display:flex;position:relative}.admin-session:before{content:"";background:var(--course-color);border-radius:0 3px 3px 0;width:3px;position:absolute;top:12px;bottom:12px;left:0}.admin-session__time{width:56px;padding-left:var(--s-1);font-family:var(--font-mono);flex:none;font-weight:600}.admin-session__time small{font-size:var(--fs-xs);color:var(--text-3);font-weight:400;display:block}.admin-session__body{flex:1;min-width:0}.admin-session__body strong{font-size:var(--fs-sm);overflow-wrap:anywhere;display:block}.admin-session__actions{gap:var(--s-1);display:flex}.admin-session__actions .icon-button{width:38px;height:38px}.icon-button--danger:hover{color:var(--danger);border-color:#ff6b7d59}.form-grid{gap:var(--s-3);grid-template-columns:1fr 1fr 1fr;display:grid}@media (width<=380px){.form-grid{grid-template-columns:1fr 1fr}.form-grid>:last-child{grid-column:1/-1}}.end-tool{align-items:center;gap:var(--s-3);background:linear-gradient(90deg, var(--warning-soft), transparent 70%), var(--surface);border-color:#ffb5474d;flex-wrap:wrap;display:flex}.end-tool>svg{color:var(--warning)}.end-tool__text{flex:220px;min-width:0}.end-tool__text strong{font-size:var(--fs-sm)}.end-tool__text p{font-size:var(--fs-xs);color:var(--text-2)}.end-tool__message{margin-top:4px;color:var(--accent)!important}.end-tool__form{align-items:center;gap:var(--s-2);font-size:var(--fs-sm);color:var(--text-2);display:flex}.end-tool__input{text-align:center;width:64px;min-height:38px;font-family:var(--font-mono)}.usage{gap:var(--s-2);flex-direction:column;display:flex}.usage--loading{border-radius:var(--r-lg);background:linear-gradient(90deg, var(--surface) 0%, var(--surface-2) 50%, var(--surface) 100%);background-size:200% 100%;height:92px;animation:1.4s ease-in-out infinite skeleton}.usage__head{align-items:center;gap:var(--s-2);font-size:var(--fs-sm);display:flex}.usage__head svg{color:var(--accent)}.usage__numbers{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-2);margin-left:auto}.usage__bar{border-radius:var(--r-pill);background:var(--surface-3);height:8px;overflow:hidden}.usage__bar span{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--blue));height:100%;display:block}.usage--warn{border-color:#ffb54766}.usage--warn .usage__bar span{background:linear-gradient(90deg, var(--warning), var(--danger))}.usage__note{font-size:var(--fs-xs);color:var(--text-3)}.usage__warning{font-size:var(--fs-xs);color:var(--warning)}.divider{align-items:center;gap:var(--s-3);font-size:var(--fs-xs);color:var(--text-3);display:flex}.divider:before,.divider:after{content:"";background:var(--line);flex:1;height:1px}.passkeys{align-items:flex-start;gap:var(--s-3);flex-direction:column;display:flex}.passkeys__list{gap:var(--s-2);flex-direction:column;width:100%;margin:0;padding:0;list-style:none;display:flex}.passkeys__list li{align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);display:flex}.passkeys__list svg{color:var(--accent)}.passkeys__name{font-size:var(--fs-sm);flex-direction:column;flex:1;font-weight:600;display:flex}.passkeys__name small{font-weight:400;font-size:var(--fs-xs);color:var(--text-3)}.passkeys__ok{font-size:var(--fs-sm);color:var(--success)}.install-steps{padding-left:var(--s-5);gap:var(--s-2);font-size:var(--fs-sm);color:var(--text-2);flex-direction:column;margin:0;display:flex}.install-steps svg{vertical-align:-2px;color:var(--accent);display:inline}.guest-link{margin-top:var(--s-4);border:1px dashed var(--line-strong);border-radius:var(--r-md);min-height:40px;color:var(--text-2);font-size:var(--fs-sm);justify-content:center;align-items:center;gap:6px;display:flex}.guest-link:hover{color:var(--text);border-color:var(--accent-line)}.guest{min-height:100dvh}.guest__bar{z-index:20;padding:calc(var(--s-2) + env(safe-area-inset-top)) var(--gutter) var(--s-2);isolation:isolate;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.guest__bar:before{content:"";z-index:-1;border-bottom:1px solid var(--line);background:var(--bar-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:none;position:absolute;inset:0}.guest__main{max-width:var(--content-max);padding:var(--s-5) var(--gutter) var(--s-10);gap:var(--s-5);flex-direction:column;margin:0 auto;display:flex}.guest-stats{gap:var(--s-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.guest-stats div{padding:var(--s-4) var(--s-2);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);text-align:center;flex-direction:column;align-items:center;display:flex}.guest-stats strong{font-family:var(--font-mono);font-size:var(--fs-2xl);color:var(--accent)}.guest-stats span{font-size:var(--fs-xs);color:var(--text-2)}.guest-grid{gap:var(--s-3);display:grid}@media (width>=760px){.guest-grid{grid-template-columns:1fr 1fr}.guest-card--wide{grid-column:1/-1}}.guest-card{gap:var(--s-3);flex-direction:column;display:flex}.guest-card__head{align-items:center;gap:var(--s-3);display:flex}.guest-card__head h2{font-size:var(--fs-md);flex:1}.guest-card__icon{border-radius:var(--r-sm);background:var(--accent-soft);width:36px;height:36px;color:var(--accent);place-items:center;display:grid}.guest-card__count{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap}.guest-card__count b{font-family:var(--font-mono);font-size:var(--fs-md);color:var(--text)}.guest-card p{font-size:var(--fs-sm);color:var(--text-2)}.guest-preview{padding:var(--s-3);border-radius:var(--r-md);background:var(--bg-raised);flex-direction:column;gap:6px;display:flex;position:relative;overflow:hidden}.guest-preview>span{background:var(--surface-3);filter:blur(1px);border-radius:6px;height:14px}.guest-preview>span:nth-child(2){width:75%}.guest-preview>span:nth-child(3){width:55%}.guest-preview__lock{font-size:var(--fs-xs);color:var(--text-2);-webkit-backdrop-filter:blur(2px);justify-content:center;align-items:center;gap:6px;font-weight:600;display:flex;position:absolute;inset:0}.guest-gpa{gap:var(--s-3);flex-direction:column;display:flex}.guest-gpa__inputs{gap:var(--s-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.guest-gpa__result{padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--accent-soft);justify-content:space-between;align-items:baseline;display:flex}.guest-gpa__result strong{font-family:var(--font-mono);font-size:var(--fs-xl);color:var(--accent)}.guest-gpa__result span{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-2)}.guest-note{gap:var(--s-3);display:flex}.guest-note svg{color:var(--accent);flex:none}.guest-note p{font-size:var(--fs-sm);color:var(--text-2)}.guest__foot{font-size:var(--fs-sm);color:var(--text-2);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:flex}.photo-grid{gap:var(--s-2);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}@media (width>=560px){.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=1024px){.photo-grid{gap:var(--s-3);grid-template-columns:repeat(4,minmax(0,1fr))}}.photo-grid--compact{grid-template-columns:repeat(3,minmax(0,1fr))}@media (width>=1024px){.photo-grid--compact{grid-template-columns:repeat(6,minmax(0,1fr))}}.photo-tile{aspect-ratio:4/3;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);cursor:zoom-in;width:100%;padding:0;display:block;position:relative;overflow:hidden}.photo-tile img,.photo-tile__missing{object-fit:cover;width:100%;height:100%;transition:transform .35s var(--ease);display:block}@media (hover:hover){.photo-tile:hover img{transform:scale(1.04)}}.photo-tile__info{justify-content:space-between;align-items:center;gap:var(--s-2);padding:var(--s-5) var(--s-2) var(--s-2);background:linear-gradient(#0000,#03070fd9);font-size:.6875rem;display:flex;position:absolute;inset:auto 0 0}.photo-tile__code{font-family:var(--font-mono);color:var(--course-color);font-weight:600}.photo-tile__type{border-radius:var(--r-pill);white-space:nowrap;padding:1px 6px;font-weight:600}.photo-tile__type--lecture{color:#cfe0ff;background:#5b94ff40}.photo-tile__type--lab{color:#ffe2b3;background:#ffb54740}.photo-tile--skeleton{cursor:default;background:linear-gradient(90deg, var(--surface) 0%, var(--surface-2) 50%, var(--surface) 100%);background-size:200% 100%;animation:1.4s ease-in-out infinite skeleton}.modal{z-index:100;-webkit-backdrop-filter:blur(4px);background:#02050cb3;justify-content:center;align-items:flex-end;animation:.2s fade;display:flex;position:fixed;inset:0}.modal__panel{overscroll-behavior:contain;width:100%;max-width:520px;max-height:92dvh;padding:var(--s-5) var(--s-5) calc(var(--s-5) + env(safe-area-inset-bottom));border:1px solid var(--line-strong);border-radius:var(--r-xl) var(--r-xl) 0 0;background:var(--surface);animation:sheet-up .28s var(--ease);border-bottom:0;overflow-y:auto;box-shadow:0 -20px 60px #0009}.modal__panel:focus{outline:none}@media (width>=640px){.modal{padding:var(--s-6);align-items:center}.modal__panel{border-bottom:1px solid var(--line-strong);border-radius:var(--r-xl);padding-bottom:var(--s-6);animation:rise .25s var(--ease)}}.modal__head{margin-bottom:var(--s-4);justify-content:space-between;align-items:center;display:flex}.modal__head h2{font-size:var(--fs-lg)}@keyframes fade{0%{opacity:0}}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}}.upload{gap:var(--s-4);flex-direction:column;display:flex}.upload__pickers{gap:var(--s-3);grid-template-columns:1fr 1fr;display:grid}.upload__picker{justify-content:center;align-items:center;gap:var(--s-2);border:1px dashed var(--accent-line);border-radius:var(--r-lg);background:var(--accent-soft);min-height:92px;color:var(--accent);font-size:var(--fs-sm);transition:background .15s var(--ease), transform .12s var(--ease);flex-direction:column;font-weight:600;display:flex}.upload__picker:hover{background:#35e0cf29}.upload__picker:active{transform:scale(.98)}.upload__previews{gap:var(--s-2);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.upload__previews li{aspect-ratio:1;border-radius:var(--r-sm);border:1px solid var(--line);position:relative;overflow:hidden}.upload__previews img{object-fit:cover;width:100%;height:100%}.upload__previews button{color:#fff;background:#03070fcc;border:0;border-radius:50%;place-items:center;width:24px;height:24px;display:grid;position:absolute;top:4px;right:4px}.input--textarea{min-height:72px;padding:var(--s-3);resize:vertical;line-height:1.45}.field__hint--right{text-align:right}.progress{border-radius:var(--r-pill);background:var(--surface-3);height:4px;overflow:hidden}.progress span{background:var(--accent);height:100%;transition:width .3s var(--ease);display:block}.viewer{z-index:110;background:#02040a;grid-template-rows:auto 1fr auto;animation:.2s fade;display:grid;position:fixed;inset:0}.viewer__top{padding:calc(var(--s-3) + env(safe-area-inset-top)) var(--s-4) var(--s-3);justify-content:space-between;align-items:center;display:flex}.viewer__counter{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-2)}.viewer__actions{gap:var(--s-2);display:flex}.icon-button--glass{color:var(--text);background:#ffffff0f;border-color:#ffffff1a}.viewer__stage{min-height:0;padding:0 var(--s-2);touch-action:pan-y pinch-zoom;justify-content:center;align-items:center;display:flex;position:relative}.viewer__stage img{object-fit:contain;border-radius:var(--r-sm);max-width:100%;max-height:100%;animation:.25s fade}.viewer__stage img.is-preview{filter:blur(2px)}.viewer__nav{color:#fff;background:#03070f99;border:1px solid #ffffff1f;border-radius:50%;place-items:center;width:44px;height:44px;margin-top:-22px;display:grid;position:absolute;top:50%}.viewer__nav--prev{left:var(--s-3)}.viewer__nav--next{right:var(--s-3)}@media (hover:none){.viewer__nav{display:none}}.viewer__error{color:var(--text-2)}.viewer__info{padding:var(--s-4) var(--s-5) calc(var(--s-5) + env(safe-area-inset-bottom));border-top:1px solid #ffffff0f}.viewer__info strong{font-size:var(--fs-md)}.viewer__meta{align-items:center;gap:4px var(--s-3);font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;margin-top:6px;display:flex}.viewer__caption{margin-top:var(--s-2);font-size:var(--fs-sm);color:var(--text-2)}.viewer__save{align-items:center;gap:var(--s-2) var(--s-3);margin-top:var(--s-3);flex-wrap:wrap;display:flex}.viewer__save .button{min-width:180px}@media (width<=480px){.viewer__save .button{flex:100%}}:root[data-theme=light] .viewer{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--text:#e8eefc;--text-2:#a9b6d0;--text-3:#7d8aa6;--line:#92b0e41f;--line-strong:#92b0e433;--surface:#0c1628;--surface-2:#111e35;--surface-3:#172743;--bg-raised:#0c1628;--accent:#35e0cf;--accent-ink:#04201d;--accent-soft:#35e0cf1f;--accent-line:#35e0cf59;color:var(--text)}.photo-tile__social{border-radius:var(--r-pill);color:#fff;font-family:var(--font-mono);pointer-events:none;background:#03070f9e;gap:6px;padding:2px 7px;font-size:10px;line-height:16px;display:inline-flex;position:absolute;top:6px;right:6px}.photo-tile__social span{align-items:center;gap:3px;display:inline-flex}.photo-tile__social svg{color:#ff6b8a}.photo-tile__social span+span svg{color:#fff}.social{margin-top:var(--s-3)}.social__reactions{align-items:center;gap:5px;display:flex}.social__emojis{scrollbar-width:none;flex:0 auto;gap:5px;min-width:0;display:flex;overflow-x:auto}.social__emojis::-webkit-scrollbar{display:none}.reaction{border-radius:var(--r-pill);min-width:40px;height:36px;color:var(--text);transition:transform .12s var(--ease), background .15s, border-color .15s;background:#ffffff0d;border:1px solid #ffffff1a;flex:none;justify-content:center;align-items:center;gap:4px;padding:0 8px;display:inline-flex}.reaction:active{transform:scale(.92)}.reaction__emoji{font-size:17px;line-height:1}.reaction__count{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-2)}.reaction.is-mine{border-color:var(--accent-line);background:var(--accent-soft)}.reaction.is-mine .reaction__count{color:var(--accent)}.reaction--comments{color:var(--text-2)}.social__who{font-size:var(--fs-xs);color:var(--text-3);margin-top:6px}.comments{z-index:120;border-radius:var(--r-xl) var(--r-xl) 0 0;max-width:640px;max-height:min(70vh,640px);animation:sheet-up .22s var(--ease);background:#0a1324;border:1px solid #ffffff14;border-bottom:0;flex-direction:column;margin:0 auto;display:flex;position:fixed;inset:auto 0 0;box-shadow:0 -20px 50px #0000008c}.comments__head{padding:var(--s-3) var(--s-3) var(--s-2) var(--s-4);justify-content:space-between;align-items:center;display:flex}.comments__head .muted{font-family:var(--font-mono);font-size:var(--fs-xs);margin-left:6px}.comments__list{min-height:80px;padding:0 var(--s-4) var(--s-2);overscroll-behavior:contain;gap:var(--s-3);flex-direction:column;flex:1;margin:0;list-style:none;display:flex;overflow-y:auto}.comments__empty{padding:var(--s-5) 0;text-align:center;font-size:var(--fs-sm);color:var(--text-3)}.comment{align-items:flex-start;gap:var(--s-2);display:flex}.comment__avatar{background:var(--surface-3);width:30px;height:30px;font-size:var(--fs-xs);color:var(--text-2);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.comment.is-mine .comment__avatar{background:var(--accent-soft);color:var(--accent)}.comment__body{border-radius:4px var(--r-md) var(--r-md) var(--r-md);background:#ffffff0d;flex:1;min-width:0;padding:6px 10px 8px}.comment__meta{font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;align-items:baseline;gap:2px 8px;display:flex}.comment__meta strong{font-size:var(--fs-xs);color:var(--text)}.comment__body p{font-size:var(--fs-sm);color:var(--text);white-space:pre-line;overflow-wrap:anywhere;margin-top:2px}.comment__delete{width:32px;height:32px;color:var(--text-3);background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.comment__delete:hover{color:var(--danger);background:#ffffff0d}.comments__error{padding:0 var(--s-4)}.comments__form{gap:var(--s-2);padding:var(--s-2) var(--s-3) calc(var(--s-3) + env(safe-area-inset-bottom));border-top:1px solid #ffffff0f;display:flex}.comments__form .input{flex:1;min-width:0;font-size:16px}.comments__send{flex:none;width:44px;padding:0}.top-photos__hint{margin:-6px 0 var(--s-3)}.photo-tile__rank{color:#fff;width:24px;height:24px;font-family:var(--font-mono);pointer-events:none;background:#03070fb3;border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid;position:absolute;top:6px;left:6px}.photo-tile__rank--1{color:#3a2700;background:linear-gradient(135deg,#ffd76a,#e2a400);box-shadow:0 0 0 2px #ffd76a59}.photo-tile__rank--2{color:#1d2533;background:linear-gradient(135deg,#eef2f8,#aab4c4)}.photo-tile__rank--3{color:#2e1606;background:linear-gradient(135deg,#f0b483,#b8713c)}.task-list{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.task{align-items:flex-start;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);transition:border-color .18s var(--ease), opacity .2s;display:flex;position:relative}.task:before{content:"";background:var(--course-color);border-radius:0 3px 3px 0;width:3px;position:absolute;top:12px;bottom:12px;left:0}.task:hover{border-color:var(--course-line)}.task--compact{background:var(--bg-raised)}.task__check{width:26px;height:26px;margin:2px 0 0 var(--s-1);border:2px solid var(--line-strong);color:var(--accent-ink);transition:background .15s var(--ease), border-color .15s var(--ease), transform .12s;background:0 0;border-radius:8px;flex:none;place-items:center;display:grid;position:relative}.task__check:after{content:"";position:absolute;inset:-10px}.task__check:hover{border-color:var(--accent)}.task__check:active{transform:scale(.9)}.task--done .task__check{background:var(--accent);border-color:var(--accent)}.task__body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.task__course{align-items:center;gap:var(--s-2);font-size:var(--fs-xs);color:var(--text-3);display:flex}.course-code--sm{border-radius:6px;min-width:0;height:20px;padding:0 6px;font-size:.625rem}.task__title{font-size:var(--fs-sm);overflow-wrap:anywhere;font-weight:600;line-height:1.35}.task--done .task__title{color:var(--text-3);-webkit-text-decoration:line-through #a3b0c980;text-decoration:line-through #a3b0c980}.task__meta{gap:4px var(--s-3);font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;margin-top:2px;display:flex}.task__meta>span{align-items:center;gap:4px;display:inline-flex}.due{align-items:center;gap:4px;font-weight:550;display:inline-flex}.due--none,.due--later{color:var(--text-2)}.due--soon{color:var(--warning)}.due--today,.due--overdue{color:var(--danger)}.due--done{color:var(--success)}.course-card__meta dd.has-tasks{color:var(--warning)}.task-hero{gap:var(--s-3);padding:var(--s-5);border:1px solid var(--course-line);border-radius:var(--r-xl);background:linear-gradient(135deg, var(--course-soft) 0%, transparent 70%), var(--surface);flex-direction:column;display:flex}.task-hero__top{align-items:center;gap:var(--s-3);min-width:0;display:flex}.task-hero__course{font-size:var(--fs-sm);color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.task-hero__title{font-size:var(--fs-xl);overflow-wrap:anywhere}@media (width>=640px){.task-hero{padding:var(--s-8)}.task-hero__title{font-size:var(--fs-2xl)}}.task-hero__meta{align-items:center;gap:var(--s-2) var(--s-3);font-size:var(--fs-sm);flex-wrap:wrap;display:flex}.task-hero__meta .tag{align-items:center;gap:4px;display:inline-flex}.done-toggle{align-items:center;gap:var(--s-3);min-height:var(--tap);padding:0 var(--s-4) 0 var(--s-2);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--bg-raised);font-size:var(--fs-sm);align-self:flex-start;font-weight:600;transition:border-color .15s,background .15s;display:inline-flex}.done-toggle__box{border:2px solid var(--line-strong);width:28px;height:28px;color:var(--accent-ink);border-radius:8px;place-items:center;display:grid}.done-toggle.is-done{border-color:var(--accent-line);background:var(--accent-soft)}.done-toggle.is-done .done-toggle__box{background:var(--accent);border-color:var(--accent)}.panel-title{margin-bottom:var(--s-3);font-size:var(--fs-lg)}.task-due-exact{margin-top:var(--s-3)}.attachment-list,.file-list{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.attachment{align-items:center;gap:var(--s-3);width:100%;min-height:52px;padding:0 var(--s-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);text-align:left;font-size:var(--fs-sm);transition:border-color .15s;display:flex}.attachment:hover{border-color:var(--accent-line)}.attachment svg{color:var(--text-2);flex:none}.attachment__name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.attachment__size,.file-list__size{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3)}.file-list li{align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--fs-sm);display:flex}.file-list li.is-new{border-style:dashed;border-color:var(--accent-line)}.file-list__name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.file-list__remove{border-radius:var(--r-sm);width:32px;height:32px;color:var(--text-3);background:0 0;border:0;place-items:center;display:grid}.file-list__remove:hover{color:var(--danger)}.field>.button--sm{align-self:flex-start}.admin-actions{gap:var(--s-2);display:flex}.button--danger:hover{color:var(--danger);border-color:#ff6b7d66}.nav-icon{display:inline-flex;position:relative}.nav-badge{border-radius:var(--r-pill);background:var(--warning);color:#1d1300;text-align:center;min-width:17px;height:17px;box-shadow:0 0 0 2px var(--bg-raised);padding:0 4px;font-size:.625rem;font-weight:700;line-height:17px;position:absolute;top:-5px;right:-9px}.side-nav__count{border-radius:var(--r-pill);min-width:22px;color:var(--warning);font-size:var(--fs-xs);text-align:center;background:#ffb54726;margin-left:auto;padding:1px 7px;font-weight:700}.announcement-list{gap:var(--s-2);flex-direction:column;display:flex}.announcement{gap:var(--s-3);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);display:flex}.announcement--pinned{border-color:var(--accent-line);background:linear-gradient(90deg, var(--accent-soft), transparent 70%), var(--bg-raised)}.announcement__icon{border-radius:var(--r-sm);background:var(--blue-soft);width:34px;height:34px;color:var(--lecture-fg);flex:none;place-items:center;display:grid}.announcement--pinned .announcement__icon{background:var(--accent-soft);color:var(--accent)}.announcement__body{flex:1;min-width:0}.announcement__body h3{font-size:var(--fs-md);overflow-wrap:anywhere}.announcement__body p{font-size:var(--fs-sm);color:var(--text-2);white-space:pre-line;overflow-wrap:anywhere;margin-top:4px}.announcement__text--clamp{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.announcement__meta{gap:2px var(--s-3);margin-top:var(--s-2);font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;display:flex}.announcement__actions{gap:var(--s-1);flex-direction:column;display:flex}.announcement__actions .icon-button{width:36px;height:36px}.announce-cta{align-items:center;gap:var(--s-3);font-size:var(--fs-sm);color:var(--accent);font-weight:600;display:flex}.announce-cta svg:last-child{margin-left:auto}.birthday-banner{align-items:center;gap:var(--s-4);padding:var(--s-4) var(--s-5);border-radius:var(--r-xl);background:radial-gradient(300px 120px at 10% 0%, #f6c95b2e, transparent 70%), linear-gradient(90deg, #ff6b7d14, transparent 60%), var(--surface);animation:rise .5s var(--ease);border:1px solid #f6c95b66;display:flex}.birthday-banner__emoji{font-size:2rem;animation:2.4s ease-in-out infinite wiggle}@keyframes wiggle{0%,to{transform:rotate(0)}10%{transform:rotate(-10deg)}20%{transform:rotate(8deg)}30%{transform:rotate(0)}}.birthday-banner strong{font-size:var(--fs-md);color:var(--gold)}.birthday-banner p{font-size:var(--fs-sm);color:var(--text-2)}.birthday-list{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.birthday-list li{align-items:center;gap:var(--s-3);font-size:var(--fs-sm);display:flex}.birthday-list__name{flex:1;font-weight:600}.birthday-list__date{color:var(--gold);font-family:var(--font-mono);font-size:var(--fs-xs);align-items:center;gap:4px;display:inline-flex}.birthday-list__in{text-align:right;min-width:96px;font-size:var(--fs-xs);color:var(--text-3)}.attachments{gap:var(--s-3);flex-direction:column;display:flex}.attachment-images{gap:var(--s-2);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}@media (width>=720px){.attachment-images{grid-template-columns:repeat(4,minmax(0,1fr))}}.attachment-images button{aspect-ratio:1;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);width:100%;padding:0;display:block;position:relative;overflow:hidden}.attachment-images button:hover{border-color:var(--accent-line)}.attachment-images img{object-fit:cover;width:100%;height:100%;display:block}.attachment-images__ph{background:linear-gradient(110deg, var(--bg-raised) 30%, var(--line) 50%, var(--bg-raised) 70%);background-size:200% 100%;animation:1.4s linear infinite att-shimmer;position:absolute;inset:0}@keyframes att-shimmer{to{background-position:-200% 0}}.attachment-images__size{color:#fff;font-family:var(--font-mono);background:#03070fa6;border-radius:999px;padding:1px 6px;font-size:10px;position:absolute;bottom:6px;right:6px}.attachment-row{align-items:center;gap:var(--s-2);display:flex}.attachment-row .attachment{min-width:0;color:inherit;flex:1;text-decoration:none}.attachment-row .icon-button{flex:none;width:44px;height:44px}.attachment.is-loading{opacity:.6}.announcement__images{margin-top:var(--s-3);grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.announcement__images--1{grid-template-columns:minmax(0,1fr);max-width:420px}.announcement__images--2{grid-template-columns:repeat(2,minmax(0,1fr))}.announcement__image{aspect-ratio:4/3;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);cursor:zoom-in;padding:0;display:block;position:relative;overflow:hidden}.announcement__images--1 .announcement__image{aspect-ratio:16/10}.announcement__image img{object-fit:cover;width:100%;height:100%;display:block}.announcement__image-wait{background:linear-gradient(90deg, var(--surface-2), var(--surface-3), var(--surface-2));position:absolute;inset:0}.announcement__more{color:#fff;font-weight:700;font-size:var(--fs-lg);background:#050a148c;place-items:center;display:grid;position:absolute;inset:0}.ann-photos{gap:var(--s-2);grid-template-columns:repeat(auto-fill,minmax(84px,1fr));display:grid}.ann-photos__item,.ann-photos__add{aspect-ratio:1;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line);position:relative;overflow:hidden}.ann-photos__item img{object-fit:cover;width:100%;height:100%}.ann-photos__remove{color:#fff;cursor:pointer;background:#050a14b3;border:0;border-radius:50%;place-items:center;width:32px;height:32px;display:grid;position:absolute;top:4px;right:4px}.ann-photos__add{border-style:dashed;border-color:var(--line-strong);color:var(--text-2);font:inherit;font-size:var(--fs-xs);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.ann-photos__add:hover{border-color:var(--accent-line);color:var(--accent)}.quick-links{gap:var(--s-2);grid-template-columns:1fr 1fr;display:grid}.quick-links__item{justify-content:center;align-items:center;gap:var(--s-2);min-height:var(--tap);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);font-size:var(--fs-sm);color:var(--text-2);text-align:center;min-width:0;padding:6px 10px;font-weight:600;line-height:1.2;display:flex}.quick-links__item svg{color:var(--accent);flex:none}@media (width<=359px){.quick-links__item{gap:6px;font-size:.75rem}}.quick-links__item:hover{color:var(--text);border-color:var(--accent-line)}@media (width>=1024px){.quick-links{display:none}}.search-field{flex:1;min-width:0;position:relative}.search-field svg{color:var(--text-3);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search-field .input{padding-left:36px}@media (width>=720px){.search-field{max-width:360px}}.upload__picker--wide{min-height:64px;padding:0 var(--s-4);overflow-wrap:anywhere;text-align:left;flex-direction:row}.material-list{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.material{align-items:stretch;gap:var(--s-1);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);display:flex;position:relative}.material:hover{border-color:var(--course-line)}.material__main{align-items:center;gap:var(--s-3);min-width:0;padding:var(--s-3);text-align:left;background:0 0;border:0;flex:1;display:flex}.material__icon{border-radius:var(--r-sm);background:var(--course-soft);width:40px;height:40px;color:var(--course-color);flex:none;place-items:center;display:grid}.material__body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.material__body strong{font-size:var(--fs-sm);overflow-wrap:anywhere}.material__desc{font-size:var(--fs-xs);color:var(--text-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.material__meta{align-items:center;gap:2px var(--s-3);font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;display:flex}.material__dl{color:var(--text-3);flex:none}.material__delete{margin-right:var(--s-2);align-self:center;width:38px;height:38px}.space-card__grid{gap:var(--s-4);display:grid}@media (width>=900px){.space-card__grid{grid-template-columns:1.1fr 1fr}}.space-card__head{align-items:center;gap:var(--s-2);margin-bottom:var(--s-2);font-size:var(--fs-sm);display:flex}.space-card__head svg{color:var(--accent)}.iss-map{border-radius:var(--r-md);background:radial-gradient(ellipse at 50% 50%, var(--surface-2), var(--bg-raised));border:1px solid var(--line);width:100%;height:auto}.iss-map__grid{stroke:var(--line);stroke-width:.5px}.iss-map__equator{stroke:var(--line-strong);stroke-width:.6px;stroke-dasharray:3 3}.iss-map__kz{fill:var(--accent-soft);stroke:var(--accent-line);stroke-width:.6px}.iss-map__place{fill:var(--gold)}.iss-map__label{fill:var(--text-2);font-size:7px;font-family:var(--font-sans)}.iss-map__trail{fill:none;stroke:var(--blue);stroke-width:1.2px;stroke-linecap:round;opacity:.7}.iss-map__iss{fill:var(--accent)}.iss-map__land{fill:var(--surface-3);stroke:var(--line-strong);stroke-width:.4px;stroke-linejoin:round}.iss-map__pulse{fill:var(--accent);opacity:.25;transform-box:fill-box;transform-origin:50%;animation:2s ease-out infinite iss-pulse}@keyframes iss-pulse{0%{opacity:.5;transform:scale(.4)}to{opacity:0;transform:scale(1.6)}}.iss-stats{gap:var(--s-2) var(--s-3);margin-top:var(--s-3);grid-template-columns:1fr 1fr;display:grid}.iss-stats dt{color:var(--text-3);font-size:.6875rem}.iss-stats dd{font-family:var(--font-mono);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.launch-list{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.launch-list li{justify-content:space-between;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-raised);display:flex}.launch-list li.is-baikonur{border-color:var(--accent-line);background:linear-gradient(90deg, var(--accent-soft), transparent 70%), var(--bg-raised)}.launch-list__main{flex-direction:column;min-width:0;display:flex}.launch-list__main strong{font-size:var(--fs-sm);overflow-wrap:anywhere}.launch-list__main span{font-size:var(--fs-xs);color:var(--text-3);overflow-wrap:anywhere}.launch-list__time{text-align:right;flex-direction:column;flex:none;align-items:flex-end;gap:2px;display:flex}.launch-list__time b{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--accent);white-space:nowrap}.launch-list__time .tag--admin{margin-left:0}.space-card__source{margin-top:var(--s-2);color:var(--text-3);font-size:.6875rem}.admin-tabs{grid-template-columns:repeat(3,minmax(0,1fr));align-self:stretch;display:grid}.admin-tabs__item{padding:0 var(--s-2);white-space:nowrap;justify-content:center;min-width:0}@media (width>=640px){.admin-tabs{align-self:flex-start;display:flex}.admin-tabs__item{padding:0 var(--s-4)}}@media (width<=360px){.admin-tabs__item svg{display:none}}.roster__edit{flex:none;width:38px;height:38px}.roster__meta>span{align-items:center;gap:3px;display:inline-flex}.form-grid--2{grid-template-columns:1fr 1fr}.stat-tiles{gap:var(--s-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.stat-tile{padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);flex-direction:column;gap:4px;min-width:0;display:flex}.stat-tile span{font-size:var(--fs-xs);color:var(--text-2)}.stat-tile strong{font-family:var(--font-mono);font-size:var(--fs-xl)}.stat-tile small{font-size:var(--fs-sm);color:var(--text-3)}.meter{border-radius:var(--r-pill);background:var(--surface-3);flex:1;height:6px;overflow:hidden}.meter span{border-radius:inherit;height:100%;display:block}.meter--good span{background:var(--success)}.meter--mid span{background:var(--warning)}.meter--low span{background:var(--danger)}.chip-list{margin:0 0 var(--s-3);gap:var(--s-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.chip-list li{border:1px solid var(--line-strong);border-radius:var(--r-pill);font-size:var(--fs-xs);padding:4px 10px}.chip-list b{font-family:var(--font-mono);color:var(--text-3);margin-right:2px}.chip-list small{color:var(--text-3)}.progress-list{gap:var(--s-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.progress-list li{flex-direction:column;gap:4px;display:flex}.progress-list__title{align-items:center;gap:var(--s-2);min-height:32px;font-size:var(--fs-sm);overflow-wrap:anywhere;font-weight:600;display:flex}.progress-list__row{align-items:center;gap:var(--s-3);display:flex}.progress-list__row b{font-family:var(--font-mono);font-size:var(--fs-xs);text-align:right;min-width:42px}.progress-list .due{font-size:var(--fs-xs)}.table-scroll{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.data-table th{text-align:right;font-size:var(--fs-xs);color:var(--text-3);padding:0 0 var(--s-2) var(--s-3);font-weight:500}.data-table th:first-child{text-align:left;padding-left:0}.data-table td{padding:var(--s-2) 0 var(--s-2) var(--s-3);border-top:1px solid var(--line);text-align:right;font-family:var(--font-mono)}.data-table td:first-child{text-align:left;font-family:var(--font-sans);padding-left:0}.data-table td.is-zero{color:var(--text-3)}.data-table__name{margin-left:4px}@media (width<=560px){.data-table__name{display:none}}.material__download{align-self:center;width:38px;height:38px}.material__download:last-child{margin-right:var(--s-2)}.quick-links__item--wide{grid-column:1/-1}.poll-list{gap:var(--s-3);display:grid}@media (width>=1280px){.poll-list{grid-template-columns:1fr 1fr;align-items:start}}.poll{gap:var(--s-3);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);flex-direction:column;min-width:0;display:flex}.poll--closed{opacity:.88}.poll__head{justify-content:space-between;align-items:flex-start;gap:var(--s-2);display:flex}.poll__badges{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.poll__badges .tag{border:1px solid var(--line);color:var(--text-2)}.poll__badges .tag--live{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.poll__manage{align-items:center;gap:var(--s-2);flex:none;display:flex}.poll__manage .icon-button{width:36px;height:36px}.poll__question{font-size:var(--fs-lg);overflow-wrap:anywhere;line-height:1.3}.poll__details{font-size:var(--fs-sm);color:var(--text-2);white-space:pre-line;overflow-wrap:anywhere}.poll__choices,.poll__results{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.poll__choice{align-items:center;gap:var(--s-3);min-height:48px;padding:var(--s-2) var(--s-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);text-align:left;font-size:var(--fs-sm);overflow-wrap:anywhere;transition:border-color .15s,background .15s;display:flex}.poll__choice:hover{border-color:var(--accent-line)}.poll__choice.is-selected{border-color:var(--accent);background:var(--accent-soft)}.poll__mark{border:2px solid var(--line-strong);width:20px;height:20px;color:var(--bg);border-radius:50%;flex:none;place-items:center;display:grid}.poll__choice.is-multi .poll__mark{border-radius:6px}.poll__choice.is-selected .poll__mark{border-color:var(--accent);background:var(--accent)}.poll__result{padding:var(--s-2) var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);position:relative;overflow:hidden}.poll__bar{width:var(--w);background:var(--surface-3);transition:width .5s var(--ease);position:absolute;inset:0 auto 0 0}.poll__result.is-leading .poll__bar{background:var(--accent-soft)}.poll__result.is-mine{border-color:var(--accent-line)}.poll__result-row{justify-content:space-between;align-items:center;gap:var(--s-3);min-height:28px;font-size:var(--fs-sm);display:flex;position:relative}.poll__label{overflow-wrap:anywhere;align-items:center;gap:6px;min-width:0;display:inline-flex}.poll__label svg{color:var(--accent);flex:none}.poll__count{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-2);flex:none}.poll__voters{font-size:var(--fs-xs);color:var(--text-3);margin-top:2px;position:relative}.poll__foot{justify-content:space-between;align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.poll-form__options{gap:var(--s-2);margin-bottom:var(--s-2);flex-direction:column;display:flex}.poll-form__option{gap:var(--s-2);display:flex}.poll-form__option .input{flex:1;min-width:0}.poll-form__option .icon-button{flex:none;width:44px;height:44px}.nav-dot{width:9px;height:9px;box-shadow:0 0 0 2px var(--bg-raised);animation:new-pop .3s var(--ease);background:#ff4d67;border-radius:50%;position:absolute;top:-2px;right:-4px}.nav-badge--new{color:#fff;background:#ff4d67}.side-nav__count--new{color:#ff6b80;background:#ff4d6729}.side-nav__new,.quick-links__new{border-radius:var(--r-pill);color:#fff;text-align:center;min-width:20px;animation:new-pop .3s var(--ease);background:#ff4d67;padding:1px 6px;font-size:.6875rem;font-weight:700;line-height:16px}.side-nav__new{margin-left:auto}.quick-links__new{margin-left:2px}@keyframes new-pop{0%{opacity:0;transform:scale(.4)}}.notify{gap:var(--s-3);flex-direction:column;display:flex}.notify__status{align-items:center;gap:var(--s-2);font-size:var(--fs-sm);color:var(--accent);font-weight:600;display:inline-flex}.notify__prefs{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;display:flex}.notify__prefs .toggle+.toggle{border-top:1px solid var(--line)}.notify__actions{gap:var(--s-2);flex-wrap:wrap;display:flex}.tour{z-index:200;position:fixed;inset:0}.tour__dim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#020610b8;animation:.25s fade;position:fixed;inset:0}.tour__spot{box-shadow:0 0 0 9999px #020610b8, 0 0 0 2px var(--accent), 0 0 24px 4px #35e0cf59;transition:top .3s var(--ease), left .3s var(--ease), width .3s var(--ease), height .3s var(--ease);pointer-events:none;border-radius:14px;position:fixed}.tour__card{width:min(340px,100vw - 32px);padding:var(--s-4) var(--s-4) var(--s-3);border:1px solid var(--accent-line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-2);transition:top .3s var(--ease), left .3s var(--ease);animation:tour-in .25s var(--ease);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.tour:not(.tour--centred) .tour__card{transform:none}.tour--centred .tour__card{width:min(380px,100vw - 32px)!important;top:50%!important;left:50%!important}@keyframes tour-in{0%{opacity:0;scale:.96}}.tour__head{margin-bottom:var(--s-2);justify-content:space-between;align-items:center;display:flex}.tour__count{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3)}.tour__skip{min-height:32px;padding:0 var(--s-2);border-radius:var(--r-pill);color:var(--text-3);font-size:var(--fs-xs);background:0 0;border:0;align-items:center;gap:4px;display:inline-flex}.tour__skip:hover{color:var(--text);background:var(--surface-2)}.tour__title{font-size:var(--fs-lg);line-height:1.3}.tour__text{font-size:var(--fs-sm);color:var(--text-2);margin-top:6px;line-height:1.55}.tour__dots{margin:var(--s-3) 0;gap:5px;display:flex}.tour__dots span{border-radius:var(--r-pill);background:var(--surface-3);width:6px;height:6px;transition:width .25s var(--ease), background .25s}.tour__dots span.is-done{background:var(--accent-line)}.tour__dots span.is-active{background:var(--accent);width:18px}.tour__actions{justify-content:flex-end;gap:var(--s-2);display:flex}.tour__next{min-width:112px}.teacher-list{gap:var(--s-3);display:grid}@media (width>=900px){.teacher-list:not(.teacher-list--compact){grid-template-columns:1fr 1fr;align-items:start}}.teacher{gap:var(--s-3);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);flex-direction:column;min-width:0;scroll-margin-top:90px;transition:border-color .3s,box-shadow .3s;display:flex}.teacher-list--compact .teacher{padding:var(--s-3);background:var(--bg-raised)}.teacher.is-highlight{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.teacher__top{align-items:center;gap:var(--s-3);display:flex}.teacher__photo{background:linear-gradient(135deg, var(--accent-soft), var(--blue-soft));border:1px solid var(--line);width:72px;height:72px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-size:1.375rem;font-weight:700;display:grid;overflow:hidden}.teacher--compact .teacher__photo{width:52px;height:52px;font-size:1.05rem}.teacher__photo img{object-fit:cover;object-position:center 25%;width:100%;height:100%}.teacher__id{flex:1;min-width:0}.teacher__name{font-size:var(--fs-md);overflow-wrap:anywhere;line-height:1.3}.teacher__position{font-size:var(--fs-sm);color:var(--text-2);margin-top:2px}.teacher__courses{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.teacher__edit{flex:none;align-self:flex-start}.teacher__info{gap:var(--s-2);padding:var(--s-3);border-radius:var(--r-md);background:var(--bg-raised);font-size:var(--fs-sm);flex-direction:column;margin:0;display:flex}.teacher__info div{gap:2px var(--s-2);flex-wrap:wrap;display:flex}.teacher__info dt{min-width:120px;color:var(--text-3);align-items:center;gap:6px;display:inline-flex}.teacher__info dd{color:var(--text);overflow-wrap:anywhere;margin:0}.teacher__note{color:var(--text-2);white-space:pre-line;overflow-wrap:anywhere}.teacher__contacts{gap:var(--s-2);flex-wrap:wrap;display:flex}.teacher__contact{max-width:100%;min-height:40px;padding:0 var(--s-3);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--bg-raised);color:var(--text);font-size:var(--fs-sm);align-items:center;gap:6px;text-decoration:none;display:inline-flex}.teacher__contact span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.teacher__contact svg{color:var(--accent);flex:none}.teacher__contact--wa svg{color:#25d366}.teacher__contact:hover{border-color:var(--accent-line)}.course-hero__teacher a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:3px}.teacher-form__photo{align-items:center;gap:var(--s-4);display:flex}.teacher-form__pick{border:2px dashed var(--line-strong);background:var(--bg-raised);width:88px;height:88px;color:var(--text-3);border-radius:50%;flex:none;place-items:center;padding:0;display:grid;overflow:hidden}.teacher-form__pick img{object-fit:cover;object-position:center 25%;width:100%;height:100%}.teacher-form__photo-text{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.teacher-form__row{gap:var(--s-3);display:grid}@media (width>=560px){.teacher-form__row{grid-template-columns:1fr 1fr}}.teacher-form__courses{gap:var(--s-2);flex-wrap:wrap;display:flex}.chip-check{min-height:36px;padding:0 var(--s-3);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--bg-raised);font-size:var(--fs-sm);color:var(--text-2);cursor:pointer;align-items:center;display:inline-flex}.chip-check input{opacity:0;width:1px;height:1px;position:absolute}.chip-check.is-on{border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.chip-check:focus-within{outline:2px solid var(--accent);outline-offset:2px}.mobile-topbar__actions{align-items:center;gap:var(--s-2);display:flex}.topbar-search{border-radius:50%;width:40px;height:40px}.topbar-search.active{color:var(--accent);border-color:var(--accent-line)}.side-search{align-items:center;gap:var(--s-2);min-height:40px;margin:0 0 var(--s-3);padding:0 var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);color:var(--text-3);font-size:var(--fs-sm);text-decoration:none;display:flex}.side-search span{flex:1}.side-search kbd{border:1px solid var(--line-strong);font-family:var(--font-mono);color:var(--text-3);border-radius:5px;padding:0 6px;font-size:.6875rem}.side-search:hover,.side-search.active{border-color:var(--accent-line);color:var(--text)}.search-page{max-width:760px}.search-box{top:calc(60px + env(safe-area-inset-top));z-index:5;align-items:center;gap:var(--s-2);min-height:52px;padding:0 var(--s-2) 0 var(--s-4);border:1px solid var(--accent-line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);display:flex;position:sticky}@media (width>=1024px){.search-box{top:var(--s-4)}}.search-box>svg{color:var(--accent);flex:none}.search-box__input{min-width:0;height:50px;color:var(--text);background:0 0;border:0;outline:0;flex:1;font-size:16px}.search-box__input::-webkit-search-cancel-button{display:none}.search-box__clear{width:40px;height:40px;color:var(--text-3);background:0 0;border:0;border-radius:50%;flex:none;place-items:center;display:grid}.search-intro{gap:var(--s-5);flex-direction:column;display:flex}.search-intro h2{margin-bottom:var(--s-2);font-size:var(--fs-xs);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.search-intro__head{justify-content:space-between;align-items:center;display:flex}.search-intro__head h2{margin:0}.search-chips{gap:var(--s-2);flex-wrap:wrap;display:flex}.search-chip{max-width:100%;min-height:38px;padding:0 var(--s-3);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);color:var(--text-2);font-size:var(--fs-sm);text-align:left;align-items:center;gap:6px;display:inline-flex}.search-chip:hover{border-color:var(--accent-line);color:var(--text)}.search-results{gap:var(--s-4);flex-direction:column;display:flex}.search-group__title{align-items:center;gap:var(--s-2);margin-bottom:var(--s-2);font-size:var(--fs-sm);color:var(--text-2);display:flex}.search-group__title span{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-3)}.search-group ul{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.search-hit{padding:var(--s-3) var(--s-4);border:1px solid var(--line);border-left:3px solid var(--course-color,var(--line-strong));border-radius:var(--r-md);background:var(--surface);color:var(--text);flex-direction:column;gap:4px;min-width:0;text-decoration:none;display:flex}.search-hit:hover{border-color:var(--accent-line);border-left-color:var(--course-color,var(--accent))}.search-hit__title{overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:6px;font-weight:600;display:flex}.search-hit__body{font-size:var(--fs-sm);color:var(--text-2);overflow-wrap:anywhere}.search-hit__meta{font-size:var(--fs-xs);color:var(--text-3)}.search-hit mark{color:inherit;background:#35e0cf40;border-radius:3px;padding:0 1px}:root[data-theme=light] .search-hit mark{background:#0d94882e}.update-toast{left:50%;bottom:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom) + 12px);z-index:150;align-items:center;gap:var(--s-2);border:1px solid var(--accent-line);border-radius:var(--r-pill);background:var(--surface);width:max-content;max-width:calc(100vw - 24px);box-shadow:var(--shadow-2);font-size:var(--fs-sm);animation:tour-in .3s var(--ease);padding:8px 8px 8px 14px;display:flex;position:fixed;transform:translate(-50%)}.update-toast>svg{color:var(--accent);flex:none}.update-toast span{min-width:0}.update-toast__close{width:32px;height:32px;color:var(--text-3);background:0 0;border:0;border-radius:50%;flex:none;place-items:center;display:grid}@media (width>=1024px){.update-toast{bottom:var(--s-6)}}.att-private{margin-top:calc(var(--s-3) * -1);font-size:var(--fs-xs);color:var(--text-3);align-items:center;gap:6px;display:flex}.att-hero{align-items:center;gap:var(--s-5);padding:var(--s-5);border:1px solid var(--line);border-radius:var(--r-xl);background:var(--surface);display:flex}.att-ring{--c:var(--success);background:radial-gradient(closest-side, var(--surface) 78%, transparent 79% 100%), conic-gradient(var(--c) calc(var(--p) * 1%), var(--surface-3) 0);border-radius:50%;flex:none;align-content:center;place-items:center;width:112px;height:112px;display:grid}.att-ring--warn{--c:var(--warning)}.att-ring--bad{--c:var(--danger)}.att-ring strong{font-size:1.6rem;line-height:1}.att-ring span{font-size:var(--fs-xs);color:var(--text-3)}.att-totals{gap:var(--s-3) var(--s-4);flex:1;grid-template-columns:1fr 1fr;margin:0;display:grid}.att-totals dt{font-size:var(--fs-xs);color:var(--text-3)}.att-totals dd{font-family:var(--font-mono);font-size:var(--fs-lg);margin:2px 0 0;font-weight:700}.att-totals dd.is-bad{color:var(--danger)}@media (width<=380px){.att-hero{text-align:left;flex-direction:column;align-items:stretch}.att-ring{margin:0 auto}}.att-courses{gap:var(--s-2);grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));display:grid}@media (width>=768px){.att-courses{gap:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}}.att-course{padding:var(--s-3) var(--s-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);color:var(--text);text-align:left;flex-direction:column;gap:6px;min-width:0;display:flex}.att-course:hover,.att-course.is-active{border-color:var(--course-color)}.att-course.is-active{box-shadow:0 0 0 2px var(--course-line,var(--accent-soft))}.att-course__top{justify-content:space-between;align-items:center;display:flex}.att-course__rate{font-family:var(--font-mono);font-weight:700}.att-course__rate--good{color:var(--success)}.att-course__rate--warn{color:var(--warning)}.att-course__rate--bad{color:var(--danger)}.att-course__name{overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;font-size:.8125rem;font-weight:600;line-height:1.3}@media (width>=768px){.att-course__name{font-size:var(--fs-sm)}}.att-bar{border-radius:var(--r-pill);background:var(--surface-3);height:5px;display:block;overflow:hidden}.att-bar span{background:var(--course-color);height:100%;transition:width .3s var(--ease);display:block}.att-course__meta{font-size:var(--fs-xs);color:var(--text-3)}.att-course__meta b{color:var(--danger);font-weight:600}.att-list-head{justify-content:space-between;align-items:baseline;gap:var(--s-2);flex-wrap:wrap;display:flex}.att-days{gap:var(--s-4);margin-bottom:var(--s-3);flex-direction:column;display:flex}.att-day__title{margin-bottom:var(--s-2);font-size:var(--fs-xs);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-3)}.att-day ul{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.att-row{align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-2) var(--s-2) var(--s-3);border:1px solid var(--line);border-left:3px solid var(--course-color);border-radius:var(--r-md);background:var(--bg-raised);display:flex}.att-row--absent{background:#ff5c7012}.att-row--cancelled .att-row__body{opacity:.55;text-decoration:line-through}.att-row__time{width:44px;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-2);flex:none}.att-row__body{flex-direction:column;flex:1;min-width:0;display:flex}.att-row__body strong{-webkit-line-clamp:2;font-size:var(--fs-sm);overflow-wrap:anywhere;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.att-row__body span{font-size:var(--fs-xs);color:var(--text-3)}.att-status{flex:none;align-items:center;display:inline-flex;position:relative}.att-status select{appearance:none;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);max-width:150px;min-height:36px;color:var(--text-2);cursor:pointer;padding:0 28px 0 12px;font-size:16px;font-weight:600}.att-status svg{pointer-events:none;color:var(--text-3);position:absolute;right:10px}.att-status--present select{color:var(--success)}.att-status--absent select{color:var(--danger);background:#ff5c701f;border-color:#ff5c7073}.att-status--late select{background:var(--warning-soft);color:var(--warning);border-color:#ffb54773}.att-status--excused select{border-color:var(--accent-line);background:var(--accent-soft);color:var(--accent)}.att-status--cancelled select{color:var(--text-3)}.presence__tiles{gap:var(--s-2);margin-bottom:var(--s-3);grid-template-columns:repeat(3,1fr);display:grid}.presence__tiles div{padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-raised);flex-direction:column;display:flex}.presence__tiles strong{font-family:var(--font-mono);font-size:var(--fs-lg)}.presence__tiles strong.is-online{color:var(--success)}.presence__tiles span{font-size:var(--fs-xs);color:var(--text-3)}.presence__list{margin:0 0 var(--s-3);flex-direction:column;padding:0;list-style:none;display:flex}.presence__list li{align-items:center;gap:var(--s-3);padding:var(--s-2) 0;border-bottom:1px solid var(--line);display:flex}.presence__list li:last-child{border-bottom:0}.presence__avatar{background:var(--surface-3);width:34px;height:34px;font-size:var(--fs-sm);color:var(--text-2);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid;position:relative}.presence__avatar i{background:var(--success);width:11px;height:11px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;position:absolute;bottom:-1px;right:-1px}.presence__who{flex-direction:column;flex:1;min-width:0;display:flex}.presence__who strong{font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.presence__who small,.presence__freq small{font-size:var(--fs-xs);color:var(--text-3)}li.is-online .presence__who small{color:var(--success)}.presence__freq{flex-direction:column;flex:none;align-items:flex-end;gap:3px;display:flex}.spark{align-items:flex-end;gap:2px;height:22px;display:flex}.spark span{background:var(--surface-3);border-radius:2px;width:4px}.spark span.is-on{background:var(--accent)}@media (width<=360px){.presence__freq small{display:none}}.chip-row{gap:var(--s-2);scrollbar-width:none;margin:0 calc(var(--gutter) * -1);padding:2px var(--gutter);display:flex;overflow-x:auto}.chip-row::-webkit-scrollbar{display:none}.chip-row .search-chip{flex:none}.search-chip.is-on{border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.campus-room{align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-4);border:1px solid var(--accent-line);border-radius:var(--r-md);background:var(--accent-soft);font-size:var(--fs-sm);display:flex}.campus-room svg{color:var(--accent);flex:none}.campus-room--unknown{background:var(--warning-soft);border-color:#ffb54766}.campus-badge{border-radius:var(--r-pill);background:var(--badge,#5b94ff);color:#fff;pointer-events:auto;cursor:pointer;border:2px solid #fff;place-items:center;min-width:22px;height:22px;padding:0 5px;font-size:.6875rem;font-weight:800;line-height:1;transition:transform .15s,opacity .2s;display:grid;box-shadow:0 2px 6px #00000059}.campus-badge--faculty{--badge:#b8344f}.campus-badge--facility{--badge:#2f5fc4}.campus-badge--dorm{--badge:#e08a12;min-width:18px;height:18px;font-size:.625rem}.campus-badge--service{--badge:#6b7890}.campus-badge.is-ours{--badge:#0fa898;transform:scale(1.15)}.campus-badge.is-selected{transform:scale(1.3);box-shadow:0 0 0 4px #35e0cf73,0 2px 8px #0006}.campus-badge.is-dim{opacity:.25}.campus-card{align-items:flex-start;gap:var(--s-3);max-width:460px;padding:var(--s-3);border:1px solid var(--accent-line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-2);animation:sheet-up .22s var(--ease);display:flex}.campus-card__badge{pointer-events:none;flex:none;margin-top:2px}.campus-card__body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.campus-card__body strong{line-height:1.3}.campus-card__body span,.campus-card__body p{font-size:var(--fs-xs);color:var(--text-2)}.campus-card .icon-button{flex:none;width:34px;height:34px}.campus-list{gap:var(--s-4);display:grid}@media (width>=900px){.campus-list{grid-template-columns:1fr 1fr}}.campus-list__title{align-items:center;gap:var(--s-2);margin-bottom:var(--s-2);font-size:var(--fs-sm);color:var(--text-2);display:flex}.campus-dot{background:#2f5fc4;border-radius:50%;width:10px;height:10px}.campus-dot--faculty{background:#b8344f}.campus-dot--dorm{background:#e08a12}.campus-dot--service{background:#6b7890}.campus-list ul{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.campus-list__item{align-items:center;gap:var(--s-2);width:100%;min-height:40px;padding:4px var(--s-2);border-radius:var(--r-md);color:var(--text);font-size:var(--fs-sm);text-align:left;background:0 0;border:1px solid #0000;display:flex}.campus-list__item:hover,.campus-list__item.is-on{border-color:var(--accent-line);background:var(--accent-soft)}.campus-list__item .campus-badge{pointer-events:none;flex:none}.campus-list__item .tag{color:var(--accent);margin-left:auto}.session__room--link{min-width:32px;min-height:32px;color:inherit;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-color:var(--text-3);text-decoration-color:var(--text-3);text-underline-offset:3px;align-items:center;margin:-8px -6px;padding:0 6px;display:inline-flex}.session__room--link:hover{color:var(--accent)}.campus-card__2gis{border-radius:var(--r-pill);color:#fff;min-height:34px;font-size:var(--fs-xs);background:#1fb35a;align-self:flex-start;align-items:center;gap:6px;margin-top:6px;padding:0 12px;font-weight:700;text-decoration:none;display:inline-flex}.campus-badge--parking{--badge:#111}.campus-dot{flex:none}.campus-pic{border:1px solid var(--line);border-radius:var(--r-lg);background:#1d7a3a;position:relative;overflow:hidden}.campus-pic__scroll{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;max-height:min(72vh,640px);overflow:auto}.campus-pic__inner{transition:width .2s var(--ease);position:relative}.campus-pic__inner img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.campus-spot{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:50%;width:30px;height:30px;padding:0;position:absolute;transform:translate(-50%,-50%)}.campus-spot:focus-visible,.campus-spot.is-lit{box-shadow:0 0 0 3px #35e0cf,0 0 14px 4px #35e0cfbf}.campus-spot.is-selected{animation:1.4s ease-out infinite campus-pulse}@keyframes campus-pulse{0%{box-shadow:0 0 0 3px #35e0cf,0 0 #35e0cfcc}to{box-shadow:0 0 0 3px #35e0cf,0 0 0 22px #35e0cf00}}@media (prefers-reduced-motion:reduce){.campus-spot.is-selected{animation:none}}.campus-here{border-radius:var(--r-pill);color:#fff;white-space:nowrap;pointer-events:none;background:#0b7d72;padding:2px 8px;font-size:.6875rem;font-weight:700;position:absolute;transform:translate(-50%,15px);box-shadow:0 2px 6px #00000059}.campus-pic__zoom{top:var(--s-2);right:var(--s-2);gap:6px;display:grid;position:absolute}.campus-pic__zoom .icon-button{color:#fff;background:#03070fb8}.campus-pic__zoom .icon-button:disabled{opacity:.4}.campus-card__links{flex-wrap:wrap;gap:8px;display:flex}.campus-card__google{border:1px solid var(--line);border-radius:var(--r-pill);min-height:34px;color:var(--text);font-size:var(--fs-xs);align-items:center;gap:6px;margin-top:6px;padding:0 12px;font-weight:700;text-decoration:none;display:inline-flex}.material__teacher{background:var(--accent-soft);color:var(--accent);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-weight:600;display:inline-flex}.material--teacher{border-color:var(--accent-line)}.stack{gap:var(--s-3);flex-direction:column;min-width:0;display:flex}.section-head{justify-content:space-between;align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.form__ok{color:var(--success);font-size:var(--fs-sm);margin:0;font-weight:600}.quick-links{grid-template-columns:repeat(5,minmax(0,1fr))}.quick-links__item{-webkit-hyphens:auto;hyphens:auto;flex-direction:column;gap:6px;min-height:72px;padding:10px 4px 8px;font-size:.6875rem;font-weight:600;line-height:1.15;position:relative}.quick-links__item .quick-links__new{margin:0;position:absolute;top:4px;right:4px}@media (width<=359px){.quick-links{grid-template-columns:repeat(4,minmax(0,1fr))}.quick-links__item{font-size:.625rem}}.md{color:var(--text);font-size:var(--fs-md);overflow-wrap:anywhere;line-height:1.65}.md>*{margin:0 0 .75em}.md>:last-child{margin-bottom:0}.md h2,.md h3,.md h4{margin-top:1.1em;line-height:1.3}.md h2{font-size:var(--fs-xl)}.md h3{font-size:var(--fs-lg)}.md h4{font-size:var(--fs-md)}.md ul,.md ol{padding-left:1.4em}.md li+li{margin-top:.25em}.md code{background:var(--surface-3);color:var(--accent);font-family:var(--font-mono);border-radius:6px;padding:1px 6px;font-size:.92em}.md pre{padding:var(--s-3);border-radius:var(--r-md);background:var(--surface-2);overflow-x:auto}.md pre code{color:var(--text);background:0 0;padding:0}.md blockquote{padding-left:var(--s-3);border-left:3px solid var(--accent-line);color:var(--text-2)}.md a{color:var(--accent);text-decoration:underline}.note-list{gap:var(--s-3);margin:0;padding:0;list-style:none;display:grid}@media (width>=760px){.note-list{grid-template-columns:repeat(2,minmax(0,1fr))}}.note-card{height:100%;padding:var(--s-4);border:1px solid var(--line);border-left:3px solid var(--course,var(--accent));border-radius:var(--r-lg);background:var(--surface);color:inherit;transition:border-color .15s, transform .15s var(--ease);flex-direction:column;gap:6px;text-decoration:none;display:flex}.note-card:hover{border-color:var(--accent-line);transform:translateY(-1px)}.note-card__meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.note-card__date{color:var(--text-3);font-size:var(--fs-xs);align-items:center;gap:4px;display:inline-flex}.note-card__title{font-size:var(--fs-md);line-height:1.35}.note-card__preview{color:var(--text-2);font-size:var(--fs-sm);margin:0;line-height:1.5}.note-card__by{color:var(--text-3);font-size:var(--fs-xs);margin-top:auto}.note-view{gap:var(--s-3);flex-direction:column;display:flex}.note-view__title{font-size:var(--fs-2xl);margin:0;line-height:1.2}.note-view__actions{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.note-editor{gap:var(--s-4);flex-direction:column;display:flex}.note-editor__row{gap:var(--s-3);display:grid}@media (width>=640px){.note-editor__row{grid-template-columns:1fr 1fr}}.note-editor__tools{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}.note-editor__tools .button{margin-left:auto}.note-editor__text{min-height:320px;font-family:var(--font-mono);font-size:1rem;line-height:1.6}.note-editor__preview{min-height:320px;padding:var(--s-4);border:1px dashed var(--line-strong);border-radius:var(--r-md)}.note-conflict{padding:var(--s-3);border:1px solid var(--warning);border-radius:var(--r-md);background:var(--warning-soft);flex-direction:column;gap:6px;display:flex}.note-conflict p{color:var(--text-2);font-size:var(--fs-sm);margin:0}.note-history{gap:6px;margin:0;padding:0;list-style:none;display:grid}.note-history__item{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);width:100%;color:inherit;text-align:left;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:10px 12px;display:flex}.note-history__item span:not(.tag){color:var(--text-3);font-size:var(--fs-xs)}.note-history__body{max-height:50vh;padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);overflow:auto}.note-history__body h3{margin:0 0 8px}.draw-setup{gap:var(--s-4);flex-direction:column;display:flex}.draw-row{align-items:flex-end;gap:var(--s-3);flex-wrap:wrap;display:flex}.draw-title{flex:220px}.stepper{border:1px solid var(--line);border-radius:var(--r-pill);align-items:center;gap:4px;padding:2px;display:inline-flex}.stepper span{min-width:2ch;font-size:var(--fs-lg);text-align:center;font-weight:700}.draw-people{margin-top:var(--s-2);flex-wrap:wrap;gap:6px;display:flex}.draw-person{border:1px solid var(--line);border-radius:var(--r-pill);min-height:36px;color:var(--text-3);font-size:var(--fs-sm);background:0 0;padding:0 12px;text-decoration:line-through}.draw-person.is-on{border-color:var(--accent-line);background:var(--accent-soft);color:var(--text);text-decoration:none}.draw-person.is-me{font-weight:700}.draw-go{min-height:52px;font-size:var(--fs-md)}.draw-stage{text-align:center}.draw-rolling{padding:var(--s-8) 0;color:var(--accent);font-size:clamp(1.6rem,6vw,2.6rem);font-weight:800}.draw-groups{gap:var(--s-3);text-align:left;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.draw-group{padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);animation:draw-pop .35s var(--ease) both}.draw-group ol{color:var(--text-2);font-size:var(--fs-sm);margin:6px 0 0;padding-left:1.3em;line-height:1.6}.draw-groups--big .draw-group ol{color:var(--text);font-size:var(--fs-md)}.draw-picked{justify-content:center;gap:var(--s-2);margin:var(--s-2) 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.draw-picked li{border-radius:var(--r-pill);background:var(--accent-soft);animation:draw-pop .4s var(--ease) both;padding:8px 14px;font-weight:700}.draw-picked--big li{font-size:clamp(1.2rem,4vw,1.6rem)}.draw-order{text-align:left;margin:0;padding-left:1.6em;line-height:1.8;display:inline-block}@keyframes draw-pop{0%{opacity:0;transform:scale(.85)}}.draw-history{gap:6px;margin:0;padding:0;list-style:none;display:grid}.draw-history details{border:1px solid var(--line);border-radius:var(--r-md);padding:10px 12px}.draw-history summary{cursor:pointer;flex-wrap:wrap;gap:4px 10px;display:flex}.draw-history details[open]>:not(summary){margin-top:var(--s-3)}.suggestion-form{gap:var(--s-3);flex-direction:column;display:flex}.suggestion-form__lock{color:var(--text-2);font-size:var(--fs-sm);align-items:center;gap:6px;margin:0;display:flex}.suggestion{gap:var(--s-2);padding:var(--s-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);flex-direction:column;display:flex}.suggestion--new{border-color:var(--accent-line)}.suggestion--done{opacity:.75}.suggestion__head,.suggestion__actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.suggestion__body{white-space:pre-wrap;margin:0;line-height:1.55}.suggestion__reply{padding:var(--s-3);border-radius:var(--r-md);background:var(--accent-soft)}.suggestion__reply p{white-space:pre-wrap;margin:4px 0 0}.suggestion__reveal{font-size:var(--fs-xs);margin-left:auto}.suggestion__author{color:var(--warning);font-size:var(--fs-sm);align-items:center;gap:4px;margin-left:auto;font-weight:600;display:inline-flex}.translate-input{gap:var(--s-3);flex-direction:column;display:flex}.translate-drop{align-items:center;gap:var(--s-3);padding:var(--s-5) var(--s-3);border:1.5px dashed var(--line-strong);border-radius:var(--r-lg);text-align:center;flex-direction:column;display:flex}.translate-drop>p{margin:0}.translate-pick{justify-content:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.translate-thumbs{justify-content:center;gap:var(--s-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.translate-thumbs li{position:relative}.translate-thumbs img{border-radius:var(--r-sm);object-fit:cover;width:84px;height:112px;display:block}.translate-thumbs .icon-button{background:var(--surface-3);width:26px;min-width:26px;height:26px;position:absolute;top:-8px;right:-8px}.translation{gap:var(--s-3);flex-direction:column;display:flex}.translation__head{justify-content:space-between;align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.translation__actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.translation-old{border:1px solid var(--line);border-radius:var(--r-md)}.translation-old>summary{font-size:var(--fs-sm);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;padding:10px 12px;overflow:hidden}.translation-old>.translation{border:0;border-top:1px solid var(--line);border-radius:0}.badges{gap:var(--s-2);margin:0 0 var(--s-3);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));padding:0;list-style:none;display:grid}.badge{padding:var(--s-3) var(--s-2);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.badge strong{font-size:var(--fs-sm)}.badge__emoji{filter:grayscale();opacity:.45;font-size:1.9rem;line-height:1.1}.badge.is-earned{background:linear-gradient(160deg, #f6c95b24, transparent 70%), var(--surface);border-color:#f6c95b73}.badge.is-earned .badge__emoji{filter:none;opacity:1}.badge__text{color:var(--text-3);font-size:.6875rem;line-height:1.3}.badge__progress{border-radius:var(--r-pill);background:var(--surface-3);width:80%;height:4px;margin-top:2px;overflow:hidden}.badge__progress span{border-radius:inherit;background:var(--accent);height:100%;display:block}.badge__count{color:var(--text-3);font-size:.6875rem}.badge-toast{left:50%;bottom:calc(var(--bottom-nav-h) + 16px + env(safe-area-inset-bottom));z-index:60;border-radius:var(--r-pill);background:var(--surface-2);max-width:calc(100vw - 32px);box-shadow:var(--shadow-2);color:var(--text);animation:badge-in .45s var(--ease);border:1px solid #f6c95b80;align-items:center;gap:12px;padding:10px 16px 10px 12px;text-decoration:none;display:flex;position:fixed;transform:translate(-50%)}.badge-toast>span:last-child{font-size:var(--fs-sm);flex-direction:column;line-height:1.25;display:flex}.badge-toast__emoji{font-size:1.7rem}@media (width>=1024px){.badge-toast{bottom:24px;left:auto;right:24px;transform:none}}@keyframes badge-in{0%{opacity:0;transform:translate(-50%,20px)scale(.9)}}@media (width>=1024px){@keyframes badge-in{0%{opacity:0;transform:translateY(20px)scale(.9)}}}.confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti span{opacity:.9;animation:linear infinite confetti-fall;position:absolute;top:-16px}@keyframes confetti-fall{0%{transform:translateY(0)rotate(0)}to{transform:translateY(110vh)rotate(720deg)}}.bday-hero{gap:var(--s-4);padding:var(--s-5);border-radius:var(--r-xl);background:radial-gradient(120% 90% at 0% 0%, #ff6b8a47, transparent 60%), radial-gradient(90% 80% at 100% 100%, #f6c95b38, transparent 60%), var(--surface);box-shadow:var(--shadow-2);border:1px solid #ff6b8a66;flex-direction:column;display:flex;position:relative;overflow:hidden}.bday-hero .confetti span{animation-duration:6s!important}.bday-hero__top{align-items:center;gap:var(--s-4);display:flex;position:relative}.bday-hero__eyebrow{color:#ff8fa6;font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;font-weight:700}.bday-hero__name{font-size:var(--fs-2xl);margin:2px 0 4px;line-height:1.15}.bday-hero__text{color:var(--text-2);font-size:var(--fs-sm);margin:0}.bday-avatar{color:#1b0710;background:linear-gradient(140deg,#ff6b8a,#f6c95b);border-radius:50%;flex:none;place-items:center;width:72px;height:72px;font-size:2rem;font-weight:800;display:grid;position:relative;box-shadow:0 0 0 4px #ffffff1f,0 10px 30px -8px #ff6b8ab3}.bday-avatar--xl{width:112px;height:112px;font-size:3rem}.bday-avatar__crown{font-size:1.5rem;position:absolute;top:-18px;left:50%;transform:translate(-50%)rotate(-12deg)}.bday-avatar--xl .bday-avatar__crown{font-size:2.2rem;top:-28px}.bday-wall{gap:var(--s-3);flex-direction:column;display:flex;position:relative}.bday-compose{gap:var(--s-2);flex-direction:column;display:flex}.bday-emojis{flex-wrap:wrap;gap:4px;display:flex}.bday-emoji{background:#ffffff0d;border:1px solid #0000;border-radius:50%;place-items:center;width:38px;height:38px;font-size:1.15rem;display:grid}.bday-emoji.is-on{background:#ff6b8a2e;border-color:#ff8fa6;transform:scale(1.1)}.bday-compose__row{gap:var(--s-2);display:flex}.bday-compose__row .input{flex:1;min-width:0}.bday-wishes{gap:6px;max-height:320px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.bday-wishes li{border-radius:var(--r-md);animation:draw-pop .3s var(--ease) both;background:#ffffff0d;gap:10px;padding:10px 12px;display:flex}.bday-wishes li.is-mine{background:#ff6b8a1f}.bday-wishes__emoji{font-size:1.4rem}.bday-wishes strong{font-size:var(--fs-sm)}.bday-wishes p{color:var(--text-2);font-size:var(--fs-sm);overflow-wrap:anywhere;margin:2px 0 0}.bday-wall__empty{color:var(--text-2);font-size:var(--fs-sm);margin:0}.bday-overlay{z-index:200;padding:var(--gutter);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#03060ec7;place-items:center;animation:.3s bday-fade;display:grid;position:fixed;inset:0}.bday-overlay__card{align-items:center;gap:var(--s-3);width:min(420px,100%);padding:var(--s-10) var(--s-6) var(--s-6);border-radius:var(--r-xl);background:radial-gradient(120% 80% at 50% 0%, #ff6b8a4d, transparent 65%), var(--surface);box-shadow:var(--shadow-2);text-align:center;border:1px solid #ff6b8a73;flex-direction:column;animation:.5s cubic-bezier(.2,1.4,.4,1) bday-pop;display:flex;position:relative}.bday-overlay__card h2{font-size:var(--fs-2xl);margin:0;line-height:1.15}.bday-overlay__card p{color:var(--text-2);margin:0}.bday-overlay__eyebrow{font-weight:700;color:#ff8fa6!important}.bday-overlay__avatars{gap:var(--s-3);margin-top:var(--s-3);display:flex}.bday-overlay__close{position:absolute;top:10px;right:10px}@keyframes bday-fade{0%{opacity:0}}@keyframes bday-pop{0%{opacity:0;transform:scale(.7)}}@media (prefers-reduced-motion:reduce){.confetti{display:none}}:root[data-theme=light] .bday-avatar{color:#fff}:root[data-theme=light] .bday-wishes li,:root[data-theme=light] .bday-emoji{background:#0000000a}:root[data-theme=light] .bday-overlay__card,:root[data-theme=light] .bday-hero{color:var(--text)}.draw-label{align-items:center;gap:6px;display:inline-flex}.draw-quick{flex-wrap:wrap;gap:6px;display:flex}.stepper .icon-button{width:38px;min-width:38px;height:38px}@media (width<=480px){.draw-title{flex-basis:100%}}.bday-emojis{gap:3px}.bday-emoji{width:34px;height:34px;font-size:1.05rem}.translation-old>summary{white-space:normal;flex-direction:column;gap:2px;display:flex}.translation-old>summary .muted{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.demo-banner{margin-bottom:var(--s-4);border-radius:var(--r-md);background:var(--warning-soft);color:var(--text);font-size:var(--fs-sm);border:1px solid #ffb54773;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:10px 12px;line-height:1.4;display:flex}.demo-banner>svg{color:var(--warning);flex:none}.demo-banner>span{flex:200px}.demo-banner .button{margin-left:auto}.demo-cta{align-items:center;gap:var(--s-3);border-color:var(--accent-line);color:inherit;flex-wrap:wrap;text-decoration:none;display:flex}.demo-cta:hover{border-color:var(--accent)}.demo-cta__icon{font-size:2rem}.demo-cta__text{flex-direction:column;flex:220px;gap:4px;display:flex}.demo-cta__text span{color:var(--text-2);font-size:var(--fs-sm)}.guest__actions{gap:var(--s-2);display:flex}.quiz{gap:var(--s-4);flex-direction:column;display:flex}.quiz__progress{gap:4px;display:flex}.quiz__progress span{background:var(--line-strong);border-radius:999px;flex:1;height:4px}.quiz__progress .is-now{background:var(--accent)}.quiz__progress .is-ok{background:var(--success)}.quiz__progress .is-bad{background:var(--danger)}.quiz__count{font-size:var(--fs-xs);color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.quiz__question{font-size:var(--fs-lg);font-weight:600}.quiz__options{gap:var(--s-2);flex-direction:column;display:flex}.quiz__option{align-items:flex-start;gap:var(--s-3);width:100%;min-height:48px;padding:var(--s-3) var(--s-4);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface-2);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s,opacity .15s;display:flex}.quiz__option:hover:not(:disabled){border-color:var(--accent-line)}.quiz__option:disabled{cursor:default}.quiz__letter{background:var(--surface-3);width:26px;height:26px;font-size:var(--fs-xs);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.quiz__option.is-correct{border-color:var(--success);background:color-mix(in srgb, var(--success) 14%, var(--surface-2))}.quiz__option.is-correct .quiz__letter{background:var(--success);color:#04130c}.quiz__option.is-wrong{border-color:var(--danger);background:color-mix(in srgb, var(--danger) 14%, var(--surface-2))}.quiz__option.is-dim{opacity:.55}.quiz__explain{gap:var(--s-2);padding:var(--s-4);border-radius:var(--r-md);border-left:3px solid var(--success);background:var(--surface-2);flex-direction:column;scroll-margin-bottom:96px;display:flex}.quiz__explain.is-bad{border-left-color:var(--danger)}.quiz__explain strong{align-items:center;gap:var(--s-2);display:flex}.quiz__explain .button{align-self:flex-start}.quiz--done{text-align:center;align-items:center}.quiz__score{color:var(--accent);font-variant-numeric:tabular-nums;font-size:clamp(2.4rem,2rem + 3vw,3.4rem);font-weight:800}.quiz--done .roll-actions{justify-content:center}.viewer__ai{color:#fff}.draw-hint{margin:calc(-1 * var(--s-2)) 0 0;color:var(--accent);font-size:var(--fs-sm);font-weight:600}.draw-actions{justify-content:center;gap:var(--s-2);margin-top:var(--s-3);flex-wrap:wrap;display:flex}.draw-history .draw-actions{justify-content:flex-start}.draw-person.is-done{color:var(--text-3);border-style:dashed;text-decoration:line-through}.draw-history__peek{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;flex-basis:100%;overflow:hidden}.icon-button:disabled{opacity:.35}.t-app{background:var(--bg);min-height:100vh}.t-bar{z-index:30;align-items:center;gap:var(--s-3);padding:10px var(--gutter);padding-top:calc(10px + env(safe-area-inset-top));isolation:isolate;display:flex;position:sticky;top:0}.t-bar:before{content:"";z-index:-1;border-bottom:1px solid var(--line);background:var(--bar-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:none;position:absolute;inset:0}.t-bar__nav{flex:1;justify-content:center;gap:4px;display:flex}.t-bar__link{border-radius:var(--r-pill);min-height:40px;color:var(--text-2);font-size:var(--fs-sm);align-items:center;gap:6px;padding:0 12px;font-weight:600;text-decoration:none;display:inline-flex}.t-bar__link.active{background:var(--accent-soft);color:var(--accent)}.t-bar__me{flex:none}@media (width<=640px){.t-bar .brand__text,.t-bar__me,.t-bar__link span{display:none}.t-bar__link{justify-content:center;min-width:48px}}.t-main{width:min(var(--content-max), 100%);padding:var(--s-6) var(--gutter) var(--s-10);margin:0 auto}.t-hero .hero__content{padding-right:0}.t-lessons{gap:var(--s-2);margin:0;padding:0;list-style:none;display:grid}.t-lesson{justify-content:space-between;align-items:center;gap:var(--s-2) var(--s-3);border:1px solid var(--line);border-left:3px solid hsl(var(--course-h,180) 70% 60%);border-radius:var(--r-md);background:var(--surface);color:inherit;flex-wrap:wrap;padding:12px 14px;text-decoration:none;display:flex}.t-lesson>div:first-child{flex-direction:column;gap:2px;min-width:0;display:flex}.t-lesson--link:hover{border-color:var(--accent-line)}.t-lesson__actions{gap:6px;display:flex}.t-day+.t-day{margin-top:var(--s-3)}.t-day__title{color:var(--text-3);font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;margin:0 0 6px}.t-sent{gap:var(--s-2);margin:0;padding:0;list-style:none;display:grid}.t-sent li{border:1px solid var(--line);border-radius:var(--r-md);flex-direction:column;gap:2px;padding:10px 12px;display:flex}.t-sent p{color:var(--text-2);font-size:var(--fs-sm);white-space:pre-wrap;margin:0}.roll-head{border-left:3px solid hsl(var(--course-h,180) 70% 60%);flex-direction:column;gap:6px;display:flex}.roll-head .tag{align-self:flex-start}.roll-head__title{font-size:var(--fs-xl);margin:0}.roll-head p{margin:0}.roll-date{align-items:center;gap:var(--s-2);margin-top:4px;display:flex}.roll-counts{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.roll-count{border-radius:var(--r-pill);background:var(--surface-2);font-size:var(--fs-sm);padding:3px 10px;font-weight:700}.roll-count--ok{color:var(--success)}.roll-count--warn{color:var(--warning)}.roll-count--bad{color:var(--danger)}.roll-count--info{color:var(--blue)}.roll-saving{color:var(--text-3);font-size:var(--fs-xs);margin-left:auto}.roll-actions{gap:var(--s-2);flex-wrap:wrap;margin-top:6px;display:flex}.roll-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.roll-row{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:10px 12px;display:flex}.roll-row--ok{border-color:#3fd99a59}.roll-row--bad{background:linear-gradient(90deg, #ff6b7d14, transparent 60%), var(--surface);border-color:#ff6b7d73}.roll-row--warn{border-color:#ffb54773}.roll-row__who{align-items:center;gap:10px;min-width:0;display:flex}.roll-row__who>span:last-child{flex-direction:column;min-width:0;display:flex}.roll-row__who small{color:var(--text-3)}.roll-row__marks{gap:4px;display:flex}.roll-mark{border:1px solid var(--line-strong);border-radius:var(--r-sm);width:44px;height:40px;color:var(--text-3);background:0 0;place-items:center;font-size:1rem;font-weight:800;display:grid}.roll-mark.is-on.roll-mark--ok{border-color:var(--success);color:var(--success);background:#3fd99a2e}.roll-mark.is-on.roll-mark--warn{border-color:var(--warning);color:var(--warning);background:#ffb5472e}.roll-mark.is-on.roll-mark--bad{border-color:var(--danger);color:var(--danger);background:#ff6b7d2e}.roll-mark.is-on.roll-mark--info{border-color:var(--blue);background:var(--blue-soft);color:var(--blue)}.checkin__panel{align-items:center;gap:var(--s-3);text-align:center;flex-direction:column;display:flex}.checkin__course{margin:0}.checkin__qr{border-radius:var(--r-lg);background:#fff;width:min(320px,78vw);padding:10px}.qr{width:100%;height:auto;display:block}.checkin__hint{color:var(--text-2);font-size:var(--fs-sm);margin:0}.checkin__code{font-family:var(--font-mono);letter-spacing:.08em;margin:0;font-size:clamp(2.4rem,10vw,4rem);font-weight:800}.checkin__timer{border-radius:var(--r-pill);background:var(--surface-2);width:min(320px,100%);height:26px;font-size:var(--fs-xs);position:relative;overflow:hidden}.checkin__timer:before{width:var(--p);background:var(--accent-soft);content:"";transition:width .5s linear;position:absolute;inset:0 auto 0 0}.checkin__timer span{line-height:26px;position:relative}.checkin__list{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.checkin__list li{border-radius:var(--r-pill);color:var(--success);font-size:var(--fs-sm);background:#3fd99a24;padding:4px 10px;font-weight:600}.checkin--big .checkin__qr{width:min(560px,92vw)}.checkin--big .checkin__code{font-size:clamp(3rem,14vw,6rem)}.stats-table-wrap{overflow-x:auto}.stats-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.stats-table th,.stats-table td{border-bottom:1px solid var(--line);text-align:center;padding:8px 6px}.stats-table th:first-child,.stats-table td:first-child{text-align:left}.stats-table td:first-child small{color:var(--text-3);display:block}.stats-table__pct{font-weight:800}.stats-table tr.is-low td{background:#ff6b7d14}.stats-table tr.is-low .stats-table__pct{color:var(--danger)}.t-accounts{gap:var(--s-3);margin:var(--s-3) 0 0;padding:0;list-style:none;display:grid}.t-account{padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-md);flex-direction:column;gap:6px;display:flex}.t-account__head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.t-account__dot{background:var(--text-3);border-radius:50%;width:9px;height:9px}.t-account__dot.is-online{background:var(--success);box-shadow:0 0 0 4px #3fd99a33}.t-account p{margin:0}.t-account__stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:6px 12px;margin:0;display:grid}.t-account__stats dt{color:var(--text-3);font-size:var(--fs-xs)}.t-account__stats dd{font-size:var(--fs-sm);margin:0;font-weight:600}.t-account__actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.t-code-msg{padding:var(--s-3);border-radius:var(--r-md);background:var(--surface-2);font-size:var(--fs-sm);white-space:pre-wrap;margin:0}.checkin-banner{border:1px solid var(--accent);border-radius:var(--r-lg);background:var(--accent-soft);color:var(--text);animation:draw-pop .3s var(--ease);align-items:center;gap:12px;padding:14px 16px;text-decoration:none;display:flex}.checkin-banner svg{color:var(--accent);flex:none}.checkin-banner>span{font-size:var(--fs-sm);flex-direction:column;gap:2px;display:flex}.checkin-form{gap:var(--s-3);flex-direction:column;display:flex}.checkin-form__code{min-height:64px;font-family:var(--font-mono);letter-spacing:.2em;text-align:center;font-size:2rem;font-weight:800}.checkin-form__open{color:var(--accent);font-size:var(--fs-sm);align-items:center;gap:6px;margin:0;display:flex}.checkin-done{text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.checkin-done svg{color:var(--success)}.checkin-done h2,.checkin-done p{margin:0}.official__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.official__head .panel-title{align-items:center;gap:8px;margin:0;display:flex}.official__courses{margin:var(--s-3) 0;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;padding:0;list-style:none;display:grid}.official__courses li{border:1px solid var(--line);border-left:3px solid var(--course,var(--accent));border-radius:var(--r-md);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 8px;padding:10px 12px;display:flex}.official__courses li .muted{width:100%}.official__pct{color:var(--success);font-weight:800}.official__pct.is-low{color:var(--danger)}.official__list{margin:0 0 var(--s-2);gap:4px;padding:0;list-style:none;display:grid}.official__row{border-radius:var(--r-sm);background:var(--surface-2);font-size:var(--fs-sm);grid-template-columns:1fr;gap:2px;padding:8px 10px;display:grid}@media (width>=640px){.official__row{grid-template-columns:180px 1fr auto;align-items:center}}.official__row--bad b{color:var(--danger)}.official__row--ok b{color:var(--success)}.official__row--warn b{color:var(--warning)}.official__row--info b{color:var(--blue)}.t-empty-today{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.t-empty-today p{margin:0}.roll-qr-note{color:var(--text-3);font-size:var(--fs-sm);align-items:center;gap:6px;display:inline-flex}.t-steps{color:var(--text-2);gap:8px;margin:0;padding-left:1.3em;line-height:1.5;display:grid}.t-file-pick{align-items:center;gap:var(--s-3);width:100%;min-height:64px;padding:var(--s-3) var(--s-4);border:1px dashed var(--line-strong);border-radius:var(--r-md);background:var(--surface-2);color:var(--text);font:inherit;text-align:left;cursor:pointer;display:flex}.t-file-pick:hover{border-color:var(--accent-line)}.t-file-pick svg{color:var(--accent);flex:none}.t-file-pick span{flex-direction:column;min-width:0;display:flex}.t-file-pick strong{overflow-wrap:anywhere}.t-file-pick small{color:var(--text-3);font-size:var(--fs-xs)}
