:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width>=769px) and (width<=1024px){:root{font-size:16px}}@media (width<=768px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#ffffffbf;--text-h:#fff;--text-muted:#ffffff80;--bg:#050505;--bg-secondary:#0a0a0a;--bg-surface:#111;--bg-card:#151515;--bg-hover:#1b1b1b;--border:#ffffff14;--border-subtle:#ffffff0a;--code-bg:#151515;--accent:#3b82f6;--accent-bg:#3b82f61a;--accent-border:#3b82f64d;--social-bg:#2f303a80;--shadow:#000000d9 0 10px 25px -5px, #000000a6 0 5px 10px -5px}#social .button-icon{filter:invert()brightness(2)}}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#050505;--bg-secondary:#0a0a0a;--bg-surface:#111;--bg-card:#151515;--bg-hover:#1b1b1b;--text:#ffffffbf;--text-h:#fff;--text-muted:#ffffff80;--border:#ffffff14;--border-subtle:#ffffff0a;--accent:#3b82f6;--accent-bg:#3b82f61a;--accent-border:#3b82f64d;--code-bg:#151515;--shadow:#000000d9 0 10px 25px -5px, #000000a6 0 5px 10px -5px}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--bg-secondary:#f8fafc;--bg-surface:#fff;--text:#6b6375;--text-h:#08060d;--text-muted:#0b060d80;--border:#e5e4e7;--border-subtle:#0000000d;--accent:#004f9e;--accent-bg:#004f9e1a;--accent-border:#004f9e66;--code-bg:#f4f3ec;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px}*,:before,:after{transition:background-color .22s,border-color .22s,color .22s,box-shadow .22s}img,video,svg,canvas{transition:none}*{scrollbar-width:thin;scrollbar-color:#00000040 transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#00000040;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#0006}::-webkit-scrollbar-corner{background:0 0}[data-theme=dark] *{scrollbar-color:#fff3 transparent}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#fff3}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#ffffff59}body{margin:0}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width>=769px) and (width<=1024px){h1{margin:20px 0;font-size:36px}}@media (width<=768px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width>=769px) and (width<=1024px){h2{font-size:20px}}@media (width<=768px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}[data-card-theme=default] .tt-class-card{border-radius:var(--card-border-radius);background-color:#fff;border-left:3px solid #004f9e;font-family:Montserrat,sans-serif;transition:transform .2s,box-shadow .2s;box-shadow:0 1px 6px #0000000d}[data-card-theme=default] .tt-class-card:before{background-color:var(--card-bg)}[data-card-theme=default] .tt-class-card:hover{transform:translateY(-2px);box-shadow:0 4px 14px #00000017}[data-card-theme=default] .tt-type-badge{letter-spacing:.08em;text-transform:uppercase;font-family:Montserrat,sans-serif;font-weight:700}[data-card-theme=default] .tt-card-subject{color:#1a1a2e;font-family:Montserrat,sans-serif;font-weight:700}[data-card-theme=default] .tt-card-code{color:#3333338f;letter-spacing:.05em;text-transform:uppercase;font-family:Montserrat,sans-serif;font-weight:600}[data-card-theme=default] .tt-card-room{color:#333333ad;text-transform:uppercase;background:#3333331f;border-radius:999px;font-family:Montserrat,sans-serif;font-weight:600}[data-theme=dark] [data-card-theme=default] .tt-class-card{background-color:#0f1419;box-shadow:0 1px 6px #0006}[data-theme=dark] [data-card-theme=default] .tt-class-card:hover{box-shadow:0 4px 14px #0000008c}[data-theme=dark] [data-card-theme=default] .tt-card-subject{color:#ffffffeb}[data-theme=dark] [data-card-theme=default] .tt-card-code{color:#ffffff80}[data-theme=dark] [data-card-theme=default] .tt-card-room{color:#ffffffb3;background:#ffffff14}[data-card-theme=aurora] .tt-class-card{background:linear-gradient(135deg,#eef2ff 0%,#fce7f3 100%);border-left:4px solid #6366f1;border-radius:14px;font-family:Inter,Montserrat,sans-serif;transition:transform .25s,box-shadow .25s,filter .25s;box-shadow:0 2px 10px #6366f11f}[data-card-theme=aurora] .tt-class-card:before{background-color:#0000}[data-card-theme=aurora] .tt-class-card:hover{filter:saturate(1.1);transform:translateY(-3px);box-shadow:0 8px 22px #6366f138}[data-card-theme=aurora] .tt-type-badge{letter-spacing:.12em;text-transform:uppercase;font-family:Inter,sans-serif;font-weight:600}[data-card-theme=aurora] .tt-card-subject{color:#1e1b4b;font-family:Playfair Display,Georgia,serif;font-weight:600}[data-card-theme=aurora] .tt-card-code{color:#1e1b4b8c;letter-spacing:.04em;text-transform:none;font-family:JetBrains Mono,Fira Code,monospace;font-weight:500}[data-card-theme=aurora] .tt-card-room{color:#4c1d95;text-transform:uppercase;letter-spacing:.05em;background:#7c3aed26;border-radius:999px;font-family:Inter,sans-serif;font-weight:600}[data-theme=dark] [data-card-theme=aurora] .tt-class-card{background:linear-gradient(135deg,#1e1b4b 0%,#4c1d24 100%);box-shadow:0 2px 10px #0006}[data-theme=dark] [data-card-theme=aurora] .tt-card-subject{color:#ede9fe}[data-theme=dark] [data-card-theme=aurora] .tt-card-code{color:#ede9fe8c}[data-theme=dark] [data-card-theme=aurora] .tt-card-room{color:#e9d5ff;background:#a78bfa33}[data-card-theme=paper] .tt-class-card{background-color:#fbfaf6;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12'><circle cx='1.5' cy='1.5' r='1' fill='%23d6d3c3'/></svg>");background-size:12px 12px;border:1px dashed #78715866;border-left:4px solid #78716c;border-radius:4px;font-family:Georgia,serif;transition:transform .2s,box-shadow .2s;box-shadow:0 1px #7871581a}[data-card-theme=paper] .tt-class-card:before{background-color:#0000}[data-card-theme=paper] .tt-class-card:hover{transform:rotate(-.4deg);box-shadow:0 4px 12px #7871582e}[data-card-theme=paper] .tt-type-badge{letter-spacing:.15em;text-transform:uppercase;font-family:Courier New,monospace;font-weight:700}[data-card-theme=paper] .tt-card-subject{color:#3f3a2a;font-family:Georgia,serif;font-style:italic;font-weight:700}[data-card-theme=paper] .tt-card-code{color:#78716c;letter-spacing:0;text-transform:none;font-family:Courier New,monospace;font-weight:400}[data-card-theme=paper] .tt-card-room{color:#44403c;text-transform:uppercase;letter-spacing:.1em;background:#78715826;border-radius:2px;font-family:Courier New,monospace;font-weight:700}[data-theme=dark] [data-card-theme=paper] .tt-class-card{background-color:#1c1a16;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12'><circle cx='1.5' cy='1.5' r='1' fill='%23454039'/></svg>");border-color:#a8a28940 #a8a28940 #a8a28940 #a8a289}[data-theme=dark] [data-card-theme=paper] .tt-card-subject{color:#e7e2cf}[data-theme=dark] [data-card-theme=paper] .tt-card-code{color:#e7e2cf8c}[data-theme=dark] [data-card-theme=paper] .tt-card-room{color:#f5f3e6;background:#e7e2cf1a}[data-card-theme=custom] .tt-class-card{background-color:var(--ct-bg,#fff);background-image:var(--ct-bg-image,none);border-left:3px solid var(--ct-border,#004f9e);border-radius:var(--ct-radius,var(--card-border-radius));box-shadow:var(--ct-shadow,0 1px 6px #0000000d);font-family:var(--ct-font,"Montserrat", sans-serif);background-position:50%;background-size:cover;transition:transform .2s,box-shadow .2s}[data-card-theme=custom] .tt-class-card:before{background-color:var(--ct-bg,var(--card-bg))}[data-card-theme=custom] .tt-class-card:hover{transform:var(--ct-hover-transform,translateY(-2px));box-shadow:var(--ct-hover-shadow,0 4px 14px #00000017)}[data-card-theme=custom] .tt-type-badge{font-family:var(--ct-badge-font,var(--ct-font,"Montserrat", sans-serif));letter-spacing:.08em;text-transform:uppercase;font-weight:700}[data-card-theme=custom] .tt-card-subject{font-family:var(--ct-subject-font,var(--ct-font,"Montserrat", sans-serif));color:var(--ct-subject-color,#1a1a2e);font-weight:700}[data-card-theme=custom] .tt-card-code{font-family:var(--ct-code-font,var(--ct-font,"Montserrat", sans-serif));color:var(--ct-code-color,#3333338f);letter-spacing:.05em;text-transform:uppercase;font-weight:600}[data-card-theme=custom] .tt-card-room{font-family:var(--ct-room-font,var(--ct-font,"Montserrat", sans-serif));color:var(--ct-room-color,#333333ad);background:var(--ct-room-bg,#3333331f);border-radius:var(--ct-room-radius,999px);text-transform:uppercase;font-weight:600}.navbar{bottom:10px;top:unset;z-index:200;width:max-content;position:fixed;left:50%;transform:translate(-50%)}.navbar-pill{background:#202060;border:1px solid #0060c080;border-radius:999px;align-items:center;gap:1.25rem;padding:8px 16px;display:flex;box-shadow:0 4px 24px #00206073,inset 0 1px #40e0e026}.navbar-logo-link{color:inherit;align-items:center;line-height:0;text-decoration:none;display:inline-flex}.navbar-logo-img{object-fit:contain;width:auto;height:30px;display:block}.navbar-actions{align-items:center;gap:.25rem;display:flex}.navbar-icon-btn{color:#c8e0ff;cursor:pointer;background:#0060c033;border:1px solid #0060c066;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;transition:background .18s,color .18s,border-color .18s,transform .18s,box-shadow .18s;display:flex}.navbar-icon-btn:hover{color:#e6f6ff;background:#40e0e01f;border-color:#40e0e073;transform:translateY(-1.5px);box-shadow:0 4px 12px #00206059}.navbar-icon-btn:active{box-shadow:none;transform:translateY(0)}.navbar-tip-wrap{display:inline-flex;position:relative}.navbar-tip-wrap:after{content:attr(data-tip);color:#c8e0ff;white-space:nowrap;pointer-events:none;opacity:0;background:#0f1535;border:1px solid #0060c066;border-radius:6px;padding:4px 8px;font-size:.7rem;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px)}.navbar-tip-wrap:hover:after{opacity:1;transform:translate(-50%)translateY(0)}body{padding-top:0}@media (width<=440px){.navbar-logo-link{display:none}}.footer{border-top:1px solid var(--border);flex-direction:row;flex-shrink:0;justify-content:space-between;align-items:center;padding:1.625rem 2rem;display:flex}.footer-copy{color:var(--text-h);margin:0;font-size:.85rem;font-weight:600}.footer-socials{gap:1.25rem;display:flex}.footer-socials a{color:var(--text);align-items:center;gap:.35rem;font-size:.82rem;text-decoration:none;transition:color .2s;display:flex;position:relative}.footer-socials a:hover{color:var(--accent)}@media (width<=628px){.footer-socials{gap:.85rem}.footer-socials a span{display:none}.footer-socials a:after{content:attr(data-tip);background:var(--text-h);color:var(--bg);white-space:nowrap;pointer-events:none;opacity:0;border-radius:6px;padding:4px 8px;font-size:.7rem;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px)}.footer-socials a:hover:after,.footer-socials a:focus-visible:after{opacity:1;transform:translate(-50%)translateY(0)}}.scroller-wrapper{width:80%;padding:.5rem 0;position:relative;overflow:hidden visible}.scroller-track{scroll-behavior:auto;scrollbar-width:none;flex-wrap:nowrap;gap:1rem;padding:.5rem 1.25rem;display:flex;overflow-x:auto}.scroller-track--centered{justify-content:center;overflow-x:hidden}.scroller-track::-webkit-scrollbar{display:none}.scroller-wrapper:before,.scroller-wrapper:after{content:"";pointer-events:none;z-index:1;width:48px;position:absolute;top:0;bottom:0}.scroller-wrapper:before{background:linear-gradient(to right, var(--bg), transparent);left:0}.scroller-wrapper:after{background:linear-gradient(to left, var(--bg), transparent);right:0}.scroller-wrapper--centered:before,.scroller-wrapper--centered:after{display:none}.scroll-arrow{z-index:2;border:1px solid var(--border);background:var(--bg);width:28px;height:28px;color:var(--text-h);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1.25rem;line-height:1;transition:background .2s,color .2s,box-shadow .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.scroll-arrow:hover{background:var(--accent-bg);color:var(--accent);border-color:var(--accent-border);box-shadow:0 2px 8px #0000001f}.scroll-arrow--left{left:8px}.scroll-arrow--right{right:8px}.contributor-chip{color:var(--text);flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;display:flex}.contributor-chip img{border:2px solid var(--border);border-radius:50%;width:54px;height:54px;transition:transform .2s,border-color .2s;display:block}.contributor-chip:hover img,.contributor-chip:focus-visible img{border-color:var(--accent);transform:scale(1.12)}.contributor-chip span{display:none}.no-contributors{color:var(--text);margin:0;font-size:.85rem}.combobox{width:100%;display:block;position:relative}.combobox.is-disabled{opacity:.55;cursor:not-allowed}.combobox-input{box-sizing:border-box;width:100%}.combobox-list{z-index:100;background:var(--bg,#fff);color:var(--text-h,#111);border:1px solid var(--border,#ddd);border-radius:8px;max-height:260px;margin:0;padding:4px 0;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000002e}.combobox.is-up .combobox-list{top:auto;bottom:calc(100% + 4px)}.combobox-option{cursor:pointer;white-space:nowrap;justify-content:space-between;align-items:baseline;gap:.75rem;padding:8px 12px;font-size:.9rem;line-height:1.2;display:flex}.combobox-option.is-active{background:#0060c01f}.combobox-option-label{text-overflow:ellipsis;flex:auto;overflow:hidden}.combobox-option-hint{color:var(--text,#666);opacity:.8;flex:none;font-size:.78rem}.batch-selector{flex-direction:column;gap:.75rem;width:100%;display:flex}.batch-label{color:var(--text);letter-spacing:.04em;margin:0;font-size:.9rem}.batch-fields{flex-direction:column;gap:.6rem;display:flex}.batch-dropdown{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-h);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right .9rem center;background-repeat:no-repeat;border-radius:8px;padding:.65rem 2.5rem .65rem 1rem;font-size:.95rem;transition:border-color .2s,box-shadow .2s}.batch-dropdown:focus{border-color:#0060c0;outline:none;box-shadow:0 0 0 3px #0060c026}.batch-dropdown:disabled{opacity:.55;cursor:not-allowed}.batch-selected{color:var(--text);margin:0;font-size:.82rem}.batch-selected strong{color:#0060c0}.batch-loading{color:var(--text);align-items:center;gap:.55rem;margin-top:.15rem;font-size:.85rem;display:flex}.batch-spinner{border:2px solid #0060c033;border-top-color:#0060c0;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite batch-spin}.batch-selector.is-loading .batch-fields{opacity:.7;pointer-events:none}@keyframes batch-spin{to{transform:rotate(360deg)}}.main{flex-direction:column;flex:1;align-items:center;gap:2.5rem;padding:2.5rem 2rem;display:flex}.page-tagline{letter-spacing:.15em;text-transform:uppercase;color:var(--text);text-align:center;flex:1;margin:0;font-size:.78rem;font-weight:600}.page-header{border-bottom:1px solid var(--border);align-items:center;gap:.75rem;width:100%;padding-bottom:1rem;display:flex}.page-header-logo{object-fit:contain;flex-shrink:0;width:auto;height:32px;display:none}.center-grid{grid-template-columns:1fr 1fr;align-items:stretch;gap:1.5rem;width:100%;max-width:860px;display:grid}.left-panel{justify-content:center;align-items:center;display:flex}.brand-logo{object-fit:contain;max-width:100%;max-height:280px}.right-panel{display:flex}.brand-card{border:1px solid var(--border);border-radius:12px;flex-direction:column;flex:1;gap:1rem;padding:1.5rem;display:flex}.brand-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-h);margin:0;font-size:.82rem;font-weight:700}.brand-sem{color:var(--text);opacity:.85;margin-left:.4rem}.brand-heading{flex-direction:column;gap:.15rem;display:flex}.brand-affiliation{color:var(--text);opacity:.7;margin:0;font-size:.78rem;font-weight:400}.brand-logo-box{border:1px solid var(--border);border-radius:8px;flex-direction:column;flex:1;justify-content:center;padding:1.25rem;display:flex}.contributors-section{flex-direction:column;align-items:center;gap:.75rem;width:100%;margin-top:auto;display:flex}.short-tagline{text-transform:uppercase;letter-spacing:.12em;color:var(--text);margin:0;font-size:.72rem}.repo-link{color:#0060c0;letter-spacing:.04em;font-size:.82rem;text-decoration:none}.repo-link:hover{text-decoration:underline}@media (width<=720px){.main{gap:1.25rem;padding:1rem}.page-header-logo{height:56px;display:block}.page-header:after{content:"";flex-shrink:0;width:56px}.center-grid{grid-template-columns:1fr}.left-panel{display:none}}.login-page{background-color:var(--bg);box-sizing:border-box;z-index:99999;justify-content:center;align-items:center;width:100vw;height:100vh;min-height:100vh;padding:20px;display:flex;position:fixed;top:0;left:0;overflow:auto}[data-theme=light] .login-page{background-color:var(--bg)}.login-page .login-box{background:var(--bg-card,var(--bg-secondary,var(--bg)));box-sizing:border-box;border-radius:12px;width:100%;max-width:380px;padding:3rem 2rem 2rem;position:relative;box-shadow:0 16px 48px #00000059}[data-theme=light] .login-page .login-box{background:#fff;box-shadow:0 16px 48px #00000014}.login-page .login-back-home-btn{color:var(--text);cursor:pointer;opacity:.8;background:0 0;border:none;padding:0;font-size:.85rem;transition:opacity .2s;position:absolute;top:16px;left:20px}.login-page .login-back-home-btn:hover{opacity:1}.login-page .login-form{flex-direction:column;align-items:center;gap:1rem;display:flex}.login-page .login-logo-container{justify-content:center;align-items:center;display:flex}.login-page .login-logo-img{object-fit:contain;width:auto;max-height:54px}.login-page .login-header{color:var(--text-h);text-align:center;margin-bottom:.25rem;font-size:1.4rem;font-weight:700}.login-page .login-subtle{color:var(--text);opacity:.65;text-align:center;margin:0;font-size:.85rem;line-height:1.4}.login-page .login-input{border:1px solid var(--border);width:100%;height:42px;color:var(--text-h);box-sizing:border-box;background:0 0;border-radius:6px;outline:none;padding:0 12px;font-size:.9rem;transition:border-color .2s}.login-page .login-input::placeholder{color:var(--text);opacity:.4}.login-page .login-input:focus{border-color:var(--text)}.login-page .login-button{border:1px solid var(--border);cursor:pointer;box-sizing:border-box;border-radius:6px;width:100%;height:42px;font-size:.9rem;font-weight:600;transition:opacity .2s,background-color .2s}.login-page .login-button:disabled{opacity:.55;cursor:not-allowed}.login-page .login-button--primary{color:#fff;background:#0060c0;border-color:#0060c0}.login-page .login-button--primary:hover:not(:disabled){opacity:.9}.login-page .login-button--google{color:var(--text);background:0 0;justify-content:center;align-items:center;gap:10px;display:flex}.login-page .login-button--google:hover:not(:disabled){background:#ffffff0a}[data-theme=light] .login-page .login-button--google:hover:not(:disabled){background:#0000000a}.login-page .login-button--ghost{color:var(--text);background:0 0}.login-page .login-button--ghost:hover:not(:disabled){background:#ffffff0a}[data-theme=light] .login-page .login-button--ghost:hover:not(:disabled){background:#0000000a}.login-page .login-icon{flex-shrink:0;width:16px;height:16px}.login-page .login-error{color:#ff7a7d;text-align:center;background:#e5484d1f;border:1px solid #e5484d66;border-radius:6px;width:100%;margin:0;padding:8px 10px;font-size:.8rem;line-height:1.4}[data-theme=light] .login-page .login-error{color:#c01a1e}.login-page .login-footer{border-top:1px solid var(--border);flex-direction:column;align-items:center;gap:.35rem;width:100%;margin-top:.5rem;padding-top:.75rem;font-size:.8rem;display:flex}.login-page .login-footer-prompt{color:var(--text);opacity:.7;margin:0}.login-page .login-link{color:#0060c0;font-weight:500;text-decoration:none}.login-page .login-link:hover{text-decoration:underline}.login-page .login-linkbtn{cursor:pointer;font:inherit;background:0 0;border:none;padding:0}.login-page .login-fallback{text-align:center}.login-page .login-fallback-title{color:var(--text-h);margin:0 0 12px;font-size:1.25rem;font-weight:600}.login-page .login-fallback-text{color:var(--text);opacity:.75;margin:0 0 24px;font-size:.92rem;line-height:1.55}.login-page .login-fallback-btn{border:1px solid var(--border);color:var(--text);border-radius:999px;padding:8px 16px;font-size:.9rem;text-decoration:none;transition:background .15s,border-color .15s;display:inline-block}.login-page .login-fallback-btn:hover{border-color:var(--text);background:#ffffff0d}@media (width<=480px){.login-page .login-box{box-shadow:none;background:0 0;padding:3rem 1rem 1.5rem}[data-theme=light] .login-page .login-box{box-shadow:none;background:0 0}}.profile-page{background:var(--bg);min-height:100svh;color:var(--text);box-sizing:border-box;justify-content:center;padding:32px 20px 60px;display:flex}.gcal-card{gap:0}.gcal-header{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;margin-bottom:14px;padding:4px 4px 14px;display:flex}.gcal-icon{flex-shrink:0;margin-top:2px;font-size:1.5rem;line-height:1}.gcal-title{color:var(--text-h);margin:0 0 2px;font-size:.95rem;font-weight:600}.gcal-subtitle{opacity:.6;margin:0;font-size:.78rem}.gcal-status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:6px;margin-left:auto}.gcal-status-dot--on{background:#34d399;box-shadow:0 0 6px #34d3998c}.gcal-section{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:0 4px;display:flex}.gcal-info-grid{grid-template-columns:auto auto;justify-content:center;align-items:baseline;gap:4px 16px;display:grid}.gcal-label{opacity:.55;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;font-size:.75rem;font-weight:500}.gcal-value{color:var(--text-h);word-break:break-all;font-size:.85rem}.gcal-hint{opacity:.7;margin:0;font-size:.82rem;line-height:1.55}.gcal-warn{color:#f59e0b;margin:0;font-size:.8rem}.gcal-error{color:#ff6b70;background:#ff6b701f;border:1px solid #ff6b704d;border-radius:8px;margin:0 0 8px;padding:8px 12px;font-size:.82rem;line-height:1.5}[data-theme=light] .gcal-error{color:#dc2626;background:#dc262612;border-color:#dc262640}.gcal-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.gcal-btn{cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;padding:8px 18px;font-size:.83rem;font-weight:500;transition:background .15s,opacity .15s,border-color .15s;display:inline-flex}.gcal-btn:disabled{opacity:.45;cursor:not-allowed}.gcal-btn--primary{color:#fff;background:#3b82f6;border-color:#3b82f6}.gcal-btn--primary:hover:not(:disabled){background:#2563eb;border-color:#2563eb}.gcal-btn--secondary{color:#93c5fd;background:#3b82f626;border-color:#3b82f659}.gcal-btn--secondary:hover:not(:disabled){background:#3b82f640}[data-theme=light] .gcal-btn--secondary{color:#0060c0;background:#0060c01a;border-color:#0060c04d}.gcal-btn--ghost{color:var(--text);border-color:var(--border);background:0 0}.gcal-btn--ghost:hover:not(:disabled){background:var(--bg-hover,#ffffff0d)}.gcal-danger-row{border-top:1px solid var(--border);justify-content:center;align-items:center;gap:16px;width:100%;margin-top:4px;padding-top:4px;display:flex}.gcal-autosync-row{border:1px solid var(--border);background:#ffffff08;border-radius:12px;align-items:center;gap:12px;width:100%;padding:10px 14px;display:flex}[data-theme=light] .gcal-autosync-row{background:#00000005}.gcal-autosync-label{text-align:left;flex-direction:column;flex:1;gap:2px;display:flex}.gcal-autosync-title{color:var(--text-h);font-size:.85rem;font-weight:600}.gcal-autosync-sub{opacity:.55;font-size:.75rem;line-height:1.4}.gcal-toggle{cursor:pointer;background:#ffffff1f;border:1px solid #ffffff26;border-radius:999px;flex-shrink:0;width:44px;height:24px;padding:0;transition:background .2s,border-color .2s;position:relative}.gcal-toggle:disabled{opacity:.45;cursor:not-allowed}.gcal-toggle--on{background:#3b82f6;border-color:#3b82f6}.gcal-toggle-knob{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;display:block;position:absolute;top:2px;left:2px}.gcal-toggle--on .gcal-toggle-knob{transform:translate(20px)}[data-theme=light] .gcal-toggle{background:#0000001a;border-color:#00000026}.gcal-link{cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;font-size:.78rem;text-decoration:underline;transition:opacity .15s}.gcal-link:disabled{opacity:.45;cursor:not-allowed}.gcal-link--warn{color:#f59e0b}.gcal-link--warn:hover:not(:disabled){opacity:.75}.gcal-link--danger{color:#ff6b70}.gcal-link--danger:hover:not(:disabled){opacity:.75}[data-theme=light] .gcal-link--danger{color:#dc2626}.profile-loading{color:var(--text);opacity:.65}.confirm-backdrop{z-index:2000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.confirm-modal{background:#0f1117;border:1px solid #ffffff1a;border-radius:18px;width:100%;max-width:360px;padding:28px 24px 20px;box-shadow:0 24px 64px #0009}[data-theme=light] .confirm-modal{background:#fff;border-color:#0000001a;box-shadow:0 16px 48px #0000002e}.confirm-title{color:var(--text-h,#fff);margin:0 0 10px;font-size:1rem;font-weight:700}[data-theme=light] .confirm-title{color:#0f172a}.confirm-message{color:var(--text,#ccc);opacity:.8;margin:0 0 22px;font-size:.85rem;line-height:1.6}[data-theme=light] .confirm-message{opacity:.65}.confirm-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.confirm-btn{cursor:pointer;border:1px solid #0000;border-radius:10px;height:38px;padding:0 18px;font-family:inherit;font-size:.85rem;font-weight:600;transition:background .15s,opacity .15s}.confirm-btn:hover{opacity:.85}.confirm-btn--ghost{color:var(--text,#ccc);background:0 0;border-color:#ffffff26}[data-theme=light] .confirm-btn--ghost{color:#000000a6;border-color:#00000026}.confirm-btn--primary{color:#fff;background:#3b82f6}.confirm-btn--danger{color:#fff;background:#ef4444}.profile-shell{flex-direction:column;gap:20px;width:100%;max-width:620px;display:flex}.profile-topbar{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;display:grid}.profile-back-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:999px;padding:6px 14px;font-size:.85rem;transition:background .15s,border-color .15s,color .15s}.profile-back-btn:hover{background:var(--bg-hover,#ffffff0a);border-color:var(--text);color:var(--text-h)}.profile-topbar-title{text-align:center;letter-spacing:.16em;text-transform:uppercase;color:var(--text);opacity:.7;font-size:.85rem;font-weight:600}.profile-signout{color:#ff6b70;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;padding:6px 12px;font-size:.82rem;font-weight:500;transition:background .15s,border-color .15s}.profile-signout:hover:not(:disabled){background:#ff6b7014;border-color:#ff6b7059}.profile-signout:disabled{opacity:.55;cursor:not-allowed}.profile-hero{border:1px solid var(--border);background:var(--bg-card,var(--bg-secondary,var(--bg)));text-align:center;border-radius:18px;padding:36px 24px 28px;position:relative;overflow:hidden}.profile-hero-bg{pointer-events:none;opacity:.9;background:radial-gradient(at top,#3b82f638,#0000 60%),radial-gradient(at 100% 100%,#aa3bff24,#0000 55%);position:absolute;inset:0}[data-theme=light] .profile-hero-bg{background:radial-gradient(at top,#0060c01a,#0000 60%),radial-gradient(at 100% 100%,#aa3bff0f,#0000 55%)}.profile-hero-content{flex-direction:column;align-items:center;gap:10px;display:flex;position:relative}.profile-avatar{object-fit:cover;border:2px solid var(--border);background:var(--bg);border-radius:50%;width:88px;height:88px;box-shadow:0 10px 30px #00000059}.profile-avatar--initials{color:var(--text-h);letter-spacing:.04em;background:linear-gradient(135deg,#3b82f659,#aa3bff4d);justify-content:center;align-items:center;font-size:1.7rem;font-weight:700;display:flex}.profile-display-name{color:var(--text-h);letter-spacing:-.01em;margin:6px 0 0;font-size:1.4rem;font-weight:700}.profile-display-email{opacity:.7;word-break:break-all;margin:0;font-size:.85rem}.profile-batch-pill{letter-spacing:.04em;color:#93c5fd;background:#3b82f626;border:1px solid #3b82f659;border-radius:999px;margin-top:4px;padding:4px 12px;font-size:.78rem;font-weight:600;display:inline-block}[data-theme=light] .profile-batch-pill{color:#0060c0;background:#0060c01a;border-color:#0060c04d}.profile-card{border:1px solid var(--border);background:var(--bg-card,var(--bg-secondary,var(--bg)));border-radius:16px;flex-direction:column;gap:4px;padding:22px;display:flex}.profile-card--solo{padding:28px}.profile-card-section{padding:8px 4px}.profile-card-divider{background:var(--border);opacity:.7;height:1px;margin:4px 0}.profile-field{flex-direction:column;gap:8px;display:flex}.profile-field-label{color:var(--text-h);letter-spacing:.12em;text-transform:uppercase;opacity:.85;font-size:.72rem;font-weight:700}.profile-input{border:1px solid var(--border);height:44px;color:var(--text-h);background:0 0;border-radius:10px;outline:none;padding:0 14px;font-family:inherit;font-size:.95rem;transition:border-color .15s,box-shadow .15s}.profile-input:focus{border-color:var(--accent,#3b82f6);box-shadow:0 0 0 3px var(--accent-bg,#3b82f61f)}.profile-field-hint{opacity:.6;font-size:.75rem;line-height:1.4}.profile-batch-row{flex-direction:column;gap:6px;display:flex}.profile-batch-path{background:var(--bg-hover,#ffffff08);border:1px solid var(--border);border-radius:12px;align-items:center;gap:0;display:flex;overflow:hidden}.profile-batch-segment{flex:1;position:relative}.profile-batch-segment+.profile-batch-segment:before{content:"";background:var(--border);width:1px;height:60%;position:absolute;top:20%;left:0}.profile-batch-segment-label{text-transform:uppercase;letter-spacing:.08em;opacity:.45;padding:8px 12px 0;font-size:.65rem;font-weight:600;display:block}.profile-batch-segment .combobox{width:100%}.profile-batch-segment .profile-combobox{height:auto;min-height:32px;padding-top:2px;padding-bottom:8px;font-size:.88rem;font-weight:500;box-shadow:none!important;background:0 0!important;border:none!important;border-radius:0!important}.profile-batch-segment .profile-combobox:focus{box-shadow:none!important;border:none!important}.profile-batch-selected{color:var(--text);background:#3b82f614;border:1px solid #3b82f640;border-radius:12px;align-items:center;gap:8px;padding:10px 14px;font-size:.85rem;display:flex}[data-theme=light] .profile-batch-selected{background:#0060c00f;border-color:#0060c033}.profile-batch-selected-code{color:#93c5fd;flex-shrink:0;font-size:1rem;font-weight:700}[data-theme=light] .profile-batch-selected-code{color:#0060c0}.profile-batch-selected-name{opacity:.7;flex:1;line-height:1.35}.profile-batch-change{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:7px;flex-shrink:0;padding:3px 10px;font-size:.75rem;transition:background .15s}.profile-batch-change:hover{background:var(--bg-hover,#ffffff0d)}.profile-combobox{border:1px solid var(--border);width:100%;height:44px;color:var(--text-h);cursor:pointer;background-color:#0000;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;border-radius:10px;outline:none;padding:0 38px 0 14px;font-family:inherit;font-size:.95rem;transition:border-color .15s,box-shadow .15s,opacity .15s}.profile-combobox::placeholder{color:var(--text);opacity:.5}.profile-combobox:focus{border-color:var(--accent,#3b82f6);box-shadow:0 0 0 3px var(--accent-bg,#3b82f61f)}.combobox.is-disabled .profile-combobox{cursor:not-allowed;opacity:.55}.profile-batch-row .combobox{width:100%}.profile-error{color:#ff7a7d;background:#e5484d1f;border:1px solid #e5484d59;border-radius:8px;margin:4px 4px 0;padding:8px 12px;font-size:.82rem}[data-theme=light] .profile-error{color:#c01a1e}.profile-actions{justify-content:flex-end;gap:10px;margin-top:8px;padding:0 4px;display:flex}.profile-btn{cursor:pointer;border:1px solid var(--border);border-radius:10px;height:40px;padding:0 18px;font-family:inherit;font-size:.9rem;font-weight:600;transition:opacity .15s,background .15s,border-color .15s,color .15s}.profile-btn:disabled{opacity:.45;cursor:not-allowed}.profile-btn--ghost{color:var(--text);background:0 0}.profile-btn--ghost:hover:not(:disabled){border-color:var(--text);color:var(--text-h);background:var(--bg-hover,#ffffff0a)}.profile-btn--primary{color:#fff;background:linear-gradient(135deg,#0060c0 0%,#3b82f6 100%);border-color:#0000;box-shadow:0 6px 18px #3b82f640}.profile-btn--primary:hover:not(:disabled){filter:brightness(1.08)}@media (width<=520px){.profile-page{padding:20px 14px 60px}.profile-hero{border-radius:14px;padding:28px 18px 22px}.profile-avatar{width:72px;height:72px}.profile-display-name{font-size:1.2rem}.profile-card{border-radius:14px;padding:16px}.profile-batch-row{grid-template-columns:1fr}.profile-actions{flex-direction:column-reverse}.profile-btn{width:100%}.gcal-autosync-row{flex-wrap:wrap;gap:8px}.gcal-autosync-label{min-width:0}.gcal-info-grid{grid-template-columns:auto auto;font-size:.78rem}.confirm-actions{flex-direction:column-reverse}.confirm-btn{width:100%}}.tt-grid-frame{isolation:isolate;--col-width:140px;--row-height:48px;--time-col-width:96px;--card-padding:3px 8px 3px;--card-border-radius:12px;--card-font-size:10px;--card-meta-size:8.5px;--badge-font-size:8px;--header-padding:11px 10px;--header-font-size:13px;--time-font-size:15px;--grid-line-top:9px;--active-dot-size:5px;background:#fff;border:none;border-radius:16px;flex:none;align-self:flex-start;width:100%;min-height:0;max-height:100%;margin-bottom:24px;position:relative;overflow:hidden}.tt-grid-frame:before{content:"";border-radius:inherit;pointer-events:none;z-index:10;--corner-reveal:26px;-webkit-mask:radial-gradient(circle var(--corner-reveal) at top left, #000 99%, transparent 100%), radial-gradient(circle var(--corner-reveal) at top right, #000 99%, transparent 100%), radial-gradient(circle var(--corner-reveal) at bottom left, #000 99%, transparent 100%), radial-gradient(circle var(--corner-reveal) at bottom right,#000 99%, transparent 100%);-webkit-mask:radial-gradient(circle var(--corner-reveal) at top left, #000 99%, transparent 100%), radial-gradient(circle var(--corner-reveal) at top right, #000 99%, transparent 100%), radial-gradient(circle var(--corner-reveal) at bottom left, #000 99%, transparent 100%), radial-gradient(circle var(--corner-reveal) at bottom right,#000 99%, transparent 100%);mask:radial-gradient(circle var(--corner-reveal) at top left, #000 99%, transparent 100%), radial-gradient(circle var(--corner-reveal) at top right, #000 99%, transparent 100%), radial-gradient(circle var(--corner-reveal) at bottom left, #000 99%, transparent 100%), radial-gradient(circle var(--corner-reveal) at bottom right,#000 99%, transparent 100%);border:1.5px solid #78788273;position:absolute;inset:0}.tt-grid-scroll-wrapper{z-index:1;border-radius:inherit;width:100%;height:100%;position:relative;overflow:auto}.tt-grid-watermark{z-index:0;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden}.tt-watermark-logo{object-fit:contain;opacity:.3;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:clamp(160px,26%,320px);height:auto;display:block}.tt-grid-table{width:100%;min-width:calc(var(--time-col-width) + 5 * var(--col-width));transform-origin:0 0;will-change:transform;display:block;position:relative}.tt-grid-header-row,.tt-grid-body-row{grid-template-columns:var(--time-col-width) repeat(5, minmax(var(--col-width), 1fr));min-width:calc(var(--time-col-width) + 5 * var(--col-width));display:grid}.tt-grid-header-row{z-index:10;position:sticky;top:0}.tt-day-active-pill{left:var(--time-col-width);width:calc((100% - var(--time-col-width)) / 5);pointer-events:none;opacity:1;z-index:12;background:#004f9e;border-radius:3px 3px 0 0;height:3px;transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .2s;position:absolute;bottom:0}.tt-day-active-pill--hidden{opacity:0}.tt-time-header-cell{padding:var(--header-padding);box-sizing:border-box;z-index:13;background:#fff;border-bottom:2px solid #33333314;border-right:1px solid #33333312;justify-content:center;align-items:center;display:flex;position:sticky;top:0;left:0;overflow:hidden}.tt-batch-header-label{font-family:Montserrat,sans-serif;font-size:calc(var(--header-font-size) + 4px);letter-spacing:.08em;text-transform:uppercase;color:#3333338c;text-align:center;white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:100%;font-weight:700;line-height:1;overflow:hidden}[data-theme=dark] .tt-batch-header-label{color:#ffffffa6}.tt-day-header-cell{text-align:center;padding:var(--header-padding);box-sizing:border-box;z-index:11;background:#fff;border-bottom:2px solid #33333314;flex-direction:column;justify-content:center;align-items:center;transition:background .25s;display:flex;position:sticky;top:0}.tt-day-header-cell.tt-day-active{background-color:#fff;background-image:linear-gradient(#004f9e0a,#004f9e0a)}.tt-day-header-label{font-family:Montserrat,sans-serif;font-size:var(--header-font-size);letter-spacing:.1em;text-transform:uppercase;color:#33333373;font-weight:700;line-height:1;transition:color .25s;display:block}.tt-day-header-cell.tt-day-active .tt-day-header-label{color:#004f9e}.tt-active-dot{width:var(--active-dot-size);height:var(--active-dot-size);background:#004f9e;border-radius:50%;margin:5px auto 0;display:block}.tt-time-cell{min-height:var(--row-height);z-index:5;box-sizing:border-box;background:#fff;border-right:1px solid #33333312;display:block;position:sticky;left:0}.tt-time-label{right:12px;top:var(--grid-line-top);text-align:right;font-family:Montserrat,sans-serif;font-size:var(--time-font-size);color:#333;letter-spacing:.2px;white-space:nowrap;font-weight:600;line-height:1;transition:color .2s;position:absolute;transform:translateY(-50%)}.tt-slot-cell{padding:var(--card-padding);min-height:var(--row-height);box-sizing:border-box;flex-direction:column;transition:background .25s;display:flex;position:relative}.tt-slot-cell.tt-col-active{background:#004f9e08}.tt-grid-header-row+.tt-grid-body-row .tt-slot-cell{padding-top:calc(var(--row-height) * .4);min-height:calc(var(--row-height) * 1.3)}.tt-slot-cell:before{content:"";left:0;right:0;top:var(--grid-line-top);pointer-events:none;z-index:1;background:#33333312;height:1px;position:absolute}.tt-grid-header-row+.tt-grid-body-row .tt-slot-cell:before,.tt-grid-header-row+.tt-grid-body-row .tt-time-label{top:calc(var(--grid-line-top) + var(--row-height) * .3)}.tt-time-cell:after{content:"";left:calc(var(--time-col-width) - 7px);top:calc(var(--grid-line-top) - 4px);box-sizing:border-box;pointer-events:none;z-index:6;background:#fff;border:2px solid #004f9e;border-radius:50%;width:8px;height:8px;position:absolute}.tt-grid-header-row+.tt-grid-body-row .tt-time-cell:after{top:calc(var(--grid-line-top) + var(--row-height) * .3 - 4px)}.tt-slot-stack{gap:calc(var(--row-height) * .06);flex-direction:column;flex:auto;width:100%;min-height:0;display:flex}.tt-slot-stack>.tt-class-card:only-child{flex:auto}.tt-slot-stack>.tt-class-card{flex:none}.tt-class-card{border-radius:var(--card-border-radius);cursor:default;box-sizing:border-box;z-index:2;background-color:#fff;border-left:3px solid #004f9e;flex-direction:column;align-items:flex-start;min-width:70px;min-height:28px;padding:4px 22px 4px 8px;transition:transform .2s,box-shadow .2s;display:flex;position:relative;box-shadow:0 1px 6px #0000000d}.tt-class-card:before{content:"";background-color:var(--card-bg);z-index:-1;border-radius:inherit;position:absolute;inset:0}.tt-class-card:hover{transform:translateY(-2px);box-shadow:0 4px 14px #00000017}.tt-type-badge{font-family:Montserrat,sans-serif;font-size:var(--badge-font-size);letter-spacing:.08em;text-transform:uppercase;border-radius:calc(var(--badge-font-size) * .6);padding:1px calc(var(--badge-font-size) * .75);margin-top:2px;font-weight:700;line-height:1.4;display:inline-block}.tt-card-text{padding-left:calc(var(--badge-font-size) * .375);flex-direction:column;align-items:flex-start;margin:8px 0;display:flex}.tt-card-subject{font-family:Montserrat,sans-serif;font-size:var(--card-font-size);color:#1a1a2e;margin:0 0 calc(var(--row-height) * .03);font-weight:700;line-height:1.3}.tt-card-room{font-family:Montserrat,sans-serif;font-size:var(--card-meta-size);color:#333333ad;padding:1px calc(var(--card-meta-size) * .75);text-transform:uppercase;background:#3333331f;border-radius:999px;margin:auto 0 2px;font-weight:600;line-height:1.4;display:inline-block}.tt-card-code{font-family:Montserrat,sans-serif;font-size:var(--card-meta-size);color:#3333338f;letter-spacing:.05em;text-transform:uppercase;margin:0;font-weight:600;line-height:1.2}.tt-edit-btn{-webkit-backdrop-filter:blur(4px);color:#3333338c;cursor:pointer;opacity:.6;z-index:4;background:#ffffff73;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;padding:0;transition:opacity .18s,transform .15s,background .15s,color .15s,box-shadow .15s;display:flex;position:absolute;top:4px;right:4px;transform:scale(1);box-shadow:0 1px 4px #00000014}.tt-edit-btn svg{width:8px;height:8px}.tt-edit-btn:before{content:"";position:absolute;inset:-8px}.tt-class-card:hover .tt-edit-btn{opacity:1;transform:scale(1)}.tt-edit-btn:hover,.tt-edit-btn:focus-visible{opacity:1;color:#004f9e;background:#ffffffbf;box-shadow:0 2px 8px #004f9e26}.tt-edit-btn:active{transform:scale(.93)}@media (hover:none){.tt-edit-btn{opacity:.5;transform:scale(1)}}.tt-add-btn{color:#576676d0;cursor:pointer;opacity:.25;background:0 0;border:none;border-radius:0;justify-content:center;align-items:center;padding:0;transition:opacity .18s,transform .18s,color .18s;display:flex;position:absolute;inset:0}.tt-slot-cell:hover .tt-add-btn{opacity:.6}.tt-add-btn:hover,.tt-add-btn:focus-visible{opacity:1;color:#3f5264;transform:scale(1.18)}.tt-add-btn:active{opacity:1;transform:scale(.96)}@media (hover:none){.tt-add-btn{opacity:.3}}.tt-add-btn--mini{opacity:.28;background:0 0;border:none;border-radius:0;flex-shrink:0;width:24px;height:24px;margin-top:4px;transition:opacity .18s,transform .18s,color .18s;position:relative;inset:auto}.tt-slot-cell:hover .tt-add-btn--mini{opacity:.65}.tt-add-btn--mini:hover,.tt-add-btn--mini:focus-visible{color:#004f9e;transform:scale(1.18);opacity:1!important}.tt-add-btn--mini:active{transform:scale(.95)}@media (hover:none){.tt-add-btn--mini{opacity:.42}}.tt-editor-overlay{z-index:9999;pointer-events:auto;background:#fff;border-radius:18px;animation:.22s cubic-bezier(.16,1,.3,1) both tt-editor-in;position:fixed;overflow:hidden;box-shadow:0 24px 64px #00000021,0 6px 20px #00000012,0 0 0 1px #0000000e}@keyframes tt-editor-in{0%{opacity:0;transform:scale(.9)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.tt-editor-header{justify-content:space-between;align-items:center;padding:16px 16px 0;display:flex}.tt-editor-title{letter-spacing:.12em;text-transform:uppercase;color:#1a1a2e;font-size:11px;font-weight:800}.tt-editor-close-btn{color:#3339;cursor:pointer;background:#0000000f;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;transition:background .15s,color .15s;display:flex}.tt-editor-close-btn:hover{color:#1a1a2e;background:#0000001c}.tt-editor-type-tabs{gap:6px;padding:12px 16px 0;display:flex}.tt-editor-type-tab{letter-spacing:.07em;text-transform:uppercase;color:#3333336b;cursor:pointer;background:0 0;border:1.5px solid #00000014;border-radius:9px;flex:1;padding:7px 4px;font-size:10px;font-weight:800;line-height:1;transition:border-color .15s,background .15s,color .15s,box-shadow .15s}.tt-editor-type-tab:hover{color:#333333b8;background:#00000006;border-color:#00000029}.tt-editor-type-tab.is-active[data-type=Lecture]{color:#004f9e;background:#004f9e14;border-color:#004f9e;box-shadow:0 0 0 3px #004f9e1a}.tt-editor-type-tab.is-active[data-type=Tutorial]{color:#6b46ff;background:#7b61ff17;border-color:#8871fa;box-shadow:0 0 0 3px #8871fa1f}.tt-editor-type-tab.is-active[data-type=Practical]{color:#333;background:#33333312;border-color:#454444;box-shadow:0 0 0 3px #33333314}.tt-editor-fields{flex-direction:column;gap:10px;padding:14px 16px 6px;display:flex}.tt-editor-row{gap:10px;display:flex}.tt-editor-row .tt-editor-field{flex:1;min-width:0}.tt-editor-field{flex-direction:column;gap:4px;display:flex}.tt-editor-field--full{width:100%}.tt-editor-label{text-transform:uppercase;letter-spacing:.1em;color:#3336;font-size:9.5px;font-weight:800}.tt-editor-input{color:#1a1a2e;box-sizing:border-box;appearance:none;background:#f9fafb;border:1.5px solid #00000014;border-radius:9px;outline:none;width:100%;padding:8px 10px;font-family:inherit;font-size:12px;font-weight:500;transition:border-color .15s,background .15s,box-shadow .15s}.tt-editor-input:focus{background:#fff;border-color:#004f9e;box-shadow:0 0 0 3px #004f9e1a}select.tt-editor-input{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2.5' stroke-linecap='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 9px center;background-repeat:no-repeat;padding-right:28px}.tt-editor-slot-hint{color:#33333361;letter-spacing:.04em;margin:0;padding:0 2px;font-size:10.5px;font-weight:600}.tt-editor-actions{justify-content:space-between;align-items:center;gap:8px;padding:10px 16px 16px;display:flex}.tt-editor-actions-right{align-items:center;gap:6px;display:flex}.tt-editor-save-btn{color:#fff;letter-spacing:.02em;cursor:pointer;white-space:nowrap;background:#004f9e;border:none;border-radius:999px;padding:9px 20px;font-size:12px;font-weight:700;transition:background .15s,transform .15s,box-shadow .15s;box-shadow:0 2px 10px #004f9e47}.tt-editor-save-btn:hover{background:#003d7a;transform:translateY(-1px);box-shadow:0 4px 16px #004f9e52}.tt-editor-save-btn:active{transform:translateY(0);box-shadow:0 1px 4px #004f9e33}.tt-editor-delete-btn{color:#dc2626;cursor:pointer;background:0 0;border:1.5px solid #dc262638;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;padding:0;transition:background .15s,border-color .15s,transform .15s;display:flex}.tt-editor-delete-btn:hover{background:#dc262612;border-color:#dc2626;transform:scale(1.08)}.tt-editor-delete-btn:active{transform:scale(.95)}.tt-editor-cancel-btn{color:#3339;cursor:pointer;white-space:nowrap;background:0 0;border:1.5px solid #00000014;border-radius:999px;padding:8px 14px;font-size:12px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.tt-editor-cancel-btn:hover{color:#1a1a2e;background:#0000000a;border-color:#00000024}@media (width<=639px){.tt-editor-overlay{border-radius:22px}.tt-editor-type-tabs{gap:5px}.tt-editor-type-tab{padding:7px 2px;font-size:9px}.tt-editor-save-btn{padding:8px 16px;font-size:11px}}@media (width<=768px){.tt-grid-frame{--row-height:64px;--card-padding:4px 8px 4px;--card-font-size:12px;--card-meta-size:10px;--badge-font-size:9px;--header-padding:12px 10px;--header-font-size:14px;--time-font-size:16px}}[data-theme=dark] .tt-grid-frame{box-shadow:none;background:#050505;border:none}[data-theme=dark] .tt-grid-frame:before{border-color:#b4b4be59}[data-theme=dark] .tt-grid-frame:after{display:none}[data-theme=dark] .tt-time-header-cell,[data-theme=dark] .tt-day-header-cell{background:#080808;border-bottom-color:#ffffff14;border-right:none}[data-theme=dark] .tt-day-header-cell.tt-day-active{background-color:#080808;background-image:linear-gradient(#3b82f608,#3b82f608)}[data-theme=dark] .tt-day-header-label{color:#ffffff73}[data-theme=dark] .tt-day-header-cell.tt-day-active .tt-day-header-label{color:#3b82f6}[data-theme=dark] .tt-active-dot,[data-theme=dark] .tt-day-active-pill{background:#3b82f6}[data-theme=dark] .tt-time-cell{background:#080808;border-right:none}[data-theme=dark] .tt-time-label{color:#ffffff8c}[data-theme=dark] .tt-slot-cell{background:0 0;border-right:none}[data-theme=dark] .tt-slot-cell.tt-col-active{background:#3b82f605}[data-theme=dark] .tt-slot-cell:before{background:#ffffff0f}[data-theme=dark] .tt-time-cell:after{background:#080808;border-color:#3b82f6}[data-theme=dark] .tt-class-card{background-color:#121212;transition:transform .2s,box-shadow .2s;box-shadow:0 1px 3px #0006,0 0 0 1px #ffffff14}[data-theme=dark] .tt-class-card:hover{background-color:#161616;transform:translateY(-2px);box-shadow:0 6px 20px #00000080,0 0 0 1px #ffffff1f}[data-theme=dark] .tt-card-subject{color:#fff}[data-theme=dark] .tt-card-code{color:#ffffffa6}[data-theme=dark] .tt-card-room{color:#ffffffd9;background:#ffffff14}[data-theme=dark] .tt-edit-btn{-webkit-backdrop-filter:blur(4px);color:#ffffffa6;background:#ffffff14;box-shadow:0 1px 4px #0006}[data-theme=dark] .tt-class-card:hover .tt-edit-btn{opacity:1}[data-theme=dark] .tt-edit-btn:hover,[data-theme=dark] .tt-edit-btn:focus-visible{background:var(--edit-hover-bg,#ffffff2e);color:var(--edit-hover-color,#fff);box-shadow:0 2px 10px #ffffff1a}[data-theme=dark] .tt-add-btn{color:#ffffff73}[data-theme=dark] .tt-slot-cell:hover .tt-add-btn{opacity:.85}[data-theme=dark] .tt-add-btn:hover,[data-theme=dark] .tt-add-btn:focus-visible{color:#3b82f6;opacity:1}[data-theme=dark] .tt-watermark-logo{opacity:.2}[data-theme=dark] .tt-editor-overlay{background:#111;box-shadow:0 32px 80px #000000a6,0 8px 24px #00000059,0 0 0 1px #ffffff14}[data-theme=dark] .tt-editor-title{color:#fff}[data-theme=dark] .tt-editor-close-btn{color:#ffffff8c;background:#ffffff0f}[data-theme=dark] .tt-editor-close-btn:hover{color:#fff;background:#ffffff1f}[data-theme=dark] .tt-editor-type-tab{color:#fff6;background:#ffffff05;border-color:#ffffff14}[data-theme=dark] .tt-editor-type-tab:hover{color:#ffffffbf;background:#ffffff0d;border-color:#ffffff29}[data-theme=dark] .tt-editor-type-tab.is-active[data-type=Lecture]{color:#3b82f6;background:#3b82f61f;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}[data-theme=dark] .tt-editor-type-tab.is-active[data-type=Tutorial]{color:#8b5cf6;background:#8b5cf61f;border-color:#8b5cf6;box-shadow:0 0 0 3px #8b5cf61f}[data-theme=dark] .tt-editor-type-tab.is-active[data-type=Practical]{color:#94a3b8;background:#94a3b81a;border-color:#94a3b8;box-shadow:0 0 0 3px #94a3b814}[data-theme=dark] .tt-editor-label{color:#ffffff59}[data-theme=dark] .tt-editor-input{color:#fff;background:#ffffff0a;border-color:#ffffff14}[data-theme=dark] .tt-editor-input:focus{background:#ffffff12;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}[data-theme=dark] select.tt-editor-input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.5' stroke-linecap='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E")}[data-theme=dark] .tt-editor-slot-hint{color:#ffffff59}[data-theme=dark] .tt-editor-save-btn{background:#3b82f6;box-shadow:0 2px 12px #3b82f659}[data-theme=dark] .tt-editor-save-btn:hover{background:#60a5fa;box-shadow:0 4px 20px #60a5fa73}[data-theme=dark] .tt-editor-cancel-btn{color:#ffffff8c;border-color:#ffffff14}[data-theme=dark] .tt-editor-cancel-btn:hover{color:#fff;background:#ffffff0d;border-color:#ffffff24}[data-theme=dark] .tt-editor-delete-btn{color:#f87171;border-color:#ef444440}[data-theme=dark] .tt-editor-delete-btn:hover{background:#ef44441a;border-color:#f87171}.tt-editor-confirm-text{color:#dc2626;letter-spacing:.01em;font-size:12px;font-weight:600}.tt-editor-delete-confirm-btn{color:#fff;letter-spacing:.02em;cursor:pointer;white-space:nowrap;background:#dc2626;border:none;border-radius:999px;padding:9px 18px;font-size:12px;font-weight:700;transition:background .15s,transform .15s,box-shadow .15s;box-shadow:0 2px 10px #dc262647}.tt-editor-delete-confirm-btn:hover{background:#b91c1c;transform:translateY(-1px);box-shadow:0 4px 16px #dc26265c}.tt-editor-delete-confirm-btn:active{transform:translateY(0);box-shadow:0 1px 4px #dc262638}[data-theme=dark] .tt-editor-confirm-text{color:#f87171}[data-theme=dark] .tt-editor-delete-confirm-btn{background:#ef4444;box-shadow:0 2px 10px #ef444452}[data-theme=dark] .tt-editor-delete-confirm-btn:hover{background:#dc2626;box-shadow:0 4px 16px #ef44446b}.tt-cr-backdrop{-webkit-backdrop-filter:blur(4px);z-index:1000;background:#0f172a73;justify-content:center;align-items:center;padding:16px;animation:.16s ease-out tt-cr-fade-in;display:flex;position:fixed;inset:0}@keyframes tt-cr-fade-in{0%{opacity:0}to{opacity:1}}.tt-cr-card{background:#fff;border:1px solid #0000000f;border-radius:16px;width:100%;max-width:440px;padding:22px 22px 18px;animation:.18s cubic-bezier(.2,.9,.3,1.2) tt-cr-pop-in;box-shadow:0 20px 60px #0f172a59}@keyframes tt-cr-pop-in{0%{opacity:0;transform:translateY(8px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.tt-cr-title{color:#111827;letter-spacing:-.005em;margin:0 0 8px;font-size:16px;font-weight:700}.tt-cr-sub{color:#374151;margin:0 0 6px;font-size:13px;line-height:1.45}.tt-cr-note{color:#6b7280;margin:0 0 16px;font-size:11.5px}.tt-cr-actions{flex-direction:column;gap:8px;display:flex}.tt-cr-btn{cursor:pointer;border:1.5px solid #0000;border-radius:10px;width:100%;padding:10px 14px;font-size:13px;font-weight:600;transition:background .15s,border-color .15s,transform .15s}.tt-cr-btn:disabled{opacity:.6;cursor:not-allowed}.tt-cr-btn--primary{color:#fff;background:#004f9e;box-shadow:0 2px 10px #004f9e38}.tt-cr-btn--primary:hover:not(:disabled){background:#003d7a;transform:translateY(-1px)}.tt-cr-btn--ghost{color:#4b5563;background:0 0;border-color:#0000001a}.tt-cr-btn--ghost:hover:not(:disabled){color:#111827;background:#0000000a}.tt-cr-btn--danger{color:#fff;background:#b91c1c;box-shadow:0 2px 10px #b91c1c40}.tt-cr-btn--danger:hover:not(:disabled){background:#991b1b;transform:translateY(-1px)}.tt-cr-card--compact{max-width:380px}.tt-cr-actions--end{justify-content:flex-end}.tt-cr-success{color:#047857;text-align:center;margin:12px 0 0;font-size:13px;font-weight:600}.tt-cr-error{color:#b91c1c;text-align:center;margin:12px 0 0;font-size:12px}[data-theme=dark] .tt-cr-backdrop{background:#0009}[data-theme=dark] .tt-cr-card{background:#1c1c1c;border-color:#ffffff14;box-shadow:0 20px 60px #0009}[data-theme=dark] .tt-cr-title{color:#f5f5f5}[data-theme=dark] .tt-cr-sub{color:#d1d5db}[data-theme=dark] .tt-cr-note{color:#9ca3af}[data-theme=dark] .tt-cr-btn--primary{background:#1d6fd1;box-shadow:0 2px 10px #1d6fd152}[data-theme=dark] .tt-cr-btn--primary:hover:not(:disabled){background:#1761bd}[data-theme=dark] .tt-cr-btn--ghost{color:#d1d5db;border-color:#ffffff1f}[data-theme=dark] .tt-cr-btn--ghost:hover:not(:disabled){color:#fff;background:#ffffff0f}[data-theme=dark] .tt-cr-btn--danger{background:#dc2626;box-shadow:0 2px 10px #dc262659}[data-theme=dark] .tt-cr-btn--danger:hover:not(:disabled){background:#b91c1c}[data-theme=dark] .tt-cr-success{color:#34d399}[data-theme=dark] .tt-cr-error{color:#f87171}.tt-drag-btn{-webkit-backdrop-filter:blur(4px);color:#3333338c;cursor:grab;opacity:.6;z-index:4;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#ffffff73;border:none;border-radius:4px;justify-content:center;align-items:center;width:16px;height:16px;padding:0;transition:opacity .18s,background .15s,color .15s;display:flex;position:absolute;bottom:4px;right:4px;box-shadow:0 1px 4px #00000014}.tt-drag-btn:hover{opacity:1;color:#000000bf;background:#ffffffb3}.tt-drag-btn:active{cursor:grabbing;color:#fff;background:#f59e0bd9}[data-theme=dark] .tt-drag-btn{color:#ffffff8c;background:#ffffff14}[data-theme=dark] .tt-drag-btn:hover{color:#fff;background:#ffffff2e}.tt-class-card{-webkit-user-select:none;user-select:none}.tt-class-card[data-dragging=true]{opacity:.35}.tt-slot-cell[data-drop-target=true]{outline-offset:-3px;background:#3b82f61f;border-radius:8px;outline:2px dashed #3b82f68c}[data-theme=dark] .tt-slot-cell[data-drop-target=true]{background:#60a5fa26;outline-color:#60a5fa99}.tt-slot-cell[data-error-cell=true]{outline-offset:-3px;border-radius:8px;outline:2px solid #ef4444b3;animation:1.6s ease-in-out infinite tt-error-pulse}[data-theme=dark] .tt-slot-cell[data-error-cell=true]{outline-color:#fca5a5bf}@keyframes tt-error-pulse{0%,to{box-shadow:inset 0 0 #ef444400}50%{box-shadow:inset 0 0 0 9999px #ef44441a}}.tt-card-drag-ghost .tt-class-card--ghost{opacity:.94;background:var(--card-bg,#4c95de42);border-radius:var(--card-border-radius,8px);width:100%;height:100%;padding:var(--card-padding,6px 8px);pointer-events:none;flex-direction:column;display:flex;position:relative;box-shadow:0 18px 40px -10px #0006,0 2px 6px #00000026}.tt-save-fab-group{z-index:100;align-items:center;gap:8px;display:inline-flex;position:fixed;bottom:76px;right:18px}.tt-save-fab{color:#fff;letter-spacing:.01em;cursor:pointer;background:#1d6fd1;border:none;border-radius:999px;align-items:center;gap:8px;padding:10px 16px;font-size:.9rem;font-weight:600;transition:transform .18s,box-shadow .18s,background .18s;display:inline-flex;box-shadow:0 8px 22px -6px #1d6fd18c,0 2px 6px #0000001f}.tt-save-fab:hover:not(:disabled){background:#1761bd;transform:translateY(-2px);box-shadow:0 12px 28px -6px #1d6fd199,0 3px 8px #00000024}.tt-save-fab:active{transform:translateY(0)}.tt-save-fab:disabled{opacity:.5;cursor:not-allowed}.tt-peek-fab{color:#1f2937;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;border:1px solid #00000014;border-radius:999px;justify-content:center;align-items:center;gap:6px;min-width:156px;padding:9px 13px;font-size:.82rem;font-weight:600;transition:background .15s,color .15s,border-color .15s;display:inline-flex;box-shadow:0 6px 18px -8px #00000040,0 1px 3px #00000014}.tt-peek-fab:hover{background:#fff}.tt-peek-fab:active,.tt-peek-fab[data-active]{color:#fff;cursor:grabbing;background:#f59e0b;border-color:#f59e0b}[data-theme=dark] .tt-save-fab{background:#2563eb;box-shadow:0 8px 22px -6px #2563eb8c,0 2px 6px #0006}[data-theme=dark] .tt-save-fab:hover:not(:disabled){background:#1d4ed8}[data-theme=dark] .tt-peek-fab{color:#e5e7eb;background:#1e293beb;border-color:#ffffff1a}[data-theme=dark] .tt-peek-fab:hover{background:#1e293b}[data-theme=dark] .tt-peek-fab:active,[data-theme=dark] .tt-peek-fab[data-active]{color:#fff;background:#f59e0b;border-color:#f59e0b}.tt-reset-fab{color:#b91c1c;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;border:1px solid #b91c1c59;border-radius:999px;align-items:center;gap:6px;padding:9px 14px;font-size:.82rem;font-weight:600;transition:background .15s,color .15s,border-color .15s;display:inline-flex;box-shadow:0 6px 18px -8px #00000040,0 1px 3px #00000014}.tt-reset-fab:hover:not(:disabled){color:#fff;background:#b91c1c;border-color:#b91c1c}.tt-reset-fab:disabled{opacity:.5;cursor:not-allowed}[data-theme=dark] .tt-reset-fab{color:#fca5a5;background:#1e293beb;border-color:#f8717166}[data-theme=dark] .tt-reset-fab:hover:not(:disabled){color:#fff;background:#b91c1c;border-color:#b91c1c}@media (width<=480px){.tt-save-fab-group{gap:6px;bottom:64px;right:12px}.tt-save-fab{padding:9px 14px;font-size:.85rem}.tt-peek-fab{min-width:138px;padding:8px 11px;font-size:.78rem}.tt-reset-fab{padding:8px 11px;font-size:.78rem}.tt-drag-btn{width:14px;height:14px;top:2px;right:2px}}.follow-day-banner{color:#1f2937;background:linear-gradient(135deg,#eef4ffb8 0%,#ffffff80 55%,#e8f0fd8c 100%);border:1px solid #0f172a0f;border-radius:12px;flex-direction:column;gap:6px;padding:10px 14px;display:flex;box-shadow:0 3px 12px #1e293b0d}.follow-day-head{align-items:center;gap:8px;display:inline-flex}.follow-day-icon{color:#475569;background:#0f172a0d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.follow-day-title{color:#64748b;letter-spacing:.05em;text-transform:uppercase;font-size:11px;font-weight:600;line-height:1}.follow-day-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.follow-day-row{flex-wrap:wrap;align-items:baseline;gap:6px;font-size:13px;line-height:1.35;display:flex}.follow-day-when{color:#1e293b;font-weight:700}.follow-day-date{color:#475569}.follow-day-target{color:#0f172a;font-weight:600}.follow-day-reason{color:#64748b;font-style:italic}.follow-day-dot{color:#94a3b8}@media (width<=768px){.follow-day-banner{border-radius:10px;padding:8px 12px}.follow-day-title{font-size:10px}.follow-day-row{font-size:12px}}[data-theme=dark] .follow-day-banner{color:#e2e8f0e6;background:linear-gradient(135deg,#ffffff0d 0%,#ffffff05 100%);border-color:#ffffff14;box-shadow:0 3px 12px #00000040}[data-theme=dark] .follow-day-icon{color:#e2e8f0bf;background:#ffffff14}[data-theme=dark] .follow-day-title{color:#e2e8f08c}[data-theme=dark] .follow-day-when{color:#f1f5f9f2}[data-theme=dark] .follow-day-date{color:#e2e8f0b3}[data-theme=dark] .follow-day-target{color:#f1f5f9f2}[data-theme=dark] .follow-day-reason{color:#e2e8f099}[data-theme=dark] .follow-day-dot{color:#94a3b880}body:has(.dashboard-layout) #root{text-align:left!important;border-inline:none!important;width:100%!important;max-width:100%!important;height:100vh!important;min-height:0!important;margin:0!important;padding:0!important;overflow:hidden!important}body:has(.dashboard-layout){height:100vh;overflow:hidden;background:#fff!important;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif!important}.dashboard-layout{box-sizing:border-box;background:0 0;width:100%;height:100vh;min-height:0;display:flex}.dashboard-sidebar{box-sizing:border-box;background:#eef1f5;border-right:1px solid #0000000f;flex-direction:column;flex-shrink:0;width:280px;height:100vh;padding:24px;display:flex;position:sticky;top:0;overflow:visible}.sidebar-inner{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.sidebar-header{flex-shrink:0}.sidebar-scroll{flex:auto;min-height:0;padding-right:2px;overflow-y:auto}.sidebar-footer{border-top:1px solid #0000000f;flex-shrink:0;margin-top:12px;padding-top:12px}.sidebar-footer .profile-card{margin-top:0;margin-bottom:0}.sidebar-logo-container{box-shadow:none;text-align:center;width:100%;color:inherit;background:0 0;border:none;flex-direction:column;align-items:center;padding:8px 0 28px;text-decoration:none;display:flex}.logo-img-wrapper{justify-content:center;align-items:center;width:64px;height:64px;margin-bottom:12px;display:flex}.sidebar-logo-img{object-fit:contain;width:100%;height:100%}.sidebar-logo-text{color:#111827;letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:15px;font-weight:700}.dashboard-card{box-sizing:border-box;text-align:left;background:#fff;border:1px solid #0000000f;border-radius:20px;margin-bottom:16px;padding:20px;transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s cubic-bezier(.16,1,.3,1);position:relative;box-shadow:0 2px 12px #0000000a}.dashboard-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0000000d}.card-title{color:#111827;text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px;font-size:13px;font-weight:650}.card-placeholder-text{color:#9ca3af;margin:0;font-size:13px}.calendar-card{flex-direction:column;display:flex}.calendar-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.calendar-header .card-title{margin:0}.calendar-month-year{color:#c9d6ef;font-size:12px;font-weight:600}.mini-calendar{flex-direction:column;gap:4px;display:flex}.calendar-weekdays{text-align:center;color:#99b3e8;grid-template-columns:repeat(7,1fr);margin-bottom:4px;font-size:10px;font-weight:700;display:grid}.calendar-weekday{justify-content:center;align-items:center;transition:color .15s,background .15s;display:flex}.calendar-weekday.active{color:#6366f1}.calendar-grid{text-align:center;grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar-day{color:#6b7280;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;height:22px;font-size:11px;font-weight:500;transition:background .15s,color .15s;display:flex}.calendar-day--blank{cursor:default;pointer-events:none}.calendar-day:hover,.calendar-day.hovered{color:#4338ca;background:#6366f11f}.calendar-day.today{background:#6366f1;font-weight:700;color:#fff!important}.calendar-day.today:hover,.calendar-day.today.hovered{background:#4f46e5}.calendar-day--holiday{color:#b91c1c;background:#ef444424;font-weight:600}.calendar-day--holiday:hover,.calendar-day--holiday.hovered{color:#991b1b;background:#ef44443d}.calendar-day.today.calendar-day--holiday{background:#ef4444;color:#fff!important}.calendar-day--follow{color:#4338ca;font-weight:600;box-shadow:inset 0 0 0 1.5px #6366f1}.calendar-day--follow:hover,.calendar-day--follow.hovered{color:#3730a3;background:#6366f12e}.calendar-day.today.calendar-day--follow{box-shadow:0 0 0 2px #6366f18c}.calendar-day--dim{color:#6b728073}.calendar-day--dim:hover,.calendar-day--dim.hovered{color:#6b7280b3;background:#6366f10f}.calendar-legend{color:#6b7280;border-top:1px dashed #0000000f;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px;padding-top:8px;font-size:10.5px;display:flex}.calendar-legend-item{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.calendar-legend-swatch{border-radius:4px;flex-shrink:0;width:12px;height:12px;display:inline-block}.calendar-legend-swatch--today{background:#6366f1}.calendar-legend-swatch--holiday{background:#ef444424;border:1px solid #ef444480}.calendar-legend-swatch--follow{background:0 0;box-shadow:inset 0 0 0 1.5px #6366f1}.calendar-day--mst{color:#b45309;background:#f59e0b29;font-weight:600}.calendar-day--mst:hover,.calendar-day--mst.hovered{color:#92400e;background:#f59e0b47}.calendar-day.today.calendar-day--mst{background:#f59e0b;color:#fff!important}.calendar-day--est{color:#7e22ce;background:#a855f72e;font-weight:600}.calendar-day--est:hover,.calendar-day--est.hovered{color:#6b21a8;background:#a855f747}.calendar-day.today.calendar-day--est{background:#a855f7;color:#fff!important}.calendar-day--assessment{color:#0f766e;background:#14b8a62e;font-weight:600}.calendar-day--assessment:hover,.calendar-day--assessment.hovered{color:#115e59;background:#14b8a647}.calendar-day.today.calendar-day--assessment{background:#14b8a6;color:#fff!important}.calendar-legend-swatch--mst{background:#f59e0b29;border:1px solid #f59e0b8c}.calendar-legend-swatch--est{background:#a855f72e;border:1px solid #a855f78c}.calendar-legend-swatch--assessment{background:#14b8a62e;border:1px solid #14b8a68c}.calendar-day--frosh{color:#be185d;background:#ec48992e;font-weight:600}.calendar-day--frosh:hover,.calendar-day--frosh.hovered{color:#9d174d;background:#ec489947}.calendar-day.today.calendar-day--frosh{background:#ec4899;color:#fff!important}.calendar-legend-swatch--frosh{background:#ec48992e;border:1px solid #ec48998c}.profile-card{align-items:center;gap:12px;margin-top:0;margin-bottom:0;padding:14px 18px;display:flex}.profile-card--link{color:inherit;cursor:pointer;text-decoration:none;transition:background-color .15s,border-color .15s}.profile-card--link:hover{background-color:var(--bg-hover,#ffffff0a)}[data-theme=light] .profile-card--link:hover{background-color:#0000000a}.profile-avatar{color:#6366f1;background:#e0e7ff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:700;display:flex}.profile-avatar--img{object-fit:cover;border:1px solid var(--border);background:0 0}.profile-info{flex-direction:column;min-width:0;display:flex}.profile-name{color:#111827;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;line-height:1.2;overflow:hidden}.profile-subtitle{color:#9ca3af;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11px;line-height:1.2;overflow:hidden}.dashboard-column{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.dashboard-main{box-sizing:border-box;flex-direction:column;flex:1;min-width:0;min-height:0;padding:24px;display:flex;overflow:hidden}@media (width<=1280px){.dashboard-main{padding:18px}}@media (width<=1024px){.dashboard-main{padding:14px}}@media (width<=768px){.dashboard-main{padding:10px}}.dashboard-header{-webkit-backdrop-filter:blur(6px);background:linear-gradient(135deg,#eef4ffb8 0%,#ffffff80 55%,#e8f0fd8c 100%);border:1px solid #0f172a0f;border-radius:16px;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:16px;padding:12px 18px;display:flex;box-shadow:0 6px 22px #1e293b0f}.dashboard-brand{color:inherit;border-radius:10px;flex-shrink:0;align-items:center;gap:10px;padding:4px 6px;text-decoration:none;transition:background .2s,transform .2s;display:flex}.dashboard-brand:hover{background:#0f172a0d;transform:translateY(-1px)}.dashboard-welcome{display:contents}.dashboard-brand-mark{object-fit:contain;border-radius:8px;width:38px;height:38px;display:block}.dashboard-brand-mark--ghost{display:none}.dashboard-brand-text{flex-direction:column;justify-content:center;gap:3px;display:inline-flex}.dashboard-brand-name{letter-spacing:.06em;color:#0f172a;margin:0;font-size:15px;font-weight:800;line-height:1}.dashboard-brand-sub{color:#64748b;letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:11px;font-weight:600;line-height:1}.dashboard-brand-divider{background:linear-gradient(#0000,#0f172a2e,#0000);flex-shrink:0;align-self:stretch;width:1px;min-height:30px;margin:0 4px}.welcome-heading{color:#111827;letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;margin:0;font-size:32px;font-weight:700;line-height:1.1;overflow:hidden}.welcome-line,.welcome-name{display:inline}.welcome-name{max-width:60vw}.header-actions{flex-shrink:0;margin-left:auto}.header-banner-slot{flex:0 auto;align-items:center;min-width:0;margin-left:12px;display:inline-flex}.hamburger-btn{color:#111827;cursor:pointer;background:#fff;border:1px solid #00000014;border-radius:10px;justify-content:center;align-items:center;padding:8px;transition:background .2s;display:none;box-shadow:0 1px 2px #00000005}.hamburger-btn:hover{background:#f9fafb}.header-right{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.nav-controls-group,.view-controls-group{background:#eef1f5;border:1px solid #0000000a;border-radius:12px;align-items:center;gap:2px;padding:4px;display:flex}.btn{cursor:pointer;box-sizing:border-box;white-space:nowrap;border:none;border-radius:8px;justify-content:center;align-items:center;height:34px;padding:8px 14px;font-size:13px;font-weight:600;transition:all .2s cubic-bezier(.16,1,.3,1);display:inline-flex}.btn-primary{color:#fff;background:#6366f1;box-shadow:0 2px 6px #6366f133}.btn-primary:hover{background:#4f46e5;transform:translateY(-.5px);box-shadow:0 4px 8px #6366f14d}.btn-primary:active{transform:translateY(0)}.btn-secondary{color:#6b7280;background:#fff;border:1px solid #00000014;box-shadow:0 1px 2px #00000005}.btn-secondary:hover{color:#111827;background:#f9fafb;border-color:#0000001f}.nav-btn{border-radius:6px;width:32px;height:32px;padding:0}.today-btn{border-radius:6px;height:32px;padding:0 12px;font-size:12px}.day-label-btn{color:#004f9e;letter-spacing:.02em;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#004f9e14;border-radius:6px;justify-content:center;align-items:center;height:32px;padding:0 16px;font-size:13px;font-weight:700;transition:background .25s,color .25s;display:inline-flex}.day-nav-group{background:#f4f7fc}.add-task-btn{gap:6px;font-weight:600}.plus-icon{font-size:16px;font-weight:500;line-height:1}.dashboard-content{flex-direction:column;flex:1;width:100%;min-height:0;display:flex;overflow:hidden}:root{--sb-ease:cubic-bezier(.4, 0, .2, 1);--sb-phase:.2s}.dashboard-sidebar{transition:width var(--sb-phase) var(--sb-ease), padding var(--sb-phase) var(--sb-ease);position:sticky}.dashboard-sidebar--collapsed{width:72px;transition:width var(--sb-phase) var(--sb-ease) var(--sb-phase), padding var(--sb-phase) var(--sb-ease) var(--sb-phase);padding:24px 10px}.sidebar-logo-container,.logo-img-wrapper,.dashboard-card{transition:padding var(--sb-phase) var(--sb-ease), margin var(--sb-phase) var(--sb-ease), border-radius var(--sb-phase) var(--sb-ease), width var(--sb-phase) var(--sb-ease), height var(--sb-phase) var(--sb-ease), gap var(--sb-phase) var(--sb-ease)}.dashboard-sidebar--collapsed .sidebar-logo-container,.dashboard-sidebar--collapsed .logo-img-wrapper,.dashboard-sidebar--collapsed .dashboard-card{transition:padding var(--sb-phase) var(--sb-ease) var(--sb-phase), margin var(--sb-phase) var(--sb-ease) var(--sb-phase), border-radius var(--sb-phase) var(--sb-ease) var(--sb-phase), width var(--sb-phase) var(--sb-ease) var(--sb-phase), height var(--sb-phase) var(--sb-ease) var(--sb-phase), gap var(--sb-phase) var(--sb-ease) var(--sb-phase)}.sidebar-logo-text,.card-placeholder-text,.mini-calendar,.profile-info{opacity:1;max-height:300px;transition:opacity var(--sb-phase) var(--sb-ease) var(--sb-phase), max-height var(--sb-phase) var(--sb-ease) var(--sb-phase);overflow:hidden}.dashboard-sidebar--collapsed .sidebar-logo-text,.dashboard-sidebar--collapsed .card-placeholder-text,.dashboard-sidebar--collapsed .mini-calendar,.dashboard-sidebar--collapsed .profile-info{opacity:0;pointer-events:none;max-height:0;transition:opacity var(--sb-phase) var(--sb-ease), max-height var(--sb-phase) var(--sb-ease), margin var(--sb-phase) var(--sb-ease);margin-top:0;margin-bottom:0}.profile-avatar{opacity:1;transition:opacity var(--sb-phase) var(--sb-ease)}.dashboard-sidebar--collapsed .profile-avatar{opacity:0;pointer-events:none;transition:opacity var(--sb-phase) var(--sb-ease) var(--sb-phase)}.card-title,.calendar-header{opacity:1;max-height:40px;transition:opacity var(--sb-phase) var(--sb-ease), max-height var(--sb-phase) var(--sb-ease), margin var(--sb-phase) var(--sb-ease);overflow:hidden}.dashboard-sidebar--collapsed .card-title,.dashboard-sidebar--collapsed .calendar-header{opacity:0;pointer-events:none;max-height:0;transition:opacity var(--sb-phase) var(--sb-ease) var(--sb-phase), max-height var(--sb-phase) var(--sb-ease) var(--sb-phase), margin var(--sb-phase) var(--sb-ease) var(--sb-phase);margin-top:0;margin-bottom:0}.sidebar-edge-toggle{cursor:pointer;z-index:10;background:0 0;border:none;justify-content:center;align-items:center;width:16px;height:100%;margin:0;padding:0;display:flex;position:absolute;top:0;right:-8px}.sidebar-edge-toggle:focus{outline:none}.sidebar-edge-toggle__rail{pointer-events:none;background:0 0;border-radius:2px;width:2px;height:100%;transition:background .18s;position:absolute;top:0;left:7px}.sidebar-edge-toggle__handle{color:#4b5563;opacity:0;pointer-events:none;background:#fff;border:1px solid #00000014;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;transition:opacity .18s,transform .18s,color .18s;display:flex;position:relative;transform:translate(-4px)scale(.9);box-shadow:0 2px 6px #00000014}.dashboard-sidebar:hover .sidebar-edge-toggle__rail,.sidebar-edge-toggle:focus-visible .sidebar-edge-toggle__rail{background:#6366f159}.dashboard-sidebar:hover .sidebar-edge-toggle__handle,.sidebar-edge-toggle:focus-visible .sidebar-edge-toggle__handle{opacity:1;transform:translate(0)scale(1)}.sidebar-edge-toggle:hover .sidebar-edge-toggle__handle{color:#111827;border-color:#6366f199;box-shadow:0 4px 10px #0000001a}.sidebar-edge-toggle:hover .sidebar-edge-toggle__rail{background:#6366f199}.sidebar-edge-toggle__handle svg{transition:transform .25s cubic-bezier(.16,1,.3,1)}.dashboard-sidebar--collapsed .sidebar-edge-toggle__handle svg{transform:rotate(180deg)}.card-icon{color:#4b5563;opacity:0;pointer-events:none;transition:opacity var(--sb-phase) var(--sb-ease);justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden}.dashboard-sidebar--collapsed .logo-img-wrapper{width:40px;height:40px;margin:0 auto 16px}.dashboard-sidebar--collapsed .sidebar-logo-container{padding:8px 0 12px}.dashboard-sidebar--collapsed .dashboard-card{cursor:pointer;border-radius:12px;gap:0;min-height:60px;margin-bottom:8px;padding:12px 0}.dashboard-sidebar--collapsed .card-icon{opacity:1;pointer-events:auto;transition:opacity var(--sb-phase) var(--sb-ease) var(--sb-phase)}.dashboard-sidebar--collapsed .section-chevron{display:none}.dashboard-sidebar--collapsed .section-count{z-index:2;color:#fff;min-width:16px;height:16px;box-shadow:0 0 0 2px var(--bg-card,#151515), 0 1px 4px #00000059;background:#ef4444;border-radius:999px;padding:0 4px;font-size:9.5px;font-weight:700;line-height:1;position:absolute;top:4px;right:4px}.profile-card .card-icon{width:36px;height:36px;transition:opacity var(--sb-phase) var(--sb-ease), left var(--sb-phase) var(--sb-ease), transform var(--sb-phase) var(--sb-ease);inset:50% auto auto 18px;transform:translateY(-50%)}.dashboard-sidebar--collapsed .profile-card .card-icon{transition:opacity var(--sb-phase) var(--sb-ease) var(--sb-phase), left var(--sb-phase) var(--sb-ease) var(--sb-phase), transform var(--sb-phase) var(--sb-ease) var(--sb-phase);left:50%;transform:translate(-50%,-50%)}[data-theme=dark] .sidebar-edge-toggle__handle{color:#ffffffb3;background:#1a1d24;border-color:#ffffff1a}[data-theme=dark] .sidebar-edge-toggle:hover .sidebar-edge-toggle__handle{color:#fff;border-color:#6366f1b3}[data-theme=dark] .card-icon{color:#ffffffbf}.mobile-drawer-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;opacity:0;pointer-events:none;background:#0000004d;transition:opacity .3s cubic-bezier(.16,1,.3,1);position:fixed;inset:0}.mobile-drawer-overlay.open{opacity:1;pointer-events:auto}.mobile-drawer{box-sizing:border-box;background:#eef1f5;flex-direction:column;width:min(320px,88vw);height:100%;padding:24px;transition:left .3s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;top:0;left:-320px;overflow-y:auto;box-shadow:4px 0 24px #00000014}.mobile-drawer-overlay.open .mobile-drawer{left:0}.close-drawer-btn{color:#6b7280;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:6px;transition:background .2s,color .2s;display:flex;position:absolute;top:16px;right:16px}.close-drawer-btn:hover{color:#111827;background:#0000000d}@media (width<=768px){.dashboard-sidebar{display:none}.hamburger-btn{display:flex}.dashboard-header{flex-wrap:nowrap;align-items:center;gap:8px;padding:8px 10px}.dashboard-brand{gap:6px;padding:2px 4px}.dashboard-brand-mark{width:38px;height:38px}.dashboard-welcome{flex:auto;align-items:center;gap:0;min-width:0;padding:4px 6px;display:flex}.dashboard-welcome .dashboard-brand-mark--ghost{visibility:hidden;pointer-events:none;flex:0 0 0;width:0;min-width:0;margin:0;display:block}.welcome-heading{font-size:unset;font-weight:unset;color:unset;letter-spacing:normal;white-space:normal;text-overflow:ellipsis;flex-direction:column;flex:auto;justify-content:center;gap:3px;min-width:0;line-height:1;display:inline-flex;overflow:hidden}.welcome-line{color:#64748b;letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:11px;font-weight:600;line-height:1;display:inline-block}.welcome-name{color:#0f172a;letter-spacing:.06em;text-overflow:ellipsis;white-space:nowrap;max-width:42vw;margin:0;font-size:15px;font-weight:800;line-height:1;display:inline-block;overflow:hidden}.dashboard-brand-text{display:flex}.dashboard-brand-divider{min-height:24px;margin:0 2px;display:block}.header-actions{display:none}}[data-theme=dark] body:has(.dashboard-layout){background:#050505!important}[data-theme=dark] .dashboard-layout{background:#050505}[data-theme=dark] .dashboard-sidebar{background:#080808;border-right-color:#ffffff0f}[data-theme=dark] .mobile-drawer{background:#080808;box-shadow:4px 0 32px #0009}[data-theme=dark] .sidebar-logo-text{color:#fff}[data-theme=dark] .dashboard-card{-webkit-backdrop-filter:blur(8px);background:#121212;border-color:#ffffff0f;box-shadow:0 2px 12px #00000040}[data-theme=dark] .dashboard-card:hover{background:#1a1a1a;box-shadow:0 6px 20px #00000059}[data-theme=dark] .card-title{color:#ffffffd9}[data-theme=dark] .card-placeholder-text,[data-theme=dark] .calendar-month-year{color:#ffffffa6}[data-theme=dark] .calendar-weekday{color:#ffffff59}[data-theme=dark] .calendar-weekday.active{color:#93c5fd}[data-theme=dark] .calendar-day{color:#ffffffa6}[data-theme=dark] .calendar-day:hover,[data-theme=dark] .calendar-day.hovered{color:#bfdbfe;background:#3b82f62e}[data-theme=dark] .calendar-day.today{background:#3b82f6;font-weight:700;color:#fff!important}[data-theme=dark] .calendar-day.today:hover,[data-theme=dark] .calendar-day.today.hovered{background:#2563eb}[data-theme=dark] .calendar-day--holiday{color:#fca5a5;background:#ef444438}[data-theme=dark] .calendar-day--holiday:hover,[data-theme=dark] .calendar-day--holiday.hovered{color:#fecaca;background:#ef444452}[data-theme=dark] .calendar-day.today.calendar-day--holiday{background:#ef4444;color:#fff!important}[data-theme=dark] .calendar-day--follow{color:#bfdbfe;box-shadow:inset 0 0 0 1.5px #60a5fa}[data-theme=dark] .calendar-day--follow:hover,[data-theme=dark] .calendar-day--follow.hovered{color:#dbeafe;background:#3b82f638}[data-theme=dark] .calendar-day.today.calendar-day--follow{box-shadow:0 0 0 2px #60a5fa8c}[data-theme=dark] .calendar-day--dim{color:#94a3b859}[data-theme=dark] .calendar-day--dim:hover,[data-theme=dark] .calendar-day--dim.hovered{color:#94a3b899;background:#3b82f614}[data-theme=dark] .calendar-legend{color:#e2e8f08c;border-top-color:#ffffff14}[data-theme=dark] .calendar-legend-swatch--today{background:#3b82f6}[data-theme=dark] .calendar-legend-swatch--holiday{background:#ef444438;border-color:#ef444499}[data-theme=dark] .calendar-legend-swatch--follow{box-shadow:inset 0 0 0 1.5px #60a5fa}[data-theme=dark] .profile-avatar{color:#3b82f6;background:#3b82f624}[data-theme=dark] .profile-name{color:#fff}[data-theme=dark] .profile-subtitle{color:#ffffffa6}[data-theme=dark] .dashboard-main{background:#050505}[data-theme=dark] .welcome-heading{color:#fff}[data-theme=dark] .dashboard-header{background:linear-gradient(135deg,#0f1b33a6 0%,#0a14288c 55%,#0f1b3399 100%);border-color:#ffffff0f;box-shadow:0 6px 24px #00000059}[data-theme=dark] .dashboard-brand-name,[data-theme=dark] .welcome-name{color:#f8fafc}[data-theme=dark] .dashboard-brand-sub,[data-theme=dark] .welcome-line{color:#94a3b8e6}[data-theme=dark] .dashboard-brand:hover{background:#ffffff0d}[data-theme=dark] .dashboard-brand-divider{background:linear-gradient(#0000,#ffffff24,#0000)}[data-theme=dark] .hamburger-btn{color:#f8fafcbf;background:#ffffff0a;border-color:#ffffff14}[data-theme=dark] .hamburger-btn:hover{color:#f8fafc;background:#ffffff14}[data-theme=dark] .close-drawer-btn{color:#f8fafc8c}[data-theme=dark] .close-drawer-btn:hover{color:#f8fafc;background:#ffffff12}[data-theme=dark] .mobile-drawer-overlay{background:#050b16b3}[data-theme=dark] .nav-controls-group,[data-theme=dark] .view-controls-group{background:#ffffff0a;border-color:#ffffff0f}[data-theme=dark] .day-nav-group{background:#ffffff08}[data-theme=dark] .day-label-btn{color:#60a5fa;background:#60a5fa1a}[data-theme=dark] .btn-secondary{color:#f8fafca6;background:#ffffff0a;border-color:#ffffff14}[data-theme=dark] .btn-secondary:hover{color:#f8fafc;background:#ffffff14;border-color:#ffffff24}.section-card{padding:0;overflow:hidden}.section-card:hover{transform:none;box-shadow:0 2px 12px #0000000a}[data-theme=dark] .section-card:hover{background:#131313}.section-header{cursor:pointer;text-align:left;width:100%;color:inherit;font:inherit;background:0 0;border:0;align-items:center;gap:10px;padding:16px 18px;display:flex}.section-header .card-title{flex:1;min-width:0;margin:0}.section-count{color:#2563eb;background:#3b82f61a;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;min-width:22px;height:20px;padding:0 7px;font-size:11px;font-weight:700;display:inline-flex}.section-chevron{color:#9ca3af}.section-card.is-open .section-chevron{transform:rotate(-270deg)}.section-body{padding:0 14px 14px;animation:.18s feedExpand}.section-scroll{max-height:260px;padding-right:4px;overflow-y:auto}.feed-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.feed-item{background:#00000005;border:1px solid #0000000d;border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.feed-item-head{align-items:center;gap:8px;display:flex}.feed-severity{background:#3b82f6;border-radius:50%;flex-shrink:0;width:8px;height:8px}.feed-severity--info{background:#3b82f6}.feed-severity--warn{background:#f59e0b}.feed-severity--critical{background:#ef4444}.feed-title{color:#111827;font-size:13px;font-weight:650;line-height:1.3}.feed-body{color:#4b5563;margin:0;font-size:12px;line-height:1.45}.feed-meta{color:#9ca3af;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:500}.feed-chevron{color:#9ca3af;flex-shrink:0;justify-content:center;align-items:center;transition:transform .2s;display:inline-flex;transform:rotate(-90deg)}@keyframes feedExpand{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.feed-item-footer{justify-content:space-between;align-items:center;gap:8px;display:flex}.feed-link-inline{color:#2563eb;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600;text-decoration:none}.feed-link-inline:hover{text-decoration:underline}.exam-row{background:#00000005;border:1px solid #0000000d;border-radius:10px;align-items:stretch;gap:12px;padding:10px 12px 10px 16px;display:flex;position:relative}.exam-row-stripe{background:#3b82f6;border-radius:3px 0 0 3px;width:4px;position:absolute;inset:0 auto 0 0}.exam-row--mid .exam-row-stripe{background:#3b82f6}.exam-row--end .exam-row-stripe{background:#ef4444}.exam-row--quiz .exam-row-stripe{background:#f59e0b}.exam-row--lab .exam-row-stripe{background:#8b5cf6}.exam-row-date{background:#0000000a;border-radius:8px;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;width:44px;padding:6px 0;line-height:1;display:flex}.exam-row-month{letter-spacing:.08em;text-transform:uppercase;color:#6b7280;margin-bottom:2px;font-size:9.5px;font-weight:700}.exam-row-day{color:#111827;font-size:18px;font-weight:700;line-height:1}.exam-row-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.exam-row-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.exam-row-subject{color:#111827;overflow-wrap:break-word;flex:140px;min-width:0;font-size:13px;font-weight:650;line-height:1.3}.exam-row-code{color:#6b7280;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.exam-row-tags{flex-wrap:wrap;gap:4px;margin-top:2px;display:flex}.exam-tag{color:#4b5563;white-space:nowrap;background:#0000000d;border-radius:999px;padding:2px 8px;font-size:10.5px;font-weight:600;line-height:1.4}.exam-tag--type{flex-shrink:0;align-self:flex-start;margin-top:1px;font-weight:700}.exam-tag--mid{color:#2563eb;background:#3b82f61a}.exam-tag--end{color:#dc2626;background:#ef44441a}.exam-tag--quiz{color:#b45309;background:#f59e0b1f}.exam-tag--lab{color:#7c3aed;background:#8b5cf61a}.exam-tag--room{color:#4b5563;background:0 0;border:1px solid #0000001a}.dashboard-sidebar--collapsed .section-card .section-body,.dashboard-sidebar--collapsed .feed-list{display:none}[data-theme=dark] .feed-item{background:#ffffff08;border-color:#ffffff0f}[data-theme=dark] .feed-title{color:#ffffffe0}[data-theme=dark] .feed-body{color:#fff9}[data-theme=dark] .feed-meta{color:#fff6}[data-theme=dark] .feed-chevron{color:#ffffff73}[data-theme=dark] .feed-link-inline{color:#93c5fd}[data-theme=dark] .section-count{color:#93c5fd;background:#60a5fa24}[data-theme=dark] .section-chevron{color:#ffffff80}[data-theme=dark] .sidebar-footer{border-top-color:#ffffff14}[data-theme=dark] .exam-row{background:#ffffff08;border-color:#ffffff0f}[data-theme=dark] .exam-row-date{background:#ffffff0d}[data-theme=dark] .exam-row-month{color:#ffffff8c}[data-theme=dark] .exam-row-day{color:#ffffffeb}[data-theme=dark] .exam-row-subject{color:#ffffffe6}[data-theme=dark] .exam-row-code{color:#ffffff8c}[data-theme=dark] .exam-tag{color:#ffffffb3;background:#ffffff0f}[data-theme=dark] .exam-tag--mid{color:#93c5fd;background:#60a5fa24}[data-theme=dark] .exam-tag--end{color:#fca5a5;background:#ef444429}[data-theme=dark] .exam-tag--quiz{color:#fcd34d;background:#f59e0b29}[data-theme=dark] .exam-tag--lab{color:#c4b5fd;background:#a78bfa29}[data-theme=dark] .exam-tag--room{color:#ffffffa6;background:0 0;border-color:#ffffff24}.tt-main{box-sizing:border-box;flex-direction:column;flex:1;min-height:100svh;padding:1.5rem 2rem 2rem;display:flex}.tt-topbar{border-bottom:1px solid var(--border);align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;display:flex;position:relative}.tt-logo-btn{cursor:pointer;z-index:1;background:0 0;border:none;flex-shrink:0;align-items:center;padding:0;display:flex}.tt-logo{object-fit:contain;width:auto;height:72px}.tt-heading{letter-spacing:.15em;text-transform:uppercase;color:var(--text);white-space:nowrap;margin:0;font-size:.78rem;font-weight:600;position:absolute;left:50%;transform:translate(-50%)}.tt-content{box-sizing:border-box;flex-direction:column;flex:auto;width:100%;min-height:0;display:flex}.tt-export-target{flex-direction:column;flex:auto;min-height:0;display:flex}.tt-follow-day-row{margin:0 0 12px}.tt-follow-day-row:empty{display:none}.tt-card-style-row{margin:0 0 12px;display:none}.tt-card-style-row>.tt-card-theme-picker{justify-content:space-between;width:100%}@media (width<=768px){.tt-card-style-row{display:flex}}.tt-card-theme-picker{color:var(--muted,#555);white-space:nowrap;flex-wrap:nowrap;align-items:center;column-gap:8px;font-size:.85rem;display:inline-flex}.tt-card-theme-label{white-space:nowrap;color:#6b7280}.tt-card-theme-select{appearance:none;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#111827;cursor:pointer;background-color:#f3f4f6;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;border:1px solid #00000014;border-radius:999px;padding:5px 28px 5px 12px;font-size:.82rem;line-height:1.2;transition:border-color .2s,background-color .2s,box-shadow .2s}.tt-card-theme-select:hover{background-color:#fff;border-color:#00000029}.tt-card-theme-select:focus-visible,.tt-card-theme-select:focus{background-color:#fff;border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f126}.tt-card-theme-select option{color:#111827;background-color:#fff}[data-theme=dark] .tt-card-theme-label{color:#ffffff8c}[data-theme=dark] .tt-card-theme-select{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#fff;background-color:#ffffff0f;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");border-color:#ffffff1a}[data-theme=dark] .tt-card-theme-select:hover{background-color:#ffffff1a;border-color:#fff3}[data-theme=dark] .tt-card-theme-select:focus-visible,[data-theme=dark] .tt-card-theme-select:focus{background-color:#ffffff1a;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f633}[data-theme=dark] .tt-card-theme-select option{color:#fff;background-color:#111}.tt-placeholder{color:var(--text);font-size:1rem}.tt-navbar-pill,.tt-navbar-toggle{z-index:200;transform-origin:bottom;max-width:calc(100vw - 32px);transition:opacity .45s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1);position:fixed;bottom:10px;left:50%;transform:translate(-50%)}.tt-navbar-wrap.is-compact.is-collapsed .tt-navbar-pill{opacity:0;pointer-events:none;transform:translate(-50%)scale(.18)}.tt-navbar-wrap.is-compact.is-open .tt-navbar-toggle{opacity:0;pointer-events:none;transform:translate(-50%)scale(.85)}.tt-navbar-pill{-webkit-backdrop-filter:blur(20px)saturate(1.4);background:#ffffffb8;border:1px solid #0000000f;border-radius:999px;align-items:center;gap:.75rem;padding:8px 20px;display:flex;box-shadow:0 10px 30px #00000014,0 1px 3px #00000005}.tt-navbar-pill .combobox{width:96px}.tt-batch-select{color:#111827;cursor:text;appearance:none;background:#f3f4f6 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") right 8px center no-repeat;border:1px solid #00000014;border-radius:999px;padding:5px 28px 5px 10px;font-size:.82rem;transition:border-color .2s,background-color .2s}.tt-batch-select::placeholder{color:#9ca3af}.tt-batch-select:focus{background:#fff;border-color:#6366f1;outline:none}.tt-batch-popup{color:#111827;background:#fff;border-color:#00000014;min-width:180px;right:auto;box-shadow:0 10px 25px #00000014}.tt-batch-popup .combobox-option.is-active{color:#6366f1;background:#6366f114}.tt-batch-popup .combobox-option-hint{color:#6b7280}.tt-actions{border-left:1px solid #00000014;align-items:center;gap:.5rem;padding-left:.5rem;display:flex}.tt-action-group{align-items:center;gap:.1rem;display:flex}.tt-action-group+.tt-action-group{border-left:1px solid #00000014;padding-left:.5rem}.tt-icon-btn{color:#6b7280;cursor:pointer;background:#fff;border:1px solid #00000014;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;transition:background .18s,color .18s,border-color .18s,transform .18s,box-shadow .18s;display:flex}.tt-icon-btn:hover{color:#111827;background:#f9fafb;border-color:#0000001f;transform:translateY(-1.5px);box-shadow:0 4px 12px #0000000a}.tt-icon-btn:active{box-shadow:none;transform:translateY(0)}.tt-cal-btn{position:relative}.tt-cal-dot{pointer-events:none;background:#34d399;border-radius:50%;width:7px;height:7px;position:absolute;top:3px;right:3px;box-shadow:0 0 5px #34d399b3}.csm-backdrop{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0009;justify-content:center;align-items:flex-end;padding:0 12px 90px;display:flex;position:fixed;inset:0}@media (width>=600px){.csm-backdrop{align-items:center;padding:0}}.csm{width:100%;max-width:380px;font-family:var(--font,system-ui, -apple-system, sans-serif);background:#0f1117;border:1px solid #ffffff1a;border-radius:20px;overflow:hidden;box-shadow:0 32px 80px #000000b3,0 0 0 1px #ffffff0a}[data-theme=light] .csm{background:#fff;border-color:#00000014;box-shadow:0 24px 60px #0000002e}.csm:before{content:"";background:linear-gradient(90deg,#3b82f6,#8b5cf6);height:3px;display:block}.csm-header{border-bottom:1px solid #ffffff12;align-items:center;gap:10px;padding:14px 18px 12px;display:flex}[data-theme=light] .csm-header{border-bottom-color:#00000012}.csm-icon{background:#3b82f626;border:1px solid #3b82f640;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;display:flex}[data-theme=light] .csm-icon{background:#0060c014;border-color:#0060c033}.csm-header-text{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.csm-title{color:#f1f5f9;letter-spacing:-.01em;font-family:inherit;font-size:.9rem;font-weight:700}[data-theme=light] .csm-title{color:#0f172a}.csm-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.csm-dot--on{background:#34d399;box-shadow:0 0 6px #34d399cc}.csm-close{color:#ffffff8c;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:1rem;line-height:1;transition:background .15s,color .15s;display:flex}[data-theme=light] .csm-close{color:#00000073;background:#0000000a;border-color:#0000001a}.csm-close:hover{color:#fff;background:#ffffff1a}[data-theme=light] .csm-close:hover{color:#000;background:#00000014}.csm-body{padding:16px 18px 18px;font-family:inherit}.csm-hint{color:#fff9;margin:0 0 16px;font-family:inherit;font-size:.84rem;line-height:1.6}[data-theme=light] .csm-hint{color:#0000008c}.csm-error{color:#fca5a5;background:#ef44441a;border:1px solid #ef444440;border-radius:8px;margin:0 0 12px;padding:8px 12px;font-size:.8rem}.csm-info{background:#ffffff0a;border:1px solid #ffffff14;border-radius:12px;flex-direction:column;gap:6px;margin-bottom:16px;padding:12px 14px;display:flex}[data-theme=light] .csm-info{background:#00000008;border-color:#0000000f}.csm-info-row{color:#fffc;justify-content:space-between;align-items:center;gap:8px;font-family:inherit;font-size:.8rem;display:flex}[data-theme=light] .csm-info-row{color:#000000bf}.csm-info-label{color:#fff6;text-transform:uppercase;letter-spacing:.06em;flex-shrink:0;font-size:.75rem;font-weight:600}[data-theme=light] .csm-info-label{color:#00000061}.csm-actions{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.csm-btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:10px;height:36px;padding:0 16px;font-family:inherit;font-size:.83rem;font-weight:600;transition:background .15s,opacity .15s,transform .1s}.csm-btn:active:not(:disabled){transform:scale(.97)}.csm-btn:disabled{opacity:.4;cursor:not-allowed}.csm-btn--primary{color:#fff;background:#3b82f6;box-shadow:0 4px 14px #3b82f659}.csm-btn--primary:hover:not(:disabled){background:#2563eb;box-shadow:0 4px 18px #3b82f680}.csm-btn--secondary{color:#93c5fd;background:#3b82f61f;border-color:#3b82f64d}.csm-btn--secondary:hover:not(:disabled){background:#3b82f633}.csm-btn--ghost{color:#ffffffa6;background:#ffffff0d;border-color:#ffffff1a}.csm-btn--ghost:hover:not(:disabled){color:#fff;background:#ffffff17}[data-theme=light] .csm-btn--ghost{color:#0009;background:#0000000a;border-color:#0000001f}[data-theme=light] .csm-btn--ghost:hover:not(:disabled){color:#000;background:#00000014}.csm-btn--link{color:#93c5fdcc;background:0 0;border:none;align-self:center;height:auto;margin-left:auto;padding:0 4px;font-size:.79rem;font-weight:500;text-decoration:none;transition:color .15s}.csm-btn--link:hover{color:#93c5fd}[data-theme=light] .csm-btn--link{color:#0060c0}.csm-toggle{cursor:pointer;title:"Auto-sync";background:#ffffff1a;border:1px solid #ffffff26;border-radius:999px;flex-shrink:0;align-self:center;width:40px;height:22px;padding:0;transition:background .2s;position:relative}.csm-toggle:disabled{opacity:.4;cursor:not-allowed}.csm-toggle--on{background:#3b82f6;border-color:#3b82f6}.csm-toggle-knob{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;display:block;position:absolute;top:2px;left:2px}.csm-toggle--on .csm-toggle-knob{transform:translate(18px)}.tt-tip-wrap{position:relative}.tt-tip-wrap:after{content:attr(data-tip);color:#fff;white-space:nowrap;pointer-events:none;opacity:0;background:#111827;border:none;border-radius:6px;padding:4px 8px;font-size:.7rem;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px)}.tt-tip-wrap:hover:after{opacity:1;transform:translate(-50%)translateY(0)}.tt-navbar-toggle{-webkit-backdrop-filter:blur(20px)saturate(1.4);color:#6b7280;cursor:pointer;background:#ffffffb8;border:1px solid #0000000f;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;padding:0;transition:opacity .45s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1),background .2s,color .2s,border-color .2s;display:flex;box-shadow:0 6px 20px #0000000f,0 1px 3px #00000005}.tt-navbar-toggle:hover{color:#111827;background:#f9fafb;border-color:#0000001f}[data-theme=dark] .tt-navbar-pill{-webkit-backdrop-filter:blur(20px);background:#0f0f0fd9;border-color:#ffffff0f;box-shadow:0 10px 30px #0006,0 1px 3px #0003}[data-theme=dark] .tt-navbar-toggle{-webkit-backdrop-filter:blur(20px);color:#ffffffbf;background:#0f0f0fd9;border-color:#ffffff0f;box-shadow:0 6px 20px #00000059,0 1px 3px #00000026}[data-theme=dark] .tt-navbar-toggle:hover{color:#fff;background:#ffffff1a;border-color:#ffffff29}[data-theme=dark] .tt-icon-btn{color:#ffffffbf;background:#ffffff0a;border-color:#ffffff1a}[data-theme=dark] .tt-icon-btn:hover{color:#fff;background:#ffffff1a;border-color:#ffffff2e;box-shadow:0 4px 12px #0000004d}[data-theme=dark] .tt-theme-btn.is-dark{color:#3b82f6;border-color:#3b82f64d}[data-theme=dark] .tt-theme-btn.is-dark:hover{background:#3b82f61f;border-color:#3b82f680}[data-theme=dark] .tt-actions,[data-theme=dark] .tt-action-group+.tt-action-group{border-left-color:#ffffff14}[data-theme=dark] .tt-batch-select{color:#fff;background-color:#ffffff0f;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");border-color:#ffffff1a}[data-theme=dark] .tt-batch-select::placeholder{color:#ffffff61}[data-theme=dark] .tt-batch-select:focus{background-color:#ffffff1a;border-color:#3b82f6}[data-theme=dark] .tt-batch-popup{color:#fff;background:#111;border-color:#ffffff0f;box-shadow:0 10px 25px #00000073}[data-theme=dark] .tt-batch-popup .combobox-option.is-active{color:#3b82f6;background:#3b82f626}[data-theme=dark] .tt-batch-popup .combobox-option-hint{color:#ffffff80}[data-theme=dark] .tt-tip-wrap:after{color:#fff;background:#151515;border:1px solid #ffffff0f}.tt-status{text-align:center;border:1px solid var(--border,#00000014);background:var(--card-bg,#00000005);border-radius:12px;max-width:720px;margin:2rem auto;padding:1rem 1.25rem;font-size:.95rem;line-height:1.5}.tt-status code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}.tt-status--loading{color:var(--muted,#555)}.tt-status--warning{color:#8a5a00;background:#ffc4571f;border-color:#ffc4574d}.tt-status--error{color:#a02323;background:#dc354514;border-color:#dc354540}.tt-status--empty{color:var(--muted,#555)}[data-theme=dark] .tt-status--warning{color:#ffd07b}[data-theme=dark] .tt-status--error{color:#ff8e8e}.tt-save-wrap{position:relative}.tt-save-wrap:has(.tt-save-menu):after{opacity:0}.tt-icon-btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.tt-save-menu{z-index:60;background:#fff;border:1px solid #00000014;border-radius:12px;flex-direction:column;gap:2px;min-width:168px;padding:6px;animation:.14s ease-out tt-save-menu-in;display:flex;position:absolute;bottom:calc(100% + 8px);right:0;box-shadow:0 12px 32px #0f172a2e,0 2px 6px #0f172a0f}@keyframes tt-save-menu-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tt-save-menu-item{appearance:none;color:#111827;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:8px 12px;font-size:.85rem;font-weight:500;transition:background .15s,color .15s}.tt-save-menu-item:hover:not(:disabled),.tt-save-menu-item:focus-visible{background:#f3f4f6;outline:none}.tt-save-menu-item:disabled{opacity:.6;cursor:not-allowed}.tt-save-menu-error{color:#b91c1c;margin:4px 8px 2px;font-size:.72rem}.tt-save-menu-header{border-bottom:1px solid #0000000f;align-items:center;gap:6px;margin-bottom:4px;padding:2px 4px 6px;display:flex}.tt-save-menu-back{appearance:none;color:#6b7280;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:22px;height:22px;transition:background .15s,color .15s;display:inline-flex}.tt-save-menu-back:hover:not(:disabled),.tt-save-menu-back:focus-visible{color:#111827;background:#f3f4f6;outline:none}.tt-save-menu-back:disabled{opacity:.5;cursor:not-allowed}.tt-save-menu-title{letter-spacing:.06em;text-transform:uppercase;color:#6b7280;font-size:.72rem;font-weight:600}.tt-save-menu-aspects{flex-direction:column;gap:2px;max-height:240px;display:flex;overflow-y:auto}[data-theme=dark] .tt-save-menu{background:#161616;border-color:#ffffff14;box-shadow:0 12px 32px #0000008c,0 2px 6px #00000059}[data-theme=dark] .tt-save-menu-item{color:#f5f5f5}[data-theme=dark] .tt-save-menu-item:hover:not(:disabled),[data-theme=dark] .tt-save-menu-item:focus-visible{background:#ffffff14}[data-theme=dark] .tt-save-menu-error{color:#f87171}[data-theme=dark] .tt-save-menu-header{border-bottom-color:#ffffff0f}[data-theme=dark] .tt-save-menu-back{color:#9ca3af}[data-theme=dark] .tt-save-menu-back:hover:not(:disabled),[data-theme=dark] .tt-save-menu-back:focus-visible{color:#f9fafb;background:#ffffff14}[data-theme=dark] .tt-save-menu-title{color:#9ca3af}.tt-export-target.tt-exporting .tt-add-btn{visibility:hidden}.tt-export-target.tt-exporting .tt-edit-btn,.tt-export-target.tt-exporting .tt-drag-btn,.tt-export-target.tt-exporting .tt-tip-wrap:after,.tt-export-target.tt-exporting [data-tip]:after,.tt-export-target.tt-exporting .tt-day-active-pill{display:none!important}.tt-export-target.tt-exporting .tt-day-header-cell.tt-day-active,.tt-export-target.tt-exporting .tt-slot-cell.tt-col-active{background-image:none!important}[data-theme=dark] .tt-export-target.tt-exporting .tt-day-header-cell.tt-day-active,[data-theme=dark] .tt-export-target.tt-exporting .tt-slot-cell.tt-col-active{background-image:none!important;background-color:inherit!important}.tt-export-target.tt-exporting .tt-day-header-cell.tt-day-active .tt-day-header-label{color:#33333373!important}[data-theme=dark] .tt-export-target.tt-exporting .tt-day-header-cell.tt-day-active .tt-day-header-label{color:#ffffff8c!important}.tt-export-target.tt-exporting .tt-active-dot,.tt-export-target.tt-exporting .tt-grid-frame:before{display:none!important}.tt-export-target.tt-exporting{flex:none!important;align-self:flex-start!important;width:max-content!important;max-width:none!important;height:auto!important;min-height:0!important;max-height:none!important;display:inline-block!important}.tt-export-target.tt-exporting .tt-grid-frame{--col-width:200px!important;--time-col-width:84px!important;--row-height:56px!important;--card-padding:6px 10px!important;--card-border-radius:12px!important;--card-font-size:13px!important;--card-meta-size:11px!important;--badge-font-size:9.5px!important;--header-padding:10px 12px!important;--header-font-size:13px!important;--time-font-size:14px!important;--grid-line-top:10px!important;--active-dot-size:5px!important;width:max-content!important;max-width:none!important;height:auto!important;min-height:0!important;max-height:none!important;margin:0!important;display:inline-block!important;overflow:visible!important}.tt-export-target.tt-exporting .tt-grid-scroll-wrapper{width:max-content!important;max-width:none!important;height:auto!important;overflow:visible!important}.tt-export-target.tt-exporting .tt-grid-table{zoom:1!important;width:max-content!important;min-width:0!important;transform:none!important}.tt-export-target.tt-exporting .tt-day-header-cell,.tt-export-target.tt-exporting .tt-slot-cell{width:var(--col-width)!important;min-width:var(--col-width)!important;max-width:none!important}.tt-export-target.tt-exporting .tt-time-header-cell,.tt-export-target.tt-exporting .tt-time-cell{width:var(--time-col-width)!important;min-width:var(--time-col-width)!important;max-width:var(--time-col-width)!important}.tt-export-target.tt-exporting .tt-class-card{padding:var(--card-padding)!important;border-radius:var(--card-border-radius)!important;border-left-width:3px!important;min-height:auto!important;margin-bottom:0!important;padding-right:10px!important}.tt-export-target.tt-exporting .tt-slot-stack>.tt-class-card{flex:auto!important}.tt-export-target.tt-exporting .tt-type-badge{font-size:var(--badge-font-size)!important;border-radius:4px!important;margin-top:0!important;margin-bottom:4px!important;padding:2px 6px!important;line-height:1.1!important}.tt-export-target.tt-exporting .tt-card-subject{font-size:var(--card-font-size)!important;letter-spacing:0!important;word-break:normal!important;overflow-wrap:break-word!important;white-space:normal!important;margin:0 0 3px!important;font-weight:700!important;line-height:1.25!important}.tt-export-target.tt-exporting .tt-card-code{font-size:var(--card-meta-size)!important;word-break:normal!important;overflow-wrap:break-word!important;white-space:normal!important;margin:0 0 2px!important;font-weight:600!important;line-height:1.2!important}.tt-export-target.tt-exporting .tt-card-room{font-size:var(--card-meta-size)!important;border-radius:3px!important;margin:auto 0 0!important;padding:1px 5px!important;font-weight:600!important;line-height:1.25!important}.tt-export-target.tt-exporting .tt-day-header-label{font-size:var(--header-font-size)!important;letter-spacing:.1em!important}.tt-export-target.tt-exporting .tt-time-label{font-size:var(--time-font-size)!important;white-space:nowrap!important}.tt-export-target.tt-exporting .tt-time-period{font-size:calc(var(--time-font-size) * .7)!important}.tt-export-target.tt-exporting .tt-batch-header-label{font-size:var(--header-font-size)!important;letter-spacing:.04em!important}.admin-app{background:var(--bg,#050505);min-height:100vh;color:var(--text,#ffffffbf);font:16px/1.5 var(--sans,system-ui, sans-serif);text-align:left}.admin-app *,.admin-app :before,.admin-app :after{box-sizing:border-box}[data-theme=light] .admin-app{color:#1d1c24;background:#f7f7f9}.admin-topbar{z-index:20;background:var(--bg,#050505);border-bottom:1px solid var(--border,#ffffff14);justify-content:space-between;align-items:center;padding:16px 28px;display:flex;position:sticky;top:0}[data-theme=light] .admin-topbar{background:#fff;border-bottom:1px solid #e6e6ea}.admin-brand{align-items:center;gap:12px;display:flex}.admin-brand-logo{object-fit:contain;border-radius:8px;width:36px;height:36px}.admin-brand-text{flex-direction:column;line-height:1.15;display:flex}.admin-brand-title{color:var(--text-h,#fff);font-size:17px;font-weight:600}.admin-brand-sub{letter-spacing:1.5px;color:#3b82f6;font-size:11px;font-weight:600}.admin-top-actions{align-items:center;gap:16px;display:flex}.admin-back-link{color:#3b82f6;align-items:center;gap:6px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.admin-back-link:hover{text-decoration:underline}.admin-icon-btn{border:1px solid var(--border,#ffffff14);width:34px;height:34px;color:inherit;cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.admin-icon-btn:hover{background:var(--bg-hover,#ffffff0a)}.admin-subnav{border-bottom:1px solid var(--border,#ffffff0d);background:var(--bg,#050505);gap:4px;padding:8px 28px 0;display:flex}[data-theme=light] .admin-subnav{background:#fff;border-bottom-color:#ececf0}.admin-subnav a{color:var(--text,#ffffffa6);border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px;font-size:13px;font-weight:500;text-decoration:none}.admin-subnav a.active{color:#3b82f6;border-bottom-color:#3b82f6}.admin-subnav a:hover:not(.active){color:var(--text-h,#fff)}.admin-main{max-width:1280px;margin:0 auto;padding:24px 28px 64px}.admin-page{flex-direction:column;gap:20px;display:flex}.admin-page-header{flex-direction:column;gap:6px;margin-bottom:4px;display:flex}.admin-page-title{letter-spacing:-.01em;color:var(--text,#ffffffeb);margin:0;font-size:22px;font-weight:700;line-height:1.2}.admin-page-sub{color:var(--text-muted,#fff9);max-width:760px;margin:0;font-size:13px;line-height:1.5}.admin-stats-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px;display:grid}@media (width<=900px){.admin-stats-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=540px){.admin-stats-row{grid-template-columns:1fr}}.stat-card{background:var(--card-bg,#1a1a1a);color:#fff;border:1px solid #0000;border-radius:12px;flex-direction:column;gap:8px;min-height:110px;padding:18px 20px;display:flex}.stat-card-label{opacity:.85;font-size:13px;font-weight:500}.stat-card-value{font-size:38px;font-weight:700;line-height:1}.stat-card-sub{opacity:.75;font-size:12px}.stat-card--green{background:linear-gradient(135deg,#22c55e40,#22c55e1a);border-color:#22c55e59}.stat-card--slate{background:linear-gradient(135deg,#6366f147,#6366f11a);border-color:#6366f159}.stat-card--purple{background:linear-gradient(135deg,#a855f747,#a855f71a);border-color:#a855f759}.stat-card--blue{background:linear-gradient(135deg,#3b82f647,#3b82f61a);border-color:#3b82f659}.admin-grid-2{grid-template-columns:360px 1fr;gap:16px;margin-bottom:24px;display:grid}@media (width<=900px){.admin-grid-2{grid-template-columns:1fr}}.admin-card{background:var(--bg-card,#151515);border:1px solid var(--border,#ffffff14);border-radius:12px;padding:20px}[data-theme=light] .admin-card{background:#fff;border-color:#e6e6ea}.admin-card-header{justify-content:space-between;align-items:baseline;margin-bottom:12px;display:flex}.admin-card-title{color:var(--text-h,#fff);text-align:center;width:100%;font-size:16px;font-weight:600}.admin-card-action{color:#3b82f6;cursor:pointer;background:0 0;border:none;font-size:13px;font-weight:500}.admin-card-action:disabled{opacity:.5;cursor:not-allowed}.baseline-check-btn{color:#34d399}.baseline-check-btn:disabled{opacity:.5;cursor:not-allowed}[data-theme=light] .baseline-check-btn{color:#059669}.baseline-check-result{margin-right:8px;font-size:12px;font-weight:500}.baseline-check-result.is-ok{color:#34d399}.baseline-check-result.is-warn{color:#fbbf24}.baseline-check-result.is-error{color:#f87171}[data-theme=light] .baseline-check-result.is-ok{color:#059669}[data-theme=light] .baseline-check-result.is-warn{color:#d97706}[data-theme=light] .baseline-check-result.is-error{color:#dc2626}.admin-card-sub{color:var(--text-muted,#ffffff80);text-align:center;margin-bottom:16px;font-size:13px}.dropzone{border:2px dashed var(--border,#ffffff26);text-align:center;cursor:pointer;color:var(--text-muted,#ffffff8c);background:#ffffff04;border-radius:10px;padding:36px 20px;font-size:14px;line-height:1.5;transition:border-color .15s,background .15s}.dropzone.is-active{color:var(--text-h,#fff);background:#3b82f60f;border-color:#3b82f6}.dropzone-filename{color:var(--text-h,#fff);word-break:break-all;font-weight:500}.upload-form{text-align:left;flex-direction:column;gap:12px;display:flex}.upload-form label{color:var(--text-muted,#fff9);letter-spacing:.3px;font-size:12px;font-weight:500}.upload-input{border:1px solid var(--border,#ffffff1a);width:100%;color:var(--text-h,#fff);font:inherit;background:#0003;border-radius:8px;padding:9px 12px;font-size:14px}[data-theme=light] .upload-input{color:#1d1c24;background:#f7f7f9}.upload-input:focus{border-color:#3b82f6;outline:none;box-shadow:0 0 0 2px #3b82f633}.upload-btn{color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:9px;width:100%;margin-top:4px;padding:11px 14px;font-size:14px;font-weight:600}.upload-btn:hover:not(:disabled){background:#2563eb}.upload-btn:disabled{opacity:.55;cursor:not-allowed}.upload-progress{background:#3b82f626;border-radius:999px;height:6px;margin-top:8px;overflow:hidden}.upload-progress>div{background:#3b82f6;height:100%;transition:width .15s}.upload-result{border-radius:8px;margin-top:10px;padding:10px 12px;font-size:13px;line-height:1.45}.upload-result.ok{color:#4ade80;background:#22c55e1a;border:1px solid #22c55e4d}.upload-result.partial{color:#fbbf24;background:#eab3081a;border:1px solid #eab3084d}.upload-result.failed{color:#f87171;background:#ef44441a;border:1px solid #ef44444d}.error-log{border-radius:8px;max-height:480px;font-size:13px;overflow-y:auto}.error-log-empty{text-align:center;color:var(--text-muted,#ffffff73);padding:60px 20px;font-size:13px}.error-row{border-bottom:1px solid var(--border-subtle,#ffffff0a);grid-template-columns:90px 90px 1fr 100px;align-items:center;gap:12px;padding:10px 12px;display:grid}.error-row:last-child{border-bottom:none}.error-row-batch{font-family:var(--mono,monospace);color:var(--text-h,#fff);font-weight:600}.error-row-slot{font-family:var(--mono,monospace);color:var(--text-muted,#fff9);font-size:12px}.error-row-msg{color:var(--text,#ffffffb3);font-size:13px}.error-row-sev{text-align:right;letter-spacing:.6px;font-size:11px;font-weight:700}.sev-MEDIUM{color:#fbbf24}.sev-LOW{color:#fb923c}.sev-UNRELIABLE{color:#f87171}.accuracy-card{flex-direction:column;align-items:center;display:flex}.donut-wrap{width:180px;height:180px;margin:8px 0;position:relative}.donut-label{color:var(--text-h,#fff);justify-content:center;align-items:center;font-size:28px;font-weight:700;display:flex;position:absolute;inset:0}.donut-legend{color:var(--text-muted,#ffffffa6);align-items:center;gap:8px;margin-top:4px;font-size:13px;display:flex}.donut-legend-dot{background:#3b82f6;border-radius:50%;width:10px;height:10px}.admin-gate{justify-content:center;align-items:center;min-height:100vh;padding:40px 20px;display:flex}.admin-gate-card{background:var(--bg-card,#151515);border:1px solid var(--border,#ffffff14);text-align:center;border-radius:16px;width:100%;max-width:520px;padding:32px}[data-theme=light] .admin-gate-card{background:#fff;border-color:#e6e6ea}.admin-gate-title{color:var(--text-h,#fff);margin:0 0 8px;font-size:22px;font-weight:700}.admin-gate-body{color:var(--text,#ffffffb3);margin-bottom:16px;font-size:14px;line-height:1.55}.admin-gate-uid{font-family:var(--mono,monospace);color:#60a5fa;word-break:break-all;background:#3b82f61a;border:1px solid #3b82f640;border-radius:10px;align-items:center;gap:8px;max-width:100%;margin:4px 0 20px;padding:10px 14px;font-size:13px;display:inline-flex}.admin-gate-copy{color:#60a5fa;cursor:pointer;letter-spacing:.3px;background:0 0;border:1px solid #3b82f666;border-radius:6px;padding:4px 8px;font-size:11px;font-weight:500}.admin-gate-copy:hover{background:#3b82f626}.admin-gate-actions{justify-content:center;gap:12px;margin-top:12px;display:flex}.admin-gate-link{color:var(--text-muted,#ffffff8c);font-size:13px;text-decoration:none}.admin-gate-link:hover{color:#3b82f6}.admin-loading{text-align:center;color:var(--text-muted,#ffffff80);padding:80px 20px;font-size:14px}.uploads-table{border-collapse:collapse;width:100%;font-size:13px}.uploads-table th,.uploads-table td{text-align:left;border-bottom:1px solid var(--border-subtle,#ffffff0d);padding:10px 12px}.uploads-table th{letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted,#ffffff80);font-size:11px;font-weight:600}.uploads-table tbody tr:hover{background:var(--bg-hover,#ffffff08)}.status-pill{letter-spacing:.4px;text-transform:uppercase;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.status-pill.ok{color:#4ade80;background:#22c55e26}.status-pill.partial{color:#fbbf24;background:#eab30826}.status-pill.failed{color:#f87171;background:#ef444426}.uploads-page{flex-direction:column;gap:16px;display:flex}.uploads-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.uploads-title{color:var(--text-h,#fff);margin:0;font-size:22px;font-weight:600}[data-theme=light] .uploads-title{color:#1d1c24}.uploads-sub{color:var(--text-muted,#ffffff8c);margin:4px 0 0;font-size:12.5px}.uploads-toolbar{align-items:center;gap:8px;display:flex}.uploads-refresh{appearance:none;border:1px solid var(--border,#ffffff1a);color:var(--text,#ddd);cursor:pointer;background:0 0;border-radius:8px;padding:7px 14px;font-size:12px;font-weight:600;transition:background .12s}.uploads-refresh:hover:not(:disabled){background:#ffffff0d}.uploads-refresh:disabled{opacity:.5;cursor:not-allowed}.uploads-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:12px;display:grid}.upload-card{border:1px solid var(--border,#ffffff14);background:var(--bg-card,#0d0d10);color:inherit;border-radius:12px;flex-direction:column;gap:10px;padding:14px 16px;text-decoration:none;transition:border-color .12s,transform .12s,background .12s;display:flex;position:relative;overflow:hidden}[data-theme=light] .upload-card{background:#fff}.upload-card:before{content:"";background:#ffffff14;width:3px;position:absolute;top:0;bottom:0;left:0}.upload-card-ok:before{background:#4ade80}.upload-card-partial:before{background:#fbbf24}.upload-card-failed:before{background:#f87171}.upload-card:hover{border-color:#3b82f666;transform:translateY(-1px)}.upload-card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.upload-card-title{color:var(--text-h,#fff);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13.5px;font-weight:600;overflow:hidden}[data-theme=light] .upload-card-title{color:#1d1c24}.upload-card-meta{color:var(--text-muted,#ffffff8c);flex-wrap:wrap;align-items:center;gap:6px;font-size:11.5px;display:flex}.upload-card-dot{opacity:.4}.upload-card-actor{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.upload-card-stats{border-top:1px solid var(--border,#ffffff0f);border-bottom:1px solid var(--border,#ffffff0f);grid-template-columns:repeat(3,1fr);gap:8px;padding:8px 0;display:grid}.upload-stat{flex-direction:column;align-items:flex-start;gap:1px;display:flex}.upload-stat-val{color:var(--text-h,#fff);font-variant-numeric:tabular-nums;font-size:17px;font-weight:600}[data-theme=light] .upload-stat-val{color:#1d1c24}.upload-stat-label{text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted,#ffffff80);font-size:10.5px}.upload-card-triage{flex-direction:column;gap:6px;display:flex}.upload-triage-row{flex-wrap:wrap;align-items:center;gap:10px;font-size:11.5px;display:flex}.upload-triage-label{color:var(--text,#ccc);align-items:center;gap:5px;display:inline-flex}.upload-triage-dot{border-radius:999px;width:7px;height:7px;display:inline-block}.upload-triage-dot-open{background:#f59e0b}.upload-triage-dot-resolved{background:#10b981}.upload-triage-dot-ignored{background:#6b7280}.upload-triage-pct{color:var(--text-muted,#ffffff80);margin-left:auto;font-size:11px}.upload-bar{background:#ffffff0d;border-radius:3px;height:6px;display:flex;overflow:hidden}[data-theme=light] .upload-bar{background:#0000000d}.upload-bar-empty{height:6px;color:var(--text-muted,#ffffff59);background:0 0;justify-content:center;align-items:center;font-size:10px;display:flex}.upload-bar-seg{height:100%;display:block}.upload-bar-open{background:#f59e0b}.upload-bar-resolved{background:#10b981}.upload-bar-ignored{background:#6b7280}.upload-card-types{flex-wrap:wrap;gap:5px;display:flex}.upload-type-chip{border:1px solid var(--border,#ffffff0f);color:var(--text-muted,#ffffffb3);background:#ffffff0a;border-radius:999px;align-items:center;gap:5px;max-width:100%;padding:2px 6px 2px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;display:inline-flex;overflow:hidden}[data-theme=light] .upload-type-chip{background:#00000008}.upload-type-name{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.upload-type-count{color:#93c5fd;background:#3b82f626;border-radius:999px;padding:0 5px;font-weight:600}.upload-card-failure{color:#fca5a5;text-overflow:ellipsis;white-space:nowrap;background:#ef444414;border:1px solid #ef44444d;border-radius:6px;padding:6px 8px;font-size:11.5px;overflow:hidden}.cr-tabs{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.cr-tab{border:1px solid var(--border-color,#ffffff1a);color:var(--text-muted,#ffffffa6);cursor:pointer;background:0 0;border-radius:999px;padding:6px 14px;font-size:12px;font-weight:600;transition:color .15s,border-color .15s,background .15s}.cr-tab:hover{color:var(--text-primary,#fff);border-color:#ffffff40}.cr-tab.active{color:var(--text-primary,#fff);background:#3b82f626;border-color:#3b82f6}[data-theme=light] .cr-tab{color:#0009;border-color:#0000001a}[data-theme=light] .cr-tab:hover{color:#000;border-color:#00000040}[data-theme=light] .cr-tab.active{color:#000;background:#3b82f626;border-color:#3b82f6}.cr-meta{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px 16px;margin:12px 0;font-size:13px;display:grid}.cr-meta code{background:#ffffff0d;border-radius:4px;padding:1px 6px;font-size:12px}[data-theme=light] .cr-meta code{background:#0000000d}.cr-key{color:var(--text-muted,#ffffff8c);text-transform:uppercase;letter-spacing:.5px;margin-right:6px;font-size:11px}.cr-entry{border:1px solid var(--border-color,#ffffff14);font-size:13px;font-family:var(--mono,monospace);word-break:break-word;background:#ffffff08;border-radius:8px;margin-top:8px;padding:10px 12px}[data-theme=light] .cr-entry{background:#00000008;border-color:#00000014}.cr-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.cr-actions .upload-input{min-width:200px}.seg-switch{border:1px solid var(--border,#ffffff1a);background:#0003;border-radius:8px;width:max-content;display:inline-flex;overflow:hidden}[data-theme=light] .seg-switch{background:#f7f7f9}.seg-switch-opt{appearance:none;color:var(--text-h,#fff);font:inherit;cursor:pointer;background:0 0;border:none;padding:8px 18px;font-size:14px;font-weight:500;transition:background .12s,color .12s}.seg-switch-opt+.seg-switch-opt{border-left:1px solid var(--border,#ffffff1a)}.seg-switch-opt:hover{background:#ffffff0a}[data-theme=light] .seg-switch-opt:hover{background:#0000000a}.seg-switch-opt.active{color:#fff;background:#3b82f6}.seg-switch-opt.active:hover{background:#2563eb}.baseline-key-preview{color:var(--text-muted,#ffffff8c);letter-spacing:.3px;align-items:center;gap:8px;margin:-4px 0 0;font-size:12px;display:flex}.baseline-key-preview code{font-family:var(--mono,monospace);color:var(--text-h,#fff);font-size:13px;font-weight:600}.baseline-semester-row{flex-direction:row;align-items:center;gap:16px;display:flex}.baseline-semester-row>label{margin:0}.baseline-filter-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.baseline-filter-select{flex:none;width:auto;min-width:130px}.baseline-filter-search{flex:180px;width:auto;min-width:160px;max-width:280px}.baseline-counts-row{flex-wrap:wrap;gap:12px;display:flex}.baseline-count-field{flex-direction:column;flex:120px;gap:6px;min-width:0;display:flex}.baseline-field{flex-direction:column;gap:6px;display:flex}.admin-app .combobox{width:100%}.admin-app .combobox-input.upload-input{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:36px}.admin-app .combobox.is-disabled .combobox-input.upload-input{cursor:not-allowed}.admin-app .combobox-list{color:var(--text-h,#fff);border:1px solid var(--border,#ffffff1a);background:#111;border-radius:8px;padding:4px;box-shadow:0 8px 24px #00000073}[data-theme=light] .admin-app .combobox-list{color:#1d1c24;background:#fff;border-color:#e6e6ea;box-shadow:0 8px 24px #0000001f}.admin-app .combobox-option{border-radius:6px;padding:8px 10px;font-size:14px}.admin-app .combobox-option.is-active{color:var(--text-h,#fff);background:#3b82f62e}[data-theme=light] .admin-app .combobox-option.is-active{color:#1d1c24;background:#3b82f61f}.admin-app .combobox-option-hint{font-family:var(--mono,monospace);opacity:.7;font-size:12px}.manager-card{box-sizing:border-box;flex-direction:column;height:100%;display:flex}.manager-list{flex-direction:column;flex:1 1 0;gap:8px;min-height:120px;margin:0 0 14px;padding:0 4px 0 0;list-style:none;display:flex;overflow-y:auto}.manager-empty{color:var(--text-muted,#ffffff8c);text-align:center;border:1px dashed var(--border,#ffffff1a);border-radius:8px;padding:10px 12px;font-size:13px}.manager-row{border:1px solid var(--border,#ffffff14);background:#ffffff05;border-radius:8px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}[data-theme=light] .manager-row{background:#00000005}.manager-sev{background:#3b82f6;border-radius:50%;flex:none;width:10px;height:10px;margin-top:6px}.manager-sev.sev-info{background:#3b82f6}.manager-sev.sev-warn{background:#f59e0b}.manager-sev.sev-critical{background:#ef4444}.manager-exam-date{text-align:center;color:#3b82f6;background:#3b82f61f;border-radius:8px;flex-direction:column;flex:none;align-items:center;width:42px;padding:4px 0;font-weight:600;display:flex}.manager-exam-d{font-size:16px;line-height:1}.manager-exam-m{letter-spacing:1px;opacity:.85;margin-top:2px;font-size:10px}.manager-row-body{flex:auto;min-width:0}.manager-row-title{color:var(--text-h,#fff);text-overflow:ellipsis;margin-bottom:2px;font-size:14px;font-weight:600;overflow:hidden}.manager-row-sub{color:var(--text,#ffffffb3);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12.5px;display:-webkit-box;overflow:hidden}.manager-row-meta{color:var(--text-muted,#ffffff73);letter-spacing:.2px;margin-top:4px;font-size:11px}.manager-row-meta a{color:#3b82f6;text-decoration:none}.manager-row-meta a:hover{text-decoration:underline}.manager-remove{border:1px solid var(--border,#ffffff1a);width:28px;height:28px;color:var(--text,#ffffffa6);cursor:pointer;background:0 0;border-radius:6px;flex:none;justify-content:center;align-items:center;font-size:18px;line-height:1;display:inline-flex}.manager-remove:hover:not(:disabled){color:#ef4444;background:#ef44441f;border-color:#ef4444}.manager-remove:disabled{opacity:.5;cursor:not-allowed}.manager-add{border-top:1px dashed var(--border,#ffffff1a);flex-direction:column;gap:8px;margin-top:auto;padding-top:10px;display:flex}.manager-term-end{border-bottom:1px dashed var(--border,#ffffff1a);flex-direction:column;gap:6px;margin-bottom:10px;padding:10px 0 12px;display:flex}.manager-term-end-label{opacity:.8;text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.manager-term-end-hint{text-transform:none;letter-spacing:0;opacity:.55;font-weight:400}.manager-term-end-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.manager-term-end-field{opacity:.8;flex-direction:column;gap:3px;font-size:.75rem;display:flex}.manager-term-end-field .upload-input{margin-bottom:0;padding:6px 8px;font-size:.8rem}.manager-term-end-row{align-items:center;gap:8px;display:flex}.manager-term-end-row .upload-input{flex:1;margin-bottom:0}.manager-add textarea.upload-input{resize:vertical;min-height:56px;font-family:inherit}.manager-add-row{flex-wrap:wrap;gap:8px;display:flex}.manager-add-row>.upload-input{flex:140px;min-width:0}.manager-sev-select{flex:0 0 130px}.manager-code{font-family:var(--mono,monospace);text-transform:uppercase;flex:0 0 120px}.manager-year-pill{letter-spacing:.4px;text-transform:uppercase;color:#3b82f6;vertical-align:1px;background:#3b82f626;border-radius:999px;margin-left:8px;padding:1px 8px;font-size:10.5px;font-weight:600;display:inline-block}.manager-year-pill--all{color:var(--text,#ffffffa6);background:#ffffff14}[data-theme=light] .manager-year-pill--all{color:#555;background:#0000000f}.manager-scope-label{color:var(--text-muted,#ffffff8c);letter-spacing:.3px;flex:none;align-self:center;margin:0;font-weight:500;font-size:12px!important}.dash-section-nav{z-index:15;background:var(--bg,#050505);border-bottom:1px solid var(--border,#ffffff0f);gap:4px;margin:-8px 0 16px;padding:10px 0;display:flex;position:sticky;top:0;overflow-x:auto}[data-theme=light] .dash-section-nav{background:#f7f7f9;border-bottom-color:#e6e6ea}.dash-section-nav-item{appearance:none;font:inherit;color:var(--text,#fff9);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:8px;padding:7px 14px;font-size:13px;font-weight:500;transition:background .12s,color .12s,border-color .12s}.dash-section-nav-item:hover{color:var(--text-h,#fff);background:#ffffff0a}[data-theme=light] .dash-section-nav-item:hover{color:#1d1c24;background:#0000000a}.dash-section-nav-item.is-active{color:#3b82f6;background:#3b82f626;border-color:#3b82f666}.dash-section{margin-bottom:20px;scroll-margin-top:70px}.upload-cooldown{color:#fbbf24;background:#f59e0b1a;border:1px solid #f59e0b59;border-radius:8px;flex-direction:column;gap:8px;margin-top:10px;padding:10px 12px;font-size:13px;display:flex}[data-theme=light] .upload-cooldown{color:#92400e;background:#f59e0b14}.upload-force{cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.fix-page{flex-direction:column;gap:16px;display:flex}.fix-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fix-header-left{min-width:0}.fix-header-right{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.fix-title{color:var(--text-h,#fff);margin:0;font-size:22px;font-weight:600}[data-theme=light] .fix-title{color:#1d1c24}.fix-sub{color:var(--text-muted,#fff9);margin:4px 0 0;font-size:13px}.fix-rollback-card{background:#6366f114;border:1px solid #6366f166;border-radius:10px;align-items:center;gap:14px;padding:12px 14px;display:flex}.fix-rollback-info{flex-direction:column;gap:2px;display:flex}.fix-rollback-title{color:var(--text-h,#fff);font-size:13px;font-weight:600}[data-theme=light] .fix-rollback-title{color:#1d1c24}.fix-rollback-meta{color:var(--text-muted,#ffffff8c);font-size:11.5px}.fix-rollback-btn{appearance:none;color:#c7d2fe;cursor:pointer;background:#6366f12e;border:1px solid #6366f199;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600}.fix-rollback-btn:hover{background:#6366f14d}.fix-rollback-btn:disabled{opacity:.5;cursor:not-allowed}.fix-header-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.fix-doctor-btn{appearance:none;color:#6ee7b7;cursor:pointer;white-space:nowrap;background:#38bd941f;border:1px solid #38bd9480;border-radius:8px;padding:7px 14px;font-size:13px;font-weight:600}.fix-doctor-btn:hover{background:#38bd9438}.fix-doctor-btn:disabled{opacity:.5;cursor:not-allowed}[data-theme=light] .fix-doctor-btn{color:#047857;background:#04785714;border-color:#04785766}[data-theme=light] .fix-doctor-btn:hover{background:#04785726}.fix-doctor-result{color:#6ee7b7;font-size:12px}.fix-doctor-result.is-error{color:#f87171}[data-theme=light] .fix-doctor-result{color:#047857}[data-theme=light] .fix-doctor-result.is-error{color:#dc2626}.fix-pills{flex-wrap:wrap;gap:6px;display:flex}.fix-pill{appearance:none;border:1px solid var(--border,#ffffff14);color:var(--text,#ffffffb3);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:500;display:inline-flex}.fix-pill:hover{background:#ffffff0a}[data-theme=light] .fix-pill:hover{background:#0000000a}.fix-pill.is-active{color:#3b82f6;background:#3b82f62e;border-color:#3b82f6}.fix-pill-count{text-align:center;background:#ffffff14;border-radius:999px;min-width:22px;padding:1px 8px;font-size:11px}[data-theme=light] .fix-pill-count{background:#0000000f}.fix-tabs{border-bottom:1px solid var(--border,#ffffff14);gap:4px;margin-bottom:4px;display:flex}.fix-tab{appearance:none;color:var(--text-muted,#ffffff8c);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;gap:6px;margin-bottom:-1px;padding:8px 14px;font-size:13px;font-weight:500;display:inline-flex}.fix-tab.is-active{color:#3b82f6;border-bottom-color:#3b82f6}.fix-tab-count{background:#ffffff14;border-radius:999px;padding:1px 7px;font-size:11px}[data-theme=light] .fix-tab-count{background:#0000000f}.fix-bulk-bar{background:#3b82f61a;border:1px solid #3b82f659;border-radius:8px;align-items:center;gap:8px;padding:10px 12px;font-size:13px;display:flex}.fix-bulk-count{color:#3b82f6;margin-right:6px;font-weight:600}.fix-bulk-btn{appearance:none;border:1px solid var(--border,#ffffff1a);background:var(--bg-card,#161616);color:var(--text,#ddd);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:500}.fix-bulk-btn:hover{background:#ffffff0d}[data-theme=light] .fix-bulk-btn{background:#fff}.fix-bulk-resolve{color:#10b981;border-color:#10b98166}.fix-bulk-ignore{color:#f59e0b;border-color:#f59e0b66}.fix-bulk-reopen{color:#3b82f6;border-color:#3b82f666}.fix-sev{border-radius:999px;width:8px;height:8px;display:inline-block}.fix-sev-info{background:#3b82f6}.fix-sev-warn{background:#f59e0b}.fix-sev-error{background:#ef4444}.fix-table{border:1px solid var(--border,#ffffff14);background:var(--bg-card,#0d0d10);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}[data-theme=light] .fix-table{background:#fff}.fix-row{border-bottom:1px solid var(--border,#ffffff0d);grid-template-columns:34px 22px minmax(200px,220px) 90px 130px minmax(240px,1fr) 260px;align-items:center;gap:10px;min-width:0;padding:10px 14px;font-size:13px;transition:background .1s;display:grid}.fix-row>*{min-width:0}.fix-row:not(.fix-row-head):not(.fix-row-group):hover{background:#ffffff06}[data-theme=light] .fix-row:not(.fix-row-head):not(.fix-row-group):hover{background:#00000005}.fix-row:last-child{border-bottom:none}.fix-row-head{z-index:2;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted,#ffffff80);border-bottom:1px solid var(--border,#ffffff14);background:#ffffff0a;padding:9px 14px;font-size:11px;font-weight:600;position:sticky;top:0}[data-theme=light] .fix-row-head{background:#00000008}.fix-checkbox{justify-content:center;align-items:center;display:flex}.fix-col-type,.fix-col-batch,.fix-col-where,.fix-col-msg{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fix-col-where{font-variant-numeric:tabular-nums;color:var(--text-muted,#ffffffa6);font-size:12px}.fix-dim{color:var(--text-muted,#fff6)}.fix-col-actions{flex-wrap:nowrap;justify-content:flex-end;gap:6px;display:flex}.fix-type-badge{border:1px solid var(--border,#ffffff14);max-width:100%;color:var(--text,#ddd);text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;background:#ffffff0a;border-radius:6px;padding:3px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;display:inline-block;overflow:hidden}[data-theme=light] .fix-type-badge{color:#333;background:#00000008}.fix-action{appearance:none;border:1px solid var(--border,#ffffff1a);color:var(--text,#ccc);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;padding:5px 10px;font-size:11.5px;font-weight:500;text-decoration:none;transition:background .1s,border-color .1s}.fix-action:hover{background:#ffffff0d}[data-theme=light] .fix-action:hover{background:#0000000d}.fix-action-open{color:#3b82f6;border-color:#3b82f666}.fix-action-resolve{color:#10b981;border-color:#10b98166}.fix-action-ignore{color:#f59e0b;border-color:#f59e0b66}.fix-action-reopen{color:#3b82f6;border-color:#3b82f666}.fix-action-catalog{color:#a78bfa;border-color:#a78bfa73}.fix-action-catalog:hover{background:#a78bfa14}.fix-action:disabled{opacity:.5;cursor:not-allowed}.fix-group{border-bottom:1px solid var(--border,#ffffff0f)}.fix-group:last-child{border-bottom:none}.fix-row-group{background:linear-gradient(90deg,#a78bfa14,#a78bfa05);border-left:2px solid #a78bfa8c;padding-left:12px}[data-theme=light] .fix-row-group{background:linear-gradient(90deg,#a78bfa1a,#a78bfa08)}.fix-row-group+.fix-row-child{border-top:1px dashed var(--border,#ffffff0f)}.fix-row-child{background:#ffffff04;padding-left:28px;font-size:12.5px}[data-theme=light] .fix-row-child{background:#00000004}.fix-row-child:last-child{border-bottom:none}.fix-group-toggle{appearance:none;color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;max-width:100%;padding:0;display:inline-flex;overflow:hidden}.fix-group-toggle>code{color:#c4b5fd;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;font-weight:600}[data-theme=light] .fix-group-toggle>code{color:#6d28d9}.fix-caret{color:var(--text-muted,#ffffff80);flex:none;font-size:10px;transition:transform .12s;display:inline-block}.fix-caret.is-open{transform:rotate(90deg)}.fix-group-count{color:#c4b5fd;background:#a78bfa2e;border-radius:999px;flex:none;padding:1px 7px;font-size:11px;font-weight:600;display:inline-block}[data-theme=light] .fix-group-count{color:#6d28d9;background:#a78bfa33}.fix-col-batch{flex-wrap:wrap;align-items:center;gap:3px 5px;display:flex}.fix-group-batch{opacity:.85;background:#ffffff0d;border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;display:inline-block}[data-theme=light] .fix-group-batch{background:#0000000d}.fix-group-more{color:var(--text-muted,#ffffff80);padding:1px 4px;font-size:10.5px}.fix-tabs-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.fix-sort{color:var(--text-muted,#fff9);align-items:center;gap:6px;font-size:12px;display:inline-flex}.fix-sort-label{text-transform:uppercase;letter-spacing:.4px;font-weight:600}.fix-sort-select{appearance:none;background:var(--bg-card,#0d0d10);border:1px solid var(--border,#ffffff1a);color:var(--text,#ddd);cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%239ca3af' stroke-width='1.5'><path d='M3 4.5l3 3 3-3'/></svg>");background-position:right 8px center;background-repeat:no-repeat;background-size:12px;border-radius:6px;padding:6px 28px 6px 10px;font-size:12px}[data-theme=light] .fix-sort-select{color:#1d1c24;background-color:#fff}.fix-sort-select:focus{border-color:#3b82f699;outline:none}.fix-toast{z-index:80;color:#fff;background:#14141cf5;border:1px solid #ffffff14;border-radius:10px;max-width:420px;padding:12px 36px 12px 16px;font-size:13.5px;animation:.18s ease-out fix-toast-in;position:fixed;bottom:24px;right:24px;box-shadow:0 8px 24px #00000059}.fix-toast-ok{border-color:#10b98180}.fix-toast-err{border-color:#ef444480}.fix-toast-x{color:inherit;cursor:pointer;opacity:.6;background:0 0;border:0;font-size:18px;line-height:1;position:absolute;top:4px;right:8px}.fix-toast-x:hover{opacity:1}@keyframes fix-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fix-modal-backdrop{z-index:100;background:#0000008c;justify-content:center;align-items:center;animation:.12s ease-out fix-toast-in;display:flex;position:fixed;inset:0}.fix-modal{background:var(--surface,#1a1a22);color:var(--text,#eee);border:1px solid var(--border,#ffffff1a);border-radius:12px;flex-direction:column;gap:14px;width:min(460px,92vw);padding:20px;display:flex;box-shadow:0 16px 48px #00000080}.fix-modal-head{justify-content:space-between;align-items:center;margin:0;display:flex}.fix-modal-head h2{margin:0;font-size:17px;font-weight:600}.fix-modal-x{color:inherit;cursor:pointer;opacity:.6;background:0 0;border:0;font-size:22px;line-height:1}.fix-modal-x:hover{opacity:1}.fix-modal-context{color:var(--text-muted,#ffffff80);text-overflow:ellipsis;white-space:nowrap;background:#ffffff08;border-left:3px solid #a78bfa80;border-radius:6px;margin:0;padding:8px 10px;font-size:12.5px;overflow:hidden}[data-theme=light] .fix-modal-context{background:#00000008}.fix-modal-field{flex-direction:column;gap:4px;font-size:12.5px;display:flex}.fix-modal-field>span{color:var(--text-muted,#fff9);text-transform:uppercase;letter-spacing:.4px;font-size:11px;font-weight:600}.fix-modal-field input{appearance:none;border:1px solid var(--border,#ffffff1f);color:var(--text,#eee);background:#ffffff0a;border-radius:7px;padding:9px 11px;font-family:inherit;font-size:14px}[data-theme=light] .fix-modal-field input{color:#111;background:#00000005}.fix-modal-field input:focus{background:#a78bfa0d;border-color:#a78bfa99;outline:none}.fix-modal-hint{color:var(--text-muted,#fff6);font-size:11px}.fix-modal-err{color:#fca5a5;background:#ef44441f;border:1px solid #ef444466;border-radius:6px;padding:8px 10px;font-size:12.5px}.fix-modal-foot{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.fix-modal-foot .fix-action{padding:7px 14px;font-size:13px}.fix-empty{text-align:center;color:var(--text-muted,#ffffff73);padding:24px;font-style:italic}.fix-error{color:#fca5a5;background:#ef44441f;border:1px solid #ef444466;border-radius:8px;padding:10px 12px;font-size:13px}.fix-edit-page{flex-direction:column;gap:16px;display:flex}.fix-loading{text-align:center;color:var(--text-muted);padding:40px}.fix-edit-header{flex-wrap:wrap;justify-content:space-between;gap:16px;display:flex}.fix-back{color:var(--text-muted);font-size:12px;text-decoration:none}.fix-back:hover{color:#3b82f6}.fix-edit-title{color:var(--text-h,#fff);margin:4px 0;font-size:20px}[data-theme=light] .fix-edit-title{color:#1d1c24}.fix-edit-error-callout{background:#ef444414;border:1px solid #ef44444d;border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;padding:10px 12px;font-size:13px;display:flex}.fix-edit-where{color:var(--text-muted);font-size:12px}.fix-edit-actions{align-items:flex-start;gap:8px;display:flex}.fix-edit-btn{appearance:none;border:1px solid var(--border,#ffffff1a);background:var(--bg-card,#161616);color:var(--text,#ddd);cursor:pointer;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:500}.fix-edit-btn:disabled{opacity:.5;cursor:not-allowed}.fix-edit-save,.fix-edit-resolve{color:#10b981;border-color:#10b98166}.fix-edit-ignore{color:#f59e0b;border-color:#f59e0b66}.fix-grid{background:var(--border,#ffffff0f);border-radius:10px;grid-template-columns:80px repeat(6,1fr);gap:1px;display:grid;overflow:hidden}.fix-grid-corner,.fix-grid-day,.fix-grid-period{background:var(--bg-card,#0d0d10);text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted,#ffffff80);text-align:center;padding:10px;font-size:12px;font-weight:600}[data-theme=light] .fix-grid-corner,[data-theme=light] .fix-grid-day,[data-theme=light] .fix-grid-period{background:#fff}.fix-grid-cell{background:var(--bg-card,#0d0d10);flex-direction:column;gap:4px;min-height:70px;padding:6px;display:flex;position:relative}[data-theme=light] .fix-grid-cell{background:#fff}.fix-grid-cell.is-empty .fix-grid-add{border:1px dashed var(--border,#ffffff26);width:24px;height:24px;color:var(--text-muted,#fff6);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;margin:auto;font-size:14px;display:flex;position:absolute;inset:0}.fix-grid-cell.is-empty:hover .fix-grid-add{color:#3b82f6;border-color:#3b82f6}.fix-grid-cell.is-error{outline-offset:-2px;outline:2px solid #ef4444;animation:1.4s ease-in-out 3 fix-pulse}@keyframes fix-pulse{0%,to{box-shadow:0 0 #ef444400}50%{box-shadow:inset 0 0 30px #ef44444d}}.fix-grid-cell.is-editing{outline-offset:-2px;outline:2px solid #3b82f6}.fix-grid-item{background:#3b82f61a;border-left:3px solid #3b82f6;border-radius:4px;padding:6px 8px;font-size:11.5px}.fix-grid-item-title{color:var(--text-h,#fff);font-weight:600}[data-theme=light] .fix-grid-item-title{color:#1d1c24}.fix-grid-item-meta{color:var(--text-muted);margin-top:2px;font-size:10.5px}.fix-grid-item-actions{opacity:0;gap:4px;margin-top:4px;transition:opacity .1s;display:flex}.fix-grid-cell:hover .fix-grid-item-actions{opacity:1}.fix-grid-item-actions button{appearance:none;border:1px solid var(--border,#ffffff1a);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:4px;padding:1px 6px;font-size:10.5px}.fix-grid-item-actions button:hover{color:#3b82f6;border-color:#3b82f6}.fix-modal-backdrop{z-index:50;background:#0009;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.fix-modal{background:var(--bg-card,#0d0d10);border:1px solid var(--border,#ffffff14);border-radius:12px;flex-direction:column;gap:12px;width:100%;max-width:420px;padding:24px;display:flex}[data-theme=light] .fix-modal{background:#fff}.fix-modal-title{color:var(--text-h,#fff);margin:0;font-size:16px;font-weight:600}[data-theme=light] .fix-modal-title{color:#1d1c24}.fix-modal label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.fix-modal input,.fix-modal select{appearance:none;border:1px solid var(--border,#ffffff1a);color:var(--text,#fff);background:#ffffff0a;border-radius:6px;padding:8px 10px;font-size:13px}[data-theme=light] .fix-modal input,[data-theme=light] .fix-modal select{color:#1d1c24;background:#fafafa}.fix-modal-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}@media (width<=900px){.fix-row{grid-template-columns:30px 20px 1fr auto;grid-template-areas:"chk sev type batch"". .msg msg"". .where actions";row-gap:6px;padding:10px 12px}.fix-col-sev{grid-area:sev}.fix-col-type{grid-area:type}.fix-col-batch{grid-area:batch;justify-content:flex-end}.fix-col-where{color:var(--text-muted);grid-area:where;font-size:11px}.fix-col-msg{white-space:normal;grid-area:msg}.fix-col-actions{flex-wrap:wrap;grid-area:actions;justify-content:flex-end}.fix-checkbox{grid-area:chk}.fix-row-child{padding-left:12px}.fix-grid{grid-template-columns:60px repeat(6,minmax(80px,1fr));overflow-x:auto}}.fix-filter-banner{background:color-mix(in oklab, var(--brand-accent) 10%, transparent);border:1px solid color-mix(in oklab, var(--brand-accent) 25%, transparent);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0;padding:8px 12px;font-size:13px;display:flex}.fix-filter-banner-label{color:var(--text-muted);font-weight:500}.fix-filter-chip{background:var(--surface-1);border:1px solid var(--border);border-radius:999px;align-items:center;gap:6px;padding:3px 8px;font-size:12px;display:inline-flex}.fix-filter-chip code{font-family:var(--font-mono,ui-monospace, SFMono-Regular, monospace);color:var(--brand-accent);background:0 0;padding:0;font-size:11px}.fix-filter-clear{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:6px;margin-left:auto;padding:3px 10px;font-size:12px;transition:background .15s}.fix-filter-clear:hover{background:var(--surface-2)}.ud-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.ud-panel-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ud-filter-group{border:1px solid var(--border);background:var(--surface-1);border-radius:8px;display:inline-flex;overflow:hidden}.ud-filter{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.ud-filter+.ud-filter{border-left:1px solid var(--border)}.ud-filter:hover{background:var(--surface-2);color:var(--text)}.ud-filter.is-active{background:var(--brand-accent);color:#fff}.ud-filter-count{background:color-mix(in oklab, currentColor 20%, transparent);text-align:center;border-radius:999px;min-width:20px;padding:1px 6px;font-size:11px;font-weight:600}.ud-filter.is-active .ud-filter-count{background:#ffffff40}.ud-groups{flex-direction:column;gap:8px;margin-top:12px;display:flex}.ud-group{border:1px solid var(--border);background:var(--surface-1);border-radius:10px;transition:border-color .15s,box-shadow .15s;overflow:hidden}.ud-group:hover{border-color:color-mix(in oklab, var(--brand-accent) 40%, var(--border))}.ud-group.is-open{border-color:color-mix(in oklab, var(--brand-accent) 50%, var(--border));box-shadow:0 2px 12px color-mix(in oklab, var(--brand-accent) 10%, transparent)}.ud-group-head{width:100%;color:var(--text);text-align:left;cursor:pointer;font:inherit;background:0 0;border:none;grid-template-columns:18px minmax(180px,1fr) minmax(120px,1.5fr) auto auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.ud-group-head:hover{background:var(--surface-2)}.ud-caret{color:var(--text-muted);font-size:11px;transition:transform .2s;display:inline-block}.ud-caret.is-open{transform:rotate(90deg)}.ud-group-code{font-family:var(--font-mono,ui-monospace, SFMono-Regular, monospace);color:var(--text);background:var(--surface-2);white-space:nowrap;text-overflow:ellipsis;border-radius:5px;padding:3px 8px;font-size:12px;overflow:hidden}.ud-group-bar{background:var(--surface-2);border-radius:999px;min-width:100px;height:6px;display:flex;overflow:hidden}.ud-bar-seg{height:100%;display:block}.ud-bar-open{background:#ef4444}.ud-bar-resolved{background:#22c55e}.ud-bar-ignored{background:#94a3b8}.ud-group-counts{color:var(--text-muted);white-space:nowrap;align-items:center;gap:10px;font-size:12px;font-weight:600;display:inline-flex}.ud-count{align-items:center;gap:5px;display:inline-flex}.ud-count-dot{border-radius:50%;width:7px;height:7px;display:inline-block}.ud-count-open{color:#ef4444}.ud-count-open .ud-count-dot{background:#ef4444}.ud-count-resolved{color:#22c55e}.ud-count-resolved .ud-count-dot{background:#22c55e}.ud-count-ignored{color:#94a3b8}.ud-count-ignored .ud-count-dot{background:#94a3b8}.ud-group-jump{background:var(--brand-accent);color:#fff;white-space:nowrap;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:600;text-decoration:none;transition:opacity .15s,transform .15s}.ud-group-jump:hover{opacity:.9;transform:translateY(-1px)}.ud-group-body{border-top:1px solid var(--border);background:color-mix(in oklab, var(--surface-2) 40%, transparent);padding:10px 14px 12px}.ud-samples-loading,.ud-samples-empty{color:var(--text-muted);text-align:center;padding:12px 6px;font-size:12px}.ud-samples{flex-direction:column;gap:4px;display:flex}.ud-sample{border-radius:5px;grid-template-columns:12px 80px 90px 1fr;align-items:center;gap:10px;padding:6px 8px;font-size:12px;transition:background .1s;display:grid}.ud-sample:hover{background:var(--surface-1)}.ud-sample-sev{background:var(--text-muted);border-radius:50%;width:8px;height:8px}.ud-sample-sev.sev-error{background:#ef4444}.ud-sample-sev.sev-warn,.ud-sample-sev.sev-warning{background:#f59e0b}.ud-sample-sev.sev-info{background:#3b82f6}.ud-sample-batch code{font-family:var(--font-mono,ui-monospace, SFMono-Regular, monospace);color:var(--text);background:0 0;padding:0;font-size:11px}.ud-sample-where{color:var(--text-muted);font-size:11px;font-family:var(--font-mono,ui-monospace, SFMono-Regular, monospace)}.ud-sample-msg{color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ud-dim{color:var(--text-muted)}.ud-samples-more{color:var(--brand-accent);align-self:flex-start;margin-top:6px;padding:4px 10px;font-size:12px;font-weight:500;text-decoration:none}.ud-samples-more:hover{text-decoration:underline}@media (width<=720px){.ud-group-head{grid-template-columns:18px 1fr auto;grid-template-areas:"caret code jump"".bar bar"".counts counts";row-gap:6px}.ud-caret{grid-area:caret}.ud-group-code{grid-area:code}.ud-group-bar{grid-area:bar}.ud-group-counts{grid-area:counts}.ud-group-jump{grid-area:jump}.ud-sample{grid-template-columns:12px 1fr;grid-template-areas:"sev batch""sev where""sev msg";row-gap:2px}.ud-sample-sev{grid-area:sev;align-self:start;margin-top:5px}.ud-sample-batch{grid-area:batch}.ud-sample-where{grid-area:where}.ud-sample-msg{white-space:normal;grid-area:msg}}.dash-err-count{color:#f87171;vertical-align:middle;background:#ef444426;border:1px solid #ef44444d;border-radius:999px;margin-left:8px;padding:1px 8px;font-size:11px;font-weight:700;display:inline-block}.dash-err-log{border-radius:8px;flex-direction:column;gap:4px;min-width:0;max-height:480px;font-size:13px;display:flex;overflow:hidden auto}.dash-err-type-row{color:inherit;background:#ffffff05;border:1px solid #0000;border-radius:8px;grid-template-columns:60px 1fr auto 16px;align-items:center;gap:12px;min-width:0;padding:10px 12px;text-decoration:none;transition:background .12s,border-color .12s,transform .1s;display:grid}.dash-err-type-row:hover{border-color:var(--border,#ffffff1a);background:#ffffff0d}[data-theme=light] .dash-err-type-row{background:#00000005}[data-theme=light] .dash-err-type-row:hover{background:#0000000d}.dash-err-type-row:active{transform:translateY(1px)}.dash-err-type-count{color:#f87171;text-align:center;font-variant-numeric:tabular-nums;background:#ef44441f;border:1px solid #ef44444d;border-radius:6px;width:100%;padding:4px 0;font-size:13px;font-weight:700;line-height:1.2}.dash-err-type{min-width:0;font-family:var(--font-mono,ui-monospace, SFMono-Regular, monospace);color:var(--text);letter-spacing:.3px;white-space:nowrap;text-overflow:ellipsis;background:#ffffff0f;border-radius:5px;place-self:center start;padding:4px 10px;font-size:12px;font-weight:600;line-height:1.4;overflow:hidden}[data-theme=light] .dash-err-type{background:#0000000f}.dash-err-type-meta{color:var(--text-muted);white-space:nowrap;align-items:baseline;gap:6px;font-size:11.5px;display:inline-flex}.dash-err-type-resolved{color:#4ade80;font-weight:600}.dash-err-type-ignored{color:var(--text-muted)}.dash-err-type-arrow{color:var(--text-muted);opacity:.6;text-align:center;font-size:14px;transition:transform .15s,opacity .15s}.dash-err-type-row:hover .dash-err-type-arrow{opacity:1;transform:translate(3px)}@media (width<=720px){.dash-err-type-row{grid-template-columns:60px 1fr 16px;grid-template-areas:"count type arrow"".meta meta";row-gap:6px}.dash-err-type-count{grid-area:count}.dash-err-type{grid-area:type}.dash-err-type-meta{grid-area:meta}.dash-err-type-arrow{grid-area:arrow}}.ingest-modal{background:var(--surface,#1a1a22);color:var(--text,#eee);border:1px solid var(--border,#ffffff1a);border-radius:14px;flex-direction:column;gap:18px;width:min(520px,94vw);padding:22px 22px 18px;animation:.16s cubic-bezier(.16,1,.3,1) ingest-modal-in;display:flex;box-shadow:0 24px 64px #0000008c}[data-theme=light] .ingest-modal{background:#fff}@keyframes ingest-modal-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.ingest-modal--ok{border-top:3px solid #10b981}.ingest-modal--partial{border-top:3px solid #f59e0b}.ingest-modal--failed{border-top:3px solid #ef4444}.ingest-modal-head{grid-template-columns:44px 1fr auto;align-items:center;gap:14px;display:grid}.ingest-modal-head h2{margin:0;font-size:17px;font-weight:600;line-height:1.2}.ingest-modal-sub{color:var(--text-muted,#ffffff8c);margin:3px 0 0;font-size:12.5px}.ingest-modal-icon{border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;font-weight:700;line-height:1;display:flex}.ingest-modal-icon--ok{color:#10b981;background:#10b98126}.ingest-modal-icon--partial{color:#f59e0b;background:#f59e0b26}.ingest-modal-icon--failed{color:#ef4444;background:#ef444426}.ingest-modal-stats{grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px;display:grid}.ingest-stat{border:1px solid var(--border,#ffffff0f);text-align:center;background:#ffffff08;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:12px 10px;display:flex}[data-theme=light] .ingest-stat{background:#00000006;border-color:#0000000f}.ingest-stat--warn{background:#ef444414;border-color:#ef444447}.ingest-stat-value{font-variant-numeric:tabular-nums;color:var(--text,#fff);font-size:22px;font-weight:700;line-height:1}.ingest-stat--warn .ingest-stat-value{color:#f87171}.ingest-stat-denom{color:var(--text-muted,#fff6);font-size:13px;font-weight:500}.ingest-stat-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted,#ffffff8c);font-size:10.5px;font-weight:600}.ingest-modal-types{border:1px solid var(--border,#ffffff0f);background:#ffffff05;border-radius:10px;padding:12px 14px}[data-theme=light] .ingest-modal-types{background:#00000005;border-color:#0000000f}.ingest-modal-types-title{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted,#ffffff8c);margin-bottom:8px;font-size:10.5px;font-weight:600}.ingest-modal-types ul{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.ingest-modal-types li{align-items:center;gap:10px;min-width:0;font-size:12.5px;display:flex}.ingest-modal-types li code{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text,#eee);font-family:var(--font-mono,ui-monospace, SFMono-Regular, monospace);background:#ffffff0d;border-radius:4px;flex:auto;padding:2px 6px;font-size:11px;font-weight:600;overflow:hidden}[data-theme=light] .ingest-modal-types li code{background:#0000000d}.ingest-type-count{color:#f87171;text-align:center;font-variant-numeric:tabular-nums;background:#ef444424;border-radius:999px;flex:none;min-width:34px;padding:2px 8px;font-size:11px;font-weight:700}.ingest-type-more{color:var(--text-muted,#ffffff73);padding-left:44px;font-size:11.5px;font-style:italic}.ingest-modal-foot{justify-content:flex-end;gap:8px;padding-top:4px;display:flex}.ingest-btn{cursor:pointer;border:1px solid #0000;border-radius:8px;padding:8px 16px;font-family:inherit;font-size:13px;font-weight:600;transition:background .12s,border-color .12s,transform 80ms}.ingest-btn:active{transform:translateY(1px)}.ingest-btn--ghost{color:var(--text-muted,#ffffffa6);border-color:var(--border,#ffffff1f);background:0 0}.ingest-btn--ghost:hover{color:var(--text,#fff);background:#ffffff0a}[data-theme=light] .ingest-btn--ghost:hover{background:#0000000a}.ingest-btn--primary{color:#fff;background:#3b82f6;border-color:#3b82f6}.ingest-btn--primary:hover{background:#2563eb;border-color:#2563eb}.ingest-btn--primary:focus-visible{outline-offset:2px;outline:2px solid #3b82f680}@media (width<=480px){.ingest-modal{gap:14px;padding:18px 16px 14px}.ingest-modal-head{grid-template-columns:40px 1fr auto;gap:12px}.ingest-modal-icon{width:40px;height:40px;font-size:20px}.ingest-modal-foot{flex-direction:column-reverse}.ingest-btn{width:100%}}.admin-card.manager-card{flex-direction:column;display:flex}.cal-upload-form{flex:auto;min-height:0}.cal-upload-form .cal-upload-submit{margin-top:auto}.cal-year-picker{border:1px solid var(--border,#ffffff1a);background:#ffffff05;border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}[data-theme=light] .cal-year-picker{background:#fafafd}.cal-year-picker-label{letter-spacing:.6px;text-transform:uppercase;color:var(--text-muted,#ffffff8c);font-size:11px;font-weight:600}.cal-year-picker-pills{flex-wrap:wrap;gap:6px;display:flex}.cal-year-pill{border:1px solid var(--border,#ffffff24);color:var(--text-h,#fff);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:500;transition:background .12s,border-color .12s,color .12s}[data-theme=light] .cal-year-pill{color:#1d1c24}.cal-year-pill:hover{border-color:#3b82f68c}.cal-year-pill.is-active{color:#fff;background:#3b82f6;border-color:#3b82f6}.cal-year-picker-hint{color:var(--text-muted,#ffffff80);font-size:11.5px}.bcd-backdrop{z-index:1000;-webkit-backdrop-filter:blur(6px);background:#000000a6;justify-content:center;align-items:center;padding:24px;animation:.15s bcdFade;display:flex;position:fixed;inset:0}@keyframes bcdFade{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.bcd-dialog{background:var(--admin-surface,#18181b);border:1px solid #ffffff1a;border-radius:14px;flex-direction:column;width:100%;max-width:760px;max-height:calc(100vh - 48px);display:flex;overflow:hidden;box-shadow:0 24px 64px #0009}.bcd-header{border-bottom:1px solid #ffffff12;flex-shrink:0;justify-content:space-between;align-items:center;padding:18px 22px 14px;display:flex}.bcd-header-left{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.bcd-title{color:var(--text-h,#fff);align-items:center;gap:8px;margin:0;font-size:16px;font-weight:600;display:flex}.bcd-key{font-family:var(--mono,monospace);font-size:15px}.bcd-group{color:var(--text-muted,#ffffff80);font-size:13px;font-weight:400}.bcd-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:20px;padding:3px 9px;font-size:11px;font-weight:600}.bcd-badge-ok{color:#34d399;background:#34d39926;border:1px solid #34d3994d}.bcd-badge-error{color:#f87171;background:#f8717126;border:1px solid #f871714d}.bcd-badge-warn{color:#fbbf24;background:#fbbf2426;border:1px solid #fbbf244d}.bcd-close{color:var(--text-muted,#ffffff80);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 6px;font-size:18px;line-height:1}.bcd-close:hover{color:#fff;background:#ffffff14}.bcd-body{flex-direction:column;flex:1;gap:18px;padding:18px 22px;display:flex;overflow-y:auto}.bcd-summary{flex-wrap:wrap;align-items:center;gap:8px;font-size:13.5px;display:flex}.bcd-sep{color:var(--text-muted,#ffffff4d)}.bcd-stat{color:var(--text-muted,#ffffffb3)}.bcd-stat strong{color:var(--text-h,#fff)}.bcd-stat-ok strong{color:#34d399}.bcd-stat-error strong{color:#f87171}.bcd-expected{flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.bcd-expected-label{color:var(--text-muted,#ffffff80);margin-right:2px}.bcd-expected-chip{color:var(--text-h,#fff);background:#ffffff0f;border:1px solid #ffffff17;border-radius:6px;padding:2px 9px;font-size:12px}.bcd-expected-total{color:#a5b4fc;background:#6366f11f;border-color:#6366f140}.bcd-section{flex-direction:column;gap:10px;display:flex}.bcd-section-title{color:var(--text-muted,#fff9);text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:13px;font-weight:600}.bcd-scroll{border:1px solid #ffffff12;border-radius:8px;overflow-x:auto}.bcd-table{border-collapse:collapse;width:100%;font-size:13px}.bcd-table th{text-align:left;color:var(--text-muted,#ffffff80);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;background:#ffffff0a;padding:8px 12px;font-size:11.5px;font-weight:600}.bcd-table td{color:var(--text-h,#fff);white-space:nowrap;border-top:1px solid #ffffff0d;padding:8px 12px}.bcd-table tbody tr:hover td{background:#ffffff05}.bcd-mono{font-family:var(--mono,monospace);font-size:12.5px}.bcd-delta{font-size:11.5px;font-weight:600}.bcd-delta.pos{color:#f87171}.bcd-delta.neg{color:#fbbf24}.bcd-course-group{flex-direction:column;gap:6px;display:flex}.bcd-course-group-label{color:var(--text-muted,#ffffff80);font-size:12px;font-weight:500}.bcd-empty{color:var(--text-muted,#ffffff80);text-align:center;padding:24px 0;font-size:13.5px}.bcd-all-ok{color:#34d399;text-align:center;padding:20px 0;font-size:14px;font-weight:500}.bcd-logged{color:#fffc;background:#f8717114;border:1px solid #f8717133;border-radius:8px;align-items:center;gap:8px;padding:10px 14px;font-size:13px;display:flex}.bcd-logged-cleared{background:#34d39912;border-color:#34d39933}.bcd-logged-icon{font-size:15px}.bcd-logged-link{color:#93c5fd;font-weight:500;text-decoration:none}.bcd-logged-link:hover{text-decoration:underline}.bcd-footer{border-top:1px solid #ffffff12;flex-shrink:0;justify-content:flex-end;padding:14px 22px;display:flex}.bcd-close-btn{appearance:none;color:var(--text-h,#fff);cursor:pointer;background:#ffffff0f;border:1px solid #ffffff26;border-radius:8px;padding:8px 20px;font-size:13px;font-weight:500}.bcd-close-btn:hover{background:#ffffff1a}[data-theme=light] .bcd-dialog{background:#f9fafb;border-color:#0000001a}[data-theme=light] .bcd-header{border-bottom-color:#00000014}[data-theme=light] .bcd-title{color:#111}[data-theme=light] .bcd-group,[data-theme=light] .bcd-close{color:#6b7280}[data-theme=light] .bcd-close:hover{color:#111;background:#0000000f}[data-theme=light] .bcd-stat{color:#374151}[data-theme=light] .bcd-stat strong{color:#111}[data-theme=light] .bcd-expected-chip{color:#111;background:#0000000d;border-color:#0000001a}[data-theme=light] .bcd-table th{color:#6b7280;background:#0000000a}[data-theme=light] .bcd-table td{color:#111;border-top-color:#0000000f}[data-theme=light] .bcd-footer{border-top-color:#00000014}[data-theme=light] .bcd-close-btn{color:#111;background:#0000000a;border-color:#0003}.scheme-dialog-backdrop{z-index:1000;-webkit-backdrop-filter:blur(6px);background:#000000a6;justify-content:center;align-items:center;padding:24px;animation:.18s schemeFade;display:flex;position:fixed;inset:0}@keyframes schemeFade{0%{opacity:0}to{opacity:1}}.scheme-dialog{background:var(--surface,#111);width:100%;max-width:1080px;max-height:calc(100vh - 48px);color:var(--text-h,#fff);border:1px solid var(--border,#ffffff1a);border-radius:14px;flex-direction:column;animation:.2s cubic-bezier(.16,1,.3,1) schemePop;display:flex;overflow:hidden;box-shadow:0 24px 60px #0000008c}[data-theme=light] .scheme-dialog{color:#1d1c24;background:#fff;border-color:#00000014;box-shadow:0 24px 60px #0000002e}@keyframes schemePop{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.scheme-dialog-header{border-bottom:1px solid var(--border,#ffffff14);justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 20px;display:flex}.scheme-dialog-title{letter-spacing:-.01em;margin:0 0 4px;font-size:18px;font-weight:700}.scheme-dialog-sub{color:var(--text-muted,#fff9);margin:0;font-size:12.5px;line-height:1.5}.scheme-dialog-sub code{font-family:var(--mono,monospace);background:#ffffff0f;border-radius:4px;padding:1px 6px;font-size:11.5px}[data-theme=light] .scheme-dialog-sub code{background:#0000000d}.scheme-dialog-close{width:32px;height:32px;color:var(--text-muted,#fff9);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex-shrink:0;font-size:20px;line-height:1;transition:background .15s,color .15s,border-color .15s}.scheme-dialog-close:hover:not(:disabled){color:var(--text-h,#fff);border-color:var(--border,#ffffff1a);background:#ffffff0f}[data-theme=light] .scheme-dialog-close:hover:not(:disabled){color:#1d1c24;background:#0000000d;border-color:#0000001a}.scheme-dialog-body{flex:auto;min-height:0;display:flex;overflow:hidden}.scheme-tabs{border-right:1px solid var(--border,#ffffff14);flex-direction:column;flex:0 0 200px;gap:4px;padding:12px 8px;display:flex;overflow-y:auto}.scheme-tab{color:var(--text,#ffffffd9);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;transition:background .15s,border-color .15s;display:flex}.scheme-tab:hover{background:#ffffff0d}[data-theme=light] .scheme-tab:hover{background:#00000008}.scheme-tab.is-active{color:var(--text-h,#fff);background:#3b82f626;border-color:#3b82f666}[data-theme=light] .scheme-tab.is-active{color:#1d1c24;background:#3b82f61a}.scheme-tab-sem{flex-shrink:0;font-weight:600}.scheme-tab-key{font-family:var(--mono,monospace);color:var(--text-muted,#ffffff8c);flex:auto;font-size:11.5px}.scheme-tab.is-active .scheme-tab-key{color:var(--text-h,#fff)}[data-theme=light] .scheme-tab.is-active .scheme-tab-key{color:#1d1c24}.scheme-tab-count{min-width:22px;color:var(--text-muted,#fff9);font-variant-numeric:tabular-nums;text-align:center;background:#ffffff14;border-radius:999px;flex-shrink:0;padding:1px 6px;font-size:11px}[data-theme=light] .scheme-tab-count{color:#555;background:#0000000f}.scheme-tab-count.is-new{color:#4ade80;background:#4ade8026}.scheme-detail{flex:auto;min-width:0;padding:16px 20px;overflow-y:auto}.scheme-meta{border:1px solid var(--border,#ffffff14);background:#ffffff08;border-radius:10px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 20px;margin-bottom:16px;padding:12px 14px;display:grid}[data-theme=light] .scheme-meta{background:#00000005}.scheme-meta-row{flex-direction:column;gap:3px;display:flex}.scheme-meta-label{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted,#ffffff8c);font-size:10.5px;font-weight:600}.scheme-meta-value{color:var(--text-h,#fff);font-size:13px}.scheme-meta-value code{font-family:var(--mono,monospace);background:#ffffff0f;border-radius:4px;padding:1px 6px;font-size:12px}.scheme-meta-hint{color:var(--text-muted,#ffffff8c);cursor:help;font-size:11.5px}.scheme-meta-hint code{background:#ffffff0a;font-size:11px}[data-theme=light] .scheme-meta-value{color:#1d1c24}[data-theme=light] .scheme-meta-value code{background:#0000000d}.scheme-badge{letter-spacing:.03em;text-transform:uppercase;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.scheme-badge--new{color:#4ade80;background:#4ade8026}.scheme-table-wrap{border:1px solid var(--border,#ffffff14);border-radius:10px;overflow:hidden}.scheme-courses{border-collapse:collapse;width:100%;font-size:13px}.scheme-courses thead{background:#ffffff08}[data-theme=light] .scheme-courses thead{background:#00000008}.scheme-courses th{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted,#ffffff8c);text-align:left;border-bottom:1px solid var(--border,#ffffff14);padding:8px 10px;font-size:11px;font-weight:600}.scheme-courses tbody tr{border-bottom:1px solid #ffffff0a}[data-theme=light] .scheme-courses tbody tr{border-bottom-color:#0000000a}.scheme-courses tbody tr:last-child{border-bottom:none}.scheme-courses td{vertical-align:middle;padding:4px 6px}.scheme-input{width:100%;color:var(--text-h,#fff);font:inherit;background:0 0;border:1px solid #0000;border-radius:6px;padding:6px 8px;font-size:13px;transition:background .12s,border-color .12s}[data-theme=light] .scheme-input{color:#1d1c24}.scheme-input:hover{background:#ffffff0a}[data-theme=light] .scheme-input:hover{background:#00000008}.scheme-input:focus{background:#ffffff0f;border-color:#3b82f680;outline:none}[data-theme=light] .scheme-input:focus{background:#fff;border-color:#3b82f699}.scheme-input.is-mono{font-family:var(--mono,monospace);text-transform:uppercase}.scheme-input.is-center{text-align:center}.scheme-row-remove{width:28px;height:28px;color:var(--text-muted,#ffffff80);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;font-size:16px;line-height:1;transition:background .15s,color .15s,border-color .15s}.scheme-row-remove:hover{color:#ef4444;background:#ef444426;border-color:#ef444466}.scheme-row-add{border:1px dashed var(--border,#ffffff1a);width:100%;color:var(--text-muted,#fff9);cursor:pointer;background:0 0;border-radius:6px;padding:10px;font-size:13px;transition:background .15s,color .15s,border-color .15s}.scheme-row-add:hover{color:#3b82f6;background:#3b82f614;border-color:#3b82f666}.scheme-dialog-error{color:#f87171;background:#ef44441f;border:1px solid #ef444459;border-radius:8px;margin:0 20px;padding:10px 12px;font-size:13px}.scheme-dialog-footer{border-top:1px solid var(--border,#ffffff14);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 20px;display:flex}.scheme-merge-label{color:var(--text,#ffffffd9);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:inline-flex}.scheme-dialog-actions{align-items:center;gap:10px;margin-left:auto;display:inline-flex}.scheme-btn{cursor:pointer;border:1px solid #0000;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600;transition:background .15s,border-color .15s,opacity .15s}.scheme-btn:disabled{opacity:.55;cursor:not-allowed}.scheme-btn--ghost{color:var(--text,#ffffffd9);border-color:var(--border,#ffffff26);background:0 0}.scheme-btn--ghost:hover:not(:disabled){background:#ffffff0d}[data-theme=light] .scheme-btn--ghost{color:#1d1c24;border-color:#00000026}[data-theme=light] .scheme-btn--ghost:hover:not(:disabled){background:#0000000a}.scheme-btn--primary{color:#fff;background:#3b82f6}.scheme-btn--primary:hover:not(:disabled){background:#2563eb}@media (width<=720px){.scheme-dialog-backdrop{padding:0}.scheme-dialog{border:none;border-radius:0;max-width:none;height:100vh;max-height:100vh}.scheme-dialog-body{flex-direction:column}.scheme-tabs{border-right:none;border-bottom:1px solid var(--border,#ffffff14);flex-direction:row;flex:none;overflow:auto hidden}.scheme-tab{flex-shrink:0}.scheme-detail{padding:14px}.scheme-meta{grid-template-columns:1fr}}.bed-dialog{max-width:920px}.bed-counts-pane{border-right:1px solid var(--border,#ffffff14);flex-direction:column;flex:0 0 200px;gap:0;padding:14px 12px;display:flex;overflow-y:auto}.bed-counts-heading{justify-content:space-between;align-items:baseline;margin-bottom:14px;display:flex}.bed-counts-title{letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted,#ffffff80);font-size:11px;font-weight:700}.bed-counts-total{color:var(--text-h,#fff);font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}[data-theme=light] .bed-counts-total{color:#111}.bed-count-row{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.bed-count-label{color:var(--text-muted,#fff9);padding-left:2px;font-size:11.5px;font-weight:500}[data-theme=light] .bed-count-label{color:#555}.bed-count-input-wrap{align-items:center;gap:4px;display:flex}.bed-count-input{font-variant-numeric:tabular-nums;flex:1;padding:6px 8px}.bed-count-input::-webkit-outer-spin-button{-webkit-appearance:none}.bed-count-input::-webkit-inner-spin-button{-webkit-appearance:none}.bed-count-input[type=number]{-moz-appearance:textfield}.bed-type-remove{flex-shrink:0;width:24px;height:24px;font-size:14px}.bed-add-type{border-top:1px solid var(--border,#ffffff12);gap:6px;margin-top:4px;padding-top:10px;display:flex}.bed-add-type-input{flex:1;padding:5px 7px;font-size:12px}.bed-add-type-btn{color:#93c5fd;cursor:pointer;white-space:nowrap;background:#3b82f61a;border:1px solid #3b82f666;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:600}.bed-add-type-btn:hover:not(:disabled){background:#3b82f633}.bed-add-type-btn:disabled{opacity:.4;cursor:not-allowed}[data-theme=light] .bed-add-type-btn{color:#1d4ed8;background:#1d4ed812;border-color:#1d4ed84d}@media (width<=720px){.bed-counts-pane{border-right:none;border-bottom:1px solid var(--border,#ffffff14);flex-flow:wrap;flex:none;gap:10px;padding:12px}.bed-counts-heading{width:100%;margin-bottom:4px}.bed-count-row{min-width:90px;margin-bottom:0}.bed-add-type{width:100%}}.cal-dialog-backdrop{z-index:1000;-webkit-backdrop-filter:blur(6px);background:#000000a6;justify-content:center;align-items:center;padding:24px;animation:.18s calFade;display:flex;position:fixed;inset:0}@keyframes calFade{0%{opacity:0}to{opacity:1}}.cal-dialog{background:var(--surface,#111);width:100%;max-width:960px;max-height:calc(100vh - 48px);color:var(--text-h,#fff);border:1px solid var(--border,#ffffff1a);border-radius:14px;flex-direction:column;animation:.2s cubic-bezier(.16,1,.3,1) calPop;display:flex;overflow:hidden;box-shadow:0 24px 60px #0000008c}[data-theme=light] .cal-dialog{color:#1d1c24;background:#fff;border-color:#00000014;box-shadow:0 24px 60px #0000002e}@keyframes calPop{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.cal-dialog-header{border-bottom:1px solid var(--border,#ffffff14);justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 20px;display:flex}.cal-dialog-title{letter-spacing:-.01em;margin:0 0 4px;font-size:18px;font-weight:700}.cal-dialog-sub{color:var(--text-muted,#fff9);margin:0;font-size:12.5px;line-height:1.5}.cal-dialog-sub code{font-family:var(--mono,monospace);background:#ffffff0f;border-radius:4px;padding:1px 6px;font-size:11.5px}[data-theme=light] .cal-dialog-sub code{background:#0000000d}.cal-dialog-close{width:32px;height:32px;color:var(--text-muted,#fff9);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex-shrink:0;font-size:20px;line-height:1;transition:background .15s,color .15s,border-color .15s}.cal-dialog-close:hover:not(:disabled){color:var(--text-h,#fff);border-color:var(--border,#ffffff1a);background:#ffffff0f}[data-theme=light] .cal-dialog-close:hover:not(:disabled){color:#1d1c24;background:#0000000d;border-color:#0000001a}.cal-dialog-body{flex-direction:column;flex:auto;gap:14px;min-height:0;padding:16px 20px;display:flex;overflow-y:auto}.cal-scope{border:1px solid var(--border,#ffffff14);background:#ffffff08;border-radius:10px;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;padding:12px 14px;display:flex}[data-theme=light] .cal-scope{background:#00000005}.cal-scope-field{flex-direction:column;gap:4px;min-width:180px;display:flex}.cal-scope-field--wide{flex:240px}.cal-scope-inline{color:var(--text-muted,#ffffffa6);cursor:pointer;flex-direction:row;align-items:center;gap:8px;font-size:12.5px}.cal-scope-inline code{font-family:var(--mono,monospace);background:#ffffff0d;border-radius:4px;padding:1px 6px;font-size:11.5px}[data-theme=light] .cal-scope-inline code{background:#0000000d}.cal-scope-label{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted,#ffffff8c);font-size:10.5px;font-weight:600}.cal-scope input[type=text],.cal-scope select{border:1px solid var(--border,#ffffff1a);color:var(--text-h,#fff);font:inherit;background:#0003;border-radius:8px;padding:8px 10px;font-size:13px}[data-theme=light] .cal-scope input[type=text],[data-theme=light] .cal-scope select{color:#1d1c24;background:#f7f7f9}.cal-term-end{border:1px solid var(--border,#ffffff14);background:#ffffff08;border-radius:10px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}[data-theme=light] .cal-term-end{background:#00000005}.cal-term-end-label{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted,#ffffff8c);font-size:10.5px;font-weight:600}.cal-term-end-hint{text-transform:none;letter-spacing:0;opacity:.6;font-weight:400}.cal-term-end-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.cal-term-end-field{letter-spacing:.03em;text-transform:uppercase;color:var(--text-muted,#ffffff8c);flex-direction:column;gap:3px;font-size:11px;font-weight:600;display:flex}.cal-term-end-field .cal-input[type=date]{width:100%;font-size:12px}.cal-warnings{color:#fbbf24;background:#f59e0b1a;border:1px solid #f59e0b59;border-radius:10px;padding:12px 14px}[data-theme=light] .cal-warnings{color:#b45309;background:#f59e0b14}.cal-warnings-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.cal-warnings-icon{width:20px;height:20px;color:inherit;background:#f59e0b40;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.cal-warnings-title{font-size:13px;font-weight:600}.cal-warnings-list{flex-direction:column;gap:6px;max-height:180px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.cal-warnings-row{color:var(--text,#ffffffd9);flex-wrap:wrap;align-items:center;gap:8px;font-size:12.5px;display:flex}[data-theme=light] .cal-warnings-row{color:#1d1c24}.cal-warning-date{font-family:var(--mono,monospace);background:#ffffff14;border-radius:4px;flex-shrink:0;padding:2px 6px;font-size:11.5px}[data-theme=light] .cal-warning-date{background:#0000000f}.cal-warning-hint{flex:240px;min-width:0}.cal-warning-add{color:inherit;cursor:pointer;background:0 0;border:1px solid #f59e0b66;border-radius:6px;padding:4px 8px;font-size:11.5px;transition:background .15s}.cal-warning-add:hover{background:#f59e0b26}.cal-table-wrap{border:1px solid var(--border,#ffffff14);border-radius:10px;max-height:360px;overflow:auto}.cal-table{border-collapse:collapse;width:100%;font-size:13px}.cal-table thead{background:var(--bg-card,#151515);z-index:2;position:sticky;top:0}[data-theme=light] .cal-table thead{background:#00000008}.cal-table th{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted,#ffffff8c);text-align:left;border-bottom:1px solid var(--border,#ffffff14);padding:8px 10px;font-size:11px;font-weight:600}.cal-table tbody tr{border-bottom:1px solid #ffffff0a}[data-theme=light] .cal-table tbody tr{border-bottom-color:#0000000a}.cal-table tbody tr:last-child{border-bottom:none}.cal-table td{vertical-align:middle;padding:4px 6px}.cal-input{width:100%;color:var(--text-h,#fff);font:inherit;background:0 0;border:1px solid #0000;border-radius:6px;padding:6px 8px;font-size:13px;transition:background .12s,border-color .12s}[data-theme=light] .cal-input{color:#1d1c24}.cal-input:hover{background:#ffffff0a}[data-theme=light] .cal-input:hover{background:#00000008}.cal-input:focus{background:#ffffff0f;border-color:#3b82f680;outline:none}[data-theme=light] .cal-input:focus{background:#fff;border-color:#3b82f699}.cal-muted{color:var(--text-muted,#fff6);font-family:var(--mono,monospace);padding-left:8px;font-size:12px}.cal-empty{text-align:center;color:var(--text-muted,#ffffff80);padding:18px;font-size:13px}.cal-row-remove{width:28px;height:28px;color:var(--text-muted,#ffffff80);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;font-size:16px;line-height:1;transition:background .15s,color .15s,border-color .15s}.cal-row-remove:hover{color:#ef4444;background:#ef444426;border-color:#ef444466}.cal-row-add{border:1px dashed var(--border,#ffffff1a);width:100%;color:var(--text-muted,#fff9);cursor:pointer;background:0 0;border-radius:6px;padding:10px;font-size:13px;transition:background .15s,color .15s,border-color .15s}.cal-row-add:hover{color:#3b82f6;background:#3b82f614;border-color:#3b82f666}.cal-dialog-error{color:#f87171;background:#ef44441f;border:1px solid #ef444459;border-radius:8px;margin:0 20px;padding:10px 12px;font-size:13px}.cal-dialog-footer{border-top:1px solid var(--border,#ffffff14);justify-content:flex-end;align-items:center;gap:16px;padding:14px 20px;display:flex}.cal-dialog-actions{align-items:center;gap:10px;display:inline-flex}.cal-btn{cursor:pointer;border:1px solid #0000;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600;transition:background .15s,border-color .15s,opacity .15s}.cal-btn:disabled{opacity:.55;cursor:not-allowed}.cal-btn--ghost{color:var(--text,#ffffffd9);border-color:var(--border,#ffffff26);background:0 0}.cal-btn--ghost:hover:not(:disabled){background:#ffffff0d}[data-theme=light] .cal-btn--ghost{color:#1d1c24;border-color:#00000026}[data-theme=light] .cal-btn--ghost:hover:not(:disabled){background:#0000000a}.cal-btn--primary{color:#fff;background:#3b82f6}.cal-btn--primary:hover:not(:disabled){background:#2563eb}@media (width<=720px){.cal-dialog-backdrop{padding:0}.cal-dialog{border:none;border-radius:0;max-width:none;height:100vh;max-height:100vh}.cal-dialog-body{padding:14px}}
