/* Campus journey extension; original layout and palette retained. */
.practice{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:0 0 20px;font-size:11px;color:var(--muted)}.practice>span{margin-right:5px}.practice button{padding:6px 10px;border:1px solid var(--line);border-radius:4px;font-size:11px}.practice button:hover{background:var(--blue-soft);color:var(--ink)}
.sleep-sheet{position:relative;text-align:center;width:min(690px,95%);padding:28px 24px}.sleep-sheet h2{font:34px var(--font-display);font-weight:400;letter-spacing:3px;margin:14px 0}.sleep-sheet>p{color:var(--blue);font-size:12px;line-height:1.8}.sleep-options{display:flex;justify-content:center;gap:12px;margin:23px 0}.sleep-option{border:1px solid var(--night-soft);background:var(--night-soft);color:var(--white);border-radius:8px;padding:20px 18px;flex:1;transition:background var(--dur-fast)}.sleep-option strong{display:block;font:28px var(--font-mono)}.sleep-option span{display:block;font-size:11px;color:var(--blue);margin-top:10px}.sleep-option.selected{border-color:var(--blue);background:var(--night)}.sleep-option.selected:after{content:'已选择';display:block;font-size:10px;color:var(--green);margin-top:9px}.wake-preview{font-size:12px;color:var(--blue);margin:0 0 20px}.wake-preview b{font:22px var(--font-mono);color:var(--white);margin-left:12px}.wake-preview span{display:block;font-size:10px;margin-top:8px}.sleep-sheet>.primary{background:var(--white);color:var(--ink)}.sleep-back{display:block;margin:12px auto 0;font-size:11px;color:var(--blue);padding:8px}.pause-layer{position:absolute;inset:0;z-index:12;background:var(--night);color:var(--white);display:grid;place-items:center;text-align:center;padding:24px}.pause-layer h2{font:32px var(--font-display);font-weight:400}.pause-layer p{font-size:12px;color:var(--blue);margin-bottom:24px}.pause-layer .primary{background:var(--white);color:var(--ink)}
.introView-enter .dorm-scene{animation:wake-room 1.4s var(--ease-out) both}.introView-enter .intro-card{animation:wake-phone 1.1s var(--ease-out) both}.introView-enter .intro-time{color:var(--white)}@keyframes wake-room{from{transform:scale(1);opacity:.65}to{transform:scale(1.18);opacity:.2}}@keyframes wake-phone{0%{opacity:0;transform:translateY(35px)}40%{opacity:0;transform:translateY(35px)}100%{opacity:1;transform:translateY(0)}}
.pause-btn{font-size:12px;color:var(--muted)}.stage-banner{z-index:4;pointer-events:none}.stage-banner strong{font-weight:400;color:var(--green)}.boarding .freeze-word{opacity:0}.bus-road{position:absolute;left:0;right:0;top:360px;height:80px;background:var(--blue-soft);border-top:1px solid var(--line)}.bus-road:after{content:'';position:absolute;left:0;right:0;top:39px;border-top:3px dashed var(--white)}.station-window{left:90px;top:70px;z-index:2;background:var(--paper)}.station-window .window-head{cursor:grab;touch-action:none}.station-window .room-decor:before{display:none}.station-sign{position:absolute;top:45px;left:25px;border:2px solid var(--green);padding:10px 15px;color:var(--green);font-size:14px;background:var(--white)}.station-sign small{display:block;font-size:9px;letter-spacing:2px;margin-top:7px}.station-window .floor{background:var(--green-soft)}.bus-vehicle{position:absolute;top:155px;left:720px;width:330px;height:240px;border:2px solid var(--ink);background:var(--blue);border-radius:14px 20px 10px 10px;z-index:3;box-shadow:0 5px 0 var(--shadow)}.bus-top{height:33px;background:var(--ink);color:var(--white);font-size:11px;padding:9px 15px;letter-spacing:2px}.bus-glass{position:absolute;top:52px;left:50px;right:20px;height:75px;background:var(--blue-soft);border:2px solid var(--ink);border-radius:3px;display:flex}.bus-glass span{flex:1;border-right:3px solid var(--blue);display:grid;place-items:center}.bus-glass span:last-child{border:0}.bus-passenger{width:20px;height:35px;background:var(--muted);border-radius:50% 50% 3px 3px;position:relative;margin-top:22px}.bus-passenger:before{content:'';position:absolute;width:16px;height:16px;left:2px;top:-12px;border-radius:50%;background:var(--ink)}.bus-door{position:absolute;left:-2px;top:130px;width:39px;height:55px;border:2px solid var(--ink);border-left-color:var(--transparent);background:var(--white)}.bus-door.ready{border-color:var(--green);background:var(--green-soft)}.bus-stripe{position:absolute;left:44px;right:20px;top:160px;border-top:6px solid var(--white)}.bus-wheel{position:absolute;width:35px;height:35px;bottom:-15px;border:7px solid var(--ink);border-radius:50%;background:var(--paper);left:50px}.bus-wheel.second{left:auto;right:45px}.bus-name{position:absolute;left:90px;top:186px;font-size:13px;letter-spacing:3px}.door-guide{position:absolute;left:450px;top:80px;bottom:45px;border-left:1px dashed var(--green);z-index:1}.bus-marker{position:absolute;left:430px;top:68px;font-size:11px;color:var(--green);background:var(--paper);padding:5px 8px}.stage .actor{z-index:5}.bus-status{position:absolute;left:535px;top:48px;z-index:4;border:1px solid var(--line);background:var(--white);font-size:11px;padding:7px 12px;border-radius:4px}.bus-status.ready{color:var(--green);border-color:var(--green)}
.canteen-floor{position:absolute;inset:0;background:var(--paper);background-image:linear-gradient(var(--transparent) 97%,var(--line) 97%),linear-gradient(90deg,var(--transparent) 97%,var(--line) 97%);background-size:75px 75px;opacity:.55}.canteen-stall{position:absolute;left:790px;top:75px;width:100px;height:285px;border:2px solid var(--ink);background:var(--white);z-index:2}.stall-awning{position:absolute;left:-9px;top:-8px;right:-3px;height:40px;background:repeating-linear-gradient(90deg,var(--blue) 0 20px,var(--white) 20px 40px);border:1px solid var(--ink);border-radius:4px}.stall-name{writing-mode:vertical-rl;font-family:var(--font-display);font-size:26px;letter-spacing:5px;position:absolute;right:28px;top:50px}.bun-tray{position:absolute;bottom:24px;left:12px;display:flex;gap:6px;flex-wrap:wrap;width:70px}.bun{display:inline-block;width:26px;height:21px;border:1px solid var(--ink);border-radius:50% 50% 40% 40%;background:var(--paper);position:relative}.bun:after{content:'';position:absolute;left:9px;top:2px;width:6px;height:5px;border-left:1px solid var(--line);border-right:1px solid var(--line)}.stall-port{position:absolute;left:-2px;top:100px;height:70px;width:8px;background:var(--green);border:1px solid var(--green)}.crowd-lane{position:absolute;left:55px;width:735px;height:56px;background:var(--green-soft);opacity:.7;border-top:1px dashed var(--green);border-bottom:1px dashed var(--green);pointer-events:none}.crowd-handle{position:absolute;left:62px;width:152px;height:30px;background:var(--blue);border:1px solid var(--ink);font-size:11px;display:grid;place-items:center;cursor:grab;touch-action:none;user-select:none;border-radius:5px;z-index:5}.crowd-handle span{font-size:10px}.crowd-column{position:absolute;top:50px;bottom:45px;width:50px;margin-left:-25px;overflow:hidden;pointer-events:none}.crowd-person{position:absolute;left:12px;width:27px;height:35px;background:var(--blue);border-radius:9px 9px 4px 4px;border:1px solid var(--muted)}.crowd-person:before{content:'';position:absolute;width:18px;height:18px;left:3px;top:-13px;border-radius:50%;background:var(--ink)}.crowd-person:nth-child(2n){background:var(--green)}.crowd-person:nth-child(3n){background:var(--muted)}.gap-marker{position:absolute;left:-3px;width:56px;height:132px;border:1px dashed var(--line);background:var(--transparent);border-radius:5px}.crowd-column.next .gap-marker{border-color:var(--green);background:var(--white);opacity:.65}.gap-label{position:absolute;font-size:10px;top:33px;width:100px;margin-left:-50px;text-align:center;color:var(--muted)}.crowd-column.passed{opacity:.4}.crowd-column.next .crowd-person{border-color:var(--ink)}.crowd-target{position:absolute;left:730px;top:181px;width:60px;height:58px;border:2px dashed var(--green);background:var(--green-soft);opacity:.5}.stage .scene-hint{background:var(--paper);padding:6px 10px;bottom:5px;z-index:6}.food-badge{display:inline-flex;align-items:center;gap:8px;color:var(--green);font-size:11px}.food-badge .bun{width:19px;height:16px}.result-copy-detail{font-size:11px;color:var(--muted)}.controls .control-actions{flex-wrap:wrap}.scan-phone[aria-disabled=true]{opacity:.75}.clock small{max-width:230px}.progress-route{font-size:10px;color:var(--muted);letter-spacing:.5px}.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(max-width:700px){.sleep-sheet{padding:22px 12px}.sleep-sheet h2{font-size:25px}.sleep-sheet>p{font-size:11px}.sleep-options{gap:7px;margin:18px 0}.sleep-option{padding:14px 8px}.sleep-option strong{font-size:21px}.sleep-option span{font-size:10px;line-height:1.6}.wake-preview{margin-bottom:15px}.controls .control-actions{gap:5px}.controls .retry{font-size:11px;padding:7px}.stepper{gap:9px}.clock small{max-width:120px}.sleep-back{padding:10px}.game-hud{font-size:11px}.stage-wrap{min-height:190px}.play-area:has(#sleepView:not(.hidden)){min-height:450px}.play-area:has(#introView:not(.hidden)){min-height:350px}.map .label{font-size:24px}.map .sub{font-size:15px}}
@media(prefers-reduced-motion:reduce){.introView-enter .dorm-scene,.introView-enter .intro-card{animation:none}}
