:root{color-scheme:light;--ink:#293e34;--muted:#667367;--green:#315b46;--green-dark:#244a3b;--paper:#faf6e8;--cream:#f5f1e5;--line:#d8d0bc;--gold:#eac167;--ochre:#a3692d;--serif:Georgia,'Palatino Linotype',serif;--sans:'DM Sans','Trebuchet MS',Arial,sans-serif}
*{box-sizing:border-box}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);min-height:100vh;background-image:repeating-linear-gradient(90deg,transparent 0 4px,#b39e6b06 4px 5px),radial-gradient(ellipse at 30% 0,#fff9e8,transparent 65%)}
button,select,input{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #bd702b;outline-offset:3px}button:disabled{cursor:not-allowed}button svg,.glyph{width:20px;height:20px;display:block;flex:none}
[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}
.topbar{height:74px;border-bottom:1px solid var(--line);background:#faf7ed}.bar-inner{height:100%;max-width:1600px;padding:0 clamp(18px,3.2vw,56px);margin:auto;display:flex;align-items:center;gap:clamp(28px,6vw,100px)}
.brand{display:flex;gap:12px;align-items:center;flex-shrink:0}.brand-seal{width:41px;height:43px;border-radius:8px 8px 10px 5px;background:#325a45;box-shadow:inset 0 0 0 2px #385f48;display:grid;place-items:center;transform:rotate(-3deg);color:#ffedb9}.brand-seal svg{width:30px;height:30px}.brand small,.mini-cap,.kicker{display:block;font-size:10px;font-weight:800;letter-spacing:.18em}.brand small{font-size:9px;letter-spacing:.22em;color:#65725e;margin-bottom:2px}.brand strong{font-family:var(--serif);font-size:22px;font-weight:700;letter-spacing:-1px}
#main-nav{display:flex;height:100%;gap:25px}#main-nav button{background:none;border:0;position:relative;padding:1px 0 0;font-weight:700;color:#768072;font-size:13px}#main-nav button.active{color:var(--ink)}#main-nav .active::after{content:"";position:absolute;bottom:13px;background:#ac8848;left:0;right:0;height:2px}
.sound-tools{margin-left:auto;display:flex;gap:8px}.icon-button,.round-button{width:36px;height:36px;border:1px solid #cec8b7;border-radius:50%;background:#fbf8ee;display:grid;place-items:center}.icon-button:hover,.round-button:hover{background:#eee6cf}.icon-button svg{width:17px;height:17px}
main{max-width:1600px;margin:auto;padding:clamp(12px,1.8vw,26px) clamp(12px,3.2vw,56px) 0}
.title-stage{position:relative;isolation:isolate;overflow:hidden;border:1px solid #8d856b;border-radius:15px;background:#849680;aspect-ratio:2.12;min-height:476px;max-height:720px;box-shadow:0 5px 14px #4b4a3221}
.room-paint{position:absolute;inset:0;background:#96ac8e url('../assets/title-room.webp') center center/cover no-repeat;z-index:-3}
.title-stage:after{position:absolute;inset:0;content:"";box-shadow:inset 0 0 22px #52361125;pointer-events:none;border-radius:inherit}
.hero-teacher img{width:100%;height:100%;object-fit:contain;object-position:bottom;filter:drop-shadow(1px 2px 0 #5f493447)}
.dust{position:absolute;inset:0;pointer-events:none;z-index:-1}.dust i{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;border-radius:50%;background:#fff2aa;opacity:.4;animation:float 8s ease-in-out var(--delay) infinite alternate}@keyframes float{to{transform:translate(12px,-15px);opacity:.05}}
.paper-menu{position:absolute;left:clamp(20px,3.3vw,56px);top:50%;transform:translateY(-50%) rotate(-.6deg);width:clamp(246px,24%,337px);padding:clamp(21px,2vw,31px) clamp(17px,1.65vw,26px) 23px;background-color:#fff8df;background-image:repeating-linear-gradient(0deg,#a5afa012 0 1px,transparent 1px 25px),linear-gradient(110deg,#fffbed 0,#fcf4db 82%,#f1e5c6);border:1px solid #d1c3a4;border-radius:4px 7px 3px 4px;box-shadow:2px 4px 0 -1px #ece0be,4px 7px 0 -2px #b1a17f,3px 9px 20px #41321f40}
.paper-menu:after{content:"";width:19px;height:19px;position:absolute;bottom:0;right:0;background:linear-gradient(135deg,#ecdec0 48%,#b9ab8b 52%,#fcf4db 57%);border-radius:3px 0 1px 0;opacity:.85}.tape{position:absolute;width:73px;height:22px;top:-9px;left:calc(50% - 37px);transform:rotate(-6deg);background:repeating-linear-gradient(90deg,#dfbf74a6 0 2px,#edcd82b3 2px 5px);clip-path:polygon(1% 3%,97% 0,100% 18%,96% 35%,100% 55%,97% 76%,99% 95%,1% 100%,4% 78%,0 64%,3% 45%,0 26%)}
.paper-head{display:flex;justify-content:space-between;align-items:center;color:#80744b}.paper-flower{font-size:20px;color:#b98a3a;line-height:1}.paper-menu h2{font:italic 700 clamp(30px,3vw,43px)/1.06 var(--serif);letter-spacing:-2px;margin:7px 0 8px;color:#344f3c}.pencil-rule{height:5px;width:47px;border-radius:70%;border-bottom:3px solid #d6a44a;transform:rotate(-3deg);margin-bottom:17px}
#menu-buttons{display:grid;gap:4px}.menu-option{display:flex;align-items:center;gap:12px;text-align:left;width:100%;min-height:39px;background:transparent;border:0;border-radius:6px;padding:8px 9px;font-weight:700;font-size:clamp(13px,1.05vw,16px);letter-spacing:-.02em}.menu-option svg{width:18px;height:18px;color:#506553}.menu-option:hover:enabled{background:#e9e7d4}.menu-option.primary{color:#fff9e7;background:#355d47;border:1px solid #284d3a;box-shadow:0 2px 0 #1f4434;padding:12px;margin-bottom:4px}.menu-option.primary svg{color:#ffecad}.menu-option.primary:hover{background:#274e3b}.menu-option.primary .end{margin-left:auto}.menu-option.primary .end svg{width:15px}.menu-option:disabled{color:#8d897a}.menu-option:disabled svg{color:#999687}.menu-option .lock{margin-left:auto}.menu-option .lock svg{width:12px}.menu-option.divide{border-top:1px dashed #b8af94;border-radius:0;padding-top:12px;margin-top:3px}
.scene-sign{position:absolute;bottom:17px;right:18px;font-size:11px;font-weight:700;color:#fff9e9;background:#243b2edb;border:1px solid #f3e9d063;border-radius:20px;padding:7px 11px;display:flex;align-items:center;gap:6px}.scene-sign i{width:6px;height:6px;background:#eac267;border-radius:50%}
.dialogue-card{margin-top:14px;border:1px solid var(--line);border-radius:10px;background:linear-gradient(100deg,#faf5e4,#fffaf0 68%,#f8f3e5);display:flex;gap:18px;align-items:center;padding:13px 20px;box-shadow:0 2px 0 #d7ceaf66;position:relative}.dialogue-portrait{width:62px;height:62px;border:1px solid #cbbd9f;background:#ead8aa;border-radius:50%;overflow:hidden;flex:none}.dialogue-portrait img{width:100%;height:100%;object-fit:cover}.dialogue-copy{min-width:0}.speaker{font-size:11px;font-weight:800;color:#48654b;letter-spacing:.08em}.dialogue-copy p{margin:5px 0 0;font:italic 18px/1.35 var(--serif);color:#434d3c}.dialogue-card .round-button{margin-left:auto;flex:none;width:31px;height:31px}.round-button svg{width:15px}.page-foot{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#6b7365;gap:18px;padding:16px 2px 19px}.page-foot span{display:inline-flex;align-items:center;gap:8px}.status-dot{width:6px;height:6px;background:#64856a;border-radius:50%}.foot-right b{color:#a69f88}
dialog{padding:0;border:1px solid #c7bb9d;border-radius:12px;background:#fffaeb;color:var(--ink);width:min(610px,calc(100% - 28px));max-height:min(86dvh,880px);box-shadow:0 20px 70px #172e2980;overflow:auto}dialog.wide{width:min(780px,calc(100% - 28px))}dialog::backdrop{background:#15271f80;backdrop-filter:blur(3px)}#modal-inner{padding:clamp(20px,3vw,32px)}.modal-top{display:flex;align-items:flex-start;gap:14px}.modal-top h2{font:700 clamp(26px,3vw,36px)/1.13 var(--serif);letter-spacing:-1.2px;margin:6px 0 12px}.modal-top .round-button{margin-left:auto;flex:none}.kicker{color:var(--ochre);font-size:10px}.lead{font-size:15px;line-height:1.5;color:#526052;margin:0 0 17px}.btn,.option,.tag{border:1px solid var(--line);background:#faf5e5;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 13px;font-size:14px;font-weight:700}.btn:hover,.option:hover:enabled{background:#eee7d1}.btn.green,.option.green{border-color:#254a38;background:var(--green);color:#fff7dc}.btn.green:hover{background:#224c37}.btn.warn{color:#924f35}.btn:disabled,.option:disabled{opacity:.52}.btn svg,.option svg{width:17px;height:17px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.form-row,.list-row,.card-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px dashed var(--line)}.form-row input[type=range]{width:36%;accent-color:var(--green)}.form-row input,.form-row select{accent-color:var(--green)}.form-row select{border:1px solid var(--line);border-radius:5px;padding:7px;background:#fffaf0}.card-row b,.list-row b{display:block}.card-row small,.list-row small{display:block;margin-top:4px;line-height:1.45;color:#657062}.card-row .btn{flex:none;min-width:81px;padding:8px 10px}.tag{background:#f2ead3;padding:4px 7px;font-size:12px}.tag svg{width:14px;height:14px}.guide-list{display:grid;gap:10px}.guide-list article,.event-choice,.quote-panel,.section-paper{background:#f5efdc;border:1px solid #ded4ba;border-radius:7px;padding:13px 15px}.guide-list h3,.section-paper h3{font:700 18px var(--serif);margin:0 0 5px}.guide-list p,.section-paper p{font-size:14px;line-height:1.45;margin:0;color:#596355}.event-choice{display:block;width:100%;text-align:left;margin:9px 0;color:var(--ink)}.event-choice:hover{background:#ece4cb}.event-choice b,.event-choice small{display:block}.event-choice small{color:#5c695e;margin-top:5px}
.quote-panel{display:flex;align-items:center;gap:14px;margin:4px 0 16px}.quote-panel img{width:69px;height:69px;object-fit:cover;border-radius:50%;background:#eaddb8}.quote-panel p{font:italic 17px/1.4 var(--serif);margin:0}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stats-grid div{padding:11px;background:#f2ecd9;border-radius:6px}.stats-grid small,.stats-grid strong{display:block}.stats-grid small{font-size:11px}.stats-grid strong{font:700 23px var(--serif);margin-top:4px}.chronicle{font-size:14px;line-height:1.5;padding-left:20px}.reward{color:#84601e;font-weight:700;margin:12px 0}.switches{display:flex;gap:7px;margin:10px 0;flex-wrap:wrap}.switches button{background:#faf5e6;color:#63705f;border:1px solid var(--line);border-radius:16px;padding:6px 11px;font-size:12px}.switches button.on{background:var(--green);border-color:var(--green);color:#fff7df}
#toast{position:fixed;z-index:6;bottom:18px;left:50%;transform:translateX(-50%);padding:10px 17px;border-radius:8px;background:#244838;color:#fff7df;box-shadow:0 3px 14px #24362930;max-width:90vw;text-align:center;font-size:14px;pointer-events:none;opacity:0;transition:opacity .15s}#toast.show{opacity:1}

#play-hud{display:flex;align-items:center;gap:14px;background:#faf7e9;border:1px solid var(--line);border-radius:10px;margin-bottom:12px;padding:10px 15px}.subject-mark{width:38px;height:38px;display:grid;place-items:center;background:#dbe6d5;border-radius:7px;color:#42664b}.hud-title{margin-right:auto}.hud-title small,.room-bottom span,.paper-caption{font-size:11px;letter-spacing:.025em;color:#637461}.hud-title b{display:block;font:700 19px var(--serif)}.meter{width:98px}.meter span{font-size:11px;display:flex;justify-content:space-between;align-items:center;gap:3px}.meter i{display:block;height:5px;background:#e2dcc9;border-radius:4px;overflow:hidden;margin-top:4px}.meter em{display:block;background:#5c8968;height:100%;border-radius:4px}.meter.mood em{background:#d19d4f}.timer{display:flex;align-items:center;gap:5px;font-weight:700;font-variant-numeric:tabular-nums}.timer svg{width:16px}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) clamp(240px,22%,325px);gap:12px;align-items:start}.room-frame,.desk-paper{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#faf6e8}.room-frame{border-color:#aca58b}#room-scroll{overflow:auto;background:#cfbfa4}.room-surface{position:relative;aspect-ratio:1.6}.room-surface canvas{position:absolute;inset:0;width:100%;height:100%}#seats{position:absolute;inset:0;pointer-events:none}.seat{position:absolute;transform:translate(-50%,-100%);height:12.75%;min-height:24px;width:8.5%;background:none;border:0;padding:0;pointer-events:auto;border-radius:12px}.seat:focus-visible{outline-offset:0}.seat .seat-name{position:absolute;left:50%;bottom:0;transform:translate(-50%,38%);font-size:clamp(8px,0.8vw,12px);white-space:nowrap;background:#fff4d9dc;color:#394b39;border-radius:3px;padding:1px 4px;font-weight:700}.seat.selected .seat-name{background:#345d44;color:white}.seat-bubble{position:absolute;left:50%;top:0;transform:translate(-50%,-90%);display:grid;place-items:center;background:#fff8d9;border:1px solid #b19b69;border-radius:40% 40% 40% 1px;width:clamp(17px,1.8vw,27px);height:clamp(17px,1.8vw,27px);color:#70592e;box-shadow:0 1px 2px #5b534b44}.seat-bubble svg{width:68%;height:68%}.seat-bubble.evidence{background:#f3ccb9;color:#813d32;border-color:#b37356}.seat-bubble.urgent{outline:2px solid #ae7a43}.room-bottom{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;gap:8px;min-height:37px}.room-bottom button{background:none;border:0;display:grid;place-items:center;padding:2px}.room-bottom svg{width:16px}.desk-paper{padding:13px 14px;margin-bottom:9px}.desk-paper h3{font:700 18px/1.15 var(--serif);margin:4px 0 6px}.desk-paper p{font-size:13px;line-height:1.4;margin:5px 0;color:#566453}.desk-paper .paper-caption{font-weight:800;font-size:9px;letter-spacing:.13em;color:#957643}.small-options{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}.small-options .btn,.small-options .option{padding:6px 9px;font-size:12px}.prep-track{margin:7px 0 4px;height:5px;border-radius:4px;background:#dedac8;overflow:hidden}.prep-track i{display:block;height:100%;background:#5f926e}.desk-paper.action-paper{background:#eaf0df;border-color:#becab2}.tool-strip{display:flex;justify-content:space-between;gap:6px;flex-wrap:wrap}.tool-strip .btn{padding:7px 9px;font-size:12px}.tool-strip svg{width:15px}#live-feedback{margin-top:10px;padding:11px 15px;min-height:41px;background:#fffaeb;border:1px solid var(--line);border-radius:8px;font-size:14px}#live-feedback:empty{display:none}.room-frame.zoomed .room-surface{min-width:940px}.tutorial-tip{border-left:3px solid #b99448;margin:0 0 9px;padding:3px 10px;color:#5e643e;font-size:13px;line-height:1.5}
@media(min-width:1600px){main{padding-top:28px}.title-stage{max-height:720px}}
@media(max-width:860px){.bar-inner{gap:24px}.title-stage{min-height:445px;aspect-ratio:1.68}.paper-menu{left:17px;width:230px;padding:19px 17px}.paper-menu h2{font-size:31px}.play-layout{grid-template-columns:minmax(0,1fr) 220px}.meter{width:75px}#play-hud{gap:8px}.room-surface{min-width:530px}.brand strong{font-size:20px}}
@media(max-width:680px){.topbar{height:61px}.bar-inner{padding:0 14px;gap:13px}.brand{gap:8px}.brand-seal{width:33px;height:35px}.brand-seal svg{width:25px}.brand strong{font-size:18px}.brand small{font-size:8px}#main-nav{margin-left:auto}#main-nav button{font-size:11px}#main-nav button[data-action=home]{display:none}.sound-tools{margin-left:0;gap:4px}.sound-tools .icon-button{width:30px;height:30px}main{padding:10px 10px 0}.title-stage{aspect-ratio:auto;min-height:0;height:auto;display:flex;flex-direction:column;align-items:stretch;padding-top:55%;border-radius:10px;background:#f2ead2}.room-paint{inset:0 0 auto;aspect-ratio:1.78;background-size:100% 100%;border-bottom:2px solid #99825a}.hero-teacher img{height:100%}.paper-menu{position:relative;transform:none;left:auto;top:auto;width:100%;padding:11px 14px 14px;border:0;border-radius:0;box-shadow:none;display:grid;grid-template-columns:1fr auto;gap:0;background-color:#fff8e6}.tape,.paper-menu:after,.pencil-rule,.paper-flower{display:none}.paper-head{grid-column:2;grid-row:1;align-self:center}.paper-head .mini-cap{font-size:8px}.paper-menu h2{grid-row:1;grid-column:1;margin:0 0 6px;font-size:26px;letter-spacing:-1.1px}#menu-buttons{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:4px 7px}.menu-option{min-height:37px;font-size:12px;gap:7px;padding:7px 6px}.menu-option.primary{margin:0;padding:8px}.menu-option.divide{border:0;margin:0;padding:7px 6px}.menu-option svg{width:15px;height:15px}.scene-sign{display:none}.dialogue-card{margin-top:9px;gap:10px;padding:10px}.dialogue-portrait{width:45px;height:45px}.dialogue-copy p{font-size:15px}.dialogue-card .round-button{width:26px;height:26px}.page-foot{font-size:9px;padding:11px 1px}.play-layout{display:block}.room-frame{margin-bottom:8px}#desk-panel{display:grid;grid-template-columns:1fr 1fr;gap:6px}.desk-paper{margin-bottom:0;padding:10px}.tool-strip,.tutorial-tip{grid-column:1/-1}.stats-grid strong{font-size:18px}#play-hud{flex-wrap:wrap;padding:7px;gap:7px}.subject-mark{width:28px;height:28px}.hud-title small{font-size:10px}.hud-title b{font-size:15px}.meter{width:53px}.meter span{font-size:9px}.timer{font-size:12px}#play-hud .icon-button{width:29px;height:29px}.room-surface{min-width:440px}#room-scroll{max-height:62dvh}.seat{min-height:35px;min-width:32px}.seat-name{font-size:9px!important}.room-bottom span{font-size:10px}.seat-bubble{width:17px;height:17px}}
@media(max-width:375px){#main-nav{display:none}.sound-tools{margin-left:auto}.brand strong{font-size:17px}.meter{width:46px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition:none!important}}
body.reduced .dust i{animation:none}body.reduced *{scroll-behavior:auto!important}
.shop-overview{display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:16px}.shop-overview canvas{width:100%;border:1px solid #b3a68b;border-radius:7px}.shop-overview .lead{margin:10px 0 0;font-size:13px}.report-note{margin:15px 0}.mark-list{display:flex;gap:8px 14px;flex-wrap:wrap;font-size:13px;padding-top:11px}.section-paper summary{cursor:pointer;font-weight:700}.section-paper+.section-paper{margin-top:7px}
@media(max-width:680px){.shop-overview{grid-template-columns:1fr 1.1fr;gap:9px}.shop-overview .tag{font-size:10px}.shop-overview .lead{font-size:11px}}
#tutorial-area:empty{display:none}#tutorial-area{grid-column:1/-1}

#seats.dense .seat-bubble{left:79%;top:18%;transform:translate(0,-100%)}
#live-feedback{display:flex;gap:12px;align-items:center;min-height:50px;padding:6px 13px;background:linear-gradient(110deg,#fff6db,#fffaf0)}
#live-feedback b{display:block;font-size:10px;letter-spacing:.08em;color:#4c674d;margin-bottom:2px}
.feedback-face{width:38px;height:38px;background:#eadbb7;border:1px solid #cabd9b;border-radius:50%;object-fit:cover}
.title-stage{width:100%}
@media(min-width:681px) and (max-width:860px){.title-stage{min-height:416px}.room-paint{background-position:right center}}
@media(max-width:375px){#main-nav{display:flex}.bar-inner{gap:7px;padding:0 9px}.brand{gap:6px}.brand-seal{width:28px;height:30px}.brand strong{font-size:16px}#main-nav button{font-size:10px}.sound-tools{margin-left:0}.sound-tools .icon-button{width:28px;height:28px}}

/* Smartphone gameplay: keep the entire class reachable without tiny seat targets. */
#mobile-tools,#mobile-requests,#mobile-action-dock{display:none}
#room-scroll{overscroll-behavior-x:contain;scrollbar-width:thin}
.mobile-request svg{width:20px;height:20px;flex:none}
@media(max-width:860px){
  #play{padding-bottom:calc(112px + env(safe-area-inset-bottom))}
  #room-scroll{touch-action:pan-x pan-y;scrollbar-color:#8c8168 #e1d5bc}
  #room-zoom{width:44px;height:44px;border-radius:8px;touch-action:manipulation;background:#f2ead6}
  #room-zoom svg{width:22px;height:22px}
  .room-bottom{padding:4px 7px;min-height:45px}
  #queue-status{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:55%}
  .seat{min-width:44px;min-height:44px;touch-action:manipulation}
  .seat-name{font-size:10px!important}
  #mobile-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;background:#f5eedb;border-top:1px solid #c7b999;font-size:11px;color:#60705d}
  #mobile-tools label{display:flex;align-items:center;gap:7px;min-width:0;font-weight:700}
  #mobile-seat-picker{max-width:min(52vw,240px);min-height:44px;border:1px solid #b4a47c;border-radius:8px;padding:0 9px;background:#fff9e9;color:var(--ink);font-size:13px}
  #mobile-tools>span{max-width:105px;line-height:1.2;text-align:right}
  #mobile-requests{display:flex;align-items:center;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;padding:8px 10px 10px;background:#f8f2e3;border-top:1px solid #e0d2b4;scroll-snap-type:x proximity}
  .mobile-requests-label{flex:none;width:45px;font-size:10px;font-weight:800;line-height:1.25;color:#61705a;text-transform:uppercase;letter-spacing:.04em}
  .mobile-request{flex:none;display:flex;align-items:center;gap:7px;max-width:180px;min-height:47px;padding:6px 9px;border:1px solid #c6b68e;background:#fffaf0;border-radius:9px;text-align:left;scroll-snap-align:start;touch-action:manipulation;box-shadow:0 1px 0 #dbcdaa}
  .mobile-request b,.mobile-request small{display:block;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mobile-request b{font-size:13px}.mobile-request small{font-size:11px;font-weight:400;color:#64705e}
  .mobile-request.evidence{border-color:#a66d59;background:#f9e5dc;color:#803c32}
  .mobile-request.urgent{outline:2px solid #c9944c;outline-offset:-3px}
  .mobile-all-calm{font-size:12px;color:#5e6c59;padding:8px 0}
  #mobile-action-dock:not(:empty){position:fixed;z-index:5;bottom:0;left:0;right:0;display:flex;align-items:center;gap:6px;padding:9px max(10px,env(safe-area-inset-left)) calc(10px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-right));background:#fff8e9f7;border-top:1px solid #b9a981;box-shadow:0 -5px 23px #1f382b30;backdrop-filter:blur(8px);max-height:30dvh;overflow:auto}
  #mobile-action-dock .mobile-dock-person{min-width:0;flex:1 1 85px;line-height:1.15}
  #mobile-action-dock .mobile-dock-person b,#mobile-action-dock .mobile-dock-person small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #mobile-action-dock .mobile-dock-person b{font-size:13px}
  #mobile-action-dock .mobile-dock-person small{font-size:10px;color:#6b7462;margin-top:4px}
  #mobile-action-dock .btn{min-height:44px;padding:7px 9px;font-size:12px;flex:none;touch-action:manipulation}
  #mobile-action-dock .btn svg{width:16px;height:16px}
  .mobile-dock-empty,.mobile-dock-wait{font-size:13px;color:#657162;padding:8px 3px}
  #desk-panel .small-options .btn,#desk-panel .tool-strip .btn,.menu-option,.event-choice,.card-row .btn,.switches button{min-height:44px;touch-action:manipulation}
  #play-hud .icon-button{min-width:44px;min-height:44px}
  .shop-overview{grid-template-columns:1fr;gap:9px}
  dialog{max-height:90dvh}
}
@media(max-width:540px){
  #desk-panel{grid-template-columns:1fr}
  #student-info,#subject-info{min-width:0}
  .form-row{flex-wrap:wrap;gap:8px}
  .form-row input[type=range]{width:100%}
}
@media(max-width:360px){
  #mobile-action-dock:not(:empty){flex-wrap:wrap}
  #mobile-action-dock .mobile-dock-person{flex-basis:100%}
  #mobile-tools>span{display:none}
  #mobile-seat-picker{max-width:60vw}
  #play{padding-bottom:calc(145px + env(safe-area-inset-bottom))}
}
@media(pointer:coarse){
  .seat{min-width:44px;min-height:44px}
  .icon-button,.round-button{min-width:44px;min-height:44px;touch-action:manipulation}
  .btn,.event-choice,.switches button{min-height:44px;touch-action:manipulation}
}
#plan-bar{display:flex;align-items:center;gap:18px;margin:0 0 12px;padding:12px 16px;background:#f9f3df;border:1px solid #bcb694;border-radius:9px;box-shadow:0 2px 0 #d7cfa8}
.plan-label{display:flex;align-items:center;gap:10px}.plan-icon{width:36px;height:36px;display:grid;place-items:center;border:1px solid #b6c4a3;background:#e1ead4;color:#426247;border-radius:8px}
.plan-label small,.subject-pair small{display:block;color:#96763c;font-size:9px;font-weight:bold;letter-spacing:.13em}.plan-label h2{font:700 24px var(--serif);margin:1px 0}.plan-copy{margin-right:auto;min-width:0}.plan-copy b,.plan-copy small{display:block;font-size:13px}.plan-copy small{font-size:11px;color:var(--muted);margin-top:3px}.plan-controls{display:flex;gap:7px}.plan-controls .btn{min-height:40px;font-size:13px}
#plan-map-detail{border-top:1px solid var(--line);padding:8px 13px 10px;background:#fbf7e9}#plan-map-detail summary{font-weight:700;font-size:13px;cursor:pointer;min-height:30px;align-content:center}.seat-map{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:5px;max-width:650px;margin:4px auto}.map-place{min-width:0;min-height:44px;border:1px solid #b8a680;border-bottom:3px solid #bba079;border-radius:5px;background:#f2e5c9;color:#3e5041;display:flex;align-items:center;justify-content:center;gap:5px}.map-place small{font:10px monospace;color:#8c754e}.map-place b{font-size:12px}.map-place.chosen,.seat.swap-source .seat-name{background:var(--green);color:white}.map-place.chosen small{color:#f0daa0}.seat.swap-source{outline:2px dashed #d08a31;outline-offset:2px}.seat[draggable=true]{cursor:grab}.seat[draggable=true]:active{cursor:grabbing}
.bond-list{padding:0;margin:3px 0;list-style:none}.bond-row{display:flex;align-items:flex-start;gap:8px;padding:8px 0;border-bottom:1px dashed var(--line)}.bond-row:last-child{border:0}.bond-row b,.bond-row small{display:block}.bond-row b{font-size:13px}.bond-row small{font-size:12px;line-height:1.35;color:#566651;margin-top:2px}.bond-symbol{display:grid;place-items:center;width:26px;height:26px;flex:none;border-radius:50%;background:#e0e8d6;color:#446b47}.bond-symbol svg{width:15px;height:15px}.rival .bond-symbol{color:#99513c;background:#f0dfcf}.mentor .bond-symbol{color:#416782;background:#dfe9e8}.anchor .bond-symbol{color:#847342;background:#ede6cb}.bond-location{font-weight:bold}.book-heading{font:700 20px var(--serif);margin:15px 0 5px}.subject-pair,.profile-intro{display:flex;gap:10px;flex-wrap:wrap}.subject-pair{margin-top:14px}.subject-pair div{flex:1;padding:10px;background:#f4ecd9;border-radius:6px}.subject-pair b{font:700 19px var(--serif)}.compact{max-height:37vh;overflow:auto}.compact .bond-row{padding:6px 0}
.is-planning #mobile-requests{display:none}.is-planning .subject-mark{color:#88682e;background:#f1dfb7}
@media(max-width:860px){#plan-bar{flex-wrap:wrap;gap:7px 12px;padding:9px 12px}.plan-controls{margin-left:auto}.plan-copy{flex:1;min-width:145px}.map-place{flex-direction:column;gap:0}.seat-map{gap:3px}.map-place small{font-size:8px}.map-place b{font-size:11px}}
@media(max-width:680px){#plan-bar .plan-controls{display:none}.plan-label h2{font-size:20px}.plan-copy b{font-size:12px}#plan-map-detail{padding:5px 7px}.is-planning .compact{max-height:initial}}
#day-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff7e2;border:1px solid #d1be8e;border-left:4px solid #ba9145;border-radius:7px;margin-bottom:10px;padding:9px 13px}
.special-day,.day-result{display:flex;align-items:center;gap:12px}.special-day small,.skill-at-desk>small{display:block;font-size:9px;font-weight:700;letter-spacing:.1em;color:#937137}.special-day b{font:700 18px var(--serif)}.special-day p{font-size:12px;color:#605c48;margin:3px 0 0;line-height:1.4}.special-icon,.ability-icon{width:32px;height:32px;display:grid;place-items:center;background:#efe0b9;color:#865f31;border-radius:8px;flex:none}.skill-at-desk{margin-left:auto;flex:none}.skill-at-desk>small{letter-spacing:.02em;margin-bottom:3px}.skill-at-desk .btn{min-height:42px}
.attentive .seat-bubble:not([hidden]),.attentive .mobile-request{outline:3px solid #daa531;box-shadow:0 0 0 5px #fff1ab90}
.class-loadout,.equipped-note{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:9px 0;font-size:13px}.class-loadout .btn,.equipped-note .btn{font-size:12px}.ability-shelf p{color:#5b6456;line-height:1.45;font-size:14px}.equipped-note{padding:10px 12px;border:1px solid #bfcaa9;border-radius:7px;background:#eaf0de}.ability-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px dashed var(--line)}.ability-row h4{font:700 18px var(--serif);margin:0}.ability-row p{margin:4px 0 0;font-size:13px}.ability-row .btn{flex:none;margin-left:auto}.day-result{padding:10px;border-radius:6px;background:#f5e9c9;font-size:14px}
@media(max-width:680px){#day-banner{align-items:stretch;flex-direction:column;gap:6px}.skill-at-desk{display:flex;align-items:center;gap:9px;justify-content:space-between;margin-left:0}.special-day{align-items:start;gap:7px}.special-icon{width:25px;height:25px}.ability-row{flex-wrap:wrap}.ability-row>div{flex:1 1 170px}.ability-row .btn{min-height:44px}.class-loadout{flex-wrap:wrap}.special-day p{font-size:12px}}
.report-moment{padding:9px 12px;margin:7px 0;border-left:3px solid #9db08a;background:#f1f1de;font:italic 15px/1.4 var(--serif)}
.growth-report{margin-top:12px}.growth-report .chronicle{margin:8px 0}.growth-report>b{font-size:12px;color:#547349}

.seat.travelling{pointer-events:none}.seat.travelling .seat-name{border-bottom:2px solid #bc8946}

@media(max-width:860px){.big-class .room-surface{min-width:720px}#plan-bar .plan-controls{display:none}}
.room-surface{container-type:inline-size}
#live-board{position:absolute;left:26.75%;top:6.75%;width:45.2%;height:16.75%;display:flex;flex-direction:column;justify-content:center;gap:.25cqw;padding:0 .8cqw;pointer-events:none;color:#fbf6dc;text-shadow:0 1px 1px #294d41}
.chalk-status{font:700 1.22cqw/1.14 var(--sans);letter-spacing:.065em;color:#f3da9c}
.chalk-question{font:italic 600 2cqw/1.13 var(--serif);letter-spacing:-.01em}
.chalk-excerpt,.chalk-excerpt+span{display:block}.chalk-excerpt{color:#ffe5a3}
.chalk-excerpt mark{color:#fff8da;background:transparent;text-decoration:underline;text-decoration-color:#ffe399;text-decoration-thickness:2px}
.chalk-note{font:600 1.52cqw/1.12 var(--sans);color:#cfedc0}.chalk-note.retry{color:#ffdfac}
.big-slate{display:grid;gap:12px;padding:18px 20px;background:#395d50;color:#fff8e6;border:5px solid #c89e70;border-radius:6px}
.big-slate .chalk-question{font-size:clamp(19px,3vw,27px)}.big-slate .chalk-note{font-size:15px}.big-slate .chalk-status{font-size:12px}
.section-top{display:flex;justify-content:space-between;align-items:center;gap:6px}.section-top h3{margin:0}.section-top .btn{font-size:11px;padding:5px 7px}
.board-response{font-size:12px;color:#53634e;min-height:2.7em;margin-top:7px;line-height:1.3}
#board-zoom{background:#f6efdc;border:1px solid #cbbf9f;border-radius:5px;font:700 12px var(--sans);padding:5px 9px;flex:none}
@media(max-width:860px){#board-zoom,.section-top .btn{min-height:44px}.room-bottom{flex-wrap:wrap}}
/* The floor anchor moves down the aisle as the launcher teacher becomes larger. */


#live-board{width:41.7%}
.paper-menu .skip-intro{font-size:12px;min-height:29px;color:#626d60;border-bottom:1px dashed #cbbf9d;padding-top:3px;padding-bottom:5px}
.guide-intro{background:#eaf0de;border:1px solid #bbc7a9;border-radius:7px;padding:12px;margin-bottom:12px}.guide-intro h3{font:700 20px var(--serif);margin:0}.guide-intro p{margin:4px 0 9px}
#practice-coach{margin-bottom:9px}.lesson-coach{position:relative;padding:12px 16px 12px 83px!important;min-height:89px;background:linear-gradient(95deg,#f7edc9,#fffae9)!important}
.lesson-coach:before{content:"";position:absolute;left:15px;top:50%;width:54px;height:54px;transform:translateY(-50%);background:#dfd3a8 url('../assets/portrait-happy.webp') center/cover;border:1px solid #baa77c;border-radius:50%}
.lesson-coach .lesson-coach-head{margin-bottom:3px}.lesson-coach p{margin:3px 0;max-width:85ch}.lesson-coach .btn{margin-top:5px}.lesson-coach .lesson-instruction{color:#375f44}.lesson-target .seat-name{background:#385c40;color:#fff8d4}.lesson-target{outline:2px dashed #b57e2d;outline-offset:2px}.lesson-action:enabled{box-shadow:inset 0 0 0 2px #bd9c53}
.lesson-coach .event-choice{display:inline-block;width:auto;margin:5px 6px 0 0;vertical-align:top}.practice-mode .tool-strip:empty{display:none}
@media(min-width:861px){.play-layout{grid-template-columns:minmax(0,1fr) clamp(260px,24%,320px)}}
@media(max-width:860px){.big-class .room-surface{min-width:680px}.seat{min-width:44px;min-height:44px}}
@media(max-width:680px){.room-surface{min-width:424px}.paper-menu .skip-intro{min-height:44px}.lesson-coach{padding:10px 12px!important}.lesson-coach:before{display:none}.practice-mode #mobile-action-dock .btn{min-height:44px}}
.rail-head{display:flex;align-items:center;justify-content:space-between;gap:5px;margin:-2px 0 7px;border-bottom:1px dashed #c4c5af;padding-bottom:3px}.rail-head b{font:700 14px var(--serif);color:#42604c}
.info-dot{display:inline-grid;place-items:center;min-width:27px;height:27px;border-radius:50%;border:1px solid #a5b19a;background:#fff9e8;color:#405e46;font:italic bold 15px Georgia,serif;padding:0}.info-dot:hover{background:#efe8d2}
#class-tools{background:#faf6e8;border:1px solid var(--line);border-radius:8px;padding:9px 12px;justify-content:flex-start}#class-tools .rail-head{flex-basis:100%;margin-bottom:3px}.section-top h3{margin-right:auto}.section-top .btn{flex:none}
.seat-bubble b{position:absolute;right:-4px;top:-6px;min-width:12px;border-radius:3px;background:#884d36;color:white;font:800 10px var(--sans);border:1px solid #ffe6bc}.seat-bubble.evidence{border-radius:5px;border-style:double;border-width:3px}
.effect-tags{display:flex!important;gap:5px;flex-wrap:wrap;margin-top:3px}.effect-tags small{border-radius:4px;background:#e7edda;padding:2px 5px;font-weight:700;font-size:11px}.time-label{font-size:11px;font-weight:400}.timer{min-width:82px}
#priority-count{border:1px solid #c8c4b0;border-radius:4px;padding:4px 7px;font-size:12px;color:var(--green)}#priority-count:disabled{border-color:transparent;color:#6a7466}
.dock-info{background:none;border:0;text-align:left}.room-bottom{justify-content:flex-start}.room-bottom #queue-status{margin-left:auto}#live-feedback{min-height:58px}.action-paper .small-options{min-height:32px}
@media(max-width:860px){.info-dot{min-width:44px;height:44px}.section-top{flex-wrap:wrap}.section-top .btn{min-height:44px}.dock-info{min-height:44px}#priority-count{min-height:40px}.time-label{display:block}.timer{min-width:0}.room-bottom #flow-status{display:none}.plan-label .info-dot{margin-left:4px}}
@media(max-width:680px){#play-hud{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"title clock pause" "quiet mood mood";gap:5px 9px;padding:8px 10px}
#play-hud .subject-mark{display:none}.hud-title{grid-area:title}.timer{grid-area:clock}.timer .time-label{font-size:9px}.meter{width:100%}.meter:not(.mood){grid-area:quiet}.meter.mood{grid-area:mood}#play-hud .icon-button{grid-area:pause}.room-bottom{gap:4px;padding:4px 7px}.room-bottom #queue-status{font-size:9px}}

/* The teacher stands in the near aisle. The static painting and the wave use the same foot anchor. */
.title-stage{container-type:inline-size}
.hero-teacher{position:absolute;left:73.5%;bottom:2.1%;height:62.5%;width:auto;aspect-ratio:365/940;transform:translateX(-50%);pointer-events:none}
.hero-teacher img{display:block}
.hero-teacher:before{content:"";position:absolute;left:62%;bottom:.25%;width:68%;height:2.6%;transform:translateX(-50%) skewX(-12deg);border-radius:50%;background:#533b2480;filter:blur(2px)}
@media(min-width:861px){.title-stage{aspect-ratio:1.83}}
@media(max-width:680px){
  .title-stage{padding-top:61.8%}
  .room-paint{aspect-ratio:1.62;background-size:cover;background-position:center}
  .hero-teacher{left:75.2%;height:38.4cqw;bottom:auto;top:22.2cqw}
}
/* Classbook stories reuse the between-subject pause and the existing pupil card. */
.story-cast{display:flex;flex-wrap:wrap;gap:8px}.story-child{display:inline-flex;align-items:center;gap:6px;padding:2px 10px 2px 3px;border:1px solid #cbc9af;background:#edf0df;border-radius:22px;font:700 15px var(--serif);color:#355543}.story-child canvas{width:34px;height:34px;display:block;border-radius:50%;background:#e0dcc0}.story-child:nth-child(2){background:#f7ead8;border-color:#dbc6a5}.story-text{font:500 17px/1.45 var(--serif);color:#3e4c3e;margin:13px 0 15px}.story-choices{display:grid;gap:6px}.story-choice{display:flex;gap:11px;align-items:center;width:100%;min-height:52px;margin:0;padding:9px 12px}.story-choice-icon{display:grid;place-items:center;border-radius:5px;background:#e6ebd7;color:#486a4c;width:30px;height:30px;flex:none}.story-choice-icon svg{width:16px;height:16px}.story-choice b,.story-choice small{display:block}.story-choice small{line-height:1.35}.story-skip{border-style:dashed;background:#f7f4e7}.story-skip .story-choice-icon{background:none}.class-story+.actions .btn{min-height:44px}
.pupil-glance{margin-top:8px;font-size:12px;padding-top:6px;border-top:1px dashed #c9c8ab}.pupil-glance:empty{display:none}.glance-bond{display:flex;gap:4px;align-items:center;flex-wrap:wrap;color:#465f46}.glance-bond svg,.story-receipt>svg{width:15px;height:15px;flex:none}.pupil-glance small,.profile-mood small{display:block;font:12px/1.35 var(--sans);color:#5c6654;margin-top:2px}.glance-mood,.profile-mood{margin-top:7px;padding:6px 8px;border-left:3px solid #c39952;background:#f5edcf}.glance-mood b,.profile-mood b{font:700 14px var(--serif)}
.story-receipt{display:flex;align-items:center;gap:9px;padding:6px 10px;border-left:3px solid #9caa77;background:#eef1df;font-size:12px}.story-receipt p{margin:3px 0 0;line-height:1.35}.story-receipt b{font:700 15px var(--serif)}
.pair-mark:not([hidden]){display:inline-flex;vertical-align:middle;margin-left:3px;color:#436847}.pair-mark svg{width:12px;height:12px;display:block}
@media(max-width:680px){.story-choice{min-height:48px;padding:7px 9px}.story-text{font-size:16px}.story-cast{gap:4px}.student-actions .btn,.pupil-glance+.small-options .btn{min-height:44px}}
.story-receipt small{display:block;margin-top:3px;color:#4d604a;font-size:11px;line-height:1.35}
@media(max-width:860px){#mobile-action-dock .dock-classmate{display:flex;align-items:center;gap:3px}.dock-classmate .dock-info{min-width:0;padding:3px 4px}.touch-profile{width:44px;height:44px;flex:none;border:1px solid #bac3ac;border-radius:7px;color:#41624e;background:#fbf7e8;display:grid;place-items:center}.touch-profile svg{width:17px;height:17px}}
@media(max-width:500px){
  #mobile-action-dock:not(:empty){flex-wrap:wrap}
  #mobile-action-dock .dock-classmate{flex:1 1 100%}
  #mobile-action-dock .dock-classmate .dock-info{min-width:44px;min-height:44px}
}
#team-selector{padding:9px 10px;background:#f6f2df;border-top:1px solid #d5ceb7}
.team-list-head,.activity-heading{display:flex;align-items:center;gap:7px}.team-list-head{justify-content:space-between;margin-bottom:6px}.team-list-head b,.activity-heading h3{font:700 17px var(--serif);margin:0;color:#324c3d}.team-list-head small{font-size:11px;color:#5b6959}
.team-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:5px}
.team-chip,.activity-action{font:inherit;cursor:pointer;color:#314a39;border:1px solid #c2cbb6;border-radius:6px;background:#fffaed;text-align:left;display:flex;align-items:center;gap:7px;min-height:46px;padding:6px 8px}
.team-chip[aria-pressed=true]{background:#e5ebd6;box-shadow:inset 0 0 0 1px #678367}.team-chip b,.team-chip small,.activity-action b,.activity-action small,.activity-action em{display:block}.team-chip b,.activity-action b{font:700 14px var(--serif)}.team-chip small,.activity-action small{font-size:11px;line-height:1.35;color:#54634e}.team-chip strong{margin-left:auto;font-size:11px;white-space:nowrap}
.team-chip svg,.activity-action svg,.activity-heading svg,.activity-notice>svg{width:17px;height:17px;flex:none}.team-sign:not([hidden]){position:absolute;bottom:1px;right:70%;white-space:nowrap;max-width:82px;overflow:hidden;text-overflow:ellipsis;font:700 9px var(--sans);background:#e8eed9;color:#395b43;border:1px solid #90a27d;border-radius:5px;padding:2px;pointer-events:none}.team-selected .seat-name,.presenting-seat .seat-name{outline:2px solid #829766}
.activity-notice{display:flex;align-items:center;gap:9px;background:#edf1dd;border-left:3px solid #78946d;padding:7px 10px}.activity-notice p,.activity-status,.activity-detail{margin:3px 0;font-size:13px}.activity-cast{font-size:12px;color:#5c6d59}.activity-status{font-weight:700;color:#48603f}.activity-actions{display:grid;gap:5px;margin-top:7px}.activity-action{width:100%;align-items:flex-start}.activity-action svg{margin-top:3px}.activity-action em{font-style:normal;font-size:10px;color:#755935;margin-top:3px}.activity-action:disabled{opacity:.64;cursor:default}.activity-card{min-width:0}.activity-card p{line-height:1.35}
@media(max-width:400px){.team-list{grid-template-columns:repeat(2,minmax(0,1fr))}.team-chip{padding:5px;gap:4px}.team-chip svg{width:14px}}
.backup-settings{margin:14px 0;border-top:1px dashed #c6c7b1;padding-top:10px}.backup-settings h3{margin:0;font:700 17px var(--serif)}.backup-settings p{font-size:13px;line-height:1.4}.backup-settings>div,.backup-compare{display:flex;flex-wrap:wrap;gap:7px}.backup-settings .btn,.backup-compare+.actions .btn{min-height:44px}.backup-settings small:not(:empty){display:block;margin:7px 0;color:#854731}.backup-compare p{background:#edf0df;padding:9px;border-radius:6px;flex:1 1 190px;font-size:13px}.backup-compare b{display:block;margin-bottom:5px}
.activity-mode #class-tools:empty,.activity-mode #mobile-requests:empty{display:none}

.sound-mix{margin:0 0 12px;border:1px solid #cbc6ad;border-radius:7px;padding:4px 12px}.sound-mix legend{padding:0 6px;font:700 18px var(--serif);color:#38523e}.sound-mix .form-row{min-height:44px;gap:8px}.sound-mix .form-row span{display:flex;align-items:center;gap:6px;min-width:0}.sound-mix output{min-width:40px;text-align:right;font-variant-numeric:tabular-nums;color:#5b695a}.sound-mix input[type=range]{width:clamp(76px,21vw,146px);height:44px;margin:0}
.sound-mix .music-state{margin:3px 0 8px;color:#4c604d;font-size:13px;overflow-wrap:anywhere}
