:root{--ink:#eaf7ff;--muted:#9fbdc9;--line:rgba(148,226,255,.16);--aqua:#63f2d2;--blue:#7ca7ff;--bg:#07131f;--panel:rgba(11,35,52,.72)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);color:var(--ink);font-family:"Noto Sans TC",system-ui,sans-serif;letter-spacing:.02em}body:before{content:"";position:fixed;inset:0;z-index:-2;background:radial-gradient(circle at 8% 5%,#143c57 0,transparent 33rem),radial-gradient(circle at 90% 15%,#172b63 0,transparent 28rem),#07131f}.ambient{position:fixed;z-index:-1;width:26rem;height:26rem;filter:blur(70px);opacity:.18;border-radius:50%}.one{background:#00e5c0;bottom:-14rem;left:-12rem}.two{background:#6c78ff;right:-12rem;top:25rem}header,main{max-width:1200px;margin:auto;padding-inline:24px}header{height:74px;display:flex;align-items:center;justify-content:space-between}.brand{color:var(--ink);text-decoration:none;font-weight:700}.brand span{display:inline-grid;place-items:center;width:34px;height:34px;border:1px solid var(--aqua);border-radius:10px;color:var(--aqua);margin-right:8px}.admin-link{color:var(--muted);font-size:.9rem}.hero{padding:70px 0 42px;max-width:720px}.eyebrow{color:var(--aqua);font-size:.76rem;letter-spacing:.13em;text-transform:uppercase;margin:0 0 10px}.hero h1{font-size:clamp(2.5rem,6vw,5rem);line-height:1.12;margin:0 0 20px}.hero em{font-style:normal;color:transparent;background:linear-gradient(90deg,var(--aqua),#91a9ff);background-clip:text}.hero>p{color:var(--muted);line-height:1.8;max-width:620px}.panel{border:1px solid var(--line);background:var(--panel);backdrop-filter:blur(20px);box-shadow:0 22px 70px rgba(0,0,0,.18);border-radius:20px}.finder{padding:20px}.finder label{display:block;margin-bottom:10px;font-size:.9rem;color:var(--muted)}input,select,textarea,button{font:inherit}input,select,textarea{width:100%;background:#071923;border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:12px}input:focus,select:focus,textarea:focus{outline:2px solid rgba(99,242,210,.45)}.teacher-list{display:flex;gap:8px;flex-wrap:wrap;padding-top:14px}.teacher-chip{border:1px solid var(--line);background:#0d2a3c;color:var(--ink);border-radius:99px;padding:8px 13px;cursor:pointer}.teacher-chip:hover,.teacher-chip.selected{border-color:var(--aqua);color:var(--aqua)}#schedule-area{padding:58px 0}.hidden{display:none}.section-title{display:flex;justify-content:space-between;align-items:end;margin-bottom:14px}.section-title h2{margin:0;font-size:2rem}.pill{border:1px solid var(--line);border-radius:99px;padding:7px 11px;color:var(--muted);font-size:.85rem}.schedule{overflow:auto;padding:14px;display:grid;grid-template-columns:80px repeat(5,minmax(122px,1fr));min-width:750px}.schedule>div{min-height:76px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px}.schedule .head{min-height:42px;color:var(--muted);font-size:.88rem;font-weight:700}.period{color:var(--muted);font-size:.83rem}.lesson{display:flex;flex-direction:column;justify-content:center;cursor:pointer;background:linear-gradient(140deg,rgba(55,242,201,.15),rgba(99,126,255,.13));transition:.2s}.lesson:hover{outline:1px solid var(--aqua);transform:translateY(-2px);z-index:1}.lesson b{font-size:.96rem}.lesson small{color:#b3d9ea;margin-top:4px}.empty{margin:48px auto;padding:60px 22px;text-align:center;max-width:560px;color:var(--muted)}.empty h2{color:var(--ink)}.orb{font-size:2rem;color:var(--aqua)}.drawer{position:fixed;z-index:5;right:0;top:0;height:100dvh;width:min(480px,94vw);background:#0b1d2a;border-left:1px solid var(--line);padding:82px 30px 30px;transform:translateX(105%);transition:transform .28s ease;overflow:auto;box-shadow:-20px 0 60px rgba(0,0,0,.3)}.drawer.open{transform:translateX(0)}.close{position:absolute;right:17px;top:17px;background:none;border:0;color:var(--ink);font-size:2rem;cursor:pointer}.subtle{color:var(--muted);font-size:.9rem}.scrim{position:fixed;inset:0;background:rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:.2s}.scrim.open{opacity:1;pointer-events:auto}.candidate-group{margin:26px 0}.candidate-group h3{font-size:.9rem;color:var(--aqua);margin:0 0 10px}.candidate{padding:13px;margin-bottom:8px;border-radius:12px;background:#102b3d;border:1px solid var(--line)}.candidate-top{display:flex;justify-content:space-between;gap:12px}.candidate small{display:block;color:var(--muted);margin-top:6px}@media(max-width:600px){header,main{padding-inline:16px}.hero{padding-top:42px}.hero h1{font-size:2.6rem}.section-title{align-items:start;gap:10px;flex-direction:column}}
