:root{--teacher-ink:#f1e8dc;--teacher-muted:#9897aa;--teacher-line:rgba(255,255,255,.11);--teacher-panel:rgba(21,24,34,.74);--teacher-gold:#e8b887;--teacher-violet:#998bd8}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#0d1017;color:var(--teacher-ink);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC",sans-serif;overflow-x:hidden}body{padding:env(safe-area-inset-top) 0 calc(92px + env(safe-area-inset-bottom))}.ambient{position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 78% 8%,rgba(101,79,148,.18),transparent 34%),radial-gradient(circle at 16% 72%,rgba(184,126,82,.12),transparent 30%),linear-gradient(165deg,#11151e,#0b0e14 56%,#111018);z-index:0}.ambient:after{content:"";position:absolute;inset:0;opacity:.14;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E")}.app-shell{position:relative;z-index:1;max-width:900px;margin:auto;padding:26px 18px}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.eyebrow{margin:0 0 7px;text-transform:uppercase;letter-spacing:.14em;font-size:12px;color:#b8b4c4}.eyebrow span{border:1px solid rgba(255,255,255,.18);border-radius:99px;padding:3px 7px;margin-left:5px;font-size:9px}.topbar h1{font-family:"Songti SC",serif;font-weight:500;font-size:32px;margin:0 0 4px}.topbar>div>p:last-child{margin:0;color:var(--teacher-muted);font-size:13px}.glass-button,.zoom-controls button{color:var(--teacher-ink);background:rgba(255,255,255,.055);border:1px solid var(--teacher-line);border-radius:99px;padding:10px 14px}.context-strip{display:flex;align-items:center;gap:13px;margin:24px 0 17px;padding:14px 16px;border:1px solid rgba(153,139,216,.24);border-radius:18px;background:linear-gradient(110deg,rgba(99,81,146,.17),rgba(255,255,255,.025));box-shadow:0 12px 40px rgba(0,0,0,.14)}.context-orb{width:31px;height:31px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff1dc,#a58bd0 32%,#41335d 62%,transparent 66%);box-shadow:0 0 24px rgba(168,139,215,.45)}.context-strip div:last-child{display:grid;gap:3px}.context-strip small{color:#a79bd4}.context-strip strong{font-size:13px;font-weight:450}.schedule-frame{border:1px solid var(--teacher-line);border-radius:25px;background:var(--teacher-panel);box-shadow:0 28px 70px rgba(0,0,0,.28);overflow:hidden;backdrop-filter:blur(22px)}.schedule-toolbar{height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 12px 0 16px;border-bottom:1px solid var(--teacher-line)}.legend{font-size:10px;color:var(--teacher-muted);white-space:nowrap}.legend i{display:inline-block;width:7px;height:7px;border-radius:50%;margin:0 4px 0 9px}.legend i:first-child{margin-left:0}.legend .now{background:var(--teacher-gold);box-shadow:0 0 10px var(--teacher-gold)}.legend .changed{background:var(--teacher-violet)}.legend .pending{border:1px dashed #d2aa6f}.zoom-controls{display:flex;gap:5px}.zoom-controls button{padding:6px 10px;font-size:12px}.schedule-viewport{height:min(63vh,620px);overflow:hidden;touch-action:none;position:relative}.schedule-canvas{position:absolute;left:0;top:0;width:760px;min-height:720px;transform-origin:0 0;display:grid;grid-template-columns:68px repeat(5,138px);grid-template-rows:70px auto;will-change:transform;background:rgba(7,9,14,.24)}.corner-cell,.day-head{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--teacher-line);border-bottom:1px solid var(--teacher-line);font-family:"Songti SC",serif}.corner-cell{font-size:12px;color:var(--teacher-muted)}.corner-cell span{margin-top:5px}.day-head{font-size:25px}.day-head small{font-family:inherit;font-size:9px;color:var(--teacher-muted);margin-top:5px}.day-head.today{color:#f4d4af;background:linear-gradient(180deg,rgba(232,184,135,.11),transparent)}.schedule-rows{grid-column:1/7;display:grid;grid-template-columns:68px repeat(5,138px);grid-template-rows:repeat(8,78px)}.period{border-right:1px solid var(--teacher-line);border-bottom:1px solid var(--teacher-line);display:flex;align-items:center;justify-content:center;color:var(--teacher-muted);font-family:"Songti SC",serif}.slot{position:relative;border-right:1px solid var(--teacher-line);border-bottom:1px solid var(--teacher-line);padding:7px}.course{width:100%;height:100%;border:1px solid rgba(255,255,255,.1);border-radius:13px;background:linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.025));color:var(--teacher-ink);text-align:left;padding:10px;display:flex;flex-direction:column;justify-content:center;gap:4px;transition:.25s ease}.course strong{font-size:14px;font-weight:520}.course small{font-size:10px;color:var(--teacher-muted)}.course.current{border-color:rgba(232,184,135,.55);box-shadow:inset 0 0 22px rgba(232,184,135,.09),0 0 18px rgba(232,184,135,.1)}.course.current:after{content:"当前";position:absolute;right:11px;top:10px;font-size:8px;color:var(--teacher-gold)}.course.changed{border-color:rgba(153,139,216,.48)}.course.changed:after{content:"调";position:absolute;right:11px;top:10px;font-size:9px;color:#bcb0ed}.course.pending{border-style:dashed;border-color:rgba(232,184,135,.45)}.gesture-hint{text-align:center;color:#777789;font-size:10px;margin:12px}.bottom-nav{position:fixed;z-index:10;left:50%;bottom:calc(10px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(calc(100% - 22px),700px);height:70px;border:1px solid var(--teacher-line);border-radius:25px;background:rgba(16,19,27,.88);backdrop-filter:blur(24px);display:flex;justify-content:space-around;align-items:center;box-shadow:0 18px 50px rgba(0,0,0,.38)}.bottom-nav button{border:0;background:none;color:#838397;display:grid;gap:5px;place-items:center;font-size:9px}.bottom-nav b{font-size:15px;font-weight:450}.bottom-nav .active{color:var(--teacher-gold)}.bottom-nav .capture b{display:grid;place-items:center;width:43px;height:43px;border:1px solid rgba(232,184,135,.6);border-radius:50%;font-size:25px;color:#ffe0bc;box-shadow:0 0 22px rgba(232,184,135,.22)}.bottom-nav .capture span{display:none}.course-sheet{width:min(calc(100% - 24px),520px);border:1px solid var(--teacher-line);border-radius:28px;background:#151822;color:var(--teacher-ink);padding:26px;box-shadow:0 25px 90px rgba(0,0,0,.55)}.course-sheet::backdrop{background:rgba(4,6,10,.68);backdrop-filter:blur(7px)}.sheet-close{position:absolute;right:18px;top:14px;border:0;background:none;color:#aaa;font-size:27px}.course-sheet h2{font-family:"Songti SC",serif;font-weight:500}.ai-brief{padding:15px;border:1px solid rgba(153,139,216,.25);border-radius:17px;background:rgba(118,94,171,.1)}.ai-brief small{color:#aa9ddd}.ai-brief p{margin:8px 0 0;font-size:13px}.sheet-actions{display:flex;gap:9px;margin-top:18px}.sheet-actions button{flex:1;border:1px solid var(--teacher-line);border-radius:15px;padding:12px;background:rgba(255,255,255,.05);color:var(--teacher-ink)}
@media(max-width:560px){.app-shell{padding:20px 12px}.topbar h1{font-size:27px}.context-strip{margin-top:18px}.schedule-frame{border-radius:21px}.schedule-viewport{height:60vh}.legend{font-size:9px}.topbar .glass-button{font-size:11px;padding:8px 11px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Teacher AI SaaS theme: monochrome first, violet only for AI and active states. */
:root{--teacher-ink:#f5f5f5;--teacher-muted:#85858d;--teacher-line:rgba(255,255,255,.105);--teacher-panel:#111216;--teacher-gold:#f4f4f5;--teacher-violet:#8b5cf6;--teacher-violet-soft:rgba(139,92,246,.1)}
html,body{background:#090a0c;color:var(--teacher-ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC",sans-serif;letter-spacing:-.01em}.ambient{background:radial-gradient(circle at 74% -8%,rgba(139,92,246,.07),transparent 30%),#090a0c}.ambient:after{opacity:.025}.app-shell{max-width:980px;padding:34px 22px}.topbar h1{font-family:inherit;font-weight:590;font-size:30px;letter-spacing:-.04em}.eyebrow{color:#85858d;font-size:11px}.eyebrow span{border-color:var(--teacher-line);border-radius:6px;color:#c4c4c8}.glass-button,.zoom-controls button{color:#d8d8dc;background:#111216;border-color:var(--teacher-line);border-radius:10px;padding:9px 13px;transition:background .18s,border-color .18s}.glass-button:hover,.zoom-controls button:hover{background:#191a1f;border-color:rgba(255,255,255,.18)}
.context-strip{margin-top:30px;border-color:rgba(139,92,246,.22);border-radius:12px;background:rgba(139,92,246,.045);box-shadow:0 0 32px rgba(139,92,246,.035)}.context-orb{width:26px;height:26px;border-radius:8px;background:var(--teacher-violet-soft);border:1px solid rgba(139,92,246,.35);box-shadow:0 0 18px rgba(139,92,246,.12);position:relative}.context-orb:after{content:"AI";position:absolute;inset:0;display:grid;place-items:center;color:#b69cff;font-size:8px;font-weight:700;letter-spacing:.08em}.context-strip small{color:#a78bfa}.context-strip strong{font-weight:470}.schedule-frame{border-radius:14px;background:var(--teacher-panel);box-shadow:0 20px 50px rgba(0,0,0,.2);backdrop-filter:none}.schedule-toolbar{background:#0e0f12}.legend .now{background:#8b5cf6;box-shadow:0 0 9px rgba(139,92,246,.45)}.legend .changed{background:#aaaab0}.legend .pending{border-color:#8b5cf6}
.course{border-color:rgba(255,255,255,.095);border-radius:10px;background:#15161a;transition:.18s ease}.course:hover{background:#1a1b20;border-color:rgba(255,255,255,.17)}.course.current{border-color:rgba(139,92,246,.6);background:rgba(139,92,246,.075);box-shadow:0 0 20px rgba(139,92,246,.07)}.course.current:after{color:#b69cff}.course.changed{border-color:rgba(255,255,255,.25)}.course.changed:after{color:#d2d2d6}.course.pending{border-color:rgba(139,92,246,.42)}
.bottom-nav{border-radius:14px;background:rgba(14,15,18,.94);backdrop-filter:blur(20px);box-shadow:0 14px 36px rgba(0,0,0,.32)}.bottom-nav .active{color:#f5f5f5}.bottom-nav .capture b{width:40px;height:40px;border-color:rgba(139,92,246,.58);border-radius:11px;background:var(--teacher-violet-soft);font-size:22px;color:#c4b5fd;box-shadow:0 0 18px rgba(139,92,246,.1)}
.course-sheet{border-radius:14px;background:#121318}.ai-brief{border-color:rgba(139,92,246,.2);border-radius:10px;background:rgba(139,92,246,.045)}.ai-brief small{color:#a78bfa}.sheet-actions button{border-radius:10px;background:#18191e}
.gate{position:fixed;z-index:100;inset:0;overflow:auto;padding:calc(32px + env(safe-area-inset-top)) 18px calc(32px + env(safe-area-inset-bottom));background:radial-gradient(circle at 70% 8%,rgba(107,85,157,.25),transparent 38%),linear-gradient(155deg,#11151e,#0a0d13);display:grid;place-items:center}.gate[hidden]{display:none}.gate-card{width:min(100%,440px);padding:30px;border:1px solid var(--teacher-line);border-radius:30px;background:rgba(19,22,31,.8);box-shadow:0 30px 90px rgba(0,0,0,.5);backdrop-filter:blur(24px)}.gate-card h1{font-family:"Songti SC",serif;font-weight:500;font-size:28px;line-height:1.45;margin:13px 0}.gate-intro{color:var(--teacher-muted);font-size:13px;line-height:1.7}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;margin:24px 0 18px;padding:4px;border-radius:14px;background:rgba(255,255,255,.04)}.auth-tabs button{padding:10px;border:0;border-radius:11px;color:var(--teacher-muted);background:none}.auth-tabs button.active{color:var(--teacher-ink);background:rgba(255,255,255,.08)}.gate-form{display:grid;gap:14px}.gate-form[hidden]{display:none}.gate-form label{display:grid;gap:7px;color:#aaa8b6;font-size:12px}.gate-form input,.gate-form select{width:100%;padding:13px 14px;border:1px solid var(--teacher-line);border-radius:14px;background:rgba(255,255,255,.045);color:var(--teacher-ink);font:inherit;outline:none}.gate-form input:focus,.gate-form select:focus{border-color:rgba(232,184,135,.55);box-shadow:0 0 0 3px rgba(232,184,135,.08)}.gate-form option{background:#171a23}.gate-form>button{margin-top:5px;padding:14px;border:1px solid rgba(232,184,135,.5);border-radius:16px;background:linear-gradient(135deg,rgba(232,184,135,.2),rgba(153,139,216,.16));color:#f8e7d4;font-weight:600}.form-message{min-height:20px;margin:13px 0 0;color:#e9b6a9;font-size:12px}.top-actions{display:flex;gap:7px}
