:root{color-scheme:light;--orange:#d97757;--ink:#67483c;--muted:#9b8073;--cream:#fffaf2}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:ui-rounded,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;background-image:radial-gradient(ellipse at 15% 30%,#fbe9d8 0,transparent 48%)}main{max-width:1000px;padding:30px 34px 20px;margin:auto}header{display:flex;justify-content:space-between;align-items:center}.brand{font-size:24px;font-weight:750;letter-spacing:-1px;color:var(--orange);text-decoration:none}.brand span{margin-left:5px}.tag{font-size:12px;border:1px solid #ebd9ca;padding:7px 13px;border-radius:30px;color:var(--muted)}.intro{text-align:center;margin:54px 0 8px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--orange)}h1{font-size:clamp(26px,4vw,36px);margin:12px 0} .intro>p:last-child{font-size:13px;color:var(--muted)}.flower{color:var(--orange);padding-left:8px}.hero{display:flex;align-items:center;justify-content:center;gap:55px;min-height:350px}.character{position:relative;width:300px;height:300px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.halo{position:absolute;inset:24px;border-radius:50%;background:#f6e3cf;border:10px solid #fff4e6;box-shadow:0 0 0 1px #efdfcc}.character img{position:relative;width:256px;height:256px;object-fit:contain;z-index:1}.spark{position:absolute;color:var(--orange);font-size:32px}.s1{left:4px;top:58px}.s2{right:5px;bottom:65px;font-size:24px}.emote{position:absolute;z-index:2;bottom:4px;border:1px solid #eed8c6;background:#fffdf7;border-radius:20px;padding:9px 17px;font-size:12px;box-shadow:0 5px 20px #a66a3510;animation:bob 3s ease-in-out infinite}.status-copy{max-width:370px;min-width:240px}.status-label{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px}.dot{width:8px;height:8px;border-radius:50%;background:#84a77a;box-shadow:0 0 0 4px #84a77a17}.dot.busy{background:var(--orange);box-shadow:0 0 0 4px #d9775717}#state{font-size:64px;letter-spacing:5px;margin:6px 0 12px;color:var(--orange);line-height:1.3}.bubble{position:relative;background:white;border:1px solid #efdfd0;border-radius:4px 18px 18px 18px;padding:15px 20px;font-size:14px;line-height:1.8;margin:0}.gentle{font-size:11px;color:var(--muted);margin-top:17px}.schedule-head{display:flex;align-items:center;justify-content:space-between;margin:25px 0 16px}.schedule-head h2{font-size:17px;margin:0}.schedule-head h2 span{color:var(--orange);margin-left:5px}#week{font-size:12px;color:var(--muted)}.cards{display:grid;grid-template-columns:0.85fr 1.15fr;gap:18px}.card{border:1px solid #eddfd2;background:#ffffffa6;padding:24px;border-radius:20px}.next{background:#f7eadc}.card h3{font-size:16px;margin:12px 0}.card p{font-size:13px;line-height:1.7}.card .eyebrow{font-size:10px;margin:0 0 20px}.muted{color:var(--muted)}.card-title{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-title h3{margin:0}.card-title span{font-size:11px;color:var(--muted)}ul{list-style:none;margin:17px 0 0;padding:0}li{font-size:12px;padding:12px 0;border-top:1px dashed #eaded3;line-height:1.7}.course-row{display:flex;justify-content:space-between;gap:12px}.course-row strong{font-weight:550}.course-detail{color:var(--muted);font-size:11px}.current{color:var(--orange)}.ended{opacity:.6}.updated{text-align:center;color:var(--muted);font-size:10px;margin:24px 0 36px;line-height:1.9}footer{text-align:center;color:var(--muted);font-size:11px;line-height:2}footer span{color:var(--orange);margin-left:7px}footer small{font-size:10px;color:#b49a8c}@keyframes bob{50%{transform:translateY(-4px)}}@media(max-width:640px){main{padding:22px 20px}.intro{margin-top:40px}.hero{flex-direction:column;gap:18px;padding:15px 0 25px}.character{width:280px;height:280px}.status-copy{text-align:center;max-width:100%;width:100%}.status-label{justify-content:center}#state{font-size:52px}.bubble{max-width:390px;margin:auto}.cards{grid-template-columns:1fr}.card{padding:21px}.schedule-head{gap:10px}#week{text-align:right;font-size:11px}.gentle{margin-bottom:0}.tag{font-size:10px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;scroll-behavior:auto!important}}

body.sleeping{background:#1a1d2e;background-image:radial-gradient(ellipse at 50% 20%,#2a3350 0,transparent 55%),radial-gradient(ellipse at 80% 80%,#1e2438 0,transparent 40%);color:#c8c4d8;transition:background .8s ease,color .8s ease}
body.sleeping .brand,body.sleeping #state,body.sleeping .eyebrow,body.sleeping .spark,body.sleeping .flower,body.sleeping footer span,body.sleeping .schedule-head h2 span,body.sleeping .current{color:#e8b896}
body.sleeping .tag,body.sleeping .muted,body.sleeping .gentle,body.sleeping .updated,body.sleeping footer,body.sleeping footer small,body.sleeping #week,body.sleeping .status-label,body.sleeping .intro>p:last-child,body.sleeping .course-detail,body.sleeping .card-title span{color:#8a879c}
body.sleeping .halo{background:#2a3148;border-color:#3a4260;box-shadow:0 0 40px 8px #9bb4ff22,0 0 0 1px #3a4260}
body.sleeping .character img{filter:brightness(1.05) saturate(.95);z-index:2}
body.sleeping .emote{background:#252a3c;border-color:#3a4260;color:#d4d0e0;box-shadow:0 5px 24px #00000040}
body.sleeping .bubble,body.sleeping .card{background:#242838e6;border-color:#3a4260;color:#c8c4d8}
body.sleeping .next{background:#2a3148}
body.sleeping li{border-top-color:#3a4260}
body.sleeping .dot{background:#7a90c4;box-shadow:0 0 0 4px #7a90c422}
body.sleeping .ended{opacity:.45}
body.sleeping main,body.sleeping header,body.sleeping .intro,body.sleeping .schedule-head,body.sleeping .cards,body.sleeping .updated,body.sleeping footer{opacity:.88}
body.sleeping .character{opacity:1;filter:drop-shadow(0 0 18px #9bb4ff33)}
