@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2) format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2) format("woff2"),url(/assets/space-grotesk-latin-600-normal-BflQw4A9.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2) format("woff2"),url(/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff) format("woff")}:root{--nav-bg: linear-gradient(135deg, #130b37 0%, #2b1685 44%, #155ee7 100%);--bg: #eef1ff;--bg-deep: #090a22;--card-bg: rgba(255, 255, 255, .88);--surface-strong: rgba(255, 255, 255, .97);--surface-glass: rgba(255, 255, 255, .78);--note-bg: linear-gradient(145deg, #fff8c7, #f8e993);--note-text: #45370e;--text: #16152c;--text-strong: #08071b;--muted: #4e547a;--border: rgba(96, 105, 190, .3);--input-border: rgba(94, 100, 178, .34);--hover: rgba(106, 96, 255, .12);--chip-bg: rgba(231, 235, 255, .88);--accent: #745cff;--accent-2: #1f8cff;--accent-3: #79e4ff;--accent-strong: #3f2ed1;--accent-soft: rgba(116, 92, 255, .14);--off-bg: rgba(232, 236, 255, .82);--off-text: #62658d;--radius: 16px;--radius-sm: 10px;--shadow-sm: 0 1px 2px rgba(20, 24, 72, .08), 0 0 0 1px rgba(255, 255, 255, .5) inset;--shadow-md: 0 14px 35px rgba(31, 42, 126, .16), 0 2px 8px rgba(31, 42, 126, .08);--shadow-lg: 0 28px 80px rgba(8, 8, 38, .42), 0 0 0 1px rgba(255,255,255,.18) inset;--shadow-glow: 0 14px 36px rgba(88, 83, 255, .34), 0 0 22px rgba(44, 166, 255, .18);--font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;--font-body: "Inter", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--ease-spring: cubic-bezier(.2, 1.1, .22, 1);--ease-snap: cubic-bezier(.2, .8, .2, 1);font-family:var(--font-body);font-size:16.5px;color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.app.theme-dark{--nav-bg: linear-gradient(135deg, #07081c 0%, #201052 42%, #073e9d 100%);--bg: #080919;--card-bg: rgba(18, 20, 46, .78);--surface-strong: rgba(24, 27, 60, .94);--surface-glass: rgba(22, 24, 56, .62);--note-bg: linear-gradient(145deg, #173a5c, #101f45);--note-text: #d9f3ff;--text: #e8e9ff;--text-strong: #faf9ff;--muted: #bcc1ee;--border: rgba(158, 166, 255, .24);--input-border: rgba(158, 163, 255, .26);--hover: rgba(128, 113, 255, .18);--chip-bg: rgba(55, 57, 111, .76);--accent: #9a89ff;--accent-2: #42a5ff;--accent-3: #80ecff;--accent-strong: #c4bcff;--accent-soft: rgba(154, 137, 255, .18);--off-bg: rgba(34, 37, 78, .72);--off-text: #a6a9cd;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .42), 0 0 0 1px rgba(255,255,255,.04) inset;--shadow-md: 0 14px 42px rgba(0, 0, 0, .42), 0 0 0 1px rgba(255,255,255,.06) inset;--shadow-lg: 0 20px 50px rgba(0, 0, 0, .55);--shadow-glow: 0 16px 38px rgba(92, 116, 255, .34), 0 0 28px rgba(58, 179, 255, .18);color-scheme:dark}*{box-sizing:border-box}html{background:var(--bg-deep)}body{margin:0;background:var(--bg)}.app{background:transparent;color:var(--text);position:relative;isolation:isolate}.app{display:flex;flex-direction:column;height:100vh}.cosmos-layer{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 12% 18%,rgba(130,103,255,.3),transparent 27%),radial-gradient(circle at 84% 8%,rgba(43,139,255,.3),transparent 25%),radial-gradient(circle at 72% 86%,rgba(77,225,255,.18),transparent 27%),linear-gradient(140deg,#f7f8ff,#edf1ff 42%,#e7ecff)}.cosmos-layer:before{content:"";position:absolute;inset:0;opacity:.46;background-image:radial-gradient(1px 1px at 8% 14%,rgba(255,255,255,.95),transparent),radial-gradient(1px 1px at 22% 74%,rgba(91,109,255,.65),transparent),radial-gradient(1.2px 1.2px at 38% 34%,rgba(255,255,255,.9),transparent),radial-gradient(1px 1px at 51% 82%,rgba(61,151,255,.62),transparent),radial-gradient(1.4px 1.4px at 66% 18%,rgba(255,255,255,.9),transparent),radial-gradient(1px 1px at 80% 62%,rgba(116,92,255,.58),transparent),radial-gradient(1.2px 1.2px at 92% 28%,rgba(255,255,255,.9),transparent);background-size:260px 260px;animation:star-drift 34s linear infinite,star-pulse 5.5s ease-in-out infinite alternate}.cosmos-layer:after{content:"";position:absolute;inset:-20%;background:radial-gradient(1px 1px at 12% 42%,rgba(255,255,255,.9),transparent),radial-gradient(1.5px 1.5px at 28% 18%,rgba(120,231,255,.75),transparent),radial-gradient(1px 1px at 44% 74%,rgba(255,255,255,.8),transparent),radial-gradient(1.4px 1.4px at 67% 32%,rgba(162,140,255,.72),transparent),radial-gradient(1px 1px at 83% 62%,rgba(255,255,255,.85),transparent);background-size:360px 360px;opacity:.58;animation:star-drift-slow 58s linear infinite}.app:before{content:"";position:fixed;top:9%;left:-18%;width:18rem;height:2px;z-index:-1;pointer-events:none;opacity:.56;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95),rgba(121,228,255,.78),transparent);filter:drop-shadow(0 0 10px rgba(121,228,255,.72));transform:rotate(-18deg);animation:comet-pass 18s var(--ease-snap) infinite}.app:after{content:"";position:fixed;right:8%;bottom:10%;width:18rem;height:18rem;z-index:-1;pointer-events:none;border-radius:50%;opacity:.16;background:radial-gradient(circle,rgba(121,228,255,.78),rgba(116,92,255,.38) 38%,transparent 68%);filter:blur(20px);animation:nebula-breathe 9s ease-in-out infinite alternate}.app.theme-dark .cosmos-layer{background:radial-gradient(circle at 14% 16%,rgba(104,80,255,.3),transparent 27%),radial-gradient(circle at 86% 12%,rgba(17,92,220,.34),transparent 25%),radial-gradient(circle at 78% 86%,rgba(44,204,255,.16),transparent 27%),linear-gradient(140deg,#060716,#0b102b 44%,#08091b)}.app.theme-dark .cosmos-layer:before{opacity:.55}@keyframes star-drift{0%{background-position:0 0}to{background-position:260px 260px}}@keyframes star-drift-slow{0%{transform:translateZ(0)}to{transform:translate3d(-90px,70px,0)}}@keyframes star-pulse{0%{opacity:.34}to{opacity:.72}}@keyframes comet-pass{0%,72%{transform:translateZ(0) rotate(-18deg);opacity:0}78%{opacity:.68}to{transform:translate3d(140vw,24vh,0) rotate(-18deg);opacity:0}}@keyframes nebula-breathe{0%{transform:translate3d(-12px,8px,0) scale(.92);opacity:.12}to{transform:translate3d(10px,-12px,0) scale(1.08);opacity:.2}}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation:none!important}}.skip-link{position:fixed;top:10px;left:12px;z-index:300;transform:translateY(-160%);background:#fff;color:#17142f;border:2px solid var(--accent);border-radius:10px;padding:10px 14px;font-weight:750;box-shadow:var(--shadow-md);transition:transform .16s ease}.skip-link:focus{transform:translateY(0)}.app.density-compact{font-size:13px}.app.density-compact .lesson-card .content{font-size:13px;padding:7px 9px 10px}.app.density-compact .lesson-card .head{padding:5px 8px}.app.density-compact .lesson-card .titlebar{padding:5px 8px;font-size:12px}.app.density-compact .sticky-note{min-height:56px;font-size:12px;padding:7px}.app.density-compact .week-grid{gap:7px;padding:8px 10px}.app.density-compact .btn{padding:7px 13px;font-size:14px}.app.density-compact .list-row{padding:8px 12px}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;color:var(--muted)}.loading-wordmark{width:min(300px,62vw);margin-bottom:6px;animation:loading-breathe 2.2s ease-in-out infinite}@keyframes loading-breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.72;transform:scale(.985)}}.toast-stack{position:fixed;bottom:24px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:200;align-items:center;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;max-width:min(560px,90vw);padding:11px 16px;border-radius:14px;background:var(--surface-strong);border:1px solid var(--border);color:var(--text);font-size:14.5px;box-shadow:var(--shadow-md);pointer-events:auto;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:toast-in .22s var(--ease-spring)}@keyframes toast-in{0%{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}.toast-success{border-color:#54c48a8c}.toast-error{border-color:#eb6a6099}.toast-success:before{content:"✓";color:#3fa06f;font-weight:800}.toast-error:before{content:"!";color:#d9544a;font-weight:800}.app.theme-dark .toast-success:before{color:#6fdba0}.app.theme-dark .toast-error:before{color:#ff9187}.toast-msg{min-width:0}.toast-action{border:none;background:none;cursor:pointer;padding:2px 6px;color:var(--accent-strong);font-weight:700;font-size:14px;font-family:var(--font-display);flex:0 0 auto}.toast-close{border:none;background:none;cursor:pointer;color:var(--muted);padding:2px 4px;flex:0 0 auto;font-size:13px}.update-pill{position:fixed;top:14px;left:50%;transform:translate(-50%);z-index:210;border:none;cursor:pointer;padding:10px 18px;border-radius:999px;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;font-family:var(--font-display);font-weight:700;font-size:14.5px;box-shadow:0 12px 30px #4e60ff73;animation:toast-in .3s var(--ease-spring)}.update-pill:hover{filter:brightness(1.08)}.palette-backdrop{align-items:flex-start;padding-top:min(16vh,150px)}.palette{width:min(620px,94vw);background:var(--card-bg);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-lg, 0 30px 70px rgba(10, 8, 40, .45));overflow:hidden;display:flex;flex-direction:column;animation:toast-in .18s var(--ease-spring)}.palette-input-row{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border);color:var(--muted)}.palette-input-row input{flex:1;min-width:0;border:none;background:none;outline:none;font-size:17px;color:var(--text);font-family:var(--font-display);font-weight:600}.palette kbd{font-family:var(--font-body, inherit);font-size:11px;color:var(--muted);border:1px solid var(--border);border-radius:5px;padding:2px 6px;background:var(--surface-strong)}.palette-list{max-height:min(380px,48vh);overflow-y:auto;padding:7px}.palette-empty{padding:18px;text-align:center;color:var(--muted)}.palette-item{display:flex;align-items:center;gap:11px;width:100%;padding:10px 12px;border:none;border-radius:11px;cursor:pointer;background:none;color:var(--text);font-size:15px;text-align:left;font-family:var(--font-display);font-weight:600}.palette-item.selected{background:var(--accent-soft);color:var(--accent-strong)}.palette-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-hint{color:var(--muted);font-size:12.5px;font-weight:500;flex:0 0 auto}.palette-footer{display:flex;gap:16px;justify-content:center;padding:9px 14px;border-top:1px solid var(--border);color:var(--muted);font-size:12px}.editor-modal.drop-target{outline:3px dashed var(--accent);outline-offset:-3px;box-shadow:0 0 0 6px var(--accent-soft),var(--shadow-md)}.lesson-card[draggable=true]{cursor:grab}.lesson-card.drag-src{opacity:.45;cursor:grabbing}.lesson-card.drop-target{outline:3px dashed var(--accent);outline-offset:-3px;box-shadow:0 0 0 5px var(--accent-soft),var(--shadow-md);transform:scale(1.012)}.topnav{position:relative;z-index:30;overflow:visible;display:flex;align-items:center;gap:10px;background:linear-gradient(120deg,#0a0823f0,#2c1b87eb,#1159d6eb,#4438caeb,#0e0a2df0);background-size:320% 320%;animation:nav-aurora 26s ease infinite;color:#fff;padding:calc(8px + env(safe-area-inset-top,0px)) 12px 8px;box-shadow:0 2px #ffffff1a inset,0 14px 45px #0a0d3847;scrollbar-width:none}.topnav::-webkit-scrollbar{display:none}.mac-native .topnav{padding-left:86px}@keyframes nav-aurora{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.topnav:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.68;background-image:radial-gradient(1.4px 1.4px at 8% 30%,#fff,transparent),radial-gradient(1px 1px at 18% 65%,#fff,transparent),radial-gradient(1.4px 1.4px at 27% 20%,#fff,transparent),radial-gradient(1px 1px at 38% 55%,#fff,transparent),radial-gradient(1.4px 1.4px at 49% 75%,#fff,transparent),radial-gradient(1px 1px at 58% 25%,#fff,transparent),radial-gradient(1.4px 1.4px at 68% 60%,#fff,transparent),radial-gradient(1px 1px at 77% 15%,#fff,transparent),radial-gradient(1.4px 1.4px at 86% 70%,#fff,transparent),radial-gradient(1px 1px at 95% 40%,#fff,transparent);animation:nav-twinkle 5s ease-in-out infinite alternate}.topnav:after{content:"";position:absolute;left:16px;right:16px;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(128,228,255,.65),rgba(154,137,255,.45),transparent);pointer-events:none}@keyframes nav-twinkle{0%{opacity:.3}to{opacity:.85}}.topnav>*{position:relative;z-index:1}.topnav .brand{display:inline-flex;align-items:center;flex:0 0 auto;white-space:nowrap;min-width:0;background:transparent;border:0;padding:10px 22px;border-radius:16px;position:relative;-webkit-user-select:none;user-select:none}.topnav button.brand,.topnav button.brand:active{border-color:transparent;box-shadow:none}.brand:before{display:none}.brand-wordmark{height:44px;width:auto;object-fit:contain;object-position:left center;position:relative;z-index:1;filter:drop-shadow(0 0 14px rgba(104,230,255,.24)) drop-shadow(0 8px 16px rgba(0,0,0,.28));transition:filter .26s ease;-webkit-user-drag:none;-webkit-user-select:none;user-select:none;pointer-events:none}.brand:hover .brand-wordmark{filter:drop-shadow(0 0 20px rgba(104,230,255,.6)) drop-shadow(0 10px 18px rgba(0,0,0,.32));animation:wordmark-flash .7s ease-out}.nav-tabs{flex:1 1 auto;min-width:0;display:grid;grid-template-columns:repeat(7,minmax(78px,1fr));gap:6px}.topnav button{display:inline-flex;align-items:center;justify-content:center;gap:7px;position:relative;overflow:hidden;background:#ffffff17;border:1px solid rgba(255,255,255,.14);color:#f4f8ffe6;font-family:var(--font-display);font-size:15.5px;font-weight:650;padding:9px 10px;cursor:pointer;border-radius:999px;transform-origin:center top;box-shadow:inset 0 1px #fff3,inset 0 -1px #0000001a;transition:background .18s ease,color .18s ease,border-color .18s ease,transform .24s var(--ease-spring),box-shadow .18s ease,filter .18s ease;min-width:0;white-space:nowrap}.topnav button:hover{color:#fff;background:#ffffff47;border-color:#ffffff61;transform:translateY(2px) scale(1.05);box-shadow:inset 0 1px #ffffff73,inset 0 -1px #00000014,0 10px 24px #00000038;filter:saturate(1.12)}.topnav button:active{transform:translateY(0) scale(.97)}.topnav button.brand{overflow:visible;background:transparent;border-color:transparent;box-shadow:none}.topnav button.brand:hover{background:transparent;border-color:transparent;box-shadow:none;transform:scale(1.07);filter:none}@keyframes wordmark-flash{0%{filter:brightness(1) saturate(1)}35%{filter:brightness(2.2) saturate(1.5)}to{filter:brightness(1) saturate(1)}}.topnav button.active{color:#fff;font-weight:700;background:linear-gradient(135deg,#ffffff3d,#7edbff29);border-color:#b2d8ff5c;box-shadow:inset 0 1px #ffffff4d,0 12px 28px #0003,0 0 24px #7edbff24 inset}.nav-tabs:hover button:not(:hover):not(.active){opacity:.86}.nav-tabs button:hover{z-index:4;transform:translateY(2px) scale(1.1);background:linear-gradient(160deg,#9780fff7,#409cfff2);border-color:#ffffff80;box-shadow:inset 0 1px #ffffff8c,inset 0 -1px #0000001a,0 18px 36px #0000004d,0 0 30px #7edbff61}.nav-icon{width:24px;height:24px;border-radius:999px;display:grid;place-items:center;color:#e8f8ff;background:transparent;flex:0 0 auto;transition:transform .26s var(--ease-spring),background .18s ease,box-shadow .18s ease}.nav-icon svg{width:20px;height:20px}.topnav button:hover .nav-icon{transform:translateY(-1px) rotate(-4deg) scale(1.08);background:#fff3;box-shadow:0 0 18px #7edbff38}.topnav button.active .nav-icon{animation:icon-orbit-pop .55s var(--ease-spring) both}.icon-btn{width:48px;height:48px;padding:0!important;line-height:1;flex:0 0 auto;border-radius:50%!important}.nav-action{min-width:48px;justify-content:center;background:transparent!important;border-color:transparent!important}.nav-action:hover{background:#ffffff21!important;border-color:#ffffff2e!important}.spin-icon{animation:icon-spin .8s linear infinite}@keyframes icon-spin{to{transform:rotate(360deg)}}@keyframes icon-orbit-pop{0%{transform:scale(.88) rotate(-8deg)}55%{transform:scale(1.13) rotate(5deg)}to{transform:scale(1) rotate(0)}}@media(max-width:1180px){.nav-tabs{grid-template-columns:repeat(7,minmax(68px,1fr))}.topnav button{padding-inline:8px;font-size:14.5px}}main{flex:1;overflow:auto;position:relative;animation:view-arrive .24s var(--ease-snap)}.view-loading{min-height:46vh;display:grid;place-items:center}.view-loading-orbit{width:42px;height:42px;border-radius:50%;border:3px solid rgba(116,92,255,.18);border-top-color:var(--accent);box-shadow:0 0 28px #4392ff38;animation:icon-spin .8s linear infinite}@keyframes view-arrive{0%{transform:translateY(6px) scale(.996)}to{transform:none}}.nav-tabs{flex-basis:0%;flex-grow:1;flex-shrink:1;transition:flex-grow .55s var(--ease-snap),opacity .4s ease}.nav-tabs-collapsed{flex-grow:0!important;opacity:0;overflow:hidden;pointer-events:none}.inline-search{flex:0 1 0%;min-width:0;overflow:hidden;opacity:0;display:flex;align-items:center;transition:flex-grow .55s var(--ease-snap),opacity .4s ease;pointer-events:none}.inline-search-open{flex-grow:1;opacity:1;pointer-events:auto}.inline-search input{width:100%;min-width:0;border-radius:999px;padding:10px 18px;font-size:15.5px;background:#ffffff1f;border:1px solid rgba(255,255,255,.22);color:#fff}.inline-search input::placeholder{color:#f4f8ff9e}.inline-search input:focus{background:#ffffff2e;border-color:#fff6}.icon-btn.nav-action.active{background:#ffffff3d!important;border-color:#fff6!important}.week-toolbar{display:flex;align-items:center;gap:8px;padding:9px 14px;background:var(--surface-glass);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5;overflow-x:auto;-webkit-backdrop-filter:blur(22px) saturate(1.2);backdrop-filter:blur(22px) saturate(1.2);box-shadow:0 1px #ffffffa6 inset,0 10px 28px #18216714}.week-toolbar h2{font-size:23px;margin:0 8px;font-weight:700;font-family:var(--font-display);font-variant-numeric:tabular-nums}.btn{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:linear-gradient(180deg,#ffffffeb,#f4f7ffbd);border:1px solid rgba(111,121,207,.3);color:var(--text);border-radius:999px;min-height:40px;padding:9px 15px;font-family:var(--font-display);font-size:15.5px;font-weight:700;cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .22s var(--ease-spring),box-shadow .16s ease,filter .16s ease;box-shadow:0 1px #ffffffd1 inset,0 8px 18px #2937881a}.btn:before{content:"";position:absolute;inset:1px;border-radius:inherit;pointer-events:none;z-index:-1;background:linear-gradient(135deg,rgba(255,255,255,.34),transparent 58%)}.btn:after{content:"";position:absolute;inset:-40% auto -40% -55%;width:42%;z-index:-1;pointer-events:none;background:linear-gradient(100deg,transparent,rgba(126,92,255,.4),rgba(255,255,255,.85),rgba(126,92,255,.4),transparent);transform:skew(-18deg);transition:left .42s var(--ease-snap)}.btn:hover{background:linear-gradient(180deg,#fffffffa,#ebf0ffd6);border-color:#5b68e673;box-shadow:0 1px #ffffffe6 inset,0 12px 26px #3645aa26;transform:translateY(-2px) scale(1.025)}.btn:hover:after{left:115%}.btn:active{transform:translateY(1px) scale(.98)}.btn:disabled{cursor:default;opacity:.62;transform:none;box-shadow:none}.btn:disabled:hover{background:var(--card-bg);filter:none}.btn.primary{background:linear-gradient(135deg,#815fff,#286cff 54%,#27c3ff);border-color:#ffffff42;color:#fff;box-shadow:var(--shadow-glow);font-weight:600}.btn-icon{width:1.25em;height:1.25em;flex:0 0 auto}.btn-icon.solo{width:1.45em;height:1.45em}.btn.primary:disabled:hover{background:linear-gradient(135deg,var(--accent),var(--accent-2))}.btn.primary:hover{filter:brightness(1.06);box-shadow:0 18px 40px #4e60ff61,0 0 24px #27c3ff40}.btn:hover .btn-icon{animation:icon-bob .42s var(--ease-spring)}@keyframes icon-bob{0%,to{transform:translateY(0) rotate(0)}45%{transform:translateY(-2px) rotate(-6deg)}}.btn.danger{color:#d9444f;border-color:#d9444f47}.app.theme-dark .btn.danger{color:#ff8a75;border-color:#5c332c}.app.theme-dark .btn{background:linear-gradient(180deg,#2d3063e0,#1c1f46c7);border-color:#9aa3ff33;box-shadow:0 1px #ffffff14 inset,0 10px 24px #00000038}.app.theme-dark .btn:hover{background:linear-gradient(180deg,#3a3e7ceb,#222652d1);border-color:#9aa3ff57}.app.theme-dark .btn.primary{background:linear-gradient(135deg,#815fff,#286cff 54%,#27c3ff);border-color:#ffffff42;color:#fff}.app.theme-dark .btn.primary:hover{filter:brightness(1.06);box-shadow:0 18px 40px #4e60ff61,0 0 24px #27c3ff40}.week-grid{display:grid;grid-template-columns:repeat(5,minmax(160px,1fr));gap:8px;padding:10px 12px 18px;align-items:start}.week-grid>*{animation:card-arrive .28s var(--ease-snap)}.week-grid>*:nth-child(5n+2){animation-delay:25ms}.week-grid>*:nth-child(5n+3){animation-delay:.05s}.week-grid>*:nth-child(5n+4){animation-delay:75ms}.week-grid>*:nth-child(5n){animation-delay:.1s}@keyframes card-arrive{0%{transform:translateY(7px) scale(.992)}to{transform:none}}.day-col{display:flex;flex-direction:column;gap:8px;min-width:0}.day-col-head{display:flex;flex-direction:column;gap:7px;min-width:0}.day-head{font-family:var(--font-display);font-size:14.5px;padding:1px 3px;color:var(--muted);display:flex;align-items:center}.day-head b{color:var(--text-strong);font-weight:700}.sticky-note{background:var(--note-bg);color:var(--note-text);border-radius:12px;min-height:66px;padding:9px 10px;font-size:14.5px;width:100%;border:1px solid rgba(153,126,28,.18);resize:vertical;font-family:inherit;line-height:1.35;box-shadow:0 9px 22px #9c821c1f,0 1px #ffffff8c inset;transition:transform .22s var(--ease-spring),box-shadow .18s ease,border-color .18s ease}.sticky-note:hover,.sticky-note:focus{transform:translateY(-2px) rotate(-.35deg);border-color:#997e1c57;box-shadow:0 13px 28px #9c821c2e,0 1px #ffffff9e inset}.offday{background:var(--off-bg);border-radius:var(--radius);text-align:center;padding:26px 8px;color:var(--off-text);font-weight:700;font-size:17px}.offday small{display:block;font-weight:400;margin-top:4px}.lesson-card{background:linear-gradient(180deg,var(--surface-strong),var(--card-bg));border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;position:relative;border:1px solid var(--border);height:300px;transition:box-shadow .24s ease,transform .26s var(--ease-spring),border-color .18s ease,filter .18s ease;-webkit-backdrop-filter:blur(18px) saturate(1.08);backdrop-filter:blur(18px) saturate(1.08);display:flex;flex-direction:column}.lesson-card:after{content:"";position:absolute;inset:auto 10% -34px;height:46px;pointer-events:none;opacity:0;border-radius:50%;background:radial-gradient(ellipse at center,rgba(116,92,255,.24),transparent 68%);transition:opacity .22s ease,transform .26s var(--ease-spring)}.lesson-card:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background:linear-gradient(135deg,rgba(255,255,255,.24),transparent 34%)}.lesson-card>*{position:relative;z-index:1}.lesson-card:hover{box-shadow:var(--shadow-md);transform:translateY(-4px) scale(1.006);border-color:#7361ff57}.lesson-card:hover:after{opacity:1;transform:translateY(-8px) scale(1.08)}.lesson-card:hover .head{filter:saturate(1.08) brightness(1.03)}.lesson-card .head{color:#fff;padding:7px 10px;font-family:var(--font-display);font-size:13px;flex-shrink:0;box-shadow:0 -1px #ffffff40 inset,0 10px 28px #0d164e1a}.lesson-card .head .subj{font-weight:700;letter-spacing:.4px;text-transform:uppercase}.lesson-card .head .time{opacity:.92;margin-top:1px;font-size:12px;font-variant-numeric:tabular-nums}.lesson-card .titlebar{display:flex;align-items:center;gap:5px;padding:6px 9px;border-bottom:1px solid var(--border);font-family:var(--font-display);font-size:14.5px;background:#ffffff4d;flex-shrink:0}.app.theme-dark .lesson-card .titlebar{background:#2629588c}.unit-chip{color:#fff;font-size:11px;border-radius:999px;padding:2px 7px;white-space:nowrap;box-shadow:0 6px 16px #00000029}.unit-chip.lg{font-size:15px;font-weight:700;padding:5px 13px;border-radius:7px}.card-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;cursor:pointer;color:var(--text-strong)}.att-badge{display:inline-block;font-size:12.5px;color:#fff;border-radius:999px;padding:2px 8px;margin:6px 0 0 10px;box-shadow:0 6px 16px #00000029}.lesson-card .content{position:relative;flex:1 1 auto;padding:8px 10px 16px;font-family:var(--font-display);font-size:14px;line-height:1.36;max-height:210px;overflow:hidden;cursor:pointer}.lesson-card .content *,.editor-body .tiptap *{font-family:var(--font-display)!important;font-size:14px!important}.lesson-preview-body *{font-family:var(--font-display)!important;font-size:18px!important}.app.preview-text-regular .lesson-preview-body,.app.preview-text-regular .lesson-preview-body *{font-size:15px!important}.lesson-card .content:after{content:"";position:absolute;left:0;right:0;bottom:0;height:18px;pointer-events:none;background:linear-gradient(180deg,transparent,rgba(251,252,255,.82))}.app.theme-dark .lesson-card .content:after{background:linear-gradient(180deg,transparent,rgba(18,20,46,.92))}.today-card .content:after{display:none}.lesson-card .content.template{opacity:.76;color:var(--muted)}.lesson-card .content ul{margin:4px 0;padding-left:18px}.lesson-card .content p{margin:3px 0}.lesson-card .content img{max-width:100%}.btn.week-edit-hint{position:absolute;bottom:7px;right:7px;opacity:0;font-size:11px;padding:5px 9px;min-height:0;transition:opacity .16s ease,transform .22s var(--ease-spring)}.lesson-card:hover .btn.week-edit-hint{opacity:1}.modal-backdrop{position:fixed;inset:0;background:radial-gradient(circle at 50% 10%,rgba(98,87,255,.22),transparent 35%),#07091c94;display:flex;align-items:flex-start;justify-content:center;z-index:50;padding:40px 20px;animation:backdrop-in .14s ease;-webkit-backdrop-filter:blur(12px) saturate(1.2);backdrop-filter:blur(12px) saturate(1.2)}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(14px) scale(.97);filter:blur(5px)}72%{transform:translateY(-2px) scale(1.006);filter:blur(0)}to{opacity:1;transform:none;filter:blur(0)}}.editor-modal{background:linear-gradient(180deg,var(--surface-strong),var(--card-bg));border-radius:20px;width:min(880px,96vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg);animation:modal-in .28s var(--ease-spring);border:1px solid rgba(255,255,255,.34);-webkit-backdrop-filter:blur(22px) saturate(1.18);backdrop-filter:blur(22px) saturate(1.18)}.app.theme-dark .editor-modal{border-color:#9aa3ff2e}.editor-head{color:#fff;padding:15px 18px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 -1px #fff3 inset}.editor-head h2{margin:0;font-family:var(--font-display);font-size:20px;line-height:1.2}.editor-head .when{font-size:15px;opacity:.9;margin-top:3px;font-variant-numeric:tabular-nums}.editor-head .subj{font-family:var(--font-display);font-weight:700;letter-spacing:.2px;font-size:17.5px}.editor-head button{background:none;border:none;color:#fff;font-size:21.5px;cursor:pointer}.editor-head button:hover{transform:rotate(7deg) scale(1.08)}.editor-head-actions{display:flex;align-items:center;gap:10px}.editor-saved-indicator{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border-radius:999px;background:#0c122f38;color:#fff;font-family:var(--font-display);font-size:12px;font-weight:700}.editor-head .modal-close{width:40px;height:40px;min-width:40px;padding:0;border-radius:50%;display:grid;place-items:center;background:#ffffff24;border:1px solid rgba(255,255,255,.24);color:#fff;box-shadow:inset 0 1px #ffffff2e;transition:transform .2s var(--ease-spring),background .16s ease}.editor-head .modal-close:hover{transform:scale(1.08);background:#ffffff3d}.editor-title-row{display:flex;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);align-items:center;flex-wrap:wrap}.editor-title-row input[type=text]{flex:1 1 260px;min-width:0;border:1px solid var(--input-border);background:#ffffffa8;color:var(--text);border-radius:12px;padding:10px 12px;font-size:17.5px;box-shadow:0 1px #ffffffb8 inset}.app.theme-dark .editor-title-row input[type=text]{background:#0b0e266b}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:9px 14px;border-bottom:1px solid var(--border)}.toolbar button{display:inline-flex;align-items:center;justify-content:center;background:#ffffff6b;border:1px solid rgba(96,105,190,.22);border-radius:11px;min-width:38px;height:36px;padding:0 10px;font-family:var(--font-display);font-size:17px;font-weight:700;cursor:pointer;color:var(--text);box-shadow:0 1px #ffffff94 inset;transition:background .14s ease,border-color .14s ease,transform .2s var(--ease-spring),box-shadow .14s ease}.toolbar button:hover{background:#ffffffb8;border-color:#745cff5c;transform:translateY(-2px) scale(1.05);box-shadow:var(--shadow-sm)}.toolbar button:active{transform:translateY(1px) scale(.96)}.toolbar button.on{background:linear-gradient(135deg,#815fff2e,#27c3ff24);color:var(--accent-strong);border-color:#745cff57;animation:selected-pulse .32s var(--ease-spring)}@keyframes selected-pulse{0%{transform:scale(.94)}70%{transform:scale(1.07)}to{transform:scale(1)}}.toolbar .sep{width:1px;background:var(--border);margin:3px 6px}.toolbar-color-swatch{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:36px;padding:0 10px;position:relative;background:#ffffff6b;border:1px solid rgba(96,105,190,.22);border-radius:11px;color:var(--text);cursor:pointer;box-shadow:0 1px #ffffff94 inset;transition:background .14s ease,border-color .14s ease,transform .2s var(--ease-spring),box-shadow .14s ease}.toolbar-color-swatch:hover{background:#ffffffb8;border-color:#745cff5c;transform:translateY(-2px) scale(1.05);box-shadow:var(--shadow-sm)}.toolbar-color-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.editor-body{flex:1;overflow:auto;padding:14px 18px}.editor-body .tiptap{outline:none;min-height:240px;font-family:var(--font-display);font-size:14px;line-height:1.5}.editor-body .tiptap ul{padding-left:20px}.editor-body .tiptap table{border-collapse:collapse}.editor-body .tiptap td,.editor-body .tiptap th{border:1px solid #bbb;padding:4px 8px}.editor-attachments{padding:9px 18px;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:7px;align-items:center;font-size:16px}.att-chip{background:var(--chip-bg);border:1px solid var(--border);border-radius:7px;padding:3px 5px 3px 8px;display:inline-flex;gap:4px;align-items:center}.att-chip .attachment-open{display:inline-flex;align-items:center;gap:6px;min-width:0;padding:4px 2px;border:0;background:transparent;color:var(--text);font:inherit;cursor:pointer}.att-chip .attachment-open:hover{color:var(--accent-strong)}.att-chip .attachment-remove{width:28px;height:28px;display:grid;place-items:center;padding:0;border-radius:7px}.trove-btn{display:inline-flex;align-items:center;gap:7px}.trove-icon{width:22px;height:22px;border-radius:6px;display:block}.trove-login{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:10px 0 4px}.trove-login-icon{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent-strong);margin-bottom:2px}.trove-login p{color:var(--muted);margin:0 0 4px}.trove-login input{width:100%;max-width:280px;padding:11px 14px;text-align:center;border-radius:12px;border:1px solid var(--input-border);background:var(--surface-strong);color:var(--text);font-size:15.5px}.trove-login input.err{border-color:#ff9d8f}.trove-login .btn.primary{margin-top:6px}.trove-search-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:999px;border:1px solid var(--input-border);background:var(--surface-strong);margin-bottom:14px;color:var(--muted)}.trove-search-bar input{flex:1;min-width:0;border:none;background:none;font-size:15.5px;color:var(--text);outline:none}.trove-results{display:flex;flex-direction:column;gap:10px;max-height:50vh;overflow-y:auto}.trove-result{margin:0}.trove-thumb{flex:0 0 auto;width:52px;height:68px;object-fit:cover;border-radius:8px;border:1px solid var(--border);background:var(--surface-strong)}.trove-thumb-fallback{display:flex;align-items:center;justify-content:center;color:var(--muted)}.trove-result-clickable{display:flex;align-items:center;gap:12px;flex:1;min-width:0;cursor:pointer}.trove-preview-backdrop{align-items:center;z-index:60}.trove-preview-modal{width:min(560px,92vw);height:min(760px,90vh);display:flex;flex-direction:column}.trove-preview-body{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:18px;overflow:hidden;background:var(--surface-strong)}.trove-preview-large{max-width:100%;max-height:100%;object-fit:contain;border-radius:10px;box-shadow:var(--shadow-md);border:1px solid var(--border)}.trove-preview-fallback{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--muted)}.trove-preview-nav-btn{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border-radius:50%;border:1px solid var(--border);background:var(--surface-strong);color:var(--text);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-sm)}.trove-preview-nav-btn:disabled{opacity:.5;cursor:default}.trove-preview-nav-btn.left{left:10px}.trove-preview-nav-btn.right{right:10px}.trove-preview-pagecount{text-align:center;padding:6px 0;color:var(--muted);font-size:13px;border-top:1px solid var(--border)}.trove-preview-actions{display:flex;justify-content:center;padding:14px 18px;border-top:1px solid var(--border)}.att-chip button{border:none;background:none;cursor:pointer;color:var(--muted)}.editor-actions{display:flex;gap:8px;padding:11px 18px;border-top:1px solid var(--border);align-items:center}.editor-actions .spacer{flex:1}.saved-status{color:var(--muted);font-family:var(--font-display);font-size:14px;font-weight:700}.lesson-preview-backdrop{align-items:center}.lesson-preview-modal{width:min(1040px,94vw);height:min(860px,90vh);max-height:90vh}.preview-actions{display:flex;align-items:center;gap:8px}.lesson-preview-title{padding:15px 18px 8px;font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--text-strong);border-bottom:1px solid var(--border)}.lesson-preview-body{flex:1;padding:16px 20px 22px;overflow:auto;font-family:var(--font-display);font-size:18px;line-height:1.6}.lesson-preview-body ul{margin:6px 0;padding-left:20px}.lesson-preview-body p{margin:5px 0}.preview-empty{color:var(--muted)}.preview-attachments{border-top:1px solid var(--border)}.preview-attachments .attachment-open{border:1px solid var(--border);background:var(--chip-bg);color:var(--text);font:inherit;cursor:pointer;transition:transform .18s var(--ease-spring),border-color .16s ease,color .16s ease}.preview-attachments .attachment-open:hover{transform:translateY(-1px);border-color:var(--accent);color:var(--accent-strong)}.today-off{display:flex;align-items:center;gap:7px}.settings-modal{width:min(620px,94vw);max-height:min(900px,92dvh)}.settings-body{padding:18px;overflow-y:auto;font-size:16px}.settings-section{padding:0 0 18px;margin:0 0 18px;border-bottom:1px solid var(--border)}.settings-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}.settings-section h3{margin:0 0 12px;color:var(--text-strong);font-family:var(--font-display);font-size:18px;font-weight:750}.settings-group+.settings-group{margin-top:13px}.settings-label,.settings-field>span{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:6px;color:var(--muted);font-size:13px;font-weight:750;text-transform:uppercase;letter-spacing:.45px}.settings-field small{font-size:12px;font-weight:600;text-transform:none;letter-spacing:0}.settings-segment{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;background:var(--chip-bg);border:1px solid var(--border);border-radius:13px}.settings-segment button{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--muted);font:700 14px var(--font-display);cursor:pointer;transition:color .16s ease,background .16s ease,box-shadow .16s ease,transform .18s var(--ease-spring)}.settings-segment button:hover{color:var(--text);background:#ffffff75;transform:translateY(-1px)}.settings-segment button.selected{color:var(--accent-strong);background:var(--surface-strong);border-color:#745cff33;box-shadow:var(--shadow-sm),0 8px 22px #484cae1a}.settings-toggle{position:relative;display:flex;align-items:center;gap:11px;min-height:58px;padding:9px 0;cursor:pointer}.settings-toggle+.settings-toggle{border-top:1px solid var(--border)}.settings-toggle-icon{width:38px;height:38px;flex:0 0 auto;display:grid;place-items:center;border-radius:11px;background:var(--accent-soft);color:var(--accent-strong)}.settings-toggle-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.settings-toggle-copy b{color:var(--text-strong);font-family:var(--font-display);font-size:15.5px}.settings-toggle-copy small{color:var(--muted);font-size:13.5px;line-height:1.35}.settings-toggle input{position:absolute;opacity:0;pointer-events:none}.switch-track{width:48px;height:28px;flex:0 0 auto;padding:3px;border-radius:999px;background:#6f759d57;border:1px solid var(--border);transition:background .18s ease,border-color .18s ease}.switch-track span{display:block;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 2px 8px #14163a47;transition:transform .22s var(--ease-spring)}.settings-toggle input:checked+.switch-track{background:linear-gradient(135deg,var(--accent),var(--accent-2));border-color:transparent}.settings-toggle input:checked+.switch-track span{transform:translate(20px)}.settings-toggle:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:3px;border-radius:10px}.settings-name-input{width:100%;margin-bottom:15px;font-size:16px}.settings-path{margin:0 0 6px;padding:9px 11px;border-radius:9px;word-break:break-all;color:var(--muted);background:var(--chip-bg);font:12.5px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}.settings-help{margin:8px 0 13px;color:var(--muted);font-size:13.5px;line-height:1.45}.settings-action+.settings-action{margin-left:7px}.settings-scan-result>p{margin:8px 0}.settings-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.menu{position:absolute;right:0;top:38px;background:var(--surface-strong);border-radius:14px;box-shadow:var(--shadow-lg);border:1px solid var(--border);z-index:10;min-width:240px;padding:7px;animation:modal-in .12s ease;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.menu button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:none;padding:12px 13px;font-family:var(--font-display);font-size:16px;font-weight:650;cursor:pointer;border-radius:10px;color:var(--text);transition:background .14s ease,transform .18s var(--ease-spring)}.menu button:hover{background:var(--hover);transform:translate(3px)}.menu button.danger{color:#c73748}.app.theme-dark .menu button.danger{color:#ff9585}.menu-icon{width:19px;height:19px;flex:0 0 auto}.menu .menu-sep{height:1px;background:var(--border);margin:4px 0}.tt-wrap{display:flex;gap:18px;padding:16px 20px}.tt-side{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:12px}.tt-side-title{margin:2px 0 0;font-family:var(--font-display);font-weight:700;font-size:23px}.tt-hidden-warning{background:#fff4e0;color:#8a5a00;border:1px solid #f0d9a8;border-radius:8px;padding:10px 12px;font-size:14px;line-height:1.4}.tt-warning-title{display:flex;align-items:center;gap:7px;font-family:var(--font-display);font-weight:750;margin-bottom:3px}.app.theme-dark .tt-hidden-warning{background:#3a2e12;color:#f0c060;border-color:#5a4a20}.class-card{border-radius:16px;color:#fff;padding:14px 16px;box-shadow:var(--shadow-sm);transition:box-shadow .2s ease,transform .24s var(--ease-spring),filter .18s ease;border:1px solid rgba(255,255,255,.22);position:relative;overflow:hidden}.class-card:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.24),transparent 42%)}.class-card>*{position:relative}.class-card:hover{box-shadow:var(--shadow-md);transform:translateY(-4px) rotate(-.25deg);filter:saturate(1.08)}.class-card b{display:block;font-size:17.5px}.class-card small{opacity:.9;font-size:14px}.class-card .row{display:flex;gap:8px;margin-top:9px;flex-wrap:wrap;align-items:center}.class-card .btn{background:#ffffff29;border-color:#fff6;color:#fff}.class-card .btn:hover{background:#ffffff47}.color-swatch{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;flex-shrink:0;position:relative;background:#ffffff29;border:2px solid rgba(255,255,255,.4);color:#fff;cursor:pointer;transition:background .15s ease}.color-swatch:hover{background:#ffffff47}.color-swatch-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.tt-grid-outer{flex:1;overflow:auto;background:var(--surface-glass);border-radius:18px;border:1px solid var(--border);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(18px) saturate(1.1);backdrop-filter:blur(18px) saturate(1.1)}.tt-grid{display:grid}.tt-grid .corner,.tt-grid .dayhead{position:sticky;top:0;background:var(--surface-strong);border-bottom:1px solid var(--border);padding:9px;font-size:16.5px;font-weight:700;font-family:var(--font-display);text-align:center;z-index:2}.tt-grid .hour{font-size:14px;color:var(--muted);border-top:1px solid var(--border);padding:2px 7px;font-weight:500}.tt-cell{border-top:1px solid var(--border);border-left:1px solid var(--border);position:relative}.tt-block{position:absolute;left:4px;right:4px;border-radius:7px;color:#fff;font-family:var(--font-display);font-size:13px;font-weight:700;line-height:1.25;padding:4px 8px;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;justify-content:center;gap:1px;box-shadow:0 10px 24px #0000002e;transition:box-shadow .18s ease,transform .22s var(--ease-spring),filter .18s ease;border:1px solid rgba(255,255,255,.2)}.tt-block:hover{box-shadow:var(--shadow-md);transform:translateY(-3px) scale(1.01);filter:saturate(1.1);z-index:3}.tt-block.selected{box-shadow:0 0 0 3px var(--accent),var(--shadow-md);z-index:3}.tt-block small{display:block;opacity:.97;font-family:var(--font-body);font-size:13.5px;font-weight:700;line-height:1.2}.tt-edit-form{display:block}.tt-edit-form b{font-family:var(--font-display);font-size:18px}.tt-edit-fields{margin-top:10px;display:flex;flex-direction:column;gap:10px;font-size:16px}.tt-edit-fields label{display:flex;align-items:center;justify-content:space-between;gap:10px}.tt-edit-fields label span{color:var(--muted);font-weight:600}.tt-edit-fields select,.tt-edit-fields input[type=time]{border:1px solid var(--input-border);background:var(--card-bg);color:var(--text);border-radius:10px;padding:9px 11px;font-size:16px}.tt-edit-actions{display:flex;gap:8px;margin-top:4px}.page{padding:26px;max-width:1180px;margin:0 auto;width:100%;box-sizing:border-box}.page h2{margin-top:0;font-family:var(--font-display);font-weight:700;font-size:36px;letter-spacing:0;color:var(--text-strong)}.page>*{animation:page-item-rise .26s var(--ease-snap)}.page>*:nth-child(2){animation-delay:35ms}.page>*:nth-child(3){animation-delay:.07s}.page>*:nth-child(4){animation-delay:.105s}@keyframes page-item-rise{0%{transform:translateY(7px)}to{transform:none}}.cards{display:flex;gap:14px;flex-wrap:wrap}.sem-card{background:linear-gradient(180deg,var(--surface-strong),var(--card-bg));border-radius:18px;box-shadow:var(--shadow-sm);border:1px solid var(--border);width:280px;overflow:hidden;transition:box-shadow .22s ease,transform .26s var(--ease-spring),border-color .18s ease;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.sem-card:hover{box-shadow:var(--shadow-md);transform:translateY(-5px) rotate(-.35deg);border-color:#745cff4d}.sem-card .sem-head{color:#fff;padding:16px;font-family:var(--font-display);font-weight:700;font-size:20px;box-shadow:0 -1px #ffffff38 inset}.sem-card .sem-body{padding:15px 17px;font-size:16.5px}.sem-card label{display:block;font-size:13.5px;color:var(--muted);margin-top:9px;text-transform:uppercase;letter-spacing:.4px;font-weight:700}.sem-card input{width:100%;border:1px solid var(--input-border);background:var(--card-bg);color:var(--text);border-radius:10px;padding:9px 10px;font-size:16.5px}.sem-dates{font-weight:700;font-size:16.5px;font-variant-numeric:tabular-nums}.sem-stat{margin-top:6px;color:var(--muted);font-size:14.5px}.sem-actions{margin-top:14px;display:flex;gap:6px;flex-wrap:wrap}.sem-card-add{display:flex;align-items:center;justify-content:center;min-height:180px;cursor:pointer;border:1px dashed rgba(116,92,255,.42)!important;box-shadow:none!important;background:#ffffff47!important;color:var(--accent-strong);font-size:16px;font-weight:750;transition:border-color .18s ease,color .18s ease,transform .24s var(--ease-spring),box-shadow .18s ease}.sem-card-add:hover{border-color:var(--accent)!important;color:var(--accent);transform:translateY(-3px) scale(1.01);box-shadow:0 14px 30px #745cff1f!important}.list-row{background:linear-gradient(180deg,var(--surface-strong),var(--card-bg));border-radius:16px;box-shadow:var(--shadow-sm);border:1px solid var(--border);padding:16px 18px;display:flex;align-items:center;gap:12px;margin-bottom:12px;transition:box-shadow .22s ease,transform .26s var(--ease-spring),border-color .18s ease;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.list-row:hover{box-shadow:var(--shadow-md);transform:translateY(-4px) scale(1.004);border-color:#745cff4d}.list-row b{flex:0 0 auto;font-family:var(--font-display);font-size:18.5px;color:var(--text-strong)}.list-row .grow{flex:1;min-width:0}.list-row small{color:var(--muted);font-size:15.5px}.unit-row{width:calc(100% - 24px);color:inherit;font:inherit;text-align:left;border-left:4px solid transparent;cursor:pointer}.unit-row:disabled{cursor:default;opacity:.7}.inline-meta{display:inline-flex;align-items:center;gap:3px;margin-left:5px}.search-input{width:100%;border:1px solid var(--input-border);background:var(--surface-strong);color:var(--text);border-radius:16px;padding:14px 16px;font-size:18px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.search-input:focus{border-color:var(--accent)}select,input[type=date],input[type=number],input[type=time],input[type=text]{border:1px solid var(--input-border);background:var(--surface-strong);color:var(--text);border-radius:12px;padding:10px 12px;font:inherit;box-shadow:0 1px #ffffff9e inset}select:focus,input:focus,textarea:focus{outline:2px solid rgba(116,92,255,.4);outline-offset:2px}.lib-preview{font-size:16.5px;color:var(--muted);max-height:70px;overflow:hidden;line-height:1.45}.lib-sub{color:var(--muted);font-size:16px;margin-top:-6px}.lib-empty{color:var(--muted);font-size:17px;margin-top:20px}.library-controls{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:10px;margin:14px 0 12px}.library-semester{margin:22px 0 28px;background:#ffffff5c;border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow-sm);overflow:hidden;-webkit-backdrop-filter:blur(18px) saturate(1.1);backdrop-filter:blur(18px) saturate(1.1);transition:transform .26s var(--ease-spring),box-shadow .22s ease,border-color .18s ease}.app.theme-dark .library-semester{background:#0a0c2280}.library-semester:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:#745cff40}.library-semester-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 18px;background:linear-gradient(135deg,#1c185ceb,#2867e2d1);color:#fff}.library-semester-head h3{margin:0 0 3px;font-family:var(--font-display);font-size:25px;letter-spacing:0}.library-semester-head small{color:#ecf4ffdb;font-size:15px}.library-subject-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;padding:16px}.library-subject{background:linear-gradient(180deg,var(--surface-strong),var(--card-bg));border:1px solid var(--border);border-radius:18px;overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .24s var(--ease-spring),box-shadow .2s ease,border-color .18s ease}.library-subject:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:#745cff47}.library-subject-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-top:4px solid;background:#ffffff7a}.app.theme-dark .library-subject-head{background:#1416328c}.library-subject-head small{color:var(--muted);font-weight:700}.library-unit{border-top:1px solid var(--border)}.library-unit summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;font-family:var(--font-display);font-weight:700;color:var(--text-strong);background:#edf1ff8c;transition:background .16s ease,color .16s ease,padding-left .2s var(--ease-spring)}.library-unit summary:hover{background:#e2e8ffc7;color:var(--accent-strong);padding-left:18px}.app.theme-dark .library-unit summary{background:#2629588c}.app.theme-dark .library-unit summary:hover{background:#363a76b8;color:var(--accent-strong)}.library-unit summary::-webkit-details-marker{display:none}.library-unit summary:before{content:"▾";color:var(--accent-strong);margin-right:4px;display:inline-block;transition:transform .22s var(--ease-spring)}.library-unit:not([open]) summary:before{content:"▸"}.library-unit[open] summary:before{transform:rotate(180deg)}.library-unit summary small{color:var(--muted);background:var(--chip-bg);border-radius:999px;padding:2px 9px}.library-unit .list-row{margin:10px 12px;border-radius:14px;padding:13px 14px}.library-unit .list-row b{font-size:17px;line-height:1.25}.tag{background:var(--accent-soft);color:var(--accent-strong);font-size:13.5px;font-weight:700;border-radius:999px;padding:4px 10px;margin-right:4px;border:1px solid rgba(116,92,255,.16);transition:transform .2s var(--ease-spring),box-shadow .18s ease}.tag:hover{transform:translateY(-1px) scale(1.04);box-shadow:0 8px 18px #745cff24}.saved-only-tag{margin-left:8px;color:var(--accent-strong);background:var(--accent-soft)}.empty-state{margin-top:24px;min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:linear-gradient(180deg,#ffffff75,#ffffff38);border:1px solid var(--border);border-radius:24px;box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(18px) saturate(1.1);backdrop-filter:blur(18px) saturate(1.1);color:var(--muted)}.empty-state h3{margin:12px 0 4px;color:var(--text-strong);font-family:var(--font-display);font-size:24px}.empty-state p{margin:0;max-width:520px;line-height:1.5}.empty-orbit{width:58px;height:58px;display:grid;place-items:center;border-radius:50%;color:#fff;font-weight:800;background:linear-gradient(135deg,#815fff,#27c3ff);box-shadow:var(--shadow-glow);animation:orbit-float 3.4s ease-in-out infinite}@keyframes orbit-float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-7px) rotate(5deg)}}.ai-btn{position:relative;isolation:isolate;overflow:hidden;background:linear-gradient(135deg,#8c5dff,#2d7bff 55%,#20d8ff);color:#fff;border:1px solid rgba(255,255,255,.24);border-radius:999px;padding:8px 15px;font-size:16px;cursor:pointer;font-weight:750;transition:filter .16s ease,transform .22s var(--ease-spring),box-shadow .16s ease;box-shadow:var(--shadow-glow)}.ai-btn:after{content:"";position:absolute;inset:-40% auto -40% -55%;width:42%;z-index:-1;pointer-events:none;background:linear-gradient(100deg,transparent,rgba(255,255,255,.65),transparent);transform:skew(-18deg);transition:left .42s var(--ease-snap)}.ai-btn:hover:after{left:115%}.ai-btn:hover{filter:brightness(1.08);transform:translateY(-3px) scale(1.025)}.ai-btn:active{transform:translateY(1px) scale(.98)}.ai-panel{padding:12px 15px;border-bottom:1px solid var(--border);background:linear-gradient(135deg,#745cff29,#27c3ff1a)}.ai-panel textarea{width:100%;border:1px solid var(--input-border);background:var(--surface-strong);color:var(--text);border-radius:13px;padding:10px 12px;font-size:16.5px;font-family:inherit;resize:vertical}.sync-error-banner{background:#fdeceae0;color:#9a2f24;padding:8px 16px;font-size:15px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #f3c6c0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.sync-error-banner button{margin-left:auto;background:none;border:none;color:#9a2f24;cursor:pointer;font-size:16px}.app.theme-dark .sync-error-banner{background:#3a201d;color:#ff9d8f;border-bottom-color:#5a2e28}.app.theme-dark .sync-error-banner button{color:#ff9d8f}.login-screen{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 18% 20%,rgba(104,80,255,.32),transparent 30%),radial-gradient(circle at 84% 78%,rgba(44,204,255,.2),transparent 32%),linear-gradient(150deg,#060716,#0b102b 46%,#08091b);color:#e8e9ff;font-family:var(--font-body)}.login-starfield{position:absolute;inset:0;pointer-events:none;opacity:.6;background-image:radial-gradient(1px 1px at 8% 14%,rgba(255,255,255,.95),transparent),radial-gradient(1px 1px at 22% 74%,rgba(154,137,255,.7),transparent),radial-gradient(1.2px 1.2px at 38% 34%,rgba(255,255,255,.9),transparent),radial-gradient(1px 1px at 51% 82%,rgba(66,165,255,.68),transparent),radial-gradient(1.4px 1.4px at 66% 18%,rgba(255,255,255,.9),transparent),radial-gradient(1px 1px at 80% 62%,rgba(154,137,255,.62),transparent),radial-gradient(1.2px 1.2px at 92% 28%,rgba(255,255,255,.9),transparent),radial-gradient(1.5px 1.5px at 30% 92%,rgba(128,236,255,.7),transparent);background-size:260px 260px;animation:star-drift 34s linear infinite,star-pulse 5.5s ease-in-out infinite alternate}.login-card{position:relative;width:100%;max-width:380px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:40px 34px 34px;border-radius:22px;background:#141632ad;border:1px solid rgba(158,166,255,.26);box-shadow:0 24px 70px #0000008c,0 0 0 1px #ffffff0d inset,0 0 32px #5c74ff38;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);animation:login-card-in .5s var(--ease-spring)}@keyframes login-card-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}.login-wordmark{height:46px;width:auto;margin-bottom:14px;filter:drop-shadow(0 0 18px rgba(120,231,255,.35))}.login-icon{width:52px;height:52px;border-radius:50%;margin-bottom:6px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#9a89ff47,#42a5ff38);border:1px solid rgba(158,166,255,.34);color:#c4bcff;box-shadow:0 0 24px #5c74ff4d}.login-card h1{font-family:var(--font-display);font-size:21px;margin:4px 0 2px;color:#faf9ff;letter-spacing:-.01em}.login-card p{font-size:14.5px;color:#a6a9cd;margin:0 0 20px}.login-card input{width:100%;padding:13px 16px;font-size:16px;text-align:center;letter-spacing:.04em;border-radius:13px;border:1px solid rgba(158,163,255,.3);background:#0a0b1e99;color:#e8e9ff;transition:border-color .16s ease,box-shadow .16s ease}.login-card input::placeholder{color:#6c709c}.login-card input:focus{outline:none;border-color:#9a89ff;box-shadow:0 0 0 3px #9a89ff38}.login-card input.err{border-color:#ff9d8f;box-shadow:0 0 0 3px #ff9d8f2e}.login-error{font-size:13.5px;color:#ff9d8f;margin-top:10px}.login-card .btn.primary{width:100%;justify-content:center;margin-top:18px;padding:13px 18px;font-size:16px}@media(pointer:coarse){.btn{min-height:44px;padding:9px 16px;font-size:15.8px}.topnav{padding-top:max(calc(8px + env(safe-area-inset-top,0px)),34px)}.topnav button{min-height:44px;padding:9px 10px}.icon-btn{width:50px;height:50px}.toolbar button{min-width:36px;height:34px;font-size:17px}.week-grid{grid-template-columns:repeat(5,minmax(230px,1fr));overflow-x:auto}}@media(max-width:1100px){.topnav{gap:7px;padding:7px 9px}.brand-wordmark{height:40px;width:auto}.nav-tabs{grid-template-columns:repeat(7,minmax(48px,1fr));gap:5px}.nav-tabs button{padding:9px 7px}.nav-tabs button>span:not(.nav-icon){display:none}.nav-icon{width:27px;height:27px;background:transparent}.nav-icon svg{width:22px;height:22px}.icon-btn{width:46px;height:46px}}@media(max-width:900px){.topnav{padding:8px 10px;flex-wrap:wrap}.brand-wordmark{height:38px;width:auto}.nav-tabs{order:3;width:100%;grid-template-columns:repeat(7,minmax(0,1fr))}.topnav button{font-size:15px;padding:8px 9px}.inline-search-open{order:3;width:100%;flex:1 1 100%}.library-controls,.library-subject-grid{grid-template-columns:1fr}.week-toolbar h2{font-size:20px;white-space:nowrap}.week-grid{grid-template-columns:repeat(5,minmax(0,1fr));overflow-x:hidden;gap:6px;padding-inline:6px}.day-col,.day-col-head{min-width:0}.lesson-card,.offday{min-height:auto}.tt-wrap{flex-direction:column}.tt-side{width:auto}.today-hero{flex-wrap:wrap;gap:10px}.today-ring svg{width:48px;height:48px}.month-grid{grid-template-columns:repeat(5,minmax(132px,1fr));overflow-x:auto}}@media(max-width:900px)and (min-width:701px){.week-grid .day-head{font-size:12px}.week-grid .sticky-note{min-height:58px;padding:7px;font-size:12px}.week-grid .lesson-card{height:270px}.week-grid .lesson-card .head{padding:6px 7px;font-size:11px}.week-grid .lesson-card .head .time{font-size:10.5px}.week-grid .lesson-card .titlebar{padding:6px 7px;font-size:11.5px}.week-grid .lesson-card .content,.week-grid .lesson-card .content *{font-size:12.2px!important;line-height:1.34}.week-grid .lesson-card .content{padding:7px 7px 13px;max-height:190px}.week-grid .lesson-card .content li:nth-child(n+3){display:none}}@media(max-width:600px){.topnav{flex-wrap:wrap;gap:6px;padding:6px 8px}.topnav .brand{flex:1 1 auto;padding:8px 14px}.brand-wordmark{height:26px}.icon-btn{width:36px;height:36px}.nav-tabs{order:3;width:100%;display:flex;grid-template-columns:unset;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.nav-tabs::-webkit-scrollbar{display:none}.nav-tabs button{flex:0 0 auto;padding:8px 12px}.week-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory}.day-col{min-width:84vw;scroll-snap-align:start}.week-toolbar .btn{white-space:nowrap;flex-shrink:0}.week-toolbar h2{font-size:17px}.list-row{flex-wrap:wrap}.list-row select{flex:1 1 auto;min-width:150px}.today-hero h1{font-size:25px}.month-grid{grid-template-columns:repeat(5,minmax(112px,1fr))}}@media(pointer:coarse){.topnav{padding-top:max(calc(8px + env(safe-area-inset-top,0px)),34px);padding-bottom:max(8px,env(safe-area-inset-bottom,0px))}}@media(hover:none){.topnav button:hover,.nav-tabs button:hover,.topnav button.brand:hover{transform:none}}.today-hero{display:flex;align-items:center;gap:22px;margin-bottom:8px}.today-ring{flex-shrink:0}.cycle-ring-num{font-family:var(--font-display);font-weight:700;font-size:23px;fill:var(--text-strong)}.today-hero-text{min-width:0}.today-hero h1{margin:0 0 3px;font-size:31px;font-family:var(--font-display);font-weight:700;letter-spacing:0}.today-hero p{margin:3px 0;font-size:16.5px;color:var(--muted);font-variant-numeric:tabular-nums}.today-hero .today-off{color:#9a6a1e;font-weight:700}.app.theme-dark .today-hero .today-off{color:#e0ac5a}.btn.today-edit-btn{background:#ffffffeb;color:#1c2033;border-color:#14142d24}.btn.today-edit-btn:hover{background:#fff;color:#1c2033}.app.theme-dark .btn.today-edit-btn{background:linear-gradient(180deg,#2d3063eb,#1c1f46e0);color:#e8e9ff;border-color:#9aa3ff47}.app.theme-dark .btn.today-edit-btn:hover{background:linear-gradient(180deg,#3a3e7cf2,#222652e6);color:#fff;border-color:#9aa3ff6b}.today-next{background:var(--chip-bg);display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;font-size:15.5px!important;font-weight:650;border:1px solid var(--border);box-shadow:var(--shadow-sm)}.today-next.now{background:var(--accent-soft);color:var(--accent-strong);font-weight:600}.mission-control-btn{position:relative;isolation:isolate;overflow:hidden;margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#815fff29,#27c3ff1f);border:1px solid rgba(116,92,255,.3);color:var(--accent-strong);border-radius:999px;padding:10px 18px;font-family:var(--font-display);font-size:15px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .2s var(--ease-spring),box-shadow .14s ease,background .14s ease}.mission-control-btn:after{content:"";position:absolute;inset:-40% auto -40% -55%;width:42%;z-index:-1;pointer-events:none;background:linear-gradient(100deg,transparent,rgba(126,92,255,.4),transparent);transform:skew(-18deg);transition:left .42s var(--ease-snap)}.mission-control-btn:hover:after{left:115%}.mission-control-btn:hover{transform:translateY(-2px) scale(1.03);box-shadow:var(--shadow-md)}.mission-control-btn.on{background:linear-gradient(135deg,#815fff52,#27c3ff3d)}@media(max-width:760px){.mission-control-btn{margin-left:0}}@keyframes mission-panel-in{0%{opacity:0;transform:translateY(-8px) scaleY(.96)}to{opacity:1;transform:none}}.mission-control-panel{transform-origin:top;animation:mission-panel-in .26s var(--ease-spring);background:linear-gradient(180deg,var(--surface-strong),var(--card-bg));border:1px solid rgba(116,92,255,.24);border-radius:16px;padding:14px 18px 16px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.mission-control-head{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-display);font-weight:700;font-size:14.5px;color:var(--accent-strong);letter-spacing:.3px;margin-bottom:8px}.mission-control-head span{display:inline-flex;align-items:center;gap:7px}.mission-control-head button{background:none;border:none;cursor:pointer;color:var(--muted);padding:2px}.mission-control-head button:hover{color:var(--text)}.mission-control-body{display:flex;flex-direction:column;gap:6px}.mission-text{font-size:15.5px;line-height:1.55;color:var(--text);font-family:var(--font-display)}.mission-text p{margin:0 0 10px;white-space:pre-wrap}.mission-text p:last-child{margin-bottom:0}.mission-text strong{color:var(--accent-strong);font-weight:700}.mission-text.mission-preparing{color:var(--muted);font-style:italic;margin:0}.mission-error{color:#b6491f;font-size:14.5px;margin:0}.app.theme-dark .mission-error{color:#ff9868}.mission-cursor{display:inline-block;width:7px;height:15px;margin-top:-4px;background:var(--accent);vertical-align:text-bottom;animation:cursor-blink .9s steps(1) infinite}@keyframes cursor-blink{50%{opacity:0}}.today-card{height:auto;min-height:220px;margin-bottom:14px}.inline-status-icon{display:inline-flex;align-items:center;justify-content:center}.month-grid{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:22px;grid-auto-rows:minmax(clamp(82px,calc((100vh - 250px) / var(--month-rows, 6)),190px),1fr);gap:7px;padding:10px 14px 16px}.month-cell-blank{background:none;border:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;cursor:default;pointer-events:none}.month-grid>*{animation:month-tile-in .28s var(--ease-snap)}.month-grid>*:nth-child(5n+2){animation-delay:25ms}.month-grid>*:nth-child(5n+3){animation-delay:.05s}.month-grid>*:nth-child(5n+4){animation-delay:75ms}.month-grid>*:nth-child(5n){animation-delay:.1s}@keyframes month-tile-in{0%{transform:translateY(7px) scale(.992)}to{transform:none}}.month-head{font-weight:700;font-size:15px;color:var(--muted);padding:1px 5px;font-family:var(--font-display);align-self:end}.month-cell{background:linear-gradient(180deg,var(--surface-strong),var(--card-bg));border-radius:14px;min-height:0;padding:7px 8px;box-shadow:var(--shadow-sm);border:1px solid var(--border);cursor:pointer;overflow:hidden;transition:box-shadow .22s ease,transform .26s var(--ease-spring),border-color .18s ease,filter .18s ease;transform-origin:center}.month-grid button.month-cell{width:100%;color:inherit;font:inherit;text-align:left}.month-cell:hover{box-shadow:var(--shadow-md);border-color:#745cff57;transform:translateY(-4px) scale(1.006);filter:saturate(1.05)}.month-cell:active{transform:translateY(0) scale(.985)}.month-date{font-size:15px;font-weight:700;display:flex;justify-content:space-between;margin-bottom:3px;font-variant-numeric:tabular-nums}.month-rot{font-weight:600;color:var(--muted);font-size:12px}.month-off{font-size:12px;color:#9a6a1e;background:var(--note-bg);border-radius:4px;padding:2px 5px;margin-bottom:3px}.month-chip{color:#fff;font-size:12.3px;border-radius:999px;padding:2px 7px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 7px 16px #00000024;transition:transform .22s var(--ease-spring),filter .16s ease}.month-cell:hover .month-chip{transform:translate(2px);filter:brightness(1.04)}.month-cell:hover .month-chip:nth-of-type(2){transition-delay:25ms}.month-cell:hover .month-chip:nth-of-type(3){transition-delay:.05s}.day-head{position:relative}.day-menu-btn{border:none;background:none;cursor:pointer;color:var(--muted);font-size:15px;padding:0 5px;border-radius:4px}.day-menu-btn:hover{background:var(--hover);color:var(--text-strong)}.day-menu{left:0;right:auto;top:20px;min-width:250px}.exp-label{display:block;font-size:13.5px;font-weight:600;color:var(--muted);letter-spacing:.5px;margin-bottom:5px}.export-modal{width:min(560px,94vw)}.export-body{padding:18px;overflow-y:auto}.export-section{margin:0 0 16px}.export-subjects{display:flex;flex-wrap:wrap;gap:7px}.export-subjects .btn{box-shadow:none}.export-subjects .btn.selected{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;border-color:transparent;box-shadow:var(--shadow-glow)}.export-notes-toggle{border-top:1px solid var(--border);margin-top:4px;padding-top:13px}.print-root{display:none}@media print{.topnav,.week-toolbar,.week-grid,.week-edit-hint,.modal-backdrop,.page,.skip-link{display:none!important}main{overflow:visible}html,body{background:#fff!important}.app{height:auto;display:block}.cosmos-layer{display:none}.print-root{display:block;font-family:var(--font-body);font-size:12pt;color:#141426;background:#fff}.pr-title{font-family:var(--font-body);font-size:17px;font-weight:600;margin:0 0 7px;color:#111229}.pr-title b{font-weight:700}.pr-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3mm;align-items:start}.layout-day .pr-grid{display:block;border:none}.layout-day .pr-day{page-break-after:always;border:1px solid #c5cae5;margin-bottom:6mm}.pr-day{min-width:0;border:1px solid #c5cae5;border-radius:3mm;overflow:visible;break-inside:auto;page-break-inside:auto;background:#fff}.pr-dayhead{background:#eef2ff;border-bottom:1px solid #c5cae5;font-family:var(--font-body);font-weight:700;padding:5px 7px;font-size:12pt}.pr-note{background:#f2f6ff;min-height:26px;padding:5px 7px;font-size:12pt;border-bottom:1px solid #c5cae5;white-space:pre-wrap}.pr-off{text-align:center;color:#666;font-weight:700;padding:14px 4px}.pr-off small{display:block;font-weight:400}.pr-block{border-bottom:1px solid #d8dcef;break-inside:avoid-page;page-break-inside:avoid;overflow:visible;background:#fff}.pr-subj{color:#fff;font-family:var(--font-body);font-weight:700;font-size:12pt;letter-spacing:.2px;padding:5px 7px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.pr-lt{font-weight:700;padding:5px 7px 0;font-size:12pt}.pr-html{padding:4px 7px 7px;font-family:var(--font-body);font-size:12pt;line-height:1.4;overflow:visible}.pr-html,.pr-html *{font-family:var(--font-body)!important;font-size:12pt!important}.pr-html ul{margin:3px 0;padding-left:16px}.pr-html p{margin:3px 0}.pr-html img{max-width:100%}.pr-atts{font-size:10pt;color:#444;padding:2px 7px 5px;font-weight:600}.pr-footer{margin-top:4mm;font-size:9pt;color:#777;text-align:center}}
