.account-dialog{position:fixed;z-index:120;inset:0;display:flex;align-items:center;justify-content:center;padding:18px;opacity:0;visibility:hidden;transition:opacity .2s ease}
.account-dialog.visible{opacity:1;visibility:visible}
.account-dialog-backdrop{position:absolute;inset:0;border:0;background:rgba(3,6,11,.78);backdrop-filter:blur(7px)}
.account-card{position:relative;width:min(100%,500px);max-height:calc(100dvh - 36px);overflow:auto;padding:26px;border:1px solid var(--line);border-radius:24px;background:#111722;box-shadow:0 30px 90px rgba(0,0,0,.55);transform:translate3d(0,12px,0) scale(.985);transition:transform .22s ease}
.account-dialog.visible .account-card{transform:none}
.account-card-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px}
.account-card-head h2{margin:0;font:800 1.55rem/1.1 'Manrope',sans-serif}
.account-card-head button{border:0;background:transparent;color:var(--text);font-size:2rem;line-height:1}
.account-card form,.account-card label{display:flex;flex-direction:column}
.account-card form{gap:14px}
.account-card label{gap:7px;color:var(--muted);font-size:.76rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.account-card input,.account-card select{width:100%;height:48px;border:1px solid var(--line);border-radius:12px;background:#0b0f17;color:var(--text);padding:0 14px;font:500 1rem 'DM Sans',sans-serif;text-transform:none;letter-spacing:0}
.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.account-hint{margin:2px 0;color:var(--muted);font-size:.78rem}
.creator-note{display:none;width:100%;margin:0 0 8px;text-align:center;color:var(--muted);font-size:.62rem;letter-spacing:.04em;opacity:.65}
.menu-bottom{display:flex;align-items:center;gap:10px;margin-left:auto}
.account-open{overflow:hidden}
.email-verification{color:var(--accent);font-size:.68rem;font-weight:600;text-transform:none;letter-spacing:0}
.auth-error.success{color:var(--accent)}
.optional{margin-left:5px;color:var(--muted);font-size:.62rem;font-weight:500;text-transform:none;letter-spacing:0}.account-card .notify-option{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:11px;padding:12px;border:1px solid var(--line);border-radius:13px;background:rgba(142,227,200,.045);text-transform:none;letter-spacing:0;cursor:pointer}.account-card .notify-option input{width:20px;height:20px;accent-color:var(--accent)}.notify-option span{display:flex;flex-direction:column;gap:3px}.notify-option strong{color:var(--text);font-size:.82rem}.notify-option small{color:var(--muted);font-size:.7rem;font-weight:500;line-height:1.35}
.auth-card,.account-card,.controls,.live,.lesson,footer{animation:softSettle .48s cubic-bezier(.2,.8,.2,1) both}.auth-card input:focus,.auth-card select:focus,.account-card input:focus,.account-card select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px rgba(142,227,200,.12);transform:translateY(-1px)}.primary-button,.account-button,.logout-button,.menu-button{transition:transform .2s ease,background-color .3s ease,box-shadow .3s ease}.primary-button:active,.account-button:active,.logout-button:active,.menu-button:active{transform:scale(.97)}.lesson{transition:border-color .25s ease,background-color .3s ease,box-shadow .25s ease}@keyframes softSettle{from{opacity:0;transform:translate3d(0,9px,0)}to{opacity:1;transform:none}}
.schedule{overflow-anchor:none}
@media(max-width:820px){.schedule{position:relative}.schedule .day.measuring{display:block;position:absolute;inset:0 0 auto;visibility:hidden;pointer-events:none;width:100%;animation:none!important}}
@media(max-width:820px) and (display-mode:standalone){.shell{padding-top:calc(env(safe-area-inset-top) + 22px)}}
@media(max-width:820px){.day-nav-actions{display:flex;gap:5px}.day-nav .week-jump{width:34px;background:transparent;color:var(--muted);font-size:1.05rem}.day-nav .week-jump:active{background:rgba(142,227,200,.1);color:var(--accent)}}
@media(max-width:820px){.schedule{contain:layout}.schedule .day{will-change:auto}.schedule .day.active,.schedule.moving-next .day.active,.schedule.moving-prev .day.active{animation:none!important}.status.visible{display:block;position:fixed;z-index:75;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));width:max-content;max-width:calc(100% - 32px);transform:translateX(-50%);margin:0;padding:11px 15px;border:1px solid var(--line);border-radius:12px;background:#111722;box-shadow:0 12px 35px rgba(0,0,0,.4);font-size:.78rem}.status.error{margin:0}}
.auth-card .auth-step{display:none;flex-direction:column;gap:15px;animation:onboardIn .32s cubic-bezier(.2,.8,.2,1) both}.auth-card .auth-step.active{display:flex}.auth-card #registerFields{display:block}.auth-card #registerFields[hidden]{display:none}.auth-step h3{margin:0 0 4px;font:700 1.05rem 'Manrope',sans-serif}.step-kicker{color:var(--accent);font-size:.65rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.register-progress{display:flex;justify-content:center;gap:6px}.register-progress[hidden]{display:none}.register-progress i{width:7px;height:7px;border-radius:8px;background:var(--line);transition:width .25s ease,background .25s ease}.register-progress i.active{width:22px;background:var(--accent)}.auth-actions{display:flex;align-items:center;gap:10px}.auth-actions .primary-button{flex:1}.auth-actions .auth-back{margin:0;padding:12px}.setup-complete{position:fixed;z-index:150;inset:0;display:flex;visibility:hidden;opacity:0;align-items:center;justify-content:center;flex-direction:column;background:#080b12;color:#f4f6fb;transition:opacity .3s ease}.setup-complete.visible{visibility:visible;opacity:1}.setup-logo{font:800 clamp(4rem,20vw,8rem)/1 'Manrope',sans-serif;letter-spacing:-.08em;color:#8ee3c8;animation:setupPulse 1.5s ease-in-out infinite}.setup-complete p{margin:22px 0 14px;color:#949cad;font-size:.8rem}.setup-progress{width:min(280px,70vw);height:4px;overflow:hidden;border-radius:5px;background:rgba(255,255,255,.1)}.setup-progress i{display:block;width:100%;height:100%;border-radius:inherit;background:#8ee3c8;transform:scaleX(0);transform-origin:left}.setup-complete.visible .setup-progress i{animation:setupLoad 5s linear forwards}@keyframes onboardIn{from{opacity:0;transform:translate3d(24px,0,0)}to{opacity:1;transform:none}}@keyframes setupLoad{to{transform:scaleX(1)}}@keyframes setupPulse{50%{opacity:.65;transform:scale(.985)}}
.auth-gate{background:radial-gradient(circle at 30% 0,#19283d 0,transparent 45%),var(--bg)}.auth-card{background:var(--panel);border-color:var(--line);box-shadow:0 24px 70px rgba(0,0,0,.28)}.auth-card input,.auth-card select{background-color:#0c1018;border-color:var(--line)}.setup-complete{overflow:hidden;background:radial-gradient(circle at 50% 30%,rgba(142,227,200,.12) 0,transparent 45%),var(--bg);color:var(--text)}.setup-logo{display:flex;gap:.02em}.setup-logo i{display:block;font-style:normal;animation:letterDance 1.15s cubic-bezier(.4,0,.2,1) infinite}.setup-logo i:nth-child(2){animation-delay:.13s;color:var(--accent2)}.setup-logo i:nth-child(3){animation-delay:.26s}.setup-complete.visible:before,.setup-complete.visible:after{content:"";position:absolute;width:9px;height:9px;border-radius:50%;background:var(--accent);opacity:.55;animation:orbFloat 2.4s ease-in-out infinite}.setup-complete.visible:before{left:18%;top:26%}.setup-complete.visible:after{right:18%;bottom:27%;background:var(--accent2);animation-delay:-1.2s}.setup-progress i{background:linear-gradient(90deg,var(--accent),var(--accent2),var(--accent))}@keyframes letterDance{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-14px) rotate(-7deg)}50%{transform:translateY(2px) rotate(4deg)}75%{transform:translateY(-6px) rotate(-2deg)}}@keyframes orbFloat{50%{transform:translate3d(25px,-22px,0) scale(1.7);opacity:.2}}
@media(max-width:820px){.menu-bottom{width:100%;margin:auto 0 0;display:flex;flex-direction:column}.menu-bottom button{width:100%}.controls .menu-bottom .logout-button{margin-top:0}.creator-note{display:block;margin:0;text-align:center}}
@media(max-width:520px){.account-card{padding:22px}.account-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.account-dialog,.account-card{transition:none}}
@media(max-width:820px){.controls .menu-title{position:sticky;z-index:4;top:0;flex:0 0 auto;background:#111722}.menu-title>button,.account-card-head>button{position:relative;z-index:6;display:grid;place-items:center;flex:0 0 46px;width:46px;height:46px;padding:0;border-radius:12px;background:rgba(255,255,255,.07);touch-action:manipulation}.account-dialog{align-items:flex-start;padding:calc(env(safe-area-inset-top) + 12px) 12px calc(env(safe-area-inset-bottom) + 12px)}.account-card{width:min(100%,440px);max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 24px);padding:18px 20px 20px;border-radius:20px}.account-card-head{position:sticky;z-index:5;top:-18px;margin:-18px -20px 14px;padding:18px 20px 12px;background:#111722;border-bottom:1px solid var(--line)}.account-card-head h2{font-size:1.3rem}.account-card form{gap:10px}.account-card input,.account-card select{height:44px}.account-hint{font-size:.72rem}.account-card .notify-option{padding:10px}}
html[data-theme="white"] .controls .menu-title,html[data-theme="white"] .account-card-head{background:#fff}
html[data-theme="dark"] .controls .menu-title,html[data-theme="dark"] .account-card-head{background:#0c0d0f}
.controls{animation:none!important}
.admin-dashboard[hidden]{display:none!important}.admin-dashboard{display:flex;flex-direction:column;gap:18px;animation:softSettle .45s ease both}.admin-mode .hero,.admin-mode .controls,.admin-mode .menu-backdrop,.admin-mode #status,.admin-mode .week-context,.admin-mode .day-nav,.admin-mode .schedule,.admin-mode footer{display:none!important}.admin-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:25px;border:1px solid var(--line);border-radius:22px;background:var(--panel)}.admin-head h2{margin:0;font:800 clamp(1.7rem,4vw,2.5rem)/1 'Manrope',sans-serif}.admin-head>div>p:last-child{margin:10px 0 0;color:var(--muted)}.admin-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.admin-stats article,.admin-panel{border:1px solid var(--line);border-radius:18px;background:var(--panel)}.admin-stats article{display:flex;flex-direction:column;gap:8px;padding:18px}.admin-stats small{color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.1em}.admin-stats strong{font:800 1.55rem 'Manrope',sans-serif}.admin-panel{padding:20px}.admin-panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.admin-panel-title h3{margin:0 0 4px;font:700 1.05rem 'Manrope',sans-serif}.admin-panel-title small{color:var(--muted)}.admin-panel-title>button{width:40px;height:40px;border:1px solid var(--line);border-radius:11px;background:var(--soft-accent);color:var(--accent);font-size:1.2rem}.admin-list{display:flex;flex-direction:column}.admin-list article{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 2px;border-top:1px solid var(--line)}.admin-list article>div{display:flex;min-width:0;flex-direction:column;gap:4px}.admin-list article strong,.admin-list article small{overflow-wrap:anywhere}.admin-list article small,.admin-empty{color:var(--muted)}.admin-list button{border:0;border-radius:10px;padding:10px 13px;background:var(--accent);color:#07110e;font-weight:700}.admin-badge{flex:0 0 auto;padding:6px 9px;border-radius:8px;background:var(--soft-accent);color:var(--accent);font-size:.68rem;font-weight:700}
@media(max-width:700px){.admin-mode .shell{width:min(100% - 24px,680px)}.admin-head{align-items:flex-start;flex-direction:column}.admin-head .logout-button{width:100%}.admin-stats{grid-template-columns:1fr 1fr}.admin-list article{align-items:flex-start;flex-direction:column}.admin-list button{width:100%}.admin-badge{align-self:flex-start}}

/* Login and access pages */
html .auth-gate,html[data-theme] .auth-gate{color-scheme:light;--bg:#f3f7f6;--panel:#fff;--surface:#fff;--input:#f6f8f8;--line:#dce5e2;--text:#223b35;--muted:#61736d;--accent:#24745e;--accent2:#8173b5;--soft-accent:#e7f1ec;color:var(--text);overflow-y:auto;padding:clamp(20px,5vw,72px);background:radial-gradient(ellipse at 12% 20%,#e0eee6,transparent 60%),var(--bg)}
.auth-layout{width:min(1080px,100%);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,440px);gap:clamp(40px,7vw,100px);align-items:center;margin:auto}
.auth-welcome{min-width:0}.auth-brand{display:flex;gap:12px;align-items:center;margin-bottom:64px;font:800 1.1rem 'Manrope',sans-serif;letter-spacing:-.03em}.auth-brand img{border-radius:12px}.auth-brand>span>span{font-weight:500;color:var(--muted);margin-left:6px}
.auth-welcome h2{font:800 clamp(2.4rem,4.5vw,3.8rem)/1.12 'Manrope',sans-serif;letter-spacing:-.055em;margin:18px 0}.auth-welcome h2>span{color:var(--accent)}.auth-description{max-width:380px;color:var(--muted);font-size:1rem;line-height:1.8;margin:0}
.auth-preview{max-width:380px;margin-top:38px;padding:20px;border:1px solid var(--line);border-radius:18px;background:var(--soft-accent);transform:rotate(-3deg)}.auth-preview-head{display:flex;justify-content:space-between;gap:10px;font-size:.6rem;font-weight:700;letter-spacing:.1em;color:var(--muted)}.auth-preview-head span:last-child{color:var(--accent);letter-spacing:0}.auth-preview-days,.auth-preview-blocks{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.auth-preview-days{margin:22px 0 12px;color:var(--muted);font-size:.6rem;text-align:center}.auth-preview-blocks i{height:33px;border-radius:6px;background:var(--accent);opacity:.24}.auth-preview-blocks i:nth-child(3n){background:var(--accent2);opacity:.4}.auth-preview-blocks i:nth-child(4n){opacity:.07}.auth-welcome-note{color:var(--muted);font-size:.7rem;margin:30px 0 0}
.auth-layout .auth-card{width:100%;padding:32px;border-radius:24px;background:#fff;box-shadow:0 20px 65px rgba(44,77,64,.07)}.auth-build-notice{display:flex;gap:10px;padding:14px;margin-bottom:30px;border:1px solid #ecdfbe;border-radius:12px;background:#fcf7eb;color:#805b1c}.auth-build-dot{flex:0 0 7px;height:7px;margin-top:5px;border-radius:50%;background:currentColor}.auth-build-notice strong{display:block;font-size:.76rem;line-height:1.5}.auth-build-notice p{font-size:.73rem;line-height:1.65;margin:5px 0 0;color:var(--muted)}.auth-layout .auth-card h2{font-size:1.9rem;line-height:1.15}.auth-layout .auth-card>p:not(.eyebrow){font-size:.9rem;margin-bottom:26px}.auth-layout .auth-card label{text-transform:none;letter-spacing:0;font-size:.8rem;color:var(--text)}.auth-layout .auth-card input,.auth-layout .auth-card select{height:52px}.auth-layout .primary-button{min-height:50px;font-size:.9rem;color:#fff}.auth-layout .primary-button:hover{background:#1c614e}.auth-layout .auth-error{color:#b33042}.auth-layout .auth-error.success{color:var(--accent)}.auth-layout input:focus,.auth-layout select:focus{box-shadow:0 0 0 3px rgba(36,116,94,.12)}.auth-layout .text-button{line-height:1.6}.auth-layout #authSwitch{width:100%;border-top:1px solid var(--line);padding:22px 0 0;margin-top:24px}.auth-layout button:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
html[data-theme="white"] .auth-build-notice{color:#805315}
@media(max-width:760px){html .auth-gate,html[data-theme] .auth-gate{background:#f7faf8;padding:28px 24px;padding-top:max(28px,env(safe-area-inset-top));padding-bottom:max(28px,env(safe-area-inset-bottom))}.auth-layout{max-width:380px;grid-template-columns:minmax(0,1fr);gap:28px}.auth-brand{margin:0;font-size:1rem;gap:10px}.auth-brand img{width:36px;height:36px;border-radius:10px}.auth-welcome h2,.auth-welcome>.eyebrow,.auth-description,.auth-preview,.auth-welcome-note{display:none}html .auth-layout .auth-card{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;animation:none}.auth-card>.eyebrow{display:none}.auth-build-notice{padding:12px;margin-bottom:26px;border-radius:10px}.auth-build-notice p{font-size:.72rem;line-height:1.5}.auth-layout .auth-card h2{font-size:1.8rem}.auth-layout .auth-card>p:not(.eyebrow){margin:10px 0 24px}.auth-layout .auth-card input,.auth-layout .auth-card select{background-color:#fff}.auth-layout #authSwitch{margin-top:20px;padding-top:18px}.auth-layout #authError:empty{display:none}}
@media(max-width:360px){html .auth-gate,html[data-theme] .auth-gate{padding-left:18px;padding-right:18px}.auth-build-notice strong{font-size:.72rem}}
@media(prefers-reduced-motion:reduce){.auth-layout .auth-card,.auth-layout .auth-step{animation:none}.auth-layout input,.auth-layout select,.auth-layout button{transition:none}}

/* Quiet background motion, separate from the interactive login content. */
.auth-particles{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.auth-layout{position:relative;z-index:1}
.auth-particles i{position:absolute;display:block;width:12px;height:12px;border:1px solid rgba(36,116,94,.22);border-radius:50%;animation:authFloat 19s ease-in-out infinite alternate;animation-play-state:paused}
.auth-gate.visible .auth-particles i{animation-play-state:running}
.auth-particles i:nth-child(1){left:6%;top:19%;width:22px;height:22px;animation-delay:-6s}
.auth-particles i:nth-child(2){left:43%;top:9%;width:7px;height:7px;border:0;background:rgba(36,116,94,.18);animation-duration:23s;animation-delay:-11s}
.auth-particles i:nth-child(3){right:7%;top:29%;width:16px;height:16px;border-radius:4px;border-color:rgba(129,115,181,.25);animation-duration:26s;animation-delay:-8s}
.auth-particles i:nth-child(4){left:12%;bottom:13%;width:8px;height:8px;border:0;background:rgba(36,116,94,.17);animation-duration:21s;animation-delay:-15s}
.auth-particles i:nth-child(5){left:49%;bottom:8%;width:18px;height:18px;border-radius:5px;border-color:rgba(129,115,181,.22);animation-duration:28s;animation-delay:-4s}
.auth-particles i:nth-child(6){right:4%;bottom:19%;width:10px;height:10px;animation-duration:24s;animation-delay:-18s}
@keyframes authFloat{from{transform:translate3d(0,0,0) rotate(-12deg)}to{transform:translate3d(12px,-22px,0) rotate(24deg)}}
@media(max-width:760px){.auth-particles i:nth-child(2),.auth-particles i:nth-child(4),.auth-particles i:nth-child(5){display:none}.auth-particles i{opacity:.55}.auth-particles i:nth-child(1){left:2%;top:12%;width:14px;height:14px}.auth-particles i:nth-child(3){right:2%;top:47%;width:10px;height:10px}.auth-particles i:nth-child(6){right:3%;bottom:8%}}
@media(prefers-reduced-motion:reduce){.auth-gate .auth-particles i{animation:none}}

#verifySetup{display:flex;flex-direction:column;gap:16px}#verifySetup[hidden],#authForm[hidden],#authSwitch[hidden]{display:none!important}#verifySetup .text-button{margin:0}#verifySetup .account-hint{line-height:1.6}

#untisButton[hidden]{display:none!important}#untisDialog{width:min(440px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:24px;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--text);box-shadow:var(--shadow)}#untisDialog::backdrop{background:var(--overlay)}.untis-heading{display:flex;align-items:start;justify-content:space-between;gap:12px}.untis-heading h2{margin:0;font:800 1.5rem 'Manrope',sans-serif}#untisDialog p{font-size:.85rem;line-height:1.6;color:var(--muted)}#untisDialog label{display:flex;flex-direction:column;gap:7px;margin:14px 0;font-size:.8rem;font-weight:700}#untisDialog input{width:100%;min-width:0;padding:13px;border:1px solid var(--line);border-radius:10px;background:var(--input);color:var(--text);font:inherit}#untisDialog summary{cursor:pointer;font-size:.85rem;color:var(--accent)}#untisStatus{border-top:1px solid var(--line);padding-top:14px}

#adminSslButton[hidden]{display:none!important}#sslDialog{width:min(520px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:24px;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--text);box-shadow:var(--shadow)}#sslDialog::backdrop{background:var(--overlay)}#sslDialog p{font-size:.85rem;line-height:1.6;color:var(--muted)}#sslDialog label{display:flex;flex-direction:column;gap:7px;margin:14px 0;font-size:.8rem;font-weight:700}#sslDialog input{width:100%;min-width:0;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--input);color:var(--text);font:inherit}#sslDialog input::file-selector-button{margin-right:10px;border:0;border-radius:6px;padding:8px;background:var(--surface);color:var(--text);cursor:pointer}#sslStatus{overflow-wrap:anywhere}#sslVisit{color:var(--accent)}#installSsl:disabled{opacity:.6;cursor:wait}.admin-head{flex-wrap:wrap}
