/* ==== welcome-journey.css ==== */
.welcome-journey{position:absolute;z-index:5;left:3.2%;top:230px;width:350px;max-width:calc(100% - 80px);padding:18px 20px;border:1px solid #d5d7bc;border-radius:22px;background:#fffcefef;box-shadow:0 6px 22px #34594b20;color:#2c5342;box-sizing:border-box}
.welcome-brand{font:600 10px 'Space Grotesk','IBM Plex Sans Thai',sans-serif;letter-spacing:.13em;color:#718267}.welcome-journey h2{font-size:21px;line-height:1.4;margin:7px 0}.welcome-journey p{font-size:12px;margin:0 0 12px}.welcome-actions{display:flex;flex-direction:column;gap:9px}.welcome-journey button,.welcome-tour-controls button{font:inherit;min-height:44px;border-radius:12px;padding:10px 13px;cursor:pointer;color:#2c5342;border:1px solid #b6c8ad;background:#f3f6e8}.welcome-actions [data-welcome-tour]{display:flex;align-items:center;gap:12px;background:#315f49;color:#fff7da;border-color:#315f49;box-shadow:0 3px 0 #1f4030;text-align:left;min-height:69px}.welcome-actions [data-welcome-tour] span{flex:1}.welcome-actions strong,.welcome-actions small{display:block}.welcome-actions strong{font-size:18px}.welcome-actions small{font-size:11px;font-weight:400}.welcome-actions svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.7}.welcome-actions [data-welcome-choose]{background:transparent;font-size:14px}.welcome-journey [data-welcome-note]{display:block;font-size:10px;line-height:1.7;color:#617360;margin:10px 0 2px}.welcome-extras{display:flex;gap:12px;flex-wrap:wrap}.welcome-extras button{border:0;background:transparent;padding:3px 0;font-size:11px;text-decoration:underline;text-underline-offset:4px}.welcome-journey button:disabled{opacity:.6;cursor:default}.welcome-journey button:focus-visible,.welcome-tour-controls button:focus-visible{outline:3px solid #337a9e;outline-offset:3px}.welcome-tour-controls{position:absolute;z-index:9;left:50%;bottom:80px;transform:translateX(-50%);display:flex;gap:8px;padding:8px;border:1px solid #d3d4b3;background:#fff8eaf2;border-radius:17px;max-width:calc(100% - 24px);box-sizing:border-box}.welcome-tour-controls button{white-space:nowrap;font-size:12px}.welcome-tour-controls [aria-pressed=true]{background:#dbe9d2}.welcome-tour-controls[hidden]{display:none!important}
#cloudWorld:has(.welcome-journey) .city-guide-invite{display:none!important}#cloudWorld:is(.touring,.travelling,.island-mode,.future-island,.observatory-view,.landmark-view,.cab-visible,.follow-view) .welcome-journey{display:none}#cloudWorld:has(.welcome-journey):not(.touring):not(.travelling) #rideTram{font-size:12px;min-height:44px;padding:8px 14px;min-width:0}
@media(max-width:1050px){.welcome-journey{top:220px;width:315px;padding:15px}.welcome-journey h2{font-size:19px}}
@media(max-width:650px){.welcome-journey{top:174px;left:12px;right:68px;width:auto;max-width:none;padding:11px 12px;border-radius:16px}.welcome-journey h2{font-size:16px;margin:4px 0}.welcome-journey p{display:none}.welcome-brand{font-size:8px}.welcome-actions{gap:7px}.welcome-actions [data-welcome-tour]{min-height:58px;padding:8px;gap:8px}.welcome-actions strong{font-size:15px}.welcome-actions svg{width:23px}.welcome-actions [data-welcome-choose]{font-size:12px;min-height:44px;padding:7px}.welcome-journey [data-welcome-note]{font-size:9px;margin-top:6px}.welcome-extras{gap:9px}.welcome-extras button{font-size:10px;min-height:36px}.welcome-tour-controls{top:calc(var(--mobile-world-height,640px) - 116px);bottom:auto;left:12px;right:12px;transform:none;max-width:none;justify-content:center;padding:7px;gap:5px}.welcome-tour-controls button{font-size:11px;padding:8px}.welcome-tour-controls [data-welcome-exit]{font-size:10px}#cloudWorld .cloud-title h1{font-size:28px}#cloudWorld .cloud-title p{font-size:12px}#cloudWorld:has(.welcome-journey):not(.touring):not(.travelling) #rideTram{top:calc(var(--mobile-world-height,640px) - 49px)}}
#cloudWorld.touring:has(.welcome-tour-controls) :is(#rideTram,#stationDock,#showStationDock){display:none}
.welcome-journey[hidden]{display:none!important}
#cloudWorld.welcome-visible :is(#stationDock,#showStationDock,#rideTram){display:none}
#cloudWorld.welcome-visible .cloud-enter-link{display:none}
#cloudWorld.touring .cloud-enter-link{display:none}
/* Static fallback owns the learning entry; do not stack a duplicate welcome. */
#cloudWorld[data-graphics-mode="static"] :is(.welcome-journey,.welcome-tour-controls){display:none!important}
/* While graphics load, the existing learning entry remains the single surface. */
#cloudWorld[data-graphics-mode="loading"] :is(.welcome-journey,.welcome-tour-controls){display:none!important}
@media(prefers-reduced-motion:reduce){.welcome-journey,.welcome-tour-controls{animation:none;transition:none}}
/* Approved compact invitation: keep the scenery first, details on request. */
.welcome-journey{top:min(calc(100% - 210px),calc(100svh - 288px));bottom:auto;width:280px;max-width:calc(100% - 24px);padding:12px;border-radius:18px}
.welcome-card-head{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-bottom:8px}
.welcome-card-head>div:first-child{min-width:0}.welcome-brand{font-size:12px;letter-spacing:0;line-height:1.4}
.welcome-journey h2{font-size:18px;line-height:1.45;margin:3px 0 0}.welcome-card-tools{display:flex;gap:0;flex-shrink:0}
.welcome-journey .welcome-card-tools button{width:44px;height:44px;min-width:44px;padding:0;border:0;background:transparent;font-size:22px}
.welcome-actions{gap:5px}.welcome-actions [data-welcome-tour]{min-height:48px;padding:9px 12px;gap:8px;justify-content:center;box-shadow:none}
.welcome-actions strong{font-size:16px}.welcome-actions svg{width:24px;height:24px;flex-shrink:0}.welcome-actions [data-welcome-choose]{font-size:14px;min-height:44px;padding:7px;border:0}
.welcome-journey [hidden]{display:none!important}.welcome-journey.welcome-minimized{width:56px;padding:0;border:0;background:transparent;box-shadow:none}
.welcome-journey .welcome-launcher{width:56px;height:56px;padding:0;font-size:25px;border-radius:18px;background:#fffcef;box-shadow:0 4px 16px #34594b24}
.welcome-details{position:absolute;bottom:calc(100% + 8px);left:0;right:0;padding:14px;border:1px solid #d5d7bc;border-radius:16px;background:#fffcef;box-shadow:0 6px 22px #34594b20;max-height:240px;overflow:auto}
.welcome-journey .welcome-details [data-welcome-note]{font-size:14px;line-height:1.65;margin:0}.welcome-journey .welcome-details p{display:block;font-size:14px;line-height:1.65;margin:10px 0 0}
#cloudWorld.welcome-visible .cloud-minimap{top:min(calc(100% - 266px),calc(100svh - 344px));bottom:auto}
@media(max-width:650px){.welcome-journey{top:calc(var(--mobile-world-height,640px) - 190px);bottom:auto;left:12px;right:12px;width:auto;padding:10px 12px;border-radius:16px}.welcome-brand{font-size:12px}.welcome-journey h2{font-size:18px}.welcome-journey.welcome-minimized{top:calc(var(--mobile-world-height,640px) - 72px);right:auto;width:56px;padding:0}#cloudWorld.welcome-visible .cloud-minimap{top:calc(var(--mobile-world-height,640px) - 242px);bottom:auto}.welcome-card-head{margin-bottom:6px}.welcome-actions [data-welcome-tour]{min-height:48px}.welcome-details{max-height:220px}}
/* ADR0203: pause stays one tap away; optional tour actions are disclosed. */
.welcome-tour-controls{left:18px;right:auto;bottom:18px;top:auto;transform:none;gap:4px;padding:4px;max-width:none;border-radius:14px}
.welcome-tour-controls>[type=button]{width:44px;height:44px;padding:0;font-size:20px}
.welcome-tour-controls [hidden]{display:none!important}
[data-welcome-menu]{position:absolute;bottom:calc(100% + 8px);left:0;min-width:156px;padding:6px;background:#fffcef;border:1px solid #c7d5b8;border-radius:14px;box-shadow:0 4px 16px #34594b24;display:grid;gap:4px}
.welcome-tour-controls [data-welcome-menu] button{font-size:14px;min-height:44px;text-align:left}
#cloudWorld.cab-visible #welcomeTourControls{position:static;transform:none;margin:6px 0 0 auto;width:max-content;max-width:100%;flex-wrap:wrap;justify-content:flex-end}
#cloudWorld.cab-visible [data-welcome-menu]{position:static;flex-basis:100%;box-sizing:border-box;min-width:0;box-shadow:none}
#cloudWorld.cab-visible #driverCab{max-height:calc(100svh - 100px);overflow:auto;overscroll-behavior:contain}
@media(max-width:650px),(max-height:500px){
 .welcome-journey{top:min(calc(var(--mobile-world-height,640px) - 72px),calc(100svh - 128px));left:12px;right:12px;width:auto;max-width:360px;padding:6px 52px 6px 6px;border-radius:16px}
 .welcome-card-head{margin:0}.welcome-card-head>div:first-child{display:none}.welcome-card-tools{position:absolute;right:6px;top:6px}
 .welcome-actions{flex-direction:row;gap:4px;align-items:center}.welcome-actions [data-welcome-tour]{flex:1;min-width:0;min-height:44px;padding:6px;gap:5px}
 .welcome-actions strong{font-size:14px;line-height:1.5}.welcome-actions svg{width:20px;height:20px}.welcome-actions [data-welcome-choose]{font-size:14px;padding:6px;min-height:44px;flex-shrink:0}
 .welcome-journey.welcome-minimized{top:min(calc(var(--mobile-world-height,640px) - 72px),calc(100svh - 128px));right:auto;width:56px;padding:0}
 .welcome-details{max-height:min(240px,calc(100svh - 180px));overflow:auto}.welcome-details>strong{font-size:14px}
 #cloudWorld.welcome-visible .cloud-minimap{top:min(calc(var(--mobile-world-height,640px) - 128px),calc(100svh - 184px))}
 .welcome-tour-controls{top:min(calc(var(--mobile-world-height,640px) - 72px),calc(100svh - 128px));bottom:auto;left:12px;right:auto}
}
/* Landscape uses the taller desktop header; keep the complete hit target in view. */
@media(max-height:500px){
 .welcome-journey,.welcome-journey.welcome-minimized,.welcome-tour-controls{top:calc(100svh - 152px)}
 #cloudWorld.welcome-visible .cloud-minimap{top:calc(100svh - 208px)}
}
/* ==== fonts.css ==== */
@font-face {
  font-family: 'IBM Plex Sans Thai';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/font-0.ttf') format('truetype');
}

@font-face {
  font-family: 'IBM Plex Sans Thai';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/assets/font-2.ttf') format('truetype');
}

@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/font-4.ttf') format('truetype');
}

@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/assets/font-6.ttf') format('truetype');
}
/* ==== style.css ==== */
:root{--paper:#f6f7ef;--ink:#203e33;--muted:#647467;--line:#dce2d5;--green:#285542;--lime:#d7ec9c;--purple:#9882c6;--radius:22px;font-family:'IBM Plex Sans Thai',sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none;scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0}button,a,input{touch-action:manipulation}button,input{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}a{color:inherit;text-decoration:none}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #9275d0;outline-offset:4px}button{border:0}h1,h2,h3,p{margin:0}button{transition:background .18s,transform .18s}button:hover:not(:disabled){filter:brightness(.96)}button:active:not(:disabled){transform:translateY(1px)}.skip{position:fixed;top:-80px;left:10px;z-index:100;background:var(--lime);padding:15px}.skip:focus{top:10px}.header{height:104px;margin:0 5%;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;gap:10px;align-items:center;font-family:'Space Grotesk',sans-serif;font-size:27px;font-weight:600;letter-spacing:-1.3px;line-height:1}.brand-icon{width:43px;height:43px;background:var(--green);color:var(--lime);border-radius:13px;display:grid;place-items:center;font-size:39px;font-family:'Space Grotesk',sans-serif;font-weight:500;line-height:1;flex-shrink:0}.brand small{display:block;font-family:'Space Grotesk',sans-serif;font-size:9px;letter-spacing:2px;margin-top:7px}.header nav{display:flex;gap:33px;font-size:14px}.header nav a{padding:13px 0;color:var(--muted)}.header nav .selected{color:var(--ink);border-bottom:2px solid var(--green)}.journal-button{display:flex;align-items:center;gap:10px;background:transparent;font-size:14px}.journal-button>span:first-child{font-size:26px}.journal-button b{background:#e8ecdF;border-radius:20px;min-width:26px;padding:2px 7px;font:600 13px 'Space Grotesk',sans-serif}.hero{position:relative;min-height:665px;display:grid;grid-template-columns:42% 58%;max-width:1600px;margin:auto;padding:55px 5% 18px}.eyebrow{display:flex;align-items:center;gap:7px;letter-spacing:1.1px;font:500 10px/1.8 'Space Grotesk',sans-serif;margin-bottom:24px}.live-dot{width:6px;height:6px;border-radius:50%;background:#6b975d;box-shadow:0 0 0 4px #e5eed9}.hero-copy{z-index:1;padding-top:11px}.hero h1{font-size:clamp(42px,4.3vw,67px);font-weight:600;line-height:1.29;letter-spacing:-1.5px}.hero h1>span{position:relative;white-space:nowrap;display:inline-block}.hero h1>span:after{content:'';position:absolute;bottom:7%;left:0;right:-2%;height:27%;background:var(--lime);z-index:-1;transform:rotate(-1deg)}.hero h1 i{font-style:normal;font-size:.64em;display:inline-block;vertical-align:top;margin:5px 0 0 13px;color:#82a774;transform:rotate(15deg)}.intro{color:var(--muted);font-size:16px;line-height:1.9;margin:22px 0 26px}.hero-actions{display:flex;gap:24px;align-items:center;flex-wrap:wrap}.primary{display:flex;align-items:center;justify-content:center;gap:24px;background:var(--green);color:#fffef4;border-radius:10px;padding:16px 23px;font-weight:600;min-height:54px}.primary>span{font-size:22px;line-height:1}.text-link{font-size:14px;border-bottom:1px solid #98a997;padding:6px 0;display:flex;gap:14px}.hero-note{font-size:12px;color:#74816d;margin-top:17px;display:flex;gap:8px;align-items:center}.tiny-spark{color:#779957;font-size:17px}.hero-foot{margin-top:36px;display:flex;align-items:center;gap:12px;font-size:12px;color:#7b8678;line-height:1.8}.hero-foot strong{color:var(--muted);font-weight:400}.stack-icon{width:34px;height:34px;border:1px solid #c8d3b8;display:grid;place-items:center;border-radius:50%;font-size:23px;color:#5e8053}.world-shell{position:relative;min-width:0}.world-view{height:100%;position:relative;min-height:560px;background:radial-gradient(ellipse at 53% 51%,#e2eddb 0%,#ecf1e3 40%,transparent 72%);isolation:isolate}.scene-heading{display:flex;justify-content:space-between;gap:10px;align-items:center;position:absolute;top:4px;left:7%;right:0;z-index:2;font:500 10px 'Space Grotesk',sans-serif;letter-spacing:1.5px;color:#85917a}.scene-pill{border:1px solid #d1dcc6;border-radius:20px;padding:7px 11px;font:400 12px 'IBM Plex Sans Thai',sans-serif;letter-spacing:0;color:#68825a;background:#f6f7ef99}.scene-canvas{position:absolute;inset:-7% -6% 0 -11%;min-width:0;overflow:hidden}.scene-canvas canvas{width:100%;height:100%;display:block;position:absolute;inset:0;cursor:grab}.scene-canvas canvas:active{cursor:grabbing}.scene-poster{width:100%;height:100%;object-fit:contain;position:absolute;inset:0;transition:opacity .3s;filter:drop-shadow(0 30px 20px #254b2b13)}.scene-poster.loaded{opacity:0}.scene-status{position:absolute;top:47%;left:50%;transform:translate(-50%,-50%);font-size:12px;background:#fffdf3e8;border:1px solid var(--line);border-radius:20px;padding:8px 14px;z-index:3;text-align:center;white-space:nowrap}.scene-status:empty{display:none}.scene-caption{position:absolute;left:17%;right:5%;bottom:67px;display:flex;align-items:center;gap:14px;padding:15px 17px;border:1px solid #d8e0d0;background:#fffff5e6;backdrop-filter:blur(15px);box-shadow:0 7px 30px #35563c0a;border-radius:16px;z-index:2}.scene-caption strong{font-size:17px;font-weight:600;display:block}.scene-caption div>span{display:block;font-size:12px;color:var(--muted);margin-top:3px}.caption-spark{width:40px;height:40px;background:#eee8f7;border-radius:12px;display:grid;place-items:center;font-size:30px;color:#8a72b5}.round-button{margin-left:auto;flex-shrink:0;width:40px;height:40px;background:var(--lime);border-radius:50%;font-size:22px}.scene-controls{position:absolute;bottom:12px;right:4%;left:8%;display:flex;align-items:center;justify-content:center;gap:6px;z-index:3}.scene-controls>span{font-size:11px;color:#88937d;margin-right:7px}.scene-controls button{border-radius:7px;min-width:32px;height:32px;padding:0 9px;background:#eff2e5;border:1px solid #dae1d1;font-size:12px;color:#6e8064}.scene-controls button[aria-pressed=true]{background:#dcebc6;color:#335139;border-color:#bcd398}.approach{margin:14px 5% 0;padding:34px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:1.2fr 1fr 1fr 1.13fr;gap:20px;align-items:center}.overline{font:500 10px/1.6 'Space Grotesk',sans-serif;letter-spacing:1.8px;color:#87917b;display:block}.approach-title h2{font-size:24px;font-weight:500;line-height:1.45;margin-top:10px}.approach-step{display:flex;gap:13px;align-items:flex-start}.approach-step>span{font:500 13px 'Space Grotesk',sans-serif;border:1px solid #c8d7b6;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;flex-shrink:0;color:#74905d}.approach-step h3{font-size:15px;font-weight:500;margin-bottom:6px}.approach-step p{font-size:12px;color:#7c8974;line-height:1.8}.missions{margin:65px 5%}.section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:27px}.section-head h2{font-size:29px;font-weight:500;margin-top:8px}.availability{display:flex;align-items:center;gap:7px;font-size:12px;color:#7d8c70;padding-bottom:5px}.availability i{width:5px;height:5px;background:#92aa72;border-radius:50%}.mission-grid{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:18px}.mission-card{border:1px solid var(--line);border-radius:18px;padding:22px 24px;background:#f7f7ef;overflow:hidden}.mission-card.available{background:#e9efdb;border-color:#cedcba}.card-top{display:flex;align-items:center;justify-content:space-between}.topic-tag{font-size:12px;color:#73856b}.card-number{font:400 16px 'Space Grotesk',sans-serif;color:#9aa78d}.math-art{height:120px;display:flex;align-items:center;justify-content:center;margin:8px 0 10px}.balance-art{gap:12px;font:500 27px 'Space Grotesk',sans-serif}.balance-art span{padding:15px 12px;border-radius:12px;background:#f4f7e9;border-bottom:4px solid #b9cfa4;transform:rotate(-7deg)}.balance-art span:last-child{transform:rotate(7deg);background:#e9ddf2;border-color:#c9b3dc}.balance-art b{font-size:35px;color:#81a561}.geometry-art{gap:4px;font:400 67px 'Space Grotesk',sans-serif;color:#c7b9d3}.geometry-art span:first-child{transform:rotate(-15deg);color:#a8b897}.geometry-art span:last-child{transform:rotate(15deg);color:#dac3a3}.data-art{gap:9px;align-items:flex-end;padding:25px 0 20px}.data-art i{width:23px;border-radius:6px 6px 0 0;background:#c5d3b9;height:32px}.data-art i:nth-child(2){height:57px;background:#bac8aa}.data-art i:nth-child(3){height:73px;background:#b8a8cb}.data-art i:nth-child(4){height:47px;background:#cbbddd}.data-art i:nth-child(5){height:64px;background:#dbc9aa}.data-art i:nth-child(6){height:39px;background:#e0d4bd}.mission-card h3{font-size:18px;font-weight:500;margin-bottom:7px}.mission-card p{font-size:13px;color:#819078;line-height:1.8}.card-start,.coming-note{margin-top:23px;width:100%;display:flex;justify-content:space-between;align-items:center;padding:14px 0 0;border-top:1px solid #d4dfc5;background:transparent;font-size:13px}.card-start{font-weight:600}.card-start>span,.coming-note>span{font-size:20px}.coming-note{color:#a0a797}.partner-strip{margin:20px 5% 65px;background:#eae6ef;border:1px solid #dfd8e7;border-radius:20px;display:flex;align-items:center;padding:30px 35px;gap:26px}.partner-face{background:#beafd1;border-radius:20px 20px 20px 6px;width:62px;height:62px;flex-shrink:0;display:grid;place-items:center;transform:rotate(-7deg);font:500 27px 'Space Grotesk',sans-serif;color:#665181;letter-spacing:3px}.partner-strip .overline{color:#9686a5}.partner-strip h2{font-size:23px;font-weight:500;margin:5px 0}.partner-strip p{font-size:13px;color:#887995}.outline{margin-left:auto;border:1px solid #c1b2cf;background:transparent;border-radius:10px;white-space:nowrap;padding:12px 19px;font-size:13px;color:#756186}footer{margin:0 5%;padding:28px 0 34px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:28px}footer .brand{font-size:22px}footer .brand-icon{width:35px;height:35px;font-size:32px}footer .brand small{font-size:7px;letter-spacing:1.3px}footer p{font-size:11px;line-height:1.9;color:#8b9581}.footer-note{font-size:12px;color:#7f9074;display:flex;align-items:center;gap:13px}.footer-note>span{font-size:30px;color:#94aa7f}dialog{color:var(--ink);border:1px solid #cdd6c4;background:var(--paper);padding:0;border-radius:22px;box-shadow:0 30px 100px #14291c40}dialog::backdrop{background:#19362485;backdrop-filter:blur(8px)}body:has(dialog[open]){overflow:hidden}#lab{width:min(1220px,95vw);height:min(790px,94dvh);max-width:none;max-height:none}#lab[open]{display:flex;flex-direction:column}.lab-header{display:flex;justify-content:space-between;align-items:center;padding:20px 28px;border-bottom:1px solid var(--line);gap:12px}.lab-breadcrumb{display:flex;gap:12px;align-items:center}.lab-breadcrumb .brand-icon{width:38px;height:38px;font-size:35px}.lab-header h2{font-size:21px;font-weight:500}.lab-header .overline{font-size:9px}.lab-header-right{display:flex;align-items:center;gap:25px}.lab-header-right>span{font-size:12px;color:#7c8a73}.close-button{width:36px;height:36px;background:#e8ecdf;border-radius:50%;font-size:27px;font-weight:400;line-height:1}.lab-layout{display:grid;grid-template-columns:55% 45%;min-height:0;flex:1}.lab-visual{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);background:radial-gradient(ellipse at 50% 40%,#e1ebd7,#f4f5e9 75%)}#labSceneHost{flex:1;min-height:260px}#labSceneHost .world-view{height:100%;min-height:0;background:none}#labSceneHost .scene-heading{top:17px;left:24px;right:24px}#labSceneHost .scene-heading .scene-pill{display:none}#labSceneHost .scene-caption{display:none}#labSceneHost .scene-canvas{inset:0}#labSceneHost .scene-controls{bottom:0;left:12px;right:12px}.live-equation{padding:10px 20px;display:flex;align-items:center;justify-content:center;gap:15px;font:500 31px 'Space Grotesk',sans-serif;min-height:73px}.live-equation span{padding:12px 20px;border-radius:12px;background:#fffff4;border:1px solid #dce4d0;min-width:90px;text-align:center}.live-equation span small{font:400 11px 'IBM Plex Sans Thai',sans-serif;display:block;margin-top:5px;color:#879578}.live-equation.balanced span{background:#e0efd1;border-color:#b6d194}.live-equation b{color:#879b6c}.visual-note{text-align:center;font-size:12px;color:#859277;padding:0 15px 20px;min-height:42px}.lab-panel{padding:30px;overflow:auto;overscroll-behavior:contain}.lab-panel h3{font-size:27px;font-weight:500;line-height:1.45;margin:9px 0 10px}.panel-intro{font-size:15px;color:#7e8c74;line-height:1.9}.equation-display{font:500 28px 'Space Grotesk',sans-serif;letter-spacing:1px;padding:16px 19px;border:1px solid #d7dece;background:#fffef5;border-radius:12px;margin:20px 0;display:flex;justify-content:center;align-items:center;gap:12px}.equation-display em{font-style:normal;color:#8f70ad}.slider-label{display:flex;justify-content:space-between;align-items:center;font-size:14px;margin:23px 0 11px}.slider-label output{font:500 23px 'Space Grotesk',sans-serif}.range-row{display:flex;align-items:center;gap:10px}input[type=range]{accent-color:#739456;width:100%;min-height:38px;cursor:ew-resize}.step-button{border:1px solid #cbd8bc;border-radius:10px;width:38px;height:38px;flex-shrink:0;background:#e7eddd;font-size:24px}.range-ends{display:flex;justify-content:space-between;font:400 11px 'Space Grotesk',sans-serif;color:#95a088;margin:0 48px}.feedback{background:#eaeedf;border-radius:10px;font-size:13px;line-height:1.8;padding:13px 16px;margin:18px 0;color:#69805c;min-height:53px}.feedback.good{background:#dfedcf;color:#466331}.feedback.error{background:#f3e5dc;color:#926746}.lab-panel>.primary{width:100%;margin-top:18px}.hint-button{background:none;border:0;color:#806799;display:flex;gap:8px;align-items:center;padding:14px 0;font-size:13px}.hint-button:disabled{opacity:.6}.hint-box{border-left:3px solid #b79ccb;background:#f0eaf5;border-radius:0 9px 9px 0;padding:14px;font-size:13px;line-height:1.85;color:#7f668e}.hint-box p+p{margin-top:8px}.microcopy{font-size:11px;line-height:1.8;color:#8c967f;margin-top:12px}.choice-list{display:grid;gap:10px;margin-top:20px}.choice{font-size:14px;text-align:left;border:1px solid #d4ddc8;background:#fffef6;padding:15px 17px;border-radius:12px;display:flex;align-items:center;gap:12px}.choice:before{content:'';width:16px;height:16px;flex-shrink:0;border-radius:50%;border:1px solid #aab89a}.choice.correct{border-color:#9cb97d;background:#e1edce}.choice.wrong{border-color:#d5ae90;background:#f4e7da}.answer-form{margin-top:22px}.answer-form label{font-size:14px;display:block;margin-bottom:9px}.answer-row{display:flex;gap:10px}.answer-row span{font:500 24px 'Space Grotesk',sans-serif;align-self:center}.answer-row input{width:100%;min-width:0;flex:1;font:500 24px 'Space Grotesk',sans-serif;padding:12px;border:1px solid #c7d5b8;border-radius:10px;background:#fffef7;color:var(--ink)}.answer-form .primary{margin-top:16px;width:100%}.celebration-icon{font-size:50px;color:#7f9c5b;line-height:1.3}.result-card{border:1px solid #cddbbb;background:#e7efd9;border-radius:14px;margin:20px 0;padding:18px}.result-card h4{font-size:16px;margin:0 0 8px;font-weight:500}.result-card p{font-size:13px;color:#7d8e6c;line-height:1.8}.secondary{width:100%;padding:13px;border:1px solid #bdcbae;background:transparent;border-radius:10px;margin-top:11px;font-size:14px}.small-dialog{width:min(490px,92vw);padding:35px;max-height:85dvh}.small-dialog h2{font-size:28px;font-weight:500;margin:10px 0}.small-dialog p{font-size:14px;line-height:1.9;color:#7a8870;margin:15px 0}.small-dialog .primary{margin-top:22px;width:100%}.corner{position:absolute;right:14px;top:14px}.small-dialog .partner-face{margin-bottom:25px}.small-dialog .overline{margin-top:12px;font-size:9px}.journal-entry{border:1px solid #d7dfce;border-radius:12px;padding:15px;margin:12px 0}.journal-entry strong{font-size:15px;font-weight:500}.journal-entry p{margin:5px 0;font-size:12px}.journal-entry time{font-size:10px;color:#9ba58f}.text-button{border:0;background:none;text-decoration:underline;font-size:12px;padding:10px 0;color:#819074}.small-dialog .fineprint{font-size:11px}.empty-journal{padding:28px 12px;text-align:center;background:#edf0e3;border-radius:12px}.empty-journal span{font-size:45px;color:#a6bb88;display:block}.no-webgl canvas{display:none}.complete-world .scene-pill{background:var(--lime)}
@media(min-width:1550px){.hero{padding-top:70px}.hero h1{font-size:70px}.world-view{min-height:610px}}@media(max-width:1100px){.header{height:88px}.header nav{gap:22px}.hero{min-height:620px;padding-top:35px;grid-template-columns:44% 56%}.hero h1{font-size:49px}.eyebrow{font-size:8px;letter-spacing:.6px}.hero-actions{gap:14px}.hero-actions .primary{font-size:14px;padding:14px 17px;gap:15px}.text-link{font-size:12px}.world-view{min-height:550px}.scene-controls>span{display:none}.scene-caption{left:10%;right:0}.scene-caption div>span{font-size:11px}.scene-canvas{inset:-4% -8% 0 -13%}.approach{grid-template-columns:1fr 1fr;gap:30px}.approach-title h2 br{display:none}.mission-card{padding:19px}.mission-card h3{font-size:16px}.partner-strip{padding:25px;gap:18px}.partner-strip h2{font-size:21px}.partner-strip .overline{font-size:8px}.lab-panel{padding:24px}.lab-layout{grid-template-columns:50% 50%}.lab-panel h3{font-size:24px}.footer-note{display:none}}@media(max-width:760px){.header{height:80px;margin:0 6%;gap:14px}.header nav{display:none}.brand{font-size:24px}.brand-icon{width:38px;height:38px;font-size:35px}.brand small{font-size:8px}.journal-button{font-size:12px;gap:7px}.journal-button>span:first-child{display:none}.hero{display:flex;flex-direction:column;padding:32px 6% 0;min-height:0}.hero-copy{padding:0}.eyebrow{font-size:8px;margin-bottom:18px;letter-spacing:.8px}.hero h1{font-size:clamp(40px,9vw,62px);line-height:1.23;letter-spacing:-1.1px}.hero h1 br:nth-of-type(1){display:none}.hero h1>span:after{height:24%;bottom:10%}.hero h1 i{font-size:.58em;margin-top:8px}.intro{font-size:14px;line-height:1.8;margin:20px 0}.hero-actions{gap:23px}.hero-actions .primary{font-size:14px;padding:14px 18px}.hero-note{font-size:11px;margin-top:13px}.hero-foot{display:none}.world-shell{height:440px;margin:16px -2% 0}.world-view{min-height:0;height:100%}.scene-heading{left:4%;right:2%;top:10px;font-size:8px;letter-spacing:1px}.scene-pill{font-size:10px;padding:5px 9px}.scene-canvas{inset:0 -9% 2% -9%}.scene-caption{left:8%;right:5%;bottom:52px;padding:12px;gap:11px}.scene-caption strong{font-size:15px}.scene-caption div>span{font-size:10px}.caption-spark{width:35px;height:35px;font-size:25px}.round-button{height:34px;width:34px;font-size:19px}.scene-controls{left:0;right:0;bottom:8px;gap:7px}.scene-controls>span{display:none}.scene-controls button{font-size:11px;min-height:34px;padding:0 12px}.approach{margin:18px 6% 0;padding:28px 0;gap:22px;grid-template-columns:1fr}.approach-title h2{font-size:24px;margin-top:8px}.overline{font-size:9px}.approach-step h3{font-size:15px;margin-bottom:3px}.approach-step p{font-size:12px}.missions{margin:40px 6%}.section-head{display:block}.section-head h2{font-size:26px;margin:7px 0 12px}.availability{font-size:11px}.mission-grid{grid-template-columns:1fr}.mission-card{padding:20px 24px}.mission-card h3{font-size:18px}.math-art{height:100px}.coming .math-art{height:80px;margin-top:0}.partner-strip{margin:20px 6% 35px;display:grid;grid-template-columns:auto 1fr;padding:24px 20px;gap:15px}.partner-face{width:45px;height:45px;font-size:23px;border-radius:15px 15px 15px 5px}.partner-strip .overline{font-size:7px;letter-spacing:1px}.partner-strip h2{font-size:19px}.partner-strip p{font-size:12px;line-height:1.8}.partner-strip .outline{grid-column:1/-1;margin:3px 0 0;width:100%;font-size:12px}footer{margin:0 6%;padding:26px 0;align-items:start;flex-direction:column;gap:18px}footer p{font-size:10px}.lab-header{padding:15px 17px}.lab-header-right{gap:10px}.lab-header-right>span{font-size:10px}.lab-header h2{font-size:18px}.lab-header .overline{font-size:7px}.lab-breadcrumb{gap:8px}.lab-breadcrumb .brand-icon{width:32px;height:32px;font-size:29px}#lab{width:100vw;height:100dvh;border:0;border-radius:0;margin:0}.lab-layout{display:flex;flex-direction:column;overflow:auto;min-height:0}.lab-visual{flex-shrink:0;min-height:0;border:0;border-bottom:1px solid var(--line);height:300px}#labSceneHost{min-height:0;height:207px;flex:none}#labSceneHost .scene-heading{top:9px;font-size:8px;left:17px}#labSceneHost .scene-controls{bottom:0;gap:5px}#labSceneHost .scene-controls button{min-height:28px;height:28px;font-size:10px;padding:0 9px;min-width:28px}#labSceneHost .scene-canvas{inset:-2% 0 2% 0}.live-equation{font-size:21px;min-height:56px;padding:5px 15px;gap:11px}.live-equation span{padding:5px 15px;min-width:80px;border-radius:9px}.live-equation span small{font-size:9px;margin-top:0}.visual-note{font-size:10px;padding:2px 12px 10px;min-height:25px}.lab-panel{overflow:visible;padding:24px;flex:1}.lab-panel h3{font-size:25px}.panel-intro{font-size:14px}.equation-display{margin:16px 0;padding:13px;font-size:25px}.lab-panel .overline{font-size:9px}.small-dialog{padding:30px 25px}.small-dialog h2{font-size:25px}.small-dialog p{font-size:13px}}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

[hidden]{display:none!important}.world-shell{overflow:clip}.panel-intro{color:#607253}.mission-card p{font-size:14px;color:#66785c}.approach-step p{font-size:14px;color:#65775c}.partner-strip p{font-size:14px;color:#736380}.hero-note,.hero-foot{font-size:12px}.scene-controls button{min-width:34px}.lab-panel .microcopy{color:#657458}.small-dialog p{color:#647457}.small-dialog .overline{color:#6e7e60}
@media(max-width:760px){.hero h1 br:nth-of-type(1){display:initial}.hero h1{font-size:clamp(38px,9vw,57px);line-height:1.3}.hero h1 i{margin-left:9px}.hero-copy .intro{font-size:15px}}

.brand-mark{display:block;width:44px;height:44px;object-fit:contain;flex-shrink:0}.header .brand{gap:7px}footer .brand-mark{width:39px;height:39px}footer .brand small{letter-spacing:.8px;font-size:8px}.lab-breadcrumb .brand-mark{width:40px;height:40px}@media(max-width:760px){.header .brand-mark{width:39px;height:39px}.lab-breadcrumb .brand-mark{width:33px;height:33px}}
/* ==== learning.css ==== */
.learner-button{background:#e5eee5;border-radius:20px;padding:10px 14px;font-size:14px;white-space:nowrap}.learning-trail{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:12px 24px;border-bottom:1px solid var(--line);background:#f6f7ef}.learning-trail li{padding:6px 11px;border-radius:20px;font-size:14px;color:#53674f}.learning-trail li[aria-current]{background:#5145cd;color:white}.lab-layout{min-height:0;flex:1}.lab-visual{overflow:auto}#labSceneHost{min-height:200px;flex:1;max-height:320px}.manipulatives{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px 20px;border-top:1px solid var(--line)}.manipulatives>div{min-width:0}.manipulatives strong{font-size:14px;font-weight:500;display:block;margin-bottom:7px}.manipulatives>div>div{display:flex;gap:4px;flex-wrap:wrap}.math-token{display:inline-grid;place-items:center;width:23px;height:25px;border:1px solid #beacd4;border-radius:5px;background:#e7ddf2;color:#372960;font:600 14px 'Space Grotesk',sans-serif}.x-token{background:#f8dba2;border-color:#d9af67;color:#503b15;width:29px}.live-equation small,.visual-note{font-size:14px!important}.visual-note{padding:7px 18px 16px}.lab-panel{min-width:0}.lab-panel h3:focus{outline:none}.lab-panel p,.small-dialog p{font-size:16px;line-height:1.75}.lab-panel .microcopy,.small-dialog .microcopy{font-size:14px;line-height:1.7}.lab-panel .primary,.lab-panel .secondary{margin-top:12px;width:100%}.lab-panel input[type=range]{width:100%;accent-color:#5145cd;min-height:40px}.number-field,textarea,select{display:block;width:100%;font:inherit;border:1px solid #9cac9e;border-radius:10px;padding:12px;background:#fffef8;color:var(--ink);margin:8px 0 16px}textarea{resize:vertical;min-height:90px}textarea:focus-visible,select:focus-visible{outline:3px solid #5145cd;outline-offset:3px}.number-field{font-size:24px}.lab-panel label{display:block;font-size:16px}.check-label{display:flex!important;gap:10px;align-items:flex-start;margin:16px 0}.check-label input{width:20px;height:20px;flex:none;accent-color:#5145cd}.operation-grid{display:grid;grid-template-columns:1fr;gap:8px}.operation-grid button{min-height:48px;margin:0!important}.prediction-note,.review-note{background:#eeeafc;border-left:3px solid #5145cd;border-radius:0 12px 12px 0;padding:14px 16px;margin:16px 0;line-height:1.7;font-size:16px}.story{font-size:19px!important;color:var(--ink);padding:18px 0;line-height:1.85!important}.assessment-tag{font-size:14px!important;color:#5145cd}.assessment-cover{display:flex;flex:1;min-height:280px;padding:40px;flex-direction:column;justify-content:center;background:#e9eee3}.assessment-cover>span{font-size:14px;color:#5145cd}.assessment-cover h3{font-size:clamp(28px,3vw,45px);font-weight:500;margin:20px 0;line-height:1.5}.assessment-cover p{font-size:16px;line-height:1.8}.teacher-dialog{max-width:840px;width:calc(100% - 32px)}.teacher-card{padding:20px;border:1px solid var(--line);border-radius:14px;margin:18px 0;background:#edf2e7}.teacher-card h3{font-size:20px}.teacher-card p{margin:10px 0 0}.teacher-dialog details{margin:14px 0;padding:14px;border:1px solid var(--line);border-radius:10px}.teacher-dialog summary{cursor:pointer;font-size:16px}.teacher-dialog details p,.event-row{white-space:pre-wrap;overflow-wrap:anywhere}.event-row{padding:14px 0;border-bottom:1px solid var(--line);font-size:14px!important}.teacher-dialog>h3{margin-top:28px}.small-dialog .primary{margin-top:16px}.small-dialog .secondary{margin:12px 0}.lab-panel .hint-box{font-size:16px;line-height:1.8}.lab-header-right>span{font-size:14px}.header{gap:15px}.header nav{gap:18px}.journal-button{margin-left:auto}.feedback:empty{display:none}.learning-trail+ .lab-layout .lab-panel{padding-top:26px}
@media(max-width:900px){.header nav{display:none}.lab-header-right>span{max-width:120px}.learning-trail{padding:9px 14px}.learning-trail li{font-size:14px;padding:5px 9px}}
@media(max-width:760px){.header{margin:0 4%;gap:9px}.header .brand{font-size:21px}.learner-button{padding:9px 10px}.journal-button>span{font-size:12px}.journal-button{gap:4px}.header .brand-mark{width:31px;height:31px}.lab-visual{height:auto;overflow:visible}.lab-layout{overflow:auto}#labSceneHost{height:190px;min-height:190px;max-height:190px;flex:none}.manipulatives{padding:10px 17px;gap:14px}.math-token{width:20px;height:22px;font-size:13px}.x-token{width:24px}.assessment-cover{min-height:0;padding:22px}.assessment-cover h3{font-size:26px;margin:9px 0}.assessment-cover h3 br{display:none}.assessment-cover p{display:none}.lab-panel{padding:24px 22px}.learning-trail{gap:3px}.live-equation{font-size:24px}.lab-header-right>span{font-size:12px}.small-dialog p{font-size:16px}.small-dialog .microcopy{font-size:14px}.scene-controls button{min-height:32px!important}.lab-breadcrumb .overline{display:none}}
@media(max-width:360px){.header .brand small{display:none}.journal-button>span{display:none}.header .brand{font-size:20px}}

.lab-panel .feedback{font-size:16px;line-height:1.75}.teacher-dialog .fineprint{font-size:14px}

/* Quiet, optional audio and non-competitive activity progress. */
.sound-open{flex:none;border:1px solid var(--line);background:#edf2e7;color:#314a30;border-radius:50%;width:42px;height:42px;font-size:23px;display:inline-grid;place-items:center}.sound-open.sound-on{background:#5145cd;color:white;border-color:#5145cd}.sound-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:24px 0 12px}.sound-row>div{min-width:0}.sound-row strong,.sound-row span{display:block}.sound-row span{font-size:14px;line-height:1.7;margin-top:4px;color:#53674f}.sound-row button{flex:none;min-width:100px}.sound-dialog label{display:flex;justify-content:space-between;font-size:16px}.sound-dialog input[type=range]{width:100%;min-height:40px;accent-color:#5145cd}.sound-dialog #soundStatus{font-size:14px;min-height:48px}.sound-dialog #testEffect{width:100%}.journey-progress{padding:14px 20px;background:#f7f8ef;border-bottom:1px solid var(--line)}.progress-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px}.progress-heading>span{color:#5145cd}.progress-stars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0;margin:10px 0;list-style:none}.progress-stars li{display:flex;align-items:center;gap:6px;font-size:14px;color:#60705d;line-height:1.5}.progress-stars li>span:first-child{font-size:26px;line-height:1;color:#7a8674}.progress-stars li.earned>span:first-child{color:#99700c}.progress-stars li.earned{color:#245837}.progress-stars small{display:block;font-size:12px;color:#60705d;margin-top:3px}.journey-progress>p{font-size:12px!important;line-height:1.6;margin:4px 0 0}.lab-visual #labSceneHost{max-height:260px}.lab-header-right{gap:12px}.journey-progress .progress-stars small{font-size:12px}@media(max-width:760px){.journey-progress{padding:10px 16px}.progress-stars{gap:6px}.progress-stars li{font-size:12px;align-items:flex-start}.progress-stars small{display:none}.progress-stars li>span:first-child{font-size:22px}.lab-header-right{gap:8px}.lab-header-right>span{display:none}.lab-visual #labSceneHost{max-height:190px}}@media(max-width:480px){.header{gap:7px}.header .journal-button>span{display:none}.header .journal-button{min-width:38px;justify-content:center}.header .sound-open{width:36px;height:36px}.header .brand{font-size:20px}.header .learner-button{font-size:13px;padding:9px 7px}.sound-row{gap:10px}.sound-row button{min-width:90px;padding:10px}.sound-dialog{padding:30px 22px}.progress-stars li{font-size:14px}.progress-stars li>span:first-child{font-size:20px}}

@media(max-width:480px){.header .journal-button>span[aria-hidden]{display:inline!important;font-size:20px}.header .journal-button{gap:5px;padding:8px}.header .journal-button>span:not([aria-hidden]){display:none}}

.context-choice{border:1px solid #c4d4bb;background:#eff4e7;border-radius:14px;padding:16px;margin-bottom:24px}.context-choice select{margin-bottom:10px;background:#fffef8}.context-story>strong{font-size:16px}.context-story p{margin:7px 0;font-size:16px;line-height:1.8}.context-story small{font-size:14px;line-height:1.7;display:block;color:#53674f}.bridge-stories{display:grid;gap:12px}.bridge-stories article{padding:15px;background:#edf2e7;border:1px solid #c4d4bb;border-radius:12px}.bridge-stories article:nth-child(2){background:#eeeafc;border-color:#d1c8e7}.bridge-stories span{font-size:14px;font-weight:600}.bridge-stories p{font-size:16px;margin:6px 0}.repair-steps{font-family:'Space Grotesk',sans-serif;font-size:25px;line-height:1.8;background:#eeeafc;border-radius:14px;padding:18px 18px 18px 56px}.repair-steps li+li{border-top:1px solid #d6cdef}.learning-trail{gap:4px}.learning-trail li{padding:5px 9px}

.return-card{border:1px solid #b6c7ae;border-left:5px solid #5145cd;border-radius:18px;padding:24px;background:#edf2e7;margin:24px 0}.return-card .return-eyebrow{color:#5145cd;font-size:14px;margin:0 0 12px}.return-card h2,.return-card h3{font-size:clamp(23px,3vw,34px);line-height:1.5;margin:0 0 12px;font-weight:500}.return-card p{font-size:16px;line-height:1.8}.return-card .microcopy{font-size:14px;line-height:1.7;margin:15px 0 0}.return-card>.primary{margin:16px 0 0;max-width:100%;white-space:normal}.return-choices{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.return-choices button{min-height:44px;font-size:16px;white-space:normal}.return-card[hidden]{display:none}#returnToLearning{max-width:1060px;margin:20px auto 64px;padding:32px}#journalEntries .return-card{padding:20px}#journalEntries .return-card h3{font-size:24px}@media(max-width:1120px){#returnToLearning{margin-left:5%;margin-right:5%}}@media(max-width:480px){#returnToLearning{padding:22px;margin-bottom:36px}.return-choices{flex-direction:column}.return-choices button,.return-card>.primary{width:100%}}

.transfer-dialog{width:calc(100% - 28px);max-width:660px}.transfer-section{border-top:1px solid var(--line);padding-top:20px;margin-top:24px}.transfer-section h3{font-size:22px}.transfer-section label{display:block;font-size:16px;margin-top:16px}.transfer-section input[type=file]{max-width:100%;font:inherit;font-size:14px;margin:10px 0}.transfer-section textarea{font-size:13px;min-height:110px;overflow-wrap:anywhere}.transfer-section details{margin-top:16px}.transfer-section summary{cursor:pointer;min-height:44px;padding:10px 0}.transfer-section button{max-width:100%;white-space:normal}#transferStatus{font-size:16px;line-height:1.8;background:#edf2e7;border-radius:10px;padding:12px}#transferStatus:empty{display:none}@media(max-width:480px){.transfer-dialog{padding:30px 20px}.transfer-section h3{font-size:20px}}

/* Compact bookmark remains available when another room is the latest activity. */
.saved-story-return{margin-top:12px;border-top:1px solid #b6c7ae;padding-top:10px}.saved-story-return summary{cursor:pointer;min-height:44px;display:list-item;align-content:center;color:#285542;font-size:14px;line-height:1.6}.saved-story-return button{white-space:normal;min-height:44px;width:100%}.saved-story-return p{margin:4px 0 10px}.saved-story-return summary:focus-visible{outline:2px solid #5145cd;outline-offset:3px;border-radius:4px}
.quick-guide{color:#244d3b}.quick-guide-toggle{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:44px;border:1px solid #b7cbbb;border-radius:12px;background:#f6f7ef;color:#285542;padding:10px 15px;font:inherit;font-size:14px;cursor:pointer}.quick-guide-toggle span{display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:#e5eddb}.quick-guide-body{margin-top:10px;padding:18px;border:1px solid #bacdb9;border-radius:16px;background:#f9f6e7}.quick-guide-body[hidden]{display:none}.quick-guide-body h3{font-size:20px;line-height:1.5;margin:8px 0}.quick-guide-body h3 span{color:#95722c}.quick-guide-body p{font-size:16px;line-height:1.8;margin:8px 0 14px}.quick-guide-body .quick-guide-step{font-size:13px;color:#597563;margin:0}.quick-guide-body button{min-height:44px;white-space:normal;font-size:14px}.quick-guide-nav{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.quick-guide-nav button{padding:8px 12px;border:1px solid #bdcbb3;border-radius:9px;background:#edf1e4;color:#284f3c;cursor:pointer}.quick-guide-nav button:disabled{opacity:.45;cursor:default}.quick-guide-nav [data-guide-skip]{margin-left:auto;background:transparent;border-color:transparent}.quick-guide button:focus-visible{outline:2px solid #5145cd;outline-offset:3px}#learnerQuickGuide{max-width:1000px;margin:18px auto;padding:0 24px}#learnerQuickGuide>.quick-guide-toggle{width:100%}.teacher-quick-guide{margin:0 0 14px}.teacher-quick-guide>.quick-guide-toggle{width:100%}@media(max-width:600px){#learnerQuickGuide{padding:0 4%;margin:12px 0}.quick-guide-body{padding:15px}.quick-guide-nav [data-guide-skip]{margin-left:0}}

.saved-practice-entry{padding:8px 0}.saved-practice-entry+ .saved-practice-entry{border-top:1px solid #b6c7ae;margin-top:8px}.saved-practice-entry strong{font-size:14px;color:#285542}
/* ==== tutor.css ==== */
.tutor-entry{display:block;text-align:left;background:#e6efd6;border:1px solid #587346;border-radius:10px;color:#285542;padding:12px 14px;font-size:14px;margin:12px 0;line-height:1.6;cursor:pointer;min-height:44px}.tutor-diagram{padding:30px 24px;text-align:center;align-self:center;width:100%;max-width:450px;margin:auto;box-sizing:border-box}.tutor-eyebrow{font-size:14px;font-weight:600;color:#285542;margin:0 0 16px}.story-groups{display:flex;gap:10px;justify-content:center;margin:24px 0}.story-groups>span{background:#285542;color:#fff;font:500 36px 'Space Grotesk',sans-serif;border-radius:14px;padding:20px 8px;width:28%;max-width:100px}.story-groups small{display:block;font:400 13px 'IBM Plex Sans Thai',sans-serif;margin-top:8px}.story-wrap{border:2px dashed #786095;border-radius:12px;background:#f1edf7;color:#5a4277;padding:16px;font-size:16px}.story-wrap.removed{text-decoration:line-through;opacity:.55}.story-total{border-top:2px solid #285542;padding-top:18px;font-size:22px;font-weight:500}.tutor-controls{display:grid;gap:12px}.tutor-controls .choice{margin:0}.tutor-controls .primary{width:100%;margin-top:12px}.tutor-controls .number-field{display:block;width:100%;margin:10px 0}.tutor-controls label,.tutor-controls p,.tutor-question{font-size:16px;line-height:1.8}.tutor-controls .microcopy,.tutor-diagram .microcopy{font-size:14px}.tutor-math{font-family:'Space Grotesk','IBM Plex Sans Thai',sans-serif;overflow-wrap:anywhere}.number-machine{list-style:none;padding:0;display:flex;align-items:center;justify-content:space-between;gap:6px;background:#e5efd9;border-radius:12px;margin:12px 0}.number-machine li{padding:12px 5px;font:500 22px 'Space Grotesk',sans-serif}.number-machine li:nth-child(even){font-size:16px;border-radius:8px;background:#fff;white-space:nowrap}.tutor-controls textarea{font:inherit;box-sizing:border-box;width:100%;resize:vertical;padding:12px;border:1px solid #829574;border-radius:10px;background:#fff;color:#203e33}.tutor-controls .equation-display{font-size:clamp(20px,4.5vw,28px)}#labPanel .feedback,#labPanel .hint-box{font-size:16px;color:#345326}#labPanel .hint-box{color:#59406f}#labPanel .hint-button{font-size:14px;min-height:44px}#labPanel .story{font-size:16px}#labPanel button:focus-visible,.tutor-entry:focus-visible{outline:3px solid #7251a0;outline-offset:4px}#tutorCompletion .text-button{min-height:44px;font-size:14px}
@media(max-width:760px){.lab-visual:has(#tutorDiagram:not([hidden])){height:auto;min-height:0}.tutor-diagram{padding:16px 20px}.story-groups{margin:12px 0}.story-groups>span{font-size:26px;padding:12px 8px}.story-wrap{padding:10px}.story-total{font-size:18px;margin:12px 0}.tutor-diagram .microcopy{margin:8px 0}.tutor-diagram .equation-display{margin:5px 0}.tutor-entry{font-size:14px}}
/* Keep the returning learner's next action before the decorative world. */
#returnToLearning{margin-bottom:20px}.resume-step{display:inline-block;background:#e1dbf6;color:#3e3064;font-size:16px!important;padding:8px 14px;border-radius:10px;margin:0 0 10px!important}.save-status{padding:12px 18px;background:#fff0ce;border:1px solid #917033;color:#574016;font-size:14px;line-height:1.7;margin:8px 4%;border-radius:10px}.lab-panel .resume-note{font-size:14px;color:#4f3a78;border-left:3px solid #9882c6;padding:8px 12px;background:#eeeaf7}
/* ==== cloud.css ==== */
/* JaLearn cloud city: the scene leads, the UI stays readable. */
.header{height:78px;margin:0;padding:0 3%;border-bottom:1px solid #dce2d5;gap:20px;background:#f6f7ef}.header .brand{font-size:25px}.header nav{margin-left:auto}.header nav a[href='#world']{font-size:0}.header nav a[href='#world']:after{content:'เมืองเมฆ';font-size:14px}.header nav a[href='#how']{display:none}.header .journal-button{font-size:13px}.header .sound-open{flex-shrink:0}
#world.hero{display:none}#cloudWorld{position:relative;min-height:670px;height:calc(100svh - 78px);max-height:1100px;overflow:hidden;background:linear-gradient(#cedbdf,#e4e4d8 55%,#b6cecd);isolation:isolate}
#cloudScene{position:absolute;inset:0;touch-action:pan-y}#cloudScene canvas{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:pan-y}#cloudPoster{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;pointer-events:none;opacity:1;visibility:visible;transition:opacity .35s,visibility 0s}#cloudPoster.loaded{opacity:0;visibility:hidden;transition:opacity .35s,visibility 0s .35s}#cloudScene:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#eff1de70,transparent 45%);pointer-events:none}
.cloud-title{position:absolute;top:42px;left:3.2%;pointer-events:none;max-width:440px;text-shadow:0 1px 18px #f6f7ef88}.cloud-eyebrow{display:block;letter-spacing:.14em;font-size:11px;font-family:'Space Grotesk','IBM Plex Sans Thai',sans-serif;font-weight:600}.cloud-title h1{font-size:clamp(32px,3.6vw,53px);line-height:1.35;font-weight:600;letter-spacing:-1.5px;margin:13px 0 10px}.cloud-title h1 span{color:#285542}.cloud-title p{font-size:15px}
.cloud-tools{position:absolute;top:28px;right:3%;display:flex;gap:8px;flex-wrap:wrap;max-width:550px;justify-content:flex-end}.cloud-tool{padding:10px 13px;background:#f6f7efee;border:1px solid #fff7;border-radius:8px;font-size:12px;min-height:40px;box-shadow:0 2px 10px #263d3210}.cloud-tool[aria-pressed=true]{background:#285542;color:#fff}.cloud-tool:disabled{opacity:.55}
#cloudResume{position:absolute;right:3%;top:86px;width:285px}#cloudResume .return-card{padding:16px;margin:0;background:#f6f7eff2;border:0;border-radius:12px;box-shadow:0 3px 20px #203e3314}#cloudResume .return-card h2,#cloudResume .return-recent,#cloudResume .return-choices,#cloudResume .microcopy{display:none}#cloudResume .return-card p{font-size:12px;line-height:1.6;margin:0 0 6px}#cloudResume .return-card p.return-eyebrow{font-size:11px}#cloudResume .resume-step{display:block;background:transparent;padding:0;color:#285542;font-size:14px!important}#cloudResume .return-card .primary{width:100%;padding:11px 14px;margin-top:9px;font-size:14px;border-radius:7px}
.cloud-minimap{position:absolute;bottom:178px;left:3.2%;width:222px;background:#f6f7eff2;border:1px solid #fff8;border-radius:13px;padding:15px;box-shadow:0 8px 32px #38534918}.map-heading{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;letter-spacing:.04em}.map-heading button{background:transparent;font-size:20px;min-width:32px;min-height:32px}#miniMap{display:block;width:100%;height:auto;overflow:visible}.cloud-minimap p{font-size:10px;color:#5e7168;line-height:1.6}.cloud-text{font-size:11px;background:transparent;margin-top:8px;text-decoration:underline;text-underline-offset:4px;min-height:32px}.cloud-journey{position:absolute;bottom:171px;left:50%;transform:translateX(-25%);padding:8px 14px;background:#f6f7efeb;border-radius:8px;font-size:12px;max-width:52%;text-align:center}
.cloud-dock{position:absolute;left:3%;right:3%;bottom:24px;min-height:122px;background:#f6f7eff5;border:1px solid #ffffff88;border-radius:15px;display:flex;align-items:center;gap:32px;padding:23px 27px;box-shadow:0 12px 36px #29453420}.dock-station{min-width:235px}.dock-station h2{font-size:27px;margin:4px 0;line-height:1.3}.dock-station p{font-size:13px}.dock-station .cloud-eyebrow{font-size:10px;letter-spacing:.1em}.dock-path{border-left:1px solid #d6ddcd;padding-left:25px;flex:1;min-width:190px}.dock-path label{font-size:11px;display:block}.dock-path select{font-family:inherit;font-size:14px;border:0;background:transparent;color:#203e33;margin:3px 0 0;max-width:100%;padding:4px 0}.dock-path>span{display:block;font-size:10px;color:#647467;margin-top:5px}.dock-actions{display:flex;gap:10px;align-items:center}.cloud-primary,.cloud-secondary{font-family:inherit;border:0;border-radius:9px;padding:16px 22px;min-height:54px;white-space:nowrap;font-size:15px;font-weight:600}.cloud-primary{background:#285542;color:#fff}.cloud-primary span{margin-left:12px}.cloud-secondary{background:#e7ebd8;color:#285542;border:1px solid #dce2cc}
.cloud-dialog{width:min(850px,calc(100% - 32px));max-height:88svh;border:0;border-radius:22px;background:#f6f7ef;color:#203e33;padding:30px;box-shadow:0 32px 140px #112c3a66}.cloud-dialog::backdrop{background:#203e3366;backdrop-filter:blur(6px)}.cloud-dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.cloud-dialog-head h2{font-size:30px;margin:6px 0 10px}.cloud-dialog-head>button{background:#e7ebd8;border-radius:50%;width:44px;height:44px;font-size:26px;flex-shrink:0}.cloud-dialog>p{font-size:15px;line-height:1.8}.station-cards,.attraction-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:23px 0}.station-choice,.attraction-choice{display:flex;flex-direction:column;text-align:left;border:1px solid #dce2d5;border-radius:14px;padding:21px 17px;background:#fff;gap:6px;min-height:150px}.station-choice[data-live=true]{background:#e7eddc;border-color:#86a282}.station-choice strong,.attraction-choice strong{font-size:17px}.station-choice span,.attraction-choice span{font-size:13px;line-height:1.6}.station-choice em{font-style:normal;font-size:11px;color:#61725f;margin-top:auto}.attraction-choice b{font-family:'Space Grotesk',sans-serif;font-size:25px;color:#8772aa;margin-bottom:10px}.cloud-fineprint{font-size:12px!important;color:#647467}.avatar-choices{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0}.avatar-choice{background:#edf0e1;border:2px solid transparent;border-radius:18px;padding:12px;min-height:145px}.avatar-choice img{width:100%;height:150px;object-fit:contain;display:block}.avatar-choice[aria-pressed=true]{border-color:#285542;background:#dce8cb}.avatar-choice span{font-size:15px;font-weight:600}.avatar-choice .avatar-swatch{display:block;width:28px;height:28px;margin:20px auto;border-radius:50%;background:var(--shirt)}.avatar-dialog{width:min(700px,calc(100% - 32px))}#avatarStatus{min-height:27px}.save-status{position:relative;z-index:5}.cloud-mode-note{padding:20px;text-align:center}
@media(min-width:1600px){.cloud-title{top:65px}.cloud-minimap{width:255px}}
@media(max-width:1050px){.header nav{display:none}.header .brand{margin-right:auto}.cloud-tools{max-width:430px}.cloud-title{max-width:310px}.cloud-title h1{font-size:37px}.dock-path{display:none}.cloud-dock{gap:18px;justify-content:space-between}.dock-actions{gap:8px}.cloud-primary,.cloud-secondary{padding:15px}.cloud-minimap{bottom:170px;width:198px}.cloud-journey{bottom:163px}.cloud-tools .cloud-tool{font-size:11px;padding:9px}.cloud-title .cloud-eyebrow{font-size:9px}.cloud-tools{top:19px}#cloudResume{top:80px;width:230px}#cloudResume .return-card>p:not(.return-eyebrow):not(.resume-step){display:none}}
@media(max-width:650px){.header{height:66px;gap:7px;padding:0 4%}.header .brand{font-size:22px;gap:6px}.header .brand-mark{width:32px;height:32px}.header .brand small{font-size:8px}.header .journal-button{padding:9px;gap:5px}.header .journal-button>span:not([aria-hidden]){display:none}.header .learner-button{font-size:11px;padding:9px}.header .sound-open{width:34px;height:34px}#cloudWorld{height:auto;min-height:0;overflow:visible;display:flex;flex-direction:column;padding-top:410px}#cloudScene{height:440px;inset:0 0 auto}.cloud-title{top:24px;left:5%;max-width:260px}.cloud-title h1{font-size:32px;line-height:1.35;margin:9px 0}.cloud-title p{font-size:13px}.cloud-title .cloud-eyebrow{font-size:8px}.cloud-tools{top:184px;right:4%;width:110px;gap:6px}.cloud-tools .cloud-tool{font-size:11px;padding:8px 10px;min-height:38px;width:100%}.cloud-tools #cloudQuality{display:block}.cloud-minimap{left:4%;bottom:auto;top:297px;width:146px;padding:10px;border-radius:10px}#miniMap,.cloud-minimap p{display:none}.cloud-text{font-size:11px;line-height:1.7}.map-heading{font-size:11px}.map-heading button{display:none}.cloud-journey{top:374px;bottom:auto;left:4%;right:4%;max-width:none;transform:none;font-size:11px;min-height:26px;background:#f6f7efde;padding:5px}.cloud-dock{position:relative;left:auto;right:auto;bottom:auto;margin:0 4% 16px;padding:20px;display:grid;grid-template-columns:1fr;gap:14px;border-radius:16px}.dock-station{min-width:0}.dock-station h2{font-size:25px}.dock-station p{font-size:13px}.dock-path{display:block;border-left:0;padding-left:0}.dock-path label{display:inline;margin-right:12px}.dock-path>span{font-size:11px}.dock-actions{display:grid;grid-template-columns:1fr;gap:8px}.dock-actions .cloud-primary{grid-row:1}.cloud-primary,.cloud-secondary{width:100%;padding:13px;font-size:15px;min-height:49px}#cloudResume{position:relative;right:auto;top:auto;width:auto;order:5;margin:0 4% 18px}#cloudResume .return-card{padding:17px}#cloudResume .return-card>p:not(.return-eyebrow):not(.resume-step){display:block}.station-cards,.attraction-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.cloud-dialog{padding:22px}.station-choice,.attraction-choice{min-height:135px;padding:15px 12px}.station-choice strong,.attraction-choice strong{font-size:15px}.station-choice span,.attraction-choice span{font-size:12px}.avatar-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.cloud-dialog-head h2{font-size:25px}.cloud-dialog>p{font-size:14px}.cloud-journey:empty{display:none}}
@media(prefers-reduced-motion:reduce){#cloudPoster{transition:none}}
@media(min-width:651px) and (max-width:1050px){.cloud-dock{display:grid;grid-template-columns:1fr auto;gap:12px 18px}.dock-path{display:flex;grid-column:1/-1;grid-row:2;align-items:center;gap:10px;border:0;padding:0}.dock-path label{flex-shrink:0}.dock-path>span{margin:0}.cloud-minimap{bottom:217px}.cloud-journey{bottom:212px}}

/* A park is a working scene: select a landmark, then enter its learning activity. */
[hidden]{display:none!important}
.island-mode .cloud-title,.island-mode .cloud-dock,.island-mode #cloudResume{display:none}
.park-intro{position:absolute;top:26px;left:3%;z-index:6;pointer-events:none}
.park-intro button{pointer-events:auto;min-height:44px;font-size:14px;margin-bottom:18px}
.park-intro h2{font-size:36px;margin:5px 0 4px;line-height:1.3;letter-spacing:-.7px}
.park-intro>p:last-child{font-size:14px;margin-top:6px;max-width:240px}
.park-pins{position:absolute;inset:0;pointer-events:none;z-index:4}
.park-pin{position:absolute;pointer-events:auto;transform:translate(-50%,-100%);padding:0;background:transparent;display:flex;align-items:center;flex-direction:column;filter:drop-shadow(0 3px 5px #19342635)}
.park-pin b{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:3px solid #fff8dc;background:var(--place-color);color:#122c24;font:600 17px 'Space Grotesk',sans-serif;box-shadow:0 0 0 1px #203e3320}
.park-pin:after{content:'';height:12px;width:2px;background:#fdf7df;order:3}
.park-pin span{position:absolute;bottom:59px;white-space:nowrap;padding:7px 12px;border-radius:8px;background:#285542;color:#fff;font-size:14px;opacity:0;pointer-events:none;transition:opacity .15s}
.park-pin:hover span,.park-pin:focus-visible span,.park-pin.hovered span,.park-pin[aria-pressed=true] span{opacity:1}
.park-pin[aria-pressed=true] b{outline:3px solid #f6d27a;outline-offset:3px;background:#285542;color:#fff}
.park-pin.offscreen{visibility:hidden}
.park-detail{position:absolute;left:3%;right:3%;bottom:24px;z-index:7;display:flex;gap:22px;align-items:center;padding:22px 26px;background:#f6f7eff5;border:1px solid #fff9;border-radius:16px;box-shadow:0 12px 36px #29453420}
.park-number{width:64px;height:72px;flex-shrink:0;border-radius:12px;background:var(--place-color,#4e9874);display:grid;place-items:center;color:#123f2e;font:600 26px 'Space Grotesk',sans-serif;box-shadow:inset 0 0 0 5px #ffffff35}
.park-description{flex:1;min-width:0}.park-description h2{font-size:26px;line-height:1.35;margin:3px 0 7px}.park-description p{font-size:15px;line-height:1.6;max-width:650px}.park-description #parkAvailability{font-size:12px;margin-top:7px;color:#5f7168}
.park-actions{min-width:190px}.park-actions>.cloud-primary{width:100%}.park-actions>div{display:flex;justify-content:space-between;gap:18px}.park-actions .cloud-text{font-size:14px;min-height:40px}
.island-mode .cloud-minimap{bottom:231px;width:185px;z-index:5}
.island-mode .cloud-journey{bottom:227px;max-width:45%;font-size:13px}
.cloud-tools{z-index:6}.cloud-minimap a{cursor:pointer}.cloud-minimap a:focus{outline:2px solid #285542;outline-offset:4px}
@media(min-width:651px) and (max-width:1050px){.park-detail{gap:15px;padding:20px}.park-number{display:none}.park-description h2{font-size:23px}.park-description p{font-size:14px}.park-actions{min-width:175px}.park-intro h2{font-size:31px}.island-mode .cloud-minimap{bottom:260px}.island-mode .cloud-journey{bottom:240px}}
@media(max-width:650px){
 .island-mode#cloudWorld{padding-top:510px}.island-mode #cloudScene{height:520px}
 .island-mode .cloud-tools{top:17px}.park-intro{top:17px;left:4%;max-width:210px}.park-intro button{font-size:13px;padding:9px 11px;margin-bottom:14px}.park-intro h2{font-size:28px}.park-intro>p:last-child{font-size:13px;max-width:180px}
 .park-pins{height:520px;bottom:auto}.park-pin b{width:44px;height:44px}.park-pin span{font-size:13px;max-width:180px;white-space:normal;text-align:center}
 .park-detail{position:relative;left:auto;right:auto;bottom:auto;margin:0 4% 18px;display:grid;grid-template-columns:46px 1fr;gap:12px;padding:19px;order:2}.park-number{width:46px;height:52px;font-size:20px;align-self:start}.park-description h2{font-size:24px}.park-description p{font-size:15px}.park-description .cloud-eyebrow{font-size:10px}.park-actions{grid-column:1/-1}.park-actions>div{justify-content:space-around}.island-mode .cloud-minimap{top:425px;bottom:auto;left:4%;width:155px}.island-mode .cloud-journey{display:none}
}
@media(prefers-reduced-motion:reduce){.park-pin span{transition:none}}
.island-passport{width:min(940px,calc(100% - 32px));background:linear-gradient(145deg,#fff9e8,#f2efd9);border:3px solid #315e48;box-shadow:0 8px 0 #183e32,0 30px 100px #122d3855;padding:28px}
.island-passport .cloud-dialog-head h2{font-size:38px;margin:2px 0}.island-host{display:flex;align-items:center;gap:12px;padding:12px 18px;background:#e1e9d5;border:1px solid #bccfaf;border-radius:14px}.island-host p{margin:0;flex:1;font-size:13px;line-height:1.6}.island-host strong,.island-host span:not(.host-seal){display:block}.host-seal{display:grid;place-items:center;width:40px;height:40px;background:#2c664c;color:#ffdb83;border:3px solid #e1b761;border-radius:50%;font-size:27px}.island-host .cloud-text{font-size:13px}
.island-passport .attraction-cards{gap:16px;margin:20px 0}.island-passport .attraction-choice{position:relative;overflow:hidden;padding:0 17px 16px;border:2px solid #e0decb;background:#fffcf3;box-shadow:0 4px 0 #dcd9c3;gap:3px;transition:transform .18s,box-shadow .18s,border-color .18s;min-height:245px}.island-passport .attraction-choice:hover:not(:disabled){transform:translateY(-5px);border-color:var(--place-color);box-shadow:0 9px 0 #dedfca}.island-passport .attraction-choice:focus-visible{outline:3px solid #286449;outline-offset:4px}.island-passport .attraction-choice:disabled{opacity:.7;filter:saturate(.55)}.attraction-visual{position:relative;width:calc(100% + 34px);height:145px;margin:0 -17px 6px;background:radial-gradient(ellipse at 50% 60%,#f0eacb,transparent 65%);display:grid;place-items:center}.attraction-art{width:100%;height:100%;object-fit:contain;display:block}.island-passport .attraction-choice b{position:absolute;left:13px;top:12px;font-size:12px;color:var(--place-color);border:1px solid currentColor;border-radius:50%;width:27px;height:27px;display:grid;place-items:center;background:#fffaf0}.attraction-choice em{font-style:normal;font-size:10px;letter-spacing:.025em;color:#57725b}.island-passport .attraction-choice strong{font-size:19px}.island-passport .attraction-choice span{color:#5e6e5e}
.island-welcome{width:min(870px,calc(100% - 32px));padding:0;overflow:auto;background:#fff8e5;border:3px solid #2e6049;box-shadow:0 8px 0 #163f31,0 35px 130px #193b4655;position:fixed}.island-welcome[open]{display:grid;grid-template-columns:34% 66%}.guide-close{position:absolute;right:15px;top:12px;width:42px;height:42px;border-radius:50%;background:#eee8d2;color:#285542;font-size:26px;z-index:3}.guide-stage{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 40%,#e2eccb,#b1cbae);padding:22px 12px;border-right:2px solid #bacdae;overflow:hidden}.guide-bunting{color:#4e7b54;letter-spacing:12px;font-size:20px}.guide-portrait{width:100%;height:290px;position:relative}.guide-portrait canvas{width:100%;height:100%;display:block}.guide-name{text-align:center;background:#fff4cc;border:2px solid #b2a271;border-radius:12px;padding:8px 18px;box-shadow:0 3px 0 #96ac86;min-width:170px}.guide-name strong{font-size:24px;display:block}.guide-name span{font-size:12px}.guide-stage .cloud-text{margin-top:12px;font-size:11px}.guide-content{padding:55px 32px 24px;display:flex;flex-direction:column;align-items:flex-start}.guide-bubble{position:relative;border:2px solid #d8d8bd;border-radius:19px;background:#fffdf5;padding:23px;margin:20px 0 17px;min-height:208px;box-shadow:0 5px 0 #ece6ce}.guide-bubble:before{content:'';position:absolute;left:-10px;top:57px;width:16px;height:16px;background:#fffdf5;border-left:2px solid #d8d8bd;border-bottom:2px solid #d8d8bd;transform:rotate(45deg)}.guide-bubble h2{font-size:25px;line-height:1.5;margin:0 0 10px}.guide-bubble p{font-size:16px;line-height:1.9;margin:0}.guide-progress{display:flex;justify-content:space-between;width:100%;font-size:12px;color:#6a7c64;margin-bottom:16px}.guide-progress span:last-child{color:#9e8549;letter-spacing:6px}.guide-content .cloud-primary{width:100%;box-shadow:0 4px 0 #173d30}.guide-content>.cloud-text{align-self:center;margin:13px 0 0;font-size:13px}.guide-reassurance{font-size:11px;text-align:center;align-self:center;color:#737c63;margin:15px 0 0}#guideFallback{position:absolute;inset:0;display:grid;place-items:center;font-size:100px}.cloud-dialog[open]{animation:park-arrival .24s ease-out}@keyframes park-arrival{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@media(max-width:650px){.island-passport{padding:20px 16px}.island-passport .cloud-dialog-head h2{font-size:29px}.island-host{padding:10px;gap:9px}.island-host .cloud-text{max-width:66px;padding:0}.island-host p{font-size:11px}.host-seal{width:30px;height:30px;flex-shrink:0}.island-passport .attraction-cards{gap:11px}.island-passport .attraction-choice{padding:0 10px 13px;min-height:209px}.attraction-visual{height:114px;width:calc(100% + 20px);margin:0 -10px 5px}.island-passport .attraction-choice strong{font-size:15px}.island-passport .attraction-choice span{font-size:11px}.attraction-choice em{font-size:9px}.island-welcome[open]{grid-template-columns:1fr}.guide-stage{height:190px;padding:10px 15px;border-right:0;border-bottom:2px solid #bacdae;align-items:flex-end;justify-content:center}.guide-bunting{display:none}.guide-portrait{position:absolute;left:5%;top:0;width:44%;height:200px}.guide-name{min-width:145px;margin-right:5%;padding:6px 12px}.guide-name strong{font-size:22px}.guide-stage .cloud-text{margin-right:10%;font-size:11px}.guide-content{padding:20px}.guide-content>.cloud-eyebrow{font-size:9px}.guide-bubble{margin:13px 0;min-height:0;padding:17px}.guide-bubble:before{display:none}.guide-bubble h2{font-size:21px}.guide-bubble p{font-size:14px;line-height:1.9}.guide-content .cloud-primary{min-height:46px;padding:11px}.guide-reassurance{margin:11px 0 0}.guide-progress{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){.cloud-dialog[open]{animation:none}.island-passport .attraction-choice{transition:none}.island-passport .attraction-choice:hover:not(:disabled){transform:none}}
/* Absolute artwork keeps its intrinsic aspect ratio out of the grid track sizing. */
.attraction-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
/* The activity room inherits the island's materials while preserving its learning layout. */
#lab .lab-header{background:#fff7e2;border-bottom:2px solid #d8c99c}
#lab .lab-header h2{color:#285542}
#lab .learning-trail{background:#edf0df}
#lab .learning-trail li[aria-current]{background:#2c664c}
#lab .close-button{background:#e6ecd8;color:#285542}
@media(min-width:761px){#lab{border:3px solid #315e48;border-radius:22px;box-shadow:0 8px 0 #183e32,0 30px 100px #122d3855}}
@media(prefers-reduced-motion:no-preference){#lab[open]{animation:park-arrival .24s ease-out}}
.tram-story{position:absolute;z-index:7;left:50%;bottom:230px;transform:translateX(-50%);width:min(490px,42%);padding:17px 22px;background:#fff8e7f5;border:2px solid #648065;border-radius:18px;box-shadow:0 5px 0 #31563f99;text-align:center}.tram-story p{font-size:18px;line-height:1.65;margin:9px 0}.tram-story .cloud-text{font-size:12px}.tram-story~.cloud-journey{pointer-events:none}
@media(max-width:650px){.tram-story{left:4%;right:4%;top:220px;bottom:auto;transform:none;width:auto;padding:12px 15px}.tram-story p{font-size:15px;margin:6px 0}.tram-story .cloud-eyebrow{font-size:9px}.tram-story .cloud-text{min-height:34px}.tram-story:not([hidden])~.cloud-journey{visibility:hidden}}
@media(max-width:650px){
 .island-host .cloud-text{max-width:none;white-space:nowrap;font-size:11px}
 .island-mode .cloud-tools{top:427px;right:4%;width:170px;display:grid;grid-template-columns:1fr 1fr;gap:6px}
 .island-mode .cloud-tools .cloud-tool{font-size:10px;min-height:35px;padding:6px 4px}
 .park-intro{left:4%;right:4%;top:13px;max-width:none;display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:9px 12px;background:#fff8e9ed;border:1px solid #d9dfc7;border-radius:14px}
 .park-intro .cloud-eyebrow,.park-intro>p{display:none}.park-intro h2{grid-column:2;grid-row:1;font-size:22px;margin:0;align-self:center}.park-intro button{margin:0;width:auto}.park-intro #leavePark{font-size:10px;padding:6px;text-align:left;min-height:32px;background:transparent}.park-intro #parkGuide{grid-column:1/-1;font-size:11px;text-align:right;min-height:28px;padding:3px}
}
.travelling .cloud-title,.travelling #cloudResume,.travelling .cloud-minimap,.travelling .cloud-journey{display:none}
.travelling .tram-story{width:min(490px,calc(100% - 44px))}
@media(max-width:650px){.travelling .cloud-tools{top:17px}.travelling .tram-story{width:auto}}
/* Opening is shown only while parked at the origin; the ride keeps the scene clear. */
.travelling .tram-story{left:3%;top:28px;bottom:auto;transform:none;width:300px;text-align:left;padding:23px;background:#fff9eaf5}
.tram-story h2{font-size:24px;line-height:1.45;margin:13px 0}.tram-story p{font-size:15px;line-height:1.85}.tram-story .cloud-primary{width:100%;font-size:14px;padding:14px 10px;margin:15px 0 8px}.tram-story .cloud-text{display:block;margin:auto;min-height:32px}
@media(max-width:650px){.travelling .tram-story{left:4%;right:4%;top:15px;width:auto;padding:16px}.tram-story h2{font-size:21px;margin:9px 0}.tram-story p{font-size:14px}.tram-story .cloud-primary{margin-top:9px;min-height:43px;padding:10px}.travelling .cloud-tools{top:318px;display:flex;flex-direction:row;flex-wrap:wrap;left:4%;right:4%;width:auto}.travelling .cloud-tools .cloud-tool{width:auto;flex:1;min-width:70px;font-size:10px;padding:7px}}
.host-portrait{display:block;width:74px;height:88px;flex:none}.host-portrait img{width:100%;height:100%;object-fit:contain}.island-host strong{color:var(--guardian-color,#286449);font-size:20px}#guardianRole{font-size:11px;color:#61725c}#guardianQuote{margin-top:3px}.future-host{padding:18px 22px;margin:22px 0}.future-host .host-portrait{width:150px;height:185px}.future-host strong{font-size:28px}.future-host p{font-size:16px}.island-welcome .guide-name{border-color:var(--guardian-accent,#dba84a)}.island-welcome .guide-name strong{color:var(--guardian-color,#286449)}
.cloud-ride{position:absolute;z-index:5;bottom:171px;left:50%;transform:translateX(-25%);min-width:245px;max-width:44%;min-height:48px;padding:11px 24px;border:1px solid #dbc792;border-radius:12px;background:#fff7dfed;color:#254e3c;box-shadow:0 4px 0 #b39a68,0 8px 22px #254e3c1a;font-size:16px;font-weight:600}.cloud-ride:hover:not(:disabled){background:#fff1c4}.cloud-ride:focus-visible{outline:3px solid #285542;outline-offset:5px}.cloud-ride:disabled{opacity:.6;cursor:default}.island-mode .cloud-ride,.travelling .cloud-ride{display:none}
.cloud-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(min-width:651px) and (max-width:1050px){.cloud-ride{bottom:213px;min-width:220px;font-size:15px}}
@media(max-width:650px){#cloudWorld:not(.island-mode){padding-top:447px}.cloud-ride{top:385px;bottom:auto;left:4%;right:4%;max-width:none;min-width:0;transform:none;min-height:46px;padding:10px 16px}.island-mode .cloud-tools #cloudQuality{grid-column:1/-1}}
@media(max-width:650px){.host-portrait{width:48px;height:62px}.island-host strong{font-size:17px}.island-host{flex-wrap:wrap}.island-host p{min-width:145px}.island-host>.cloud-text{margin-left:auto}.future-host{padding:12px}.future-host .host-portrait{width:100px;height:135px}.future-host strong{font-size:24px}.future-host p{font-size:13px}.guide-name span{max-width:145px}}

/* Compact scene tools retain full touch targets and accessible labels. */
.cloud-tools .cloud-tool{display:flex;align-items:center;justify-content:center;gap:7px}.cloud-tools .cloud-tool svg{width:18px;height:18px;flex-shrink:0}
@media(max-width:650px){#cloudWorld .cloud-tools{top:14px;right:12px;left:auto;width:44px;max-width:none;display:flex;flex-direction:column;flex-wrap:nowrap;gap:6px}#cloudWorld .cloud-tools .cloud-tool{width:44px;height:44px;min-width:44px;min-height:44px;padding:11px;border-radius:14px}#cloudWorld .cloud-tools .cloud-tool svg{width:20px;height:20px}#cloudWorld .cloud-tool-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.cloud-title{max-width:calc(100% - 86px)}.travelling .tram-story{right:70px}}
@media(prefers-reduced-motion:reduce){#cloudPoster,#cloudPoster.loaded{transition:none}}

/* Attraction ticket: the same 3D identity as the island, with direct browsing. */
.park-ticket-art{position:relative;width:128px;flex:none;align-self:center;border-radius:18px;background:linear-gradient(145deg,#e2ead7,#fff9e7);border:1px solid #d7dfca;box-shadow:inset 0 -5px 0 #b7c7a32b}
#parkArt{height:104px;display:grid;place-items:center;color:var(--place-color);font-size:44px}#parkArt img{width:138px;height:104px;max-width:none;object-fit:contain}
#parkNumber{position:absolute;left:7px;bottom:7px;padding:3px 7px;border-radius:7px;background:var(--place-color);color:#fff;font:600 12px 'Space Grotesk',sans-serif}
.park-detail{gap:20px;border-top:3px solid var(--place-color,#4e9874)}
.park-actions .park-browse{display:flex;justify-content:center;align-items:center;gap:12px;margin-bottom:8px}.park-browse button{background:#e5ecd9;border:1px solid #cbd8bc;border-radius:50%;width:38px;min-height:38px;font-size:22px}.park-browse button:hover{background:#d9e6bf}.park-browse span{font:500 13px 'Space Grotesk',sans-serif;color:#61725c;min-width:44px;text-align:center}
.park-description #parkAvailability{font-size:14px}.park-actions>.cloud-primary{min-height:48px}
@media(min-width:651px) and (max-width:1050px){.park-ticket-art{width:88px}#parkArt,#parkArt img{height:86px}#parkArt img{width:106px}}
@media(max-width:650px){.park-intro{right:70px;grid-template-columns:1fr;padding:8px 12px}.park-intro h2{grid-column:1;grid-row:2;font-size:24px}.park-intro #parkGuide{text-align:left;min-height:32px}.park-detail{grid-template-columns:74px minmax(0,1fr);gap:12px;padding:16px}.park-ticket-art{width:74px;align-self:start;margin-top:4px;border-radius:12px}#parkArt,#parkArt img{height:79px}#parkArt img{width:94px}#parkNumber{left:4px;bottom:4px;font-size:10px;padding:2px 4px}.park-description h2{font-size:22px}.park-description .cloud-eyebrow{font-size:11px}.park-description p{font-size:14px}.park-description #parkAvailability{font-size:12px}.park-actions{display:grid;grid-template-columns:118px 1fr;gap:10px;min-width:0;align-items:center}.park-actions .park-browse{gap:3px;margin:0}.park-browse button{width:44px;min-height:44px;border-radius:10px;flex:none}.park-browse span{min-width:24px;font-size:11px}.park-actions>.cloud-primary{min-width:0;width:100%;padding:12px 6px;font-size:14px;white-space:normal}.park-actions>div:last-child{grid-column:1/-1;justify-content:space-between}.park-actions .cloud-text{font-size:13px}.island-mode .cloud-minimap{top:425px}}

.district-choice{border-top:3px solid #c7aa68;background:#fffaf0}.district-choice b{font-size:15px;color:#927341;margin:0}.district-choice em{font-size:13px;font-style:normal;margin-top:auto;color:#315b43}.district-return{grid-column:1/-1;justify-self:start}.district-choice:focus-visible{outline:3px solid #315b43;outline-offset:3px}

.future-island #cloudResume{display:none}

#startCityTour{width:100%;margin-bottom:6px;font-size:14px;white-space:normal}.touring .cloud-title,.touring #cloudResume{display:none}.touring #cloudJourney{clip-path:none;overflow:visible;white-space:normal;width:auto;height:auto;left:50%;bottom:229px;transform:translateX(-25%);max-width:44%;margin:0;padding:6px 12px;border-radius:9px;background:#fff8e8ed;font-size:13px;text-align:center;z-index:5}
.driver-view .cloud-title,.driver-view #cloudResume{display:none}.driver-view #cloudScene canvas{cursor:default!important}
.follow-view .cloud-title,.follow-view #cloudResume{display:none}.follow-view #cloudScene canvas{cursor:default!important}
.camera-picker{position:absolute;top:80px;right:3%;z-index:10;width:246px;padding:10px;border:1px solid #d1d9c5;border-radius:16px;background:#fbfbed;box-shadow:0 8px 30px #163d4033}.camera-picker[hidden]{display:none}.camera-picker p{margin:4px 9px 8px;font-size:13px;color:#536651}.camera-picker button{display:block;width:100%;text-align:left;padding:10px 12px;min-height:58px;background:transparent;border:0;border-radius:10px;color:#244d3b}.camera-picker strong,.camera-picker span{display:block}.camera-picker strong{font-size:15px;font-weight:600}.camera-picker span{font-size:12px;line-height:1.7;color:#576856}.camera-picker button:hover{background:#e7eedc}.camera-picker button[aria-pressed=true]{background:#285542;color:#fff}.camera-picker button[aria-pressed=true] span{color:#e1eddc}.camera-picker button:disabled{opacity:.45}.camera-picker small{display:block;margin:8px;font-size:12px;line-height:1.7}.camera-picker small[hidden]{display:none}
@media(max-width:650px){.camera-picker{top:114px;right:66px;width:min(246px,calc(100% - 80px));padding:8px}.camera-picker button{min-height:58px}}
@media(min-width:651px){.follow-view .cloud-minimap{top:28px;bottom:auto}.follow-view .cloud-ride{left:3%;transform:none;min-width:220px;max-width:245px}.follow-view.touring #cloudJourney{left:3%;transform:none;max-width:245px}.follow-view .cloud-dock{left:auto;width:260px;min-height:0;padding:16px;display:flex;flex-direction:column;align-items:stretch;gap:10px}.follow-view .dock-path,.follow-view .dock-station .cloud-eyebrow{display:none}.follow-view .dock-station{min-width:0}.follow-view .dock-station h2{font-size:22px}.follow-view .dock-station p{font-size:12px}.follow-view .dock-actions .cloud-primary{width:100%;min-height:44px;padding:11px;font-size:14px}}
@media(max-width:650px){.touring .cloud-minimap,.follow-view .cloud-minimap,.driver-view .cloud-minimap{top:16px}.touring #cloudJourney{top:351px;bottom:auto;left:4%;right:4%;max-width:none;transform:none;font-size:12px}.tram-story #startCityTour{min-height:44px;padding:10px}.travelling .tram-story{max-height:340px;overflow-y:auto}}
/* ==== mobile-workbench.css ==== */
/* The first mobile screen is a world; station choices follow in page flow. */
.cloud-enter-link{display:none}
.sound-dialog #musicTrack{display:block;width:100%;min-height:44px;padding:9px 12px;margin:8px 0 16px;border:1px solid #abc2a2;border-radius:12px;background:#fffaf0;color:#285b43;font:inherit}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* Cream station panels, forest-green enamel and warm brass carry into the lab. */
#lab{--room-green:#285b43;--room-edge:#cfbf91;--room-paper:#fffaf0;background:var(--room-paper);color:#254735}
#lab .lab-panel{background:linear-gradient(155deg,#fffdf6,#fff5df)}
#lab .lab-visual{background:linear-gradient(#e2f0ec,#edf1df)}
#lab .equation-display{background:#fffdf5;border:1px solid var(--room-edge);box-shadow:0 3px 0 #e7ddbf;color:#294f3c;border-radius:14px}
#lab .primary{background:#2c664c;color:#fffdf4;border:1px solid #214e3a;box-shadow:0 3px 0 #193e2e;border-radius:14px}
#lab .primary:disabled{box-shadow:none;opacity:.5}
#lab .secondary,#lab .outline,#lab .choice{background:#fffdf5;border:1px solid #c0cdb0;border-radius:13px;color:#28533d}
#lab .choice:hover,#lab .secondary:hover{background:#e7efdc}
#lab .context-choice,#lab .journey-progress{background:#f0f3e5;border-color:#c5d2b6}
#lab .x-control{border:1px solid #c4d2b7;background:#eef3e4;border-radius:14px;padding:10px 14px;margin:14px 0}
#lab .slider-label{margin:0 0 4px;color:#285b43;font-weight:600}
#lab #xSlider{accent-color:#2c664c}
#lab .explore-explanation{font-size:16px;line-height:1.7;color:#50664d}
#lab .sound-open.sound-on{background:#2c664c;border-color:#214e3a}
#lab :is(button,input,summary):focus-visible{outline:3px solid #7958a5;outline-offset:3px}
.lesson-route{flex-shrink:0;background:#edf0df;border-bottom:1px solid #c5d2b6}
.lesson-route>summary{display:none}
#lab .room-scene{position:relative;flex:none;background:radial-gradient(ellipse at 50% 25%,#fff5d7,#d8e7ce);border-bottom:1px solid #bdccae;padding-bottom:8px}
#lab .room-canvas{height:235px;touch-action:pan-y}
#lab .room-canvas canvas{display:block;width:100%;height:100%}
#lab .room-camera-controls{position:absolute;right:10px;top:8px;display:flex;gap:5px}
#lab .room-camera-controls button{min-height:44px;min-width:44px;padding:5px 10px;border:1px solid #afc1a1;border-radius:12px;background:#fff9e9ef;color:#285b43;font-size:14px}
#lab .room-object-controls{display:flex;flex-wrap:wrap;gap:7px;padding:0 14px}
#lab .room-object-controls button{flex:1;min-height:44px;padding:7px 12px;border:1px solid #9eb792;background:#fff8e5;border-radius:12px;font-size:14px;color:#285b43}
#lab .room-object-controls [aria-pressed="true"]{background:#2c664c;color:#fff}
#lab .room-caption{font-size:14px;line-height:1.65;margin:8px 14px;min-height:24px;color:#385a3b}
#lab .room-scene[data-room="tutor"]{background:radial-gradient(ellipse at 55% 40%,#f8efd8,#cad8bf)}
#lab .room-scene[data-room="tutor"] .room-canvas{height:350px}
#lab .room-scene:not([data-room="tutor"]) .room-canvas{height:350px}
#lab .room-scene[data-room="repair"]{background:radial-gradient(ellipse at 55% 35%,#f9edda,#d4c9d4)}
#lab .room-scene[data-room="repair"] .workshop-readout{border-left:3px solid #9d81ad;padding-left:6px}
#lab .room-scene[data-room="practice"]{background:radial-gradient(ellipse at 55% 35%,#faeacb,#d8dfbe)}
#lab .room-scene[data-room="practice"] .workshop-readout{border-left:3px solid #bd7154;padding-left:6px}
#lab .room-scene[data-room="assessment"]{background:radial-gradient(ellipse at 55% 35%,#e4eff0,#bfcdd1)}
#lab .room-scene[data-room="review"]{background:radial-gradient(ellipse at 55% 35%,#f5efd1,#c5d8b4)}
#lab .workshop-equation{margin:0 14px 10px;padding:8px 12px;border-radius:10px;background:#fffaf0;border:1px solid #cab989;text-align:center;font-size:17px;font-weight:600;color:#285b43}
#lab .workshop-readout{display:flex;gap:6px;align-items:center;margin:0 14px 10px}
#lab .workshop-readout .workshop-equation{flex:1;min-width:0;margin:0;font-size:16px}
#lab .workshop-replay{flex:none;min-height:44px;padding:8px 10px;border:1px solid #a5b991;border-radius:10px;background:#eef1dc;color:#285b43;font:inherit;font-size:14px}
#lab .room-jump{display:block;margin:6px 14px;padding:8px 12px;min-height:44px;border:0;border-radius:10px;background:#285b43;color:#fffaf0;font-size:14px}
#lab .room-jump[hidden]{display:none}
#lab:is([data-phase="tutor"],[data-phase="repair"],[data-phase="practice"],[data-phase="garden"],[data-phase="ready"]) #journeyProgress{order:9}
#lab .tutor-diagram-wrap{flex:none}
#lab .tutor-diagram-wrap>summary{min-height:44px;padding:10px 16px;background:#e9eedc;font-size:14px;color:#285b43;cursor:pointer}
#lab .tutor-diagram-wrap:not([data-tutor="true"])>summary{display:none}
#lab .tutor-story{margin:10px 0;border-bottom:1px solid #d7dcc3}
#lab .tutor-story summary{min-height:44px;padding:10px 0;font-size:14px;cursor:pointer}
@media(max-width:760px){
 #lab[data-phase="tutor"] .lab-panel{padding:16px}
 #lab[data-phase="tutor"] .lab-layout{scroll-padding-top:220px}
 #lab[data-phase="tutor"] .lab-panel h3{font-size:23px;margin-bottom:8px}
 #lab[data-phase="tutor"] .lab-panel .equation-display{margin:10px 0;padding:8px;font-size:24px}
 #lab .room-scene[data-room="tutor"]:is([data-tutor-step="3"],[data-tutor-step="4"]){position:sticky;top:0;z-index:3;padding-bottom:0;box-shadow:0 4px 10px #254b3320}
 #lab .room-scene[data-room="tutor"]:is([data-tutor-step="3"],[data-tutor-step="4"]) .room-canvas{height:170px}
 #lab .room-scene[data-room="tutor"]:is([data-tutor-step="3"],[data-tutor-step="4"]) :is(.room-camera-controls,.room-object-controls,.room-caption,.room-jump){display:none}
}
@media(max-width:760px){#lab .room-scene[data-room="tutor"] .room-canvas{height:230px}#lab .room-scene[data-room="tutor"] .room-camera-controls{position:static;padding:4px 12px 8px;justify-content:center}#lab .room-scene[data-room="tutor"] .room-camera-controls [data-room-motion]{display:none}#lab .room-scene[data-room="tutor"] .room-object-controls{gap:4px;padding:0 12px}#lab .room-scene[data-room="tutor"] .room-object-controls button{padding:6px;font-size:13px}#lab .workshop-equation{font-size:14px;padding:6px;margin-bottom:6px}}
@media(max-width:760px){#lab .workshop-readout{margin:0 12px 6px}#lab .workshop-readout .workshop-equation{font-size:14px}#lab[data-phase="tutor"] .lab-layout{scroll-padding-top:230px}}
@media(max-width:760px) and (max-height:660px){#lab .room-scene[data-room="tutor"]:is([data-tutor-step="3"],[data-tutor-step="4"]) .room-canvas{height:140px}#lab[data-phase="tutor"] .lab-layout{scroll-padding-top:200px}}
#lab .object-selected{outline:3px solid #aa8437;outline-offset:3px}
@media(max-width:760px){
 #lab .room-scene[data-room="repair"]:not([data-repair-stage="notice"]){position:sticky;top:0;z-index:3;padding-bottom:0;box-shadow:0 4px 10px #254b3320}
 #lab .room-scene[data-room="repair"]:not([data-repair-stage="notice"]) .room-canvas{height:170px!important}
 #lab .room-scene[data-room="repair"]:not([data-repair-stage="notice"]) :is(.room-camera-controls,.room-object-controls,.room-caption,.room-jump){display:none}
 #lab[data-phase="repair"] .lab-layout{scroll-padding-top:230px}
}
@media(max-width:760px) and (max-height:660px){#lab .room-scene[data-room="repair"]:not([data-repair-stage="notice"]) .room-canvas{height:140px!important}#lab[data-phase="repair"] .lab-layout{scroll-padding-top:200px}}
#lab .room-balance-help,#lab .room-balance-back{min-height:44px;padding:9px 14px;border:1px solid #99af90;border-radius:12px;background:#fff8e5;color:#285b43;font-size:14px;margin:5px 14px}
@media(max-width:760px){
 #lab .room-scene[data-room="practice"]:not([data-practice-step="0"]){position:sticky;top:0;z-index:3;padding-bottom:0;box-shadow:0 4px 10px #254b3320}
 #lab .room-scene[data-room="practice"]:not([data-practice-step="0"]) .room-canvas{height:170px!important}
 #lab .room-scene[data-room="practice"]:not([data-practice-step="0"]) :is(.room-camera-controls,.room-object-controls,.room-caption,.room-jump){display:none}
 #lab[data-phase="practice"] .lab-layout{scroll-padding-top:230px}
}
@media(max-width:760px) and (max-height:660px){#lab .room-scene[data-room="practice"]:not([data-practice-step="0"]) .room-canvas{height:140px!important}#lab[data-phase="practice"] .lab-layout{scroll-padding-top:200px}}
#labSceneHost{position:relative}#labSceneHost .scene-heading{display:none}#lab .room-balance-back{position:absolute;right:0;top:0;z-index:2}
@media(max-width:760px){#lab .room-canvas{height:185px}#lab .room-caption{font-size:14px}#lab .room-camera-controls button{font-size:12px}#lab:is([data-phase="garden"],[data-phase="ready"]) .tutor-diagram{padding:14px}}
@media(max-width:760px){
 #lab .room-scene:not([data-room="tutor"]) .room-canvas{height:220px}
 #lab .room-scene:not([data-room="tutor"]) .room-camera-controls{position:static;padding:4px 12px 8px;justify-content:center}
 #lab .room-scene:not([data-room="tutor"]) [data-room-motion]{display:none}
 #lab .room-object-controls button{font-size:14px;min-width:0}
 #lab:is([data-phase="repair"],[data-phase="practice"]) .lab-panel{padding:16px}
}
@media(max-width:760px){
 #lab:not([data-phase="explore"]) .lab-visual{display:contents}
 #lab:not([data-phase="explore"]) .lab-layout{display:flex;flex-direction:column}
 #lab:not([data-phase="explore"]) .lab-layout>*{flex-shrink:0}
 #lab:not([data-phase="explore"]) #journeyProgress{order:9}
 #lab:not([data-phase="explore"]) .lab-panel{order:5;flex:none}
 #lab:not([data-phase="explore"]) .assessment-cover{order:1;flex:none}
 #lab .visual-note:empty{display:none}
 #lab:is([data-phase="garden"],[data-phase="ready"]) #tutorDiagram{display:none}
}
#lab .station-guide{margin-top:24px;border-top:2px solid var(--room-accent,#4e9874);padding-top:10px}
#lab .station-guide details,#lab .garden-notes,#lab .practice-workbench{margin:12px 0;border:1px solid #c7d3b9;border-radius:14px;background:#f4f6eb;padding:0 14px}
#lab :is(.station-guide,.garden-notes,.practice-workbench) summary{min-height:44px;padding:11px 0;cursor:pointer;font-size:14px;line-height:1.7;font-weight:600;color:#285b43}
#lab .station-guide li,#lab .room-checklist li{font-size:16px;line-height:1.8;margin:8px 0}
#lab .station-tip{padding:12px;border-left:3px solid #cfac59;background:#fff6db;border-radius:0 10px 10px 0}
#lab .station-guide nav{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-bottom:14px}
#lab .station-guide nav button{min-height:44px;text-align:left;border-radius:10px;padding:9px;background:#fffdf5;border:1px solid #bdcdb2;color:#285b43;font-size:14px}
#lab .station-guide nav [aria-current]{border:2px solid #2c664c;background:#e2ecd7}
#lab .garden-appointment{padding:18px;border:1px solid #ceb982;border-radius:16px;background:#fff7df;box-shadow:0 4px 0 #e7ddbf;margin:18px 0}
#lab .garden-appointment strong{color:#285b43;font-size:18px}
#lab .room-checklist{padding-left:24px;border-top:1px solid #b9cbaa}
#lab :is(.practice-step-body,.garden-notes) p{font-size:16px;line-height:1.75}
#lab .practice-step-body{padding-bottom:14px}
#lab .tutor-diagram{border-top:3px solid var(--room-accent,#4e9874);background:linear-gradient(135deg,#e1eddd,#f7f3db)}
@media(min-width:761px){.lesson-route:not([open])>.learning-trail{display:flex}}
.context-choice summary{cursor:pointer;min-height:44px;line-height:1.65;font-size:15px;padding:8px 0}
.context-choice[open] summary{margin-bottom:12px}
.context-choice{margin-top:22px}
#lab[data-phase="explore"] #journeyProgress{margin-top:20px;border:1px solid var(--line);border-radius:14px}
@media(max-width:650px){
 .header{height:56px;min-height:56px;gap:5px;padding:0 3%}
 .header .brand{font-size:20px;gap:5px}.header .brand-mark{width:28px;height:28px}.header .brand small{font-size:7px;margin-top:4px}
 .header .sound-open{width:44px;height:44px}.header .learner-button,.header .journal-button{min-height:44px}
 #cloudWorld{--mobile-world-height:max(440px,calc(100svh - 56px))}
 #cloudWorld:not(.island-mode){padding-top:calc(var(--mobile-world-height) + 16px)}
 #cloudWorld:not(.island-mode) #cloudScene{height:var(--mobile-world-height)}
 #cloudWorld:not(.island-mode) .cloud-dock{scroll-margin-top:12px}
 #cloudWorld:not(.island-mode) .cloud-minimap{top:calc(var(--mobile-world-height) - 209px)}
 #cloudWorld:not(.island-mode):is(.touring,.follow-view,.driver-view) .cloud-minimap{top:16px}
 #cloudWorld:not(.island-mode) .cloud-ride{top:calc(var(--mobile-world-height) - 101px)}
 #cloudWorld.touring #cloudJourney{top:calc(var(--mobile-world-height) - 145px)}
 .cloud-enter-link{display:block;position:absolute;top:calc(var(--mobile-world-height) - 48px);left:4%;right:4%;min-height:44px;line-height:24px;padding:10px;text-align:center;font-size:14px;font-weight:600;color:#244d3b;text-shadow:0 1px 5px #fff;background:#f6f7efbd;border-radius:9px}
 .island-mode .cloud-enter-link,.travelling .cloud-enter-link{display:none}
 .travelling .tram-story{top:clamp(100px,27svh,220px);max-height:calc(var(--mobile-world-height) - 120px)}
}

/* Keep the model visible while the learner changes x. Progress and context are
   below the experiment, not between its live feedback and the input. */
@media(max-width:760px){
 #lab .lab-header{position:absolute;top:env(safe-area-inset-top,0px);right:8px;z-index:12;min-height:0;padding:4px 0;border:0;background:transparent;pointer-events:none}
 #lab .lab-header-right{gap:6px;pointer-events:auto}
 #lab .lab-breadcrumb{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 #lab .lab-header .sound-open,#lab .lab-header .close-button{background:#fff9e9;border:1px solid #b6c7ac;box-shadow:0 2px 0 #ccd6bb}
 #lab .lesson-route{padding-top:env(safe-area-inset-top,0px);position:relative;z-index:10}
 #lab .lesson-route>summary{display:flex;align-items:center;gap:8px;min-height:52px;padding:8px 114px 8px 16px;list-style:none;cursor:pointer;font-size:14px;font-weight:600;color:#285b43}
 #lab .lesson-route>summary::-webkit-details-marker{display:none}
 #lab .route-chevron{flex:none;transition:transform .15s}
 #lab .lesson-route[open] .route-chevron{transform:rotate(180deg)}
 #lab .lesson-route .learning-trail{flex-wrap:wrap;overflow:visible;padding:8px 12px 12px}
 #lab .lab-header .brand-mark{width:28px;height:28px}
 #lab .lab-header .sound-open,#lab .lab-header .close-button{width:44px;height:44px;min-width:44px;min-height:44px}
 #lab .learning-trail{flex-shrink:0;flex-wrap:nowrap;overflow-x:auto;padding:5px 10px;gap:4px;scrollbar-width:thin}
 #lab .learning-trail li{flex:none;font-size:12px;white-space:nowrap;padding:4px 8px}
 #lab[data-phase="explore"] .lab-layout{display:block;overflow:auto;scroll-padding-top:calc(clamp(150px,22svh,190px) + 12px)}
 #lab[data-phase="explore"] .lab-visual{display:contents}
 #lab[data-phase="explore"] #labSceneHost{position:sticky;top:0;z-index:3;height:clamp(150px,22svh,190px);min-height:0;max-height:none;background:#edf2e4;border-bottom:1px solid #d9e1cf}
 #lab[data-phase="explore"] #labSceneHost .scene-heading{display:none}
 #lab[data-phase="explore"] #labSceneHost .scene-controls{bottom:3px;gap:5px}
 #lab[data-phase="explore"] #labSceneHost .scene-controls button{min-width:36px;min-height:36px!important;height:36px;padding:0 8px}
 #lab[data-phase="explore"] #labSceneHost .scene-controls #motionToggle{display:none}
 #lab[data-phase="explore"] .manipulatives{padding:7px 14px;gap:14px;background:#f2f5e9;border-top:0}
 #lab[data-phase="explore"] .manipulatives strong{font-size:13px;margin-bottom:4px}
 #lab[data-phase="explore"] .manipulatives>div>div{gap:2px}
 #lab[data-phase="explore"] .math-token{width:16px;height:16px;font-size:11px}.lab-visual .x-token{width:24px}
 #lab[data-phase="explore"] .live-equation{min-height:56px;padding:5px 12px;font-size:23px;background:#f2f5e9}
 #lab[data-phase="explore"] .live-equation span{padding:4px 14px}
 #lab[data-phase="explore"] .live-equation small{font-size:12px!important}
 #lab[data-phase="explore"] .visual-note{font-size:13px!important;min-height:0;padding:5px 14px 10px;background:#f2f5e9}
 #lab[data-phase="explore"] .lab-panel{padding:12px 16px 24px;overflow:visible}
 #lab[data-phase="explore"] .lab-panel h3{font-size:22px;line-height:1.5;margin:0 0 6px}
 #lab[data-phase="explore"] .lab-panel h3 br{display:none}
 #lab[data-phase="explore"] .panel-intro{font-size:16px;line-height:1.6;margin:4px 0}
 #lab[data-phase="explore"] .equation-display{font-size:21px;padding:5px 10px;margin:8px 0}
 #lab[data-phase="explore"] .x-control{display:flex;align-items:center;gap:12px;padding:4px 12px;margin:10px 0 6px;min-width:0}
 #lab[data-phase="explore"] .slider-label{display:flex;align-items:center;gap:5px;font-size:16px;flex:none;margin:0;white-space:nowrap}
 #lab[data-phase="explore"] #xValue{font:600 24px 'Space Grotesk',sans-serif}
 #lab[data-phase="explore"] #xSlider{display:block;flex:1;min-width:0;width:0;min-height:44px;margin:0;touch-action:pan-y}
 #lab[data-phase="explore"] .context-choice{padding:10px 14px;margin-bottom:12px}
 #lab[data-phase="explore"] .context-choice p{font-size:15px}
 #lab[data-phase="explore"] #journeyProgress{padding:12px}
}

/* Keep the garden and its play controls together on a short phone screen. */
@media(max-width:760px){
 #lab .room-scene:is([data-room="review"],[data-room="assessment"]) .room-camera-controls{position:absolute;top:6px;right:6px;padding:0}
 #lab .room-scene:is([data-room="review"],[data-room="assessment"]) .room-object-controls{gap:5px;padding:0 12px}
 #lab .room-scene:is([data-room="review"],[data-room="assessment"]) .room-object-controls button{font-size:13px;padding:6px;line-height:1.5}
 #lab .room-scene:is([data-room="review"],[data-room="assessment"]) .workshop-replay{font-size:13px;padding:7px}
}

/* Optional full operation alongside the compact experiment equation. */
.operation-trace{margin:6px 0 10px;padding:7px 10px;border:1px solid #d7debc;border-radius:12px;background:#fff8e5;color:#285c46;font-size:14px}
.operation-trace summary{cursor:pointer;min-height:28px;display:list-item;align-content:center}
.operation-trace p{margin:5px 0 0;font:600 17px/1.5 system-ui,sans-serif;overflow-wrap:anywhere}
#lab .math-token{background:#edd4c2;border-color:#c29276;color:#63402e}
#lab .x-token{background:#285c46;border-color:#214d3b;color:#fff8e5}
.division-deck{padding:12px;border:1px solid #bdccae;border-radius:14px;background:#eef2df}
.division-deck[hidden],#divisionChoices[hidden]{display:none}
.division-deck p{margin:0 0 10px}
.division-select{display:flex;gap:7px}
.division-select button{flex:1;min-height:44px;padding:8px 5px;border:1px solid #a0b891;border-radius:10px;background:#fff8e5;color:#285c46;font:inherit;font-size:14px}
.division-select button[aria-pressed="true"]{background:#d6aa53;border-color:#8c6727;color:#253b2c;box-shadow:inset 0 0 0 2px #fff8e5}
#lab .division-readout{margin:12px 0;font-size:16px;font-weight:600}
#lab .division-pan{display:flex;flex-direction:column;gap:4px}
#lab .division-pair{min-height:36px;flex-wrap:wrap;align-items:center;padding:4px;border:1px solid #d7dcc3;border-radius:8px;gap:3px;background:#fff8e5}
#lab .division-pair.selected{outline:2px solid #a17b2f;outline-offset:-2px;background:#f5e2af}
.division-pair small{width:14px;flex:none;font-size:12px;font-weight:600}
#divisionAgain,#replayDivision{min-height:44px;padding:9px 12px;margin-bottom:12px}
#lab #explanationFields .equation-display{font-size:23px;line-height:1.7}
/* Keep subtraction feedback in view while using the operation buttons. */
@media(max-width:760px){
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) .lab-layout{scroll-padding-top:185px}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) #labSceneHost{position:sticky;top:0;z-index:3;flex:none;height:170px;min-height:0;max-height:none;background:#edf2e4;border-bottom:1px solid #c5d2b6}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) #labSceneHost .scene-controls{bottom:3px;gap:5px}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) #labSceneHost .scene-controls button{min-width:36px;min-height:36px!important;height:36px;padding:0 8px}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) #labSceneHost #motionToggle{display:none}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) .lab-panel{padding:14px 16px 24px}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) .lab-panel h3{font-size:23px}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) .equation-display{padding:8px;margin:8px 0;font-size:24px}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) .operation-grid{grid-template-columns:1fr 1fr;gap:8px}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) .operation-grid button{font-size:14px;padding:8px;min-height:52px;line-height:1.6}
}
@media(max-width:760px) and (max-height:660px){
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) #labSceneHost{height:140px}
 #lab:is([data-phase="experiment"],[data-phase="explain"],[data-phase="check"],[data-phase="bridge"]) .lab-layout{scroll-padding-top:155px}
}

#substituteAll{min-height:44px;padding:8px 12px;font-size:14px}
.substitution-deck{margin-bottom:16px}
#lab .substitution-extra{align-items:center;gap:4px;padding:4px;min-height:32px;border-top:2px solid #c6b786}

/* A shared brass highlight links symbols, story phrases and the scale. */
#lab .bridge-lens{margin:12px 0;padding:12px;border:1px solid #cbbb8c;border-radius:16px;background:#f4f2df}
#lab .bridge-symbols{display:grid;grid-template-columns:1fr 1fr 1fr 14px 1fr;gap:5px;align-items:stretch}
#lab .bridge-symbols button{min-width:0;min-height:72px;padding:6px 2px;border:1px solid #a7b89a;border-radius:10px;background:#fffaf0;color:#28533d;font:inherit}
#lab .bridge-symbols b{display:block;font-size:27px;line-height:1.25}
#lab .bridge-symbols small{display:block;font-size:14px;line-height:1.5;overflow-wrap:anywhere}
#lab .bridge-symbols [aria-pressed="true"]{background:#f5d384;border:2px solid #8f6527;box-shadow:0 2px 0 #b79146}
#lab .bridge-equals{align-self:center;font-size:22px;color:#28533d}
#lab #bridgeMeaning{margin:10px 0 0;font-size:16px;line-height:1.75}
#lab #clearBridgeFocus{min-height:44px;font-size:14px;padding:7px 0}
#lab .bridge-stories article:nth-child(2){background:#f8f1db;border-color:#d7c795}
#lab .bridge-stories mark{background:transparent;color:inherit;box-decoration-break:clone;-webkit-box-decoration-break:clone}
#lab .bridge-stories mark.selected{background:#f5d384;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
#lab .bridge-token-selected{background:#f5d384;border:2px solid #8f6527;color:#3e3019;outline:1px solid #8f6527;outline-offset:1px}
#lab .balance-recap{margin:18px 0 8px;border:1px solid #b9c8a6;border-radius:16px;background:#edf2e1;overflow:hidden}
#lab .balance-recap>summary{cursor:pointer;min-height:48px;padding:12px 14px;color:#28533d;font-size:16px;font-weight:600;line-height:1.6}
#lab .balance-recap[open]>summary{border-bottom:1px solid #c6d0b6}
#lab .recap-body{padding:12px}
#lab .recap-intro{margin:0 0 12px;font-size:14px}
#lab .recap-stops{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
#lab .recap-stops button{min-width:0;min-height:68px;padding:7px 3px;border:1px solid #aabd98;border-radius:12px;background:#fffaf0;color:#28533d;font:inherit;font-size:14px;line-height:1.5}
#lab .recap-stops .recap-step-number{display:block;font-weight:700;font-size:19px}
#lab .recap-step-label{display:block;font-size:14px}
#lab .recap-step-short{display:none}
#lab .recap-stops [aria-pressed="true"]{border:2px solid #8f6527;background:#f5d384;box-shadow:0 2px 0 #b79146}
#lab .recap-readout{margin:12px 0;background:#fffaf0;border:1px solid #cbbb8c;border-radius:12px;padding:12px}
#lab .recap-equation{margin:0;font-size:clamp(17px,2vw,23px);font-weight:600;text-align:center;overflow-wrap:anywhere}
#lab .recap-result{margin:6px 0 0;color:#285b43;text-align:center;font-weight:600}
#lab .recap-explanation{margin:10px 0 0;font-size:16px}
#lab .recap-navigation{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#lab .recap-navigation button{min-height:44px;border:1px solid #aabd98;border-radius:12px;background:#fffaf0;color:#28533d;font:inherit;font-size:14px}
#lab .recap-navigation button:disabled{opacity:.5;cursor:default}
#lab [data-recap-close]{min-height:44px;font-size:14px;margin-top:6px}
@media(max-width:760px){
 #lab[data-phase="bridge"] .bridge-lens{padding:9px}
 #lab[data-phase="bridge"] #liveEquation,#lab[data-phase="bridge"] #visualNote{display:none}
 #lab .recap-stops{gap:4px}
 #lab .recap-stops button{min-height:60px}
 #lab .recap-step-label{display:none}
 #lab .recap-step-short{display:block;font-size:14px}
}
/* ==== park-finale.css ==== */
.park-finale-entry{margin:24px auto;padding:22px 28px;border-radius:24px;background:#e9eddc;border:1px solid #d1dbc2;display:flex;align-items:center;gap:20px;max-width:1160px;color:#285c46}.park-finale-entry h3{margin:3px 0}.park-finale-entry p{margin:4px 0;font-size:14px}.park-finale-entry>div{flex:1}.park-finale-entry .finale-emblem{flex:0;display:grid;place-items:center;min-width:62px;height:62px;border-radius:50%;background:#285c46;color:#f1d393;font-size:36px}.park-finale-entry button{white-space:nowrap}.park-finale-dialog{width:min(1100px,96vw);max-width:1100px;height:min(850px,94dvh);max-height:94dvh;padding:0;border:1px solid #dacbaa;border-radius:28px;background:#faf3e3;color:#294b3e;overflow:hidden}.park-finale-dialog::backdrop{background:#17352dcc;backdrop-filter:blur(6px)}.finale-header{display:flex;gap:15px;align-items:center;padding:15px 24px;border-bottom:1px solid #d9d4bb;background:#f4ead5}.finale-header>div{flex:1}.finale-header h2{margin:2px 0;font-size:23px}.finale-header small,.finale-eyebrow{font-size:11px;letter-spacing:.09em;color:#657757}.finale-tabs{display:flex;gap:8px;padding:10px 24px}.finale-tabs button{border:1px solid #b4c4a2;background:transparent;border-radius:20px;padding:8px 18px;color:#285c46}.finale-tabs button[aria-pressed=true]{background:#285c46;color:#fff5db}.finale-layout{display:grid;grid-template-columns:1.12fr 1fr;height:calc(100% - 139px);overflow:auto}.finale-visual{padding:0 18px 22px;min-width:0}.finale-scene{height:330px;position:relative;background:radial-gradient(ellipse at center,#fff6dc 0,#e7ebdf 75%);border-radius:22px;overflow:hidden}.finale-scene canvas{display:block;width:100%;height:100%}.finale-scene[data-fallback=true]:after{content:'✦ 3x + 5 = 29 ✦';position:absolute;inset:0;display:grid;place-items:center;background:#e7ebdf;color:#285c46;font-size:30px}.finale-visual>p{font-size:13px;line-height:1.6;margin:12px 5px}.finale-panel{padding:18px 24px 28px 10px;min-width:0}.finale-panel h3{font-size:26px;margin:16px 0 10px;line-height:1.35}.finale-panel p{line-height:1.65}.finale-panel button{min-height:44px}.finale-panel .cloud-primary{width:100%;margin:10px 0}.finale-panel .cloud-text{margin-top:10px}.finale-equation{display:block;background:#e5ecda;border-radius:14px;padding:14px;text-align:center;font-size:28px;font-weight:700;letter-spacing:.03em}.finale-options{display:flex;gap:10px;flex-wrap:wrap}.finale-options button{flex:1;border:1px solid #bbca9d;background:#fff9ed;color:#285c46;border-radius:12px;padding:12px;font:inherit;min-width:140px}.finale-options button:hover{background:#e3ead5}.finale-steps{display:flex;gap:5px;flex-wrap:wrap}.finale-steps span{font-size:11px;padding:5px 8px;border-radius:10px;background:#eee5d4;color:#796c51}.finale-steps .current{background:#285c46;color:#fff8e5}.finale-steps .done{background:#d8e4c9;color:#285c46}.finale-scale{display:flex;align-items:center;justify-content:space-around;gap:8px;background:#fffaf0;border:1px solid #decfae;border-radius:16px;padding:14px;font-size:23px}.finale-slider{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:15px 0;font-size:14px;font-weight:600}.finale-slider input{flex:1;min-width:100px;accent-color:#285c46;height:44px}.finale-slider output{font-size:15px}#baseWeightStatus{flex-basis:100%;color:#60744f}#rescueAnswer{display:block;width:100%;box-sizing:border-box;border:1px solid #9cad85;border-radius:12px;background:#fffaf1;padding:12px;font:inherit;font-size:21px}.finale-feedback{min-height:1.5em;color:#65512c;background:#f5e5bd;border-radius:12px;padding:10px;font-size:14px}.finale-feedback:empty{display:none}.finale-small{font-size:12px;color:#6d7462}.finale-parts{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.finale-parts li{display:flex;gap:8px;padding:11px 8px;border-radius:12px;background:#eee8d9;color:#7c806f}.finale-parts li.owned{background:#dbe6c7;color:#285c46;border:1px solid #b4c386}.finale-parts li>span{font-size:19px}.finale-parts small{display:block;font-size:10px;margin-top:5px}.finale-parts b{font-size:13px}#finalePassport{border:1px solid #cdd6bd;border-radius:15px;padding:12px;font-size:12px;background:#f9f5e7}#finalePassport summary{font-size:14px;font-weight:700;cursor:pointer}#finalePassport p{line-height:1.6}.finale-stations{display:grid;gap:7px}.finale-stations button{border:0;border-radius:9px;padding:9px;background:#e6ecd9;display:flex;gap:10px;align-items:center;text-align:left;color:#285c46;font:inherit;min-height:44px}.finale-stations small{margin-left:auto}.finale-stations b{width:20px}.park-finale-dialog [data-save-status]{margin:0 15px;font-size:12px}.lab-finale-link{display:block;margin:10px auto 16px;border:0;background:#e7edd9;color:#285c46;border-radius:14px;padding:10px 18px;font:inherit;font-size:13px}.finale-panel button:focus-visible,.finale-tabs button:focus-visible{outline:3px solid #ad7845;outline-offset:3px}
@media(max-width:760px){.park-finale-entry{margin:15px;padding:18px;flex-wrap:wrap;gap:12px}.park-finale-entry>div{min-width:180px}.park-finale-entry .finale-emblem{display:none}.park-finale-entry button{width:100%}.park-finale-dialog{width:100%;height:100dvh;max-height:100dvh;max-width:100%;border:0;border-radius:0}.finale-header{padding:9px 14px}.finale-header h2{font-size:19px}.finale-tabs{padding:7px 14px}.finale-tabs button{padding:6px 12px;font-size:12px;min-height:36px}.finale-layout{display:flex;flex-direction:column;height:calc(100% - 117px)}.finale-visual{display:contents}.finale-scene{height:clamp(190px,28dvh,275px);min-height:clamp(190px,28dvh,275px);border-radius:0;margin:0 12px;order:0}.finale-visual>p{order:1;margin:5px 16px;font-size:11px}.finale-panel{order:2;padding:8px 16px 18px}.finale-panel h3{font-size:22px;margin:9px 0}.finale-panel p{font-size:14px;margin:9px 0}.finale-steps span{font-size:10px;padding:4px 7px}.finale-equation{font-size:23px!important;padding:10px}.finale-scale{font-size:20px;padding:9px}.finale-slider{margin:7px 0}.finale-panel .cloud-primary{margin:5px 0}.finale-options button{min-width:110px;padding:9px;font-size:13px}#finalePassport{order:3;margin:0 16px 22px}.finale-header .sound-open{width:36px;height:36px}.finale-header .close-button{width:36px;height:36px}}
@media(prefers-reduced-motion:reduce){.park-finale-dialog *{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media(max-width:760px){.finale-scene{position:sticky;top:0;z-index:2;flex-shrink:0;box-shadow:0 5px 14px #faf3e3}}
@media(max-width:760px) and (max-height:660px){.finale-scene{height:150px;min-height:150px}.finale-header{padding:6px 12px}.finale-header h2{font-size:17px}.finale-panel p{font-size:13px}}

#lensLab{width:min(1060px,96vw);height:94dvh;max-height:94dvh;border:1px solid #cbd6c4;border-radius:20px;padding:0;background:#f6f3e9;color:#23483b}#lensLab::backdrop{background:#163b35b8}#lensLab>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;border-bottom:1px solid #d4ddca}#lensLab h2{font-size:18px;margin:0}#lensLab>header button{min-height:44px;padding:8px 12px}#lensLab iframe{width:100%;height:calc(100% - 67px);border:0;display:block}@media(max-width:600px){#lensLab{width:100%;max-width:100%;height:100dvh;max-height:100dvh;border-radius:0}#lensLab h2{font-size:15px}#lensLab>header{padding:8px}#lensLab iframe{height:calc(100% - 62px)}}
#parkFinale #finaleClose.finale-return{width:auto;min-height:44px;height:auto;padding:8px 10px;border-radius:12px;font-size:12px;white-space:nowrap;flex-shrink:0}
@media(max-width:450px){#parkFinale .finale-header{gap:7px}#parkFinale .finale-header h2{font-size:16px}#parkFinale .finale-header small{font-size:9px}}
/* ==== observatory.css ==== */
/* Quiet destination; learning and tram controls remain reachable from the map. */
.map-shortcuts{display:grid;grid-template-columns:1fr 1.5fr;gap:5px;align-items:center}.map-shortcuts #mobileMap{min-height:44px;margin:0;font-size:11px}
.observatory-link{display:block;min-height:44px;width:100%;padding:7px 8px;border:1px solid #d4c697;border-radius:9px;background:#f3e8c9;color:#34543e;font-size:11px;margin-top:0}
.observatory-map-card{display:flex;align-items:center;gap:15px;width:100%;text-align:left;padding:18px;background:#f1e7c9;color:#285542;border:1px solid #c6b478;border-radius:14px}
.observatory-map-card>span:first-child{font-size:30px;color:#8b692c}.observatory-map-card>span:last-child{margin-left:auto;font-size:24px}
.observatory-map-card strong,.observatory-map-card small{display:block}.observatory-map-card strong{font-size:17px}.observatory-map-card small{font-size:13px;margin-top:5px}
.observatory-card{position:absolute;z-index:6;left:28%;right:3%;bottom:24px;display:flex;gap:20px;align-items:center;padding:20px 24px;border:1px solid #d4c499;border-top:4px solid #b89950;border-radius:19px;background:#fff8e8f5;box-shadow:0 8px 32px #29453422}
.observatory-card h2{font-size:26px;line-height:1.4;margin:5px 0}.observatory-card p{font-size:14px;line-height:1.65;margin:5px 0}.observatory-card #observatoryStatus{font-weight:600;color:#326148}.observatory-actions{flex:none;display:flex;flex-direction:column;align-items:center;gap:5px}.observatory-actions .cloud-primary{font-size:14px}
.observatory-view :is(.cloud-title,.cloud-dock,#cloudResume,.cloud-ride,.cloud-enter-link,#cloudJourney){display:none!important}
.observatory-view .cloud-minimap{top:28px;bottom:auto}.observatory-view #cloudScene:after{background:none}
#seeObservatoryCity{width:100%;margin-top:14px;white-space:normal}
:is(.observatory-link,.observatory-map-card,.observatory-card button):focus-visible{outline:3px solid #285542;outline-offset:3px}
@media(max-width:1050px) and (min-width:651px){.observatory-card{left:26%;padding:16px;gap:12px;flex-wrap:wrap}.observatory-card h2{font-size:24px}.observatory-actions{flex-direction:row;width:100%;justify-content:space-between}.observatory-card .cloud-eyebrow{font-size:9px}}
@media(max-width:650px){
 #cloudWorld:not(.island-mode) .cloud-minimap{top:calc(var(--mobile-world-height) - 263px);width:158px;padding:8px 10px}
 .map-shortcuts{grid-template-columns:1fr;gap:0}
 #cloudWorld .cloud-minimap #mobileMap{min-height:44px;margin:0;padding:4px 0}.observatory-link{font-size:12px;margin-top:0}
 #cloudWorld:not(.island-mode):is(.touring,.follow-view,.driver-view,.observatory-view) .cloud-minimap{top:14px}
 #cloudWorld.observatory-view{padding:0;height:var(--mobile-world-height);min-height:512px}
 #cloudWorld.observatory-view #cloudScene{height:100%}
 .observatory-card{left:4%;right:4%;bottom:12px;display:block;padding:12px 14px;border-radius:14px}
 .observatory-card h2{font-size:21px;margin:3px 0}.observatory-card .cloud-eyebrow{font-size:8px;letter-spacing:.07em}.observatory-card p{font-size:12px;line-height:1.65;margin:4px 0}
 .observatory-actions{display:flex;flex-direction:row;gap:8px;align-items:center;margin-top:8px}.observatory-actions .cloud-primary{flex:1;padding:10px 7px;font-size:12px;min-height:44px;white-space:normal}.observatory-actions .cloud-text{flex:1;margin:0;min-height:44px;font-size:12px;white-space:normal}
 .observatory-map-card{padding:12px;gap:10px}.observatory-map-card strong{font-size:15px}.observatory-map-card small{font-size:12px}
}
/* ==== balance-play.css ==== */
.balance-play{border-top:3px solid #c4a057;padding-top:10px}.play-step{font-size:14px;color:#5b714f;font-weight:600}.balance-play h3{margin:7px 0!important}.play-counts{display:flex;align-items:center;justify-content:space-evenly;background:#e3ecd5;border:1px solid #b6c89d;border-radius:14px;padding:10px;gap:12px;font-size:16px}.play-counts b{font-size:27px;padding-left:8px}.play-counts>strong{font-size:25px}.play-guesses{display:flex;gap:7px}.play-guesses button,.play-moves button,.play-reset button{font:inherit;font-size:14px;min-height:44px;padding:10px;border:1px solid #bbca9d;border-radius:10px;color:#285c46;background:#fffaf0}.play-guesses button{flex:1}.play-guesses [aria-pressed=true]{background:#285c46;color:#fff8e4;border-color:#285c46}.play-moves{display:grid;grid-template-columns:1fr 1fr;gap:8px}.play-moves button:nth-last-child(-n+2){background:#e5edd9;border-color:#99b28a}.balance-play button:disabled{opacity:.42;cursor:default}.play-reset{display:flex;gap:8px;margin-top:9px}.play-reset button{flex:1;background:transparent;border-color:transparent;text-decoration:underline;text-underline-offset:3px}.play-feedback{background:#f0e3b9;border-left:4px solid #b69445;padding:10px 12px;border-radius:8px;font-size:14px!important}.play-note{font-size:12px!important;color:#637454;line-height:1.65}#freeCounterweight,.play-collection{margin:12px 0;border:1px solid #d2d6bc;border-radius:12px;padding:8px 12px}#freeCounterweight summary,.play-collection summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:14px}.finale-scene[data-fallback=true]:after{content:attr(data-fallback-text)}
@media(max-width:760px){.balance-play{padding-top:5px}.balance-play h3{font-size:21px}.play-counts{padding:6px}.play-guesses{gap:5px}.play-guesses button{padding:7px 3px;font-size:14px}.play-moves{gap:6px}.play-moves button{padding:8px;font-size:14px}.play-reset{margin-top:5px}.play-reset button{font-size:13px}.balance-play .play-note{font-size:12px!important}.park-finale-dialog[data-base-play=true] .finale-visual>p{font-size:12px}.park-finale-dialog[data-base-play=true] .finale-panel>h3[hidden],.park-finale-dialog[data-base-play=true] .finale-panel>p[hidden]{display:none}}

@media(max-width:760px){.park-finale-dialog[data-base-play=true] .finale-layout{scroll-padding-top:calc(clamp(190px,28dvh,275px) + 10px)}}
@media(max-width:760px) and (max-height:660px){.park-finale-dialog[data-base-play=true] .finale-layout{scroll-padding-top:160px}}
/* ==== lesson-next.css ==== */
/* A destination preview stays in the lesson, with no timed or modal detour. */
#lab .lesson-next{margin:22px 0 8px;border-top:2px dashed #c9cfb6;padding-top:18px}
#lab .next-guide{font-size:14px;line-height:1.8;color:#385942;background:#edf0df;padding:12px 14px;border-radius:4px 16px 16px 16px;margin:0 0 14px}
#lab .next-guide>span{display:block;font-weight:600;color:#286449;font-size:12px;margin-bottom:3px}
#lab .next-destination{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px 12px;align-items:center;padding:14px;background:#fff9e9;border:1px solid #d8cfb6;border-top:4px solid var(--next-accent);border-radius:18px;box-shadow:0 4px 0 #ddd6c55c}
#lab .next-art{width:88px;aspect-ratio:1;display:grid;place-items:center;background:radial-gradient(ellipse at center,#f1e6ca,transparent 70%);font:600 36px 'Space Grotesk',sans-serif;color:var(--next-accent)}
#lab .next-art>span{width:58px;height:58px;display:grid;place-items:center;border-radius:16px;background:#fffdf4;box-shadow:0 5px 0 #ddd5bf;transform:rotate(-6deg)}
#lab .next-art img{width:116px;max-width:none;height:87px;object-fit:contain;margin:0;pointer-events:none}
#lab .next-copy{min-width:0}
#lab .next-copy .next-eyebrow{font-size:11px;line-height:1.6;color:#69664d;margin:0 0 3px}
#lab .next-copy h4{font-size:19px;line-height:1.5;margin:0 0 5px;color:#284d3a;font-weight:600}
#lab .next-copy>p:last-child{font-size:13px;line-height:1.7;margin:0;color:#52624d}
#lab .next-destination>.next-enter{grid-column:1/-1;min-height:48px;width:100%;margin:3px 0 0;padding:10px 13px;font-size:15px;gap:12px;white-space:normal}
#lab .next-options{margin:12px 0 0;border:1px solid #ccd6bb;border-radius:12px;background:#f7f8ee}
#lab .next-options summary{min-height:44px;cursor:pointer;padding:10px 13px;font-size:14px;color:#315a43}
#lab .next-options>div{padding:0 10px 10px;display:grid;gap:8px}
#lab .next-options button{min-height:44px;border-radius:9px;border:1px solid #cad4bc;background:#fffdf4;text-align:left;padding:10px 12px;font-size:14px;line-height:1.6}
#lab .next-options p{font-size:12px;line-height:1.7;color:#52624d;margin:0 3px}
#lab .next-rest{display:block;min-height:44px;font-size:13px;color:#416149;margin:3px auto 0}
@media(max-width:380px){#lab .next-destination{grid-template-columns:64px minmax(0,1fr);padding:11px;gap:9px}#lab .next-art{width:64px}#lab .next-art img{width:88px;height:66px}#lab .next-copy h4{font-size:17px}}
/* ==== landing-refinements.css ==== */
#cloudMinimap .map-heading{gap:6px}#cloudMinimap .map-heading>span{flex:1}#cloudMinimap .map-toggle{display:grid;place-items:center;min-width:36px;min-height:36px;padding:0;border-radius:9px;background:#e2eacd;color:#285542;font-size:24px}
#cloudWorld #cloudMinimap.map-collapsed{width:52px;padding:4px}#cloudMinimap.map-collapsed .map-heading>span,#cloudMinimap.map-collapsed #expandMap{display:none}#cloudMinimap.map-collapsed .map-toggle{width:42px;height:42px;background:transparent}#miniMapContents[hidden]{display:none}
#how.compact-approach{display:flex;align-items:center;gap:28px;margin:18px 5% 0;padding:18px 0;border-top:0;border-bottom:1px solid #d5dfcc}
#how .approach-title{flex:0 1 260px}#how .overline{font-family:inherit;font-size:12px;letter-spacing:0;color:#576e57}#how h2{font-size:19px;line-height:1.5;margin-top:4px}
.curiosity-loop{flex:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:0;margin:0;list-style:none}.curiosity-loop li{display:flex;align-items:center;gap:10px;min-width:0}.curiosity-loop h3{font-size:16px;font-weight:600;margin:0 0 3px}.curiosity-loop p{font-size:14px;line-height:1.6;color:#596c59;margin:0}.loop-icon{flex:0 0 42px;width:42px;height:42px;stroke:#32684c;stroke-width:3;fill:#e8f1d6;stroke-linecap:round;stroke-linejoin:round;overflow:visible}.loop-icon text{fill:#32684c;stroke:none;text-anchor:middle;font:600 20px 'Space Grotesk',sans-serif}.try-icon circle{fill:#ebc266}.tell-icon{stroke:#796194;fill:#eee7f6}.wonder-icon{animation:curious-nod 3s ease-in-out 2;transform-origin:center}.knob-one{animation:curious-slide 3s ease-in-out 2}.knob-two{animation:curious-slide 3s ease-in-out 2 reverse}.idea-lines{animation:curious-idea 3s ease-in-out 2}
@keyframes curious-nod{0%,100%{transform:rotate(0)}40%{transform:rotate(-12deg)}70%{transform:rotate(5deg)}}@keyframes curious-slide{0%,100%{transform:translateX(0)}50%{transform:translateX(7px)}}@keyframes curious-idea{0%,100%{opacity:1}50%{opacity:.4}}
@media(max-width:900px){#how.compact-approach{display:block;padding:16px 0}#how .approach-title{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;margin-bottom:12px}#how h2{font-size:18px}.curiosity-loop li{align-items:flex-start}.loop-icon{flex-basis:34px;width:34px;height:34px}}
@media(max-width:650px){#cloudMinimap .map-toggle{min-width:36px;min-height:44px}#how.compact-approach{margin:12px 5% 0;padding:12px 0}.curiosity-loop{gap:10px}.curiosity-loop li{display:block}.loop-icon{width:30px;height:30px;margin-bottom:4px}.curiosity-loop h3{font-size:15px}.curiosity-loop p{font-size:14px}#how .overline{display:none}#how h2{font-size:17px}}
@media(prefers-reduced-motion:reduce){.loop-icon,.knob-one,.knob-two,.idea-lines{animation:none!important}}
/* ==== teacher-dashboard.css ==== */
#teacher.teacher-dashboard{width:min(1180px,96vw);height:min(880px,94dvh);max-height:94dvh;max-width:none;padding:0;background:#f5f7f2;border:1px solid #bdd0c1;border-radius:24px;overflow:auto;color:#203e33}
.teacher-header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:22px 28px;background:#24543f;color:#fff9e7;position:sticky;top:0;z-index:3}.teacher-header p{font-size:13px;color:#d9e9d4;line-height:1.6}.teacher-header h2{font-size:26px;font-weight:600;line-height:1.5;margin-top:4px}.teacher-header .close-button{flex:0 0 44px;width:44px;height:44px;background:#ffffff20;color:white}
#teacherDashboard{padding:0 28px 28px;font-size:16px;line-height:1.7}.teacher-scope{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:14px 0;border-bottom:1px solid #dbe3d5}.teacher-scope>span{font-size:13px;font-weight:600;color:#345b46;background:#e0ebd7;padding:3px 10px;border-radius:20px}.teacher-scope p{font-size:14px;color:#596c5e}.teacher-toolbar{display:flex;align-items:end;gap:14px;padding:18px 0}.teacher-toolbar>p{font-size:13px;color:#5d7061;margin-left:auto;max-width:245px}.teacher-dashboard label{display:grid;gap:5px;font-size:14px;font-weight:500}.teacher-dashboard select{font:inherit;min-height:44px;background:#fff;border:1px solid #b6c7b7;color:#244e3b;border-radius:10px;padding:8px 34px 8px 12px;max-width:100%}.teacher-toolbar label{min-width:170px}.teacher-nav{display:flex;gap:6px;border-bottom:1px solid #c9d7c6;padding-bottom:10px}.teacher-nav button{background:transparent;padding:10px 16px;min-height:44px;border-radius:10px;font-size:15px;line-height:1.5}.teacher-nav button[aria-pressed=true]{background:#285b43;color:#fff9e7}.teacher-workspace{padding-top:22px;outline:none}.teacher-workspace h3{font-size:20px;line-height:1.5;font-weight:600}.teacher-workspace h4{font-size:17px;font-weight:600;line-height:1.6;margin:0 0 6px}.teacher-workspace p{line-height:1.8}.teacher-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.teacher-metrics article{padding:15px 20px;border-radius:16px;border:1px solid #d3dec9;background:#fff}.teacher-metrics article:first-child{background:#e7eedc}.teacher-metrics article:last-child{background:#ece8f3;border-color:#d7cfe2}.teacher-metrics article>span{display:block;font-size:14px;color:#4d624f}.teacher-metrics strong{display:block;font:600 34px/1.5 'Space Grotesk',sans-serif}.teacher-metrics small{font:400 14px 'IBM Plex Sans Thai',sans-serif}.teacher-caption{font-size:13px;color:#5b6c5e;line-height:1.7;margin:10px 0 16px}.teacher-columns{display:grid;grid-template-columns:245px minmax(0,1fr);gap:24px;margin-top:22px}.teacher-roster h3{margin-bottom:12px}.teacher-roster button{width:100%;display:flex;gap:10px;align-items:center;text-align:left;padding:12px 10px;background:#fff;border:1px solid #cfdcc8;border-radius:12px;margin-bottom:8px}.teacher-roster button[aria-pressed=true]{border-color:#32684c;box-shadow:inset 3px 0 #32684c;background:#eef4e5}.teacher-roster button>span:last-child{margin-left:auto}.teacher-roster strong{font-size:15px;font-weight:600;display:block}.teacher-roster small{font-size:12px;color:#576d5b;display:block}.teacher-avatar{width:34px;height:38px;border-radius:12px;display:grid;place-items:center;background:#dce8ce;font:600 20px 'Space Grotesk',sans-serif;flex-shrink:0}.teacher-section-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:10px}.teacher-section-heading>span{font-size:13px;color:#607063}.teacher-review-note{font-size:14px;margin:6px 0 12px;color:#5b6450}.teacher-advice{display:grid;gap:10px}.teacher-advice article{background:#fff;border:1px solid #d4dfcd;border-radius:14px;padding:16px}.teacher-advice p{font-size:14px;color:#526451}.teacher-advice .teacher-action{font-size:16px;margin-top:10px;color:#244c39;padding-left:12px;border-left:3px solid #d8ad56}.teacher-skills{margin-top:22px;border-top:1px solid #cedbc8;padding-top:20px}.teacher-skill-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.teacher-skill-grid button{text-align:left;border:1px solid #c9d8c3;border-radius:12px;background:#fff;padding:13px;display:grid;gap:5px;font-size:14px;min-height:112px}.teacher-skill-grid button>span{font-weight:600;color:#244e3b}.teacher-skill-grid strong{font-size:15px;font-weight:500}.teacher-skill-grid small{font-size:12px;color:#5e6e61;line-height:1.7}.teacher-evidence{border:1px solid #cedac6;border-radius:12px;margin:10px 0;background:white;overflow:hidden}.teacher-evidence summary{font-size:15px;line-height:1.8;padding:14px;min-height:48px;cursor:pointer}.teacher-evidence p{white-space:pre-wrap;overflow-wrap:anywhere;padding:0 16px 14px;font-size:15px}.teacher-evidence small{display:block;padding:0 16px 14px;color:#66745e;font-size:12px;overflow-wrap:anywhere}.teacher-evidence-list>h4{margin-top:22px}.teacher-empty{padding:32px 20px;border:1px dashed #c2d3ba;border-radius:16px;text-align:center;background:#edf3e5;margin:20px 0}.teacher-empty>span{font-size:38px;color:#4e7758}.teacher-empty p{font-size:15px;max-width:600px;margin:auto}.teacher-tool-skill{max-width:350px;margin:18px 0}.teacher-tool-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:22px}.teacher-tool-grid button{padding:18px;background:#fff9e9;border:1px solid #d8cfb8;border-radius:16px;text-align:left;display:grid;gap:8px}.teacher-tool-grid button>span{width:36px;height:36px;border-radius:12px;background:#e1ecd4;display:grid;place-items:center;color:#2b6246;font:600 24px 'Space Grotesk',sans-serif}.teacher-tool-grid strong{font-size:16px}.teacher-tool-grid small{font-size:14px;color:#5d6c56}.teacher-draft-label{margin-bottom:8px}#teacherDraft{font:400 16px/1.8 'IBM Plex Sans Thai',sans-serif;resize:vertical;display:block;width:100%;min-height:260px;border:1px solid #bdccba;border-radius:12px;padding:16px;background:#fff;color:#243f30}.teacher-draft-actions{display:flex;gap:16px;align-items:center;margin-top:12px}.teacher-draft-actions .primary{font-size:15px;min-height:44px;padding:10px 18px}.teacher-draft-actions p{font-size:13px;color:#586d5b}.teacher-dashboard button:focus-visible,.teacher-dashboard select:focus-visible,.teacher-dashboard summary:focus-visible,.teacher-dashboard textarea:focus-visible{outline:3px solid #8e68b1;outline-offset:3px}
@media(max-width:900px){.teacher-skill-grid{grid-template-columns:repeat(2,1fr)}.teacher-columns{grid-template-columns:205px minmax(0,1fr);gap:16px}.teacher-header{padding:18px 22px}#teacherDashboard{padding:0 22px 24px}.teacher-toolbar>p{display:none}}
@media(max-width:650px){#teacher.teacher-dashboard{width:100%;height:100dvh;max-height:100dvh;border-radius:0;border:0}.teacher-header{padding:12px 15px}.teacher-header h2{font-size:20px}.teacher-header p{font-size:12px}#teacherDashboard{padding:0 15px 24px}.teacher-scope{padding:10px 0;gap:6px}.teacher-scope p{font-size:13px}.teacher-toolbar{gap:10px;padding:12px 0}.teacher-toolbar label{min-width:0;flex:1}.teacher-dashboard select{width:100%;font-size:14px;padding-right:20px}.teacher-nav{gap:3px}.teacher-nav button{flex:1;padding:8px 6px;font-size:14px}.teacher-workspace{padding-top:16px}.teacher-metrics{gap:8px}.teacher-metrics article{padding:10px;border-radius:12px}.teacher-metrics article>span{font-size:12px}.teacher-metrics strong{font-size:27px}.teacher-metrics small{font-size:12px}.teacher-columns{display:block;margin-top:16px}.teacher-roster{margin-bottom:22px}.teacher-roster button{padding:10px}.teacher-section-heading{align-items:flex-start;flex-wrap:wrap}.teacher-section-heading h3{font-size:18px}.teacher-section-heading label{width:100%}.teacher-advice article{padding:13px}.teacher-skill-grid{gap:8px}.teacher-skill-grid button{padding:11px}.teacher-tool-grid{grid-template-columns:1fr;gap:8px}.teacher-tool-grid button{grid-template-columns:38px 1fr;gap:2px 10px;padding:12px}.teacher-tool-grid button>span{grid-row:1/3}.teacher-draft-actions{align-items:flex-start;flex-direction:column;gap:8px}}
.teacher-dashboard select{margin:0}.teacher-read-reason{min-height:44px;padding:10px 14px;font-size:15px;border:1px solid #abc1a2;border-radius:10px;background:#e6eedc;color:#285542}.teacher-evidence-filter{max-width:340px;margin-bottom:18px}@media(min-width:901px){.teacher-tool-grid{grid-template-columns:repeat(4,1fr)}}
.teacher-curriculum{margin:16px 0;padding:14px 18px;background:#e8eedf;border-radius:12px}.teacher-curriculum summary{cursor:pointer;font-weight:600;min-height:28px}.teacher-curriculum li{margin:6px 0}.teacher-curriculum p{line-height:1.7}
@media(min-width:901px){.teacher-tool-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}
.research-options{display:grid;gap:10px;margin:18px 0}.research-options label{display:flex;align-items:center;gap:10px;min-height:44px}.research-options input{width:22px;height:22px}.teacher-workspace pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;max-height:250px;overflow:auto;background:#edf1e6;padding:12px}

.teacher-support-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:20px 0}.teacher-support-grid article{border:1px solid #bdd0c1;border-top:4px solid #397251;border-radius:14px;background:#fff;padding:20px;min-width:0}.teacher-support-grid h4{font-size:18px;margin:0 0 10px}.teacher-support-result{font-size:20px;font-weight:600;color:#24543f;margin:8px 0 14px}.teacher-support-grid dl{margin:0}.teacher-support-grid dl div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid #e3e9df}.teacher-support-grid dt,.teacher-support-grid dd{font-size:14px;margin:0}.teacher-support-grid dd{text-align:right;flex-shrink:0}.teacher-support-grid button{min-height:44px;border:1px solid #8daa93;border-radius:9px;padding:8px 12px;background:#e5f0df;color:#234e38;font:inherit;width:100%;margin-top:12px}.teacher-support-grid button:disabled{opacity:.6}.teacher-support-grid button:focus-visible{outline:3px solid #b97e20;outline-offset:3px}@media(max-width:620px){.teacher-support-grid{grid-template-columns:1fr;gap:12px}.teacher-support-grid article{padding:16px}}
@media(max-width:650px){.teacher-nav{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}.teacher-nav button{flex:0 0 auto;white-space:nowrap;padding:10px 14px}}
/* ==== pattern-board.css ==== */
.pattern-board{width:min(1000px,96vw);max-height:94dvh;padding:0;border:0;border-radius:24px;background:#f8f9ef;color:#244735}.pattern-board::backdrop{background:#173d37aa;backdrop-filter:blur(4px)}.pattern-header{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 26px;background:#244f3d;color:#fff9e9}.pattern-header h2{font-size:25px;margin:4px 0}.pattern-header small{font-size:14px}.pattern-header button{width:44px;height:44px;background:#ffffff1c;color:white;border-radius:50%;font-size:25px;flex-shrink:0}.pattern-body{padding:20px 26px}.pattern-body p{font-size:16px;line-height:1.7}.pattern-body select{display:block;width:100%;font-size:16px;margin:8px 0}.pattern-story{padding:12px 16px;border-left:4px solid #dfac42;background:#fff2ce;border-radius:0 12px 12px 0}.pattern-work{display:grid;grid-template-columns:1fr 1fr;gap:22px}.pattern-display{padding:18px;border-radius:18px;background:#fff;border:1px solid #d3dfca;align-self:start}.pattern-legend{display:flex;gap:10px;flex-wrap:wrap;font-size:14px}.pattern-legend span:last-child{color:#865613}#patternGroups{min-height:160px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:8px;padding:16px 0}.pattern-group{border:1px solid #7cad8d;background:#e4f1e5;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:4px;min-height:48px;position:relative;padding:15px 4px 6px}.pattern-group small{position:absolute;top:1px;left:6px;font-size:12px}.pattern-group i,.pattern-extra i{width:12px;height:17px;border-radius:3px;background:#317453;box-shadow:inset 0 -3px #1a543b}.pattern-extra{display:flex;gap:7px;align-items:center;justify-content:center;border:1px dashed #be8a36;border-radius:10px;min-height:48px}.pattern-extra i{border-radius:50%;background:#efbb51;box-shadow:inset 0 -3px #b7842b}.pattern-slider label{display:block;font-size:16px}.pattern-slider input{width:100%;min-height:44px;accent-color:#307252}.pattern-expression{font-weight:700;text-align:center;background:#edf2e4;border-radius:10px;padding:8px;margin:8px 0 14px!important;font-size:22px!important}.pattern-display table{border-collapse:collapse;width:100%;font-size:16px}.pattern-display caption{font-size:14px;text-align:left;margin-bottom:8px}.pattern-display td,.pattern-display th{padding:8px 4px;text-align:center;border-bottom:1px solid #dfe7d9}.pattern-step{font-size:14px!important;font-weight:600;color:#745799}.pattern-challenge h3{font-size:21px;line-height:1.5}.pattern-challenge input,.pattern-challenge textarea{font:inherit;font-size:16px;border:1px solid #a6bba7;border-radius:10px;padding:12px;width:100%;min-width:0;background:#fff}.pattern-answer-row{display:flex;gap:8px;margin-top:8px}.pattern-answer-row button{flex-shrink:0}.pattern-choices{display:grid;gap:8px}.pattern-choices button{min-height:48px;border:1px solid #b8c9ab;background:#f0f5e6;border-radius:12px;font-size:22px}#patternFeedback:not(:empty){border-left:4px solid #8c72ab;padding:10px;background:#eee8f4;border-radius:0 10px 10px 0}.pattern-paper{border-top:1px solid #cfdaca;margin-top:18px;padding-top:12px}.pattern-paper summary{cursor:pointer;min-height:44px;font-size:16px}.pattern-paper p,.pattern-note{font-size:14px!important;color:#546851}.pattern-paper svg{display:block;width:100%;aspect-ratio:640/180;background-color:#fffdf5;background-image:linear-gradient(#dae5df 1px,transparent 1px),linear-gradient(90deg,#dae5df 1px,transparent 1px);background-size:20px 20px;border:1px solid #bdcdb8;border-radius:8px;touch-action:none;cursor:crosshair}.pattern-paper polyline{stroke:#345c90;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;fill:none;pointer-events:none}.pattern-paper button{font-size:14px;min-height:44px;margin:8px 6px 0 0;padding:8px 12px;background:#e4eada;border-radius:8px}.pattern-launch{display:block;width:100%;margin:16px 0;padding:14px;border:1px solid #b7c9a2;background:#edf1dc;border-radius:14px;color:#244735;font-size:16px;text-align:left}.pattern-launch small{display:block;font-size:14px;color:#596c54;margin-top:4px}#patternSave{margin-top:12px}.pattern-board button:focus-visible,.pattern-board summary:focus-visible{outline:3px solid #9273af;outline-offset:3px}
@media(max-width:650px){.pattern-board{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border-radius:0}.pattern-header{padding:12px 16px}.pattern-header h2{font-size:21px}.pattern-body{padding:14px 16px}.pattern-work{grid-template-columns:1fr;gap:14px}.pattern-display{padding:12px}#patternGroups{min-height:0;padding:12px 0}.pattern-challenge h3{font-size:19px}.pattern-display td,.pattern-display th{padding:6px}.pattern-expression{font-size:20px!important}.pattern-note{margin:16px 0}.pattern-launch{padding:12px}.pattern-paper svg{min-height:100px}}
/* ==== cloud-controls.css ==== */
.sky-picker{position:absolute;z-index:12;right:3%;top:82px;width:min(390px,calc(100% - 28px));padding:14px;border-radius:20px;background:#fff9ecef;border:1px solid #ced9bc;box-shadow:0 12px 40px #203e3933;color:#244d3b;backdrop-filter:blur(12px)}.sky-picker[hidden],.driver-cab[hidden],#stationDock[hidden],#showStationDock[hidden],#stationDockDetails[hidden]{display:none!important}.sky-picker-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.sky-picker-head strong{font-size:16px}.sky-picker-head button{width:44px;height:44px;border:0;border-radius:12px;background:#e4ebd7;color:#285542;font-size:24px}.sky-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.sky-options button{min-height:94px;background:#f2f0dd;border:1px solid #dce1c8;border-radius:14px;padding:9px;text-align:left;color:#284d3e}.sky-options button>span{font-size:22px;display:block}.sky-options strong{display:block;font-size:14px}.sky-options small{display:block;font-size:12px;line-height:1.6;margin-top:3px}.sky-options button[aria-pressed=true]{background:#285942;color:#fff8dd;border-color:#285942}.sky-picker p{font-size:12px;margin:8px 0 0}.sky-tool-symbol{font-size:22px;line-height:1}
.driver-cab{position:absolute;z-index:7;left:50%;bottom:24px;transform:translateX(-50%);width:min(550px,calc(100% - 30px));background:#204d3feb;border:1px solid #ceaf72;border-radius:18px;padding:12px 16px;color:#fff6dc;box-shadow:0 5px 0 #102f2a,0 8px 24px #1d393533;backdrop-filter:blur(10px)}.cab-top,.cab-main{display:flex;align-items:center;gap:8px}.cab-top{margin-bottom:7px}.cab-top strong{font-size:14px}.cab-top output{font:600 23px 'Space Grotesk',sans-serif;margin-right:auto;min-width:62px;font-variant-numeric:tabular-nums}.driver-cab button{background:#f5e9c8;color:#214d3d;border:0;border-radius:10px;min-height:44px;min-width:44px;padding:8px;font-family:inherit;font-size:14px;font-weight:600}.driver-cab #cabAuto{background:#9dbd85}.driver-cab #cabBack{font-size:12px}.cab-main label{display:flex;flex:1;min-width:0;flex-direction:column;font-size:12px}.cab-main input{width:100%;min-height:27px;accent-color:#e7bc63;margin:0}.driver-cab #cabBrake{background:#e9b097}.driver-cab p{font-size:12px;line-height:1.5;margin:7px 0 0;min-height:18px}.driver-cab .cab-horn-status:empty{display:none}.cab-visible .cloud-minimap{bottom:auto;top:28px}#cloudWorld.cab-visible #rideTram{left:3%;bottom:150px;transform:none;min-width:0;max-width:235px;font-size:14px}#cloudWorld.cab-visible #cloudJourney{top:82px;bottom:auto;left:50%;transform:translateX(-50%);max-width:50%}
/* Station information takes one compact row; details remain a separate disclosure. */
#cloudWorld #stationDock{padding:12px 18px;gap:16px;min-height:0;align-items:center;flex-direction:row;border-radius:16px;bottom:22px}#stationDock .dock-station{min-width:0}#stationDock .dock-station h2{font-size:23px;margin:0;line-height:1.35}#stationDock .dock-station p{font-size:12px;margin:3px 0 0}#stationDock .cloud-eyebrow{font-size:10px}#stationDock .dock-actions{margin-left:auto;display:flex;align-items:center;gap:8px}#stationDock .cloud-primary{min-height:44px;padding:10px 16px;font-size:14px}#stationDock .dock-details-button,#stationDock .dock-hide{background:#e7ecd9;border:0;border-radius:10px;min-width:44px;min-height:44px;padding:8px;color:#285542;font-size:14px}#stationDock .dock-hide{font-size:24px;flex:none}#stationDockDetails{min-width:0;max-width:270px;border:0;padding:0}#stationDockDetails label{font-size:12px}#stationDockDetails select{max-width:100%;font-size:14px}#stationDockDetails span{font-size:12px}.dock-restore{position:absolute;z-index:6;right:3%;bottom:22px;min-height:44px;padding:10px 16px;background:#fff7e4ed;border:1px solid #c7d5b8;color:#285542;border-radius:14px;font-size:14px}.island-mode #showStationDock,.observatory-view #showStationDock{display:none!important}.cab-visible #stationDock{left:auto!important;right:3%;top:90px;bottom:auto!important;width:245px!important;flex-wrap:wrap;gap:8px!important}.cab-visible #stationDock .dock-actions{margin:0}.cab-visible #stationDock .dock-hide{position:absolute;right:10px;top:10px}.cab-visible #stationDockDetails{order:4;max-width:none}.cab-visible #stationState,.cab-visible #stationSubject{display:none}
@media(min-width:651px){#cloudWorld .cloud-tools{max-width:600px}#cloudWorld .cloud-ride{bottom:135px}#cloudWorld.touring #cloudJourney{bottom:190px}.station-dock-hidden .cloud-ride{bottom:26px!important}.cab-visible.station-dock-hidden .cloud-ride{bottom:165px!important}}
@media(max-width:650px){.sky-picker{top:18px;right:65px;width:calc(100% - 80px);max-height:calc(var(--mobile-world-height,640px) - 40px);overflow:auto;padding:10px}.sky-options{gap:6px}.sky-options button{min-height:92px;padding:8px}.sky-options small{display:none}.sky-picker-head strong{font-size:14px}.driver-cab{bottom:auto;top:calc(var(--mobile-world-height,640px) - 155px);left:12px;right:12px;width:auto;transform:none;padding:9px 11px;border-radius:16px}.cab-top{gap:5px}.cab-top strong{display:none}.cab-top output{font-size:21px}.driver-cab #cabBack{font-size:12px}.cab-main{gap:5px}.cab-main label{font-size:11px}.driver-cab button{font-size:13px}.driver-cab p{font-size:11px}#cloudWorld.cab-visible #rideTram{top:calc(var(--mobile-world-height,640px) - 210px);left:12px;right:auto;max-width:calc(100% - 80px);bottom:auto!important;min-height:40px;font-size:13px}#cloudWorld.cab-visible #cloudJourney{top:278px;left:12px;right:66px;max-width:none;transform:none;font-size:12px}.cab-visible #cloudMinimap{top:12px}.cab-visible #stationDock,#cloudWorld #stationDock{position:relative!important;top:auto!important;bottom:auto!important;left:auto!important;right:auto!important;width:auto!important;margin:12px;padding:10px 12px;display:flex;flex-wrap:wrap;gap:8px;order:2}#stationDock .dock-station{flex:1}#stationDock .dock-station h2{font-size:20px}#stationDock .dock-station p{font-size:12px}#stationDock .cloud-eyebrow{display:none}#stationDock .dock-actions{margin:0;gap:5px}#stationDock .cloud-primary{padding:10px;font-size:13px;width:auto;white-space:normal;max-width:145px}#stationDock .dock-details-button{font-size:12px;padding:7px}#stationDock .dock-hide,.cab-visible #stationDock .dock-hide{position:static!important;width:44px;height:44px}#stationDockDetails{order:4;flex-basis:100%;max-width:none}#stationDockDetails select{width:auto}.dock-restore{top:calc(var(--mobile-world-height,640px) - 50px);bottom:auto;right:12px}.cab-visible .dock-restore{top:230px}.station-dock-hidden .cloud-enter-link{display:none}.cab-visible #stationDock .dock-station{min-width:140px}}
@media(prefers-reduced-motion:reduce){.sky-picker,.driver-cab{backdrop-filter:none}}

/* Cockpit: physical controls on desktop, compact touch controls on phones. */
#cabControlsToggle{display:none}
#cloudWorld.night-mood .cloud-title{color:#fff1cb;text-shadow:0 2px 12px #153c42}
@media(min-width:651px){
 #cloudWorld.cab-visible #driverCab{left:auto;right:3%;top:160px;bottom:auto;transform:none;width:248px;padding:10px 12px;background:#204d3fe8}
 #driverCab .cab-top{flex-wrap:wrap;gap:6px}#driverCab .cab-top strong{display:none}#driverCab .cab-top output{font-size:17px;min-width:40px}#driverCab .cab-top button{font-size:12px}
 #driverCab #cabBack{width:100%;min-height:36px}#driverCab #cabControlsToggle{display:block;width:100%;min-height:36px;background:#355f4e;color:#fff2ca}
 #driverCab .cab-main{display:none;margin-top:8px;flex-wrap:wrap}#driverCab.controls-open .cab-main{display:flex}#driverCab .cab-main label{min-width:100px}#driverCab #cabBrake,#driverCab #cabHorn{flex:1}
 #cloudWorld.cab-visible #stationDock{top:auto;bottom:25px!important;right:16px;max-width:245px}
 #cloudWorld.cab-visible #rideTram{bottom:205px!important;left:3%;max-width:245px}
 #cloudWorld.cab-visible #showStationDock{top:94px;bottom:auto}
 #cloudWorld.cab-visible #cloudJourney{left:3%;top:90px;transform:none;max-width:40%}
 #cloudWorld.cab-visible .cloud-minimap{top:140px}
}

/* Unobstructed driver view: two small controls; all optional UI is collapsed. */
#cloudWorld.cab-visible .cloud-tools,#cloudWorld.cab-visible #cloudMinimap,#cloudWorld.cab-visible #stationDock,#cloudWorld.cab-visible #showStationDock,#cloudWorld.cab-visible #cloudJourney,#cloudWorld.cab-visible #cloudResume{display:none!important}
#cloudWorld.cab-visible.touring #rideTram,#cloudWorld.cab-visible.travelling #rideTram{display:none!important}
#cloudWorld.cab-visible #driverCab{width:auto;max-width:310px;top:18px;right:18px;left:auto;bottom:auto;transform:none;background:transparent;border:0;box-shadow:none;padding:0;backdrop-filter:none}
.cab-quick{display:flex;justify-content:flex-end;gap:6px}#driverCab .cab-quick button{display:block;width:auto!important;min-height:40px!important;padding:8px 12px;font-size:12px;background:#fff5deee;color:#214d3d;box-shadow:0 2px 8px #1b3b3120}
#driverCab #cabControlsToggle{display:block}#driverCab #cabPanel[hidden]{display:none!important}#driverCab #cabPanel{margin-top:8px;background:#204d3ff0;padding:12px;border:1px solid #ceaf72;border-radius:14px}#driverCab .cab-main{display:flex}#driverCab #cabMessage{display:none}#driverCab.controls-open #cabMessage{display:block;background:#204d3ff0;border-radius:9px;padding:8px;max-width:310px}#driverCab .cab-horn-status:not(:empty){background:#204d3ff0;padding:8px;border-radius:9px;max-width:310px}
#cloudWorld:has(#tramStory:not([hidden])) #driverCab{display:none!important}
#cloudWorld.night-mood .cloud-title h1 span{color:#fff1cb}
@media(min-width:651px){#cloudWorld.cab-visible{min-height:440px;height:calc(100svh - 76px)}#cloudWorld.cab-visible #rideTram{bottom:auto!important;top:18px;left:18px;font-size:13px;min-height:40px;padding:8px 13px}}
@media(max-width:650px){#cloudWorld.cab-visible #driverCab{top:12px;right:12px;left:12px;max-width:none}#driverCab .cab-quick button{font-size:11px;padding:7px 10px}#cloudWorld.cab-visible #rideTram{top:64px;left:12px;max-width:190px}#driverCab .cab-main{flex-wrap:wrap}#driverCab .cab-main label{min-width:100px}#driverCab #cabPanel{max-width:310px;margin-left:auto}#driverCab #cabMessage{margin-left:auto}}

@media(min-width:651px){
 #cloudWorld .cloud-tools .cloud-tool-label{display:none}#cloudWorld .cloud-tools .cloud-tool{width:44px;height:44px;padding:9px;display:inline-grid;place-items:center}
 #cloudWorld:not(.island-mode) #cloudResume{width:220px}#cloudWorld #cloudResume .return-card{padding:12px}#cloudWorld #cloudResume .return-card>p:not(.resume-step):not(.return-eyebrow){display:none}
 #cloudWorld #cloudResume .return-card button{padding:8px;min-height:40px;font-size:12px}
 #cloudWorld .cloud-title{max-width:310px}#cloudWorld .cloud-title h1{font-size:32px}#cloudWorld .cloud-title p{font-size:13px}
}

@media(max-width:650px){
 #cloudWorld.cab-visible #rideTram{top:calc(var(--mobile-world-height,640px) - 60px);bottom:auto!important}
 #driverCab .cab-main{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}#driverCab #cabSlower{grid-column:1}#driverCab .cab-main label{grid-column:2/6;min-width:0}#driverCab #cabFaster{grid-column:6}#driverCab #cabBrake{grid-column:1/4}#driverCab #cabHorn{grid-column:4/7}
}
@media(max-width:650px){
 #cloudWorld #stationDock{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:start}
 #stationDock .dock-station{grid-column:1;grid-row:1;min-width:0!important}#stationDock .dock-station h2{font-size:20px}#stationDock .dock-station p{white-space:normal}
 #stationDock .dock-hide{grid-column:2;grid-row:1}#stationDock .dock-actions{grid-column:1/-1;grid-row:2;justify-content:space-between;width:100%}
 #stationDockDetails{grid-column:1/-1;grid-row:3;width:100%;max-width:none}#stationDockDetails>span{display:block;margin-top:6px;line-height:1.5}
}

@media(max-width:650px){#cloudWorld{max-height:none}#cloudWorld #stationDock,#cloudWorld #cloudResume{flex-shrink:0}}
#cloudWorld.island-mode #stationDock,#cloudWorld.observatory-view #stationDock{display:none!important}

/* R37: landmark choices live inside the existing closed-by-default camera menu. */
.camera-picker{max-height:min(470px,calc(100dvh - 170px));overflow-y:auto;overscroll-behavior:contain}
.camera-picker .landmark-picker-heading{border-top:1px solid #d1d9c5;padding-top:9px;margin-top:9px}
@media(max-width:650px){.camera-picker{top:70px;max-height:calc(var(--mobile-world-height,640px) - 100px)}.camera-picker button{padding:7px 10px;min-height:52px}.camera-picker span{line-height:1.45}}

#cloudWorld.landmark-view #cloudResume,#cloudWorld.landmark-view .cloud-title{display:none}
/* ==== city-map.css ==== */
/* Shared quiet map language. The city still starts with the minimap collapsed. */
#miniMap a,#cityAtlas a{cursor:pointer;outline:none}
.map-water ellipse{fill:#dce9e4;opacity:.55}
.map-rails path{fill:none;stroke:#a88b5f;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.map-land{fill:#d9e5c6;stroke:#b2c59a;stroke-width:.55}
.map-node{fill:#71886d;stroke:#fff8;stroke-width:.8}.map-live{fill:#285542}
.map-number{fill:#fff;font:600 7px 'Space Grotesk',sans-serif;text-anchor:middle;pointer-events:none}
.map-landmark{fill:#c7a45d;stroke:#806538;stroke-width:.65}.map-observatory{fill:#a391b8;stroke:#645374;stroke-width:.6}
.map-hit{fill:transparent}.map-focus-ring{fill:none;stroke:transparent;stroke-width:1.7;pointer-events:none}
#miniMap a:hover .map-focus-ring,#cityAtlas a:hover .map-focus-ring,#miniMap a[aria-current] .map-focus-ring,#cityAtlas a[aria-current] .map-focus-ring{stroke:#315d48}
#miniMap a:focus-visible .map-focus-ring,#cityAtlas a:focus-visible .map-focus-ring{stroke:#714395;stroke-width:2.5}
#miniMap a[aria-disabled=true],#cityAtlas a[aria-disabled=true]{cursor:default;opacity:.45}
.map-origin{fill:#7b6646}.map-origin text{font:7px 'IBM Plex Sans Thai',sans-serif}
.atlas-place-label{display:none;font:6px 'IBM Plex Sans Thai',sans-serif;fill:#655537;text-anchor:middle;pointer-events:none}#cityAtlas .atlas-place-label{display:block}
[data-map-tram]{pointer-events:none}[data-map-tram] circle{fill:#ffe9a9;stroke:#fff;stroke-width:1.4}[data-map-tram] path{fill:#244e3d}
.city-atlas-wrap{background:#e9efe2;border:1px solid #dbe4d1;border-radius:18px;padding:8px 14px 10px;margin:14px 0 22px}
#cityAtlas{display:block;width:100%;max-height:260px;overflow:visible}
.atlas-key{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px;font-size:11px;color:#536c5b;margin:5px 0 0}
.atlas-heading{font-size:16px;margin:18px 0 10px;font-weight:600}
#cloudMapDialog .station-cards{margin-top:0;margin-bottom:20px}
#cloudMapDialog .station-choice{min-height:105px;padding:14px 16px;text-align:left}
#cloudMapDialog .station-choice strong{font-size:15px}
.atlas-landmarks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:18px}
.atlas-landmark{border:1px solid #dddec7;border-radius:14px;padding:13px;background:#f1ead6;color:#345541;text-align:left;min-height:100px;display:grid;grid-template-columns:26px 1fr;gap:4px 9px;align-content:start}
.atlas-landmark-icon{grid-row:1/3;align-self:center;color:#9b743e;font-size:25px}.atlas-landmark strong{font-size:14px;line-height:1.6}.atlas-landmark small{font-size:11px;line-height:1.6;color:#6d735e}.atlas-landmark:disabled{opacity:.6;cursor:default}
@media(max-width:650px){#cloudMapDialog{padding:18px}#cloudMapDialog .cloud-dialog-head h2{font-size:23px}#cloudMapDialog .station-cards{grid-template-columns:1fr;gap:7px}#cloudMapDialog .station-choice{min-height:80px;padding:12px 14px}#cityAtlas{max-height:225px}.city-atlas-wrap{padding:8px}.atlas-landmarks{grid-template-columns:1fr;gap:7px}.atlas-landmark{min-height:72px;padding:11px 14px}.atlas-key{font-size:10px;gap:5px 10px}}
/* ==== island-map.css ==== */
/* A pocket park plan, sharing the real scene's entrances and walkways. */
.island-map-panel{display:grid;grid-template-columns:minmax(220px,1fr) minmax(180px,.85fr);gap:18px;align-items:center;background:#edf1e4;border:1px solid #d6dfc9;border-radius:20px;padding:16px;margin:18px 0 24px}
.island-map-panel[hidden]{display:none}#islandAtlas{display:block;width:100%;max-height:285px}
.island-map-shadow{fill:#9db59d;opacity:.24}.island-map-land{fill:#dce9ca;stroke:#adbf96;stroke-width:1}
.island-map-paths path{fill:none;stroke:#f9f3df;stroke-width:6;stroke-linecap:round;stroke-linejoin:round}.island-map-paths .chosen{stroke:#c99a43}
.island-map-entry path{fill:none;stroke:#bc9570;stroke-width:6}.island-map-entry circle{fill:#a28254}.island-map-entry text{font:11px 'IBM Plex Sans Thai',sans-serif;fill:#647459}
[data-map-place]{cursor:pointer;outline:none}.island-map-hit{fill:transparent}.island-map-building{fill:#faf8ed;stroke:var(--map-place);stroke-width:2.5}.island-map-number{font:600 12px 'Space Grotesk',sans-serif;fill:#234b39;text-anchor:middle;pointer-events:none}
.island-map-focus{fill:none;stroke:transparent;stroke-width:2;pointer-events:none}[data-map-place][aria-current] .island-map-focus,[data-map-place]:hover .island-map-focus{stroke:#315d48}[data-map-place]:focus-visible .island-map-focus{stroke:#754293;stroke-width:3}
.island-map-preview{border-left:3px solid var(--place-color,#4e9874);padding-left:14px}.island-map-preview h3{font-size:21px;margin:5px 0 8px}.island-map-preview p{font-size:14px;line-height:1.7;margin:0 0 12px}.island-map-preview .cloud-eyebrow{font-size:12px}.island-map-actions{display:flex;flex-wrap:wrap;gap:8px}.island-map-actions button{font-size:14px;min-height:44px;padding:10px 14px}.island-map-actions button:disabled{opacity:.5;cursor:default}
.island-map-help{grid-column:1/-1;font-size:13px;color:#66775c;margin:0;text-align:center}#miniMap .island-map-entry text{display:none}
@media(max-width:650px){.island-map-panel{grid-template-columns:minmax(0,1fr);gap:10px;padding:10px;margin:14px 0 20px}#islandAtlas{max-height:230px}.island-map-preview{padding:4px 10px 4px 12px}.island-map-preview h3{font-size:19px}.island-map-actions{display:grid;grid-template-columns:1fr}.island-map-actions button{width:100%}.island-map-help{font-size:12px}}
/* ==== park-navigation.css ==== */
/* Island controls follow the same quiet, collapsible ticket as the city station. */
#cloudWorld .park-intro{display:flex;align-items:center;gap:6px;top:18px;left:3%;right:auto;max-width:calc(100% - 345px);padding:5px;background:#fff8e9f2;border:1px solid #d9dfc7;border-radius:16px;pointer-events:auto}
#cloudWorld .park-intro h2{font-size:18px;letter-spacing:0;line-height:1.4;margin:0 8px}
#cloudWorld .park-intro button{display:grid;place-items:center;width:44px;min-width:44px;height:44px;min-height:44px;padding:6px;margin:0;font-size:22px;border:0;border-radius:12px;background:transparent;color:#285542;box-shadow:none}
#cloudWorld .park-intro button:hover{background:#e3ebd7}
#cloudWorld .park-detail{position:absolute;left:auto;right:3%;bottom:18px;width:min(760px,94%);margin:0;padding:10px 12px;display:block;border-radius:18px;max-height:calc(100% - 90px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.park-ticket-main{display:grid;grid-template-columns:minmax(0,1fr) auto auto 44px;gap:8px;align-items:center}
.park-ticket-label{display:flex;gap:10px;align-items:center;min-width:0}
#cloudWorld #parkNumber{position:static;flex:none;display:grid;place-items:center;width:32px;height:32px;padding:0;font-size:14px;background:#e7edd9;color:#285542;border:1px solid var(--place-color);border-radius:10px}
#cloudWorld #parkName{font-size:20px;line-height:1.5;margin:0;overflow-wrap:anywhere}
#cloudWorld .park-ticket-main button{min-height:44px;min-width:44px;font-size:14px;padding:9px 12px;margin:0;border-radius:10px}
#cloudWorld #parkStart{grid-column:2;grid-row:1;width:auto;white-space:normal}
#cloudWorld #parkDetailsToggle{grid-column:3;grid-row:1;background:#e7ecd9;color:#285542}
#cloudWorld #parkHide{grid-column:4;grid-row:1;background:transparent;color:#285542;font-size:23px;padding:6px}
.park-ticket-details{display:flex;gap:18px;align-items:center;padding:16px 2px 4px;margin-top:10px;border-top:1px solid #d8dfcd}
#cloudWorld .park-ticket-details .park-description p{font-size:15px;margin:6px 0;line-height:1.7}
#cloudWorld .park-ticket-details .cloud-eyebrow{font-size:12px;letter-spacing:.06em}
#cloudWorld .park-ticket-details #parkAvailability{font-size:13px}
#cloudWorld .park-actions{display:block;min-width:140px}
#cloudWorld .park-browse{display:flex;gap:6px;margin:0;align-items:center;justify-content:center}
#cloudWorld .park-browse button{width:44px;min-height:44px;border-radius:12px}
#cloudWorld .park-browse span{font-size:13px;min-width:32px}
.park-restore{position:absolute;z-index:7;right:3%;bottom:18px;max-width:94%;min-height:44px;padding:10px 16px;border:1px solid #c7d5b8;border-radius:14px;background:#fff7e4f2;color:#285542;font-size:14px;overflow-wrap:anywhere}
#cloudWorld .park-intro button:focus-visible,#parkDetail button:focus-visible,#parkRestore:focus-visible{outline:3px solid #754293;outline-offset:2px}
#cloudWorld.island-mode #cloudMinimap{top:88px;bottom:auto;left:3%}
@media(max-width:1050px){#cloudWorld .park-intro h2{display:none}#cloudWorld .park-intro{max-width:none}.park-ticket-details{gap:12px}}
@media(max-width:650px){
 #cloudWorld.island-mode{height:var(--mobile-world-height);min-height:0;padding-top:0;overflow:hidden}
 #cloudWorld.island-mode #cloudScene,#cloudWorld.island-mode .park-pins{height:100%;inset:0}
 #cloudWorld .park-intro{left:12px;top:12px;right:auto;gap:2px;padding:3px;border-radius:14px}
 #cloudWorld .park-detail{left:12px;right:12px;bottom:12px;top:auto;width:auto;max-height:calc(100% - 82px);padding:8px 10px;border-radius:16px}
 .park-ticket-main{grid-template-columns:minmax(0,1fr) 44px 44px;gap:6px}
 .park-ticket-label{gap:7px}
 #cloudWorld #parkName{font-size:17px}
 #cloudWorld #parkNumber{width:28px;height:28px;font-size:13px}
 #cloudWorld #parkDetailsToggle{grid-column:2;padding:7px;font-size:23px}
 .park-ticket-toggle-label{display:none}
 #cloudWorld #parkHide{grid-column:3}
 #cloudWorld #parkStart{grid-column:1/-1;grid-row:2;width:100%;padding:9px;font-size:14px}
 .park-ticket-details{display:grid;grid-template-columns:66px minmax(0,1fr);gap:10px}
 #cloudWorld .park-ticket-art{width:66px;align-self:start;margin:0}
 #cloudWorld #parkArt,#cloudWorld #parkArt img{width:66px;height:75px}
 #cloudWorld .park-actions{grid-column:1/-1}
 #cloudWorld .park-ticket-details .park-description p{font-size:14px}
 #cloudWorld .park-ticket-details #parkAvailability{font-size:12px}
 #cloudWorld .park-ticket-details .cloud-eyebrow{font-size:12px}
 #cloudWorld.island-mode #cloudMinimap{left:12px;top:76px;bottom:auto}
 .park-restore{right:12px;bottom:12px;max-width:calc(100% - 24px)}
}
@media(min-width:651px) and (max-height:600px){#cloudWorld.island-mode{min-height:360px;height:calc(100svh - 78px)}}
/* ==== practice-challenge.css ==== */
.practice-path{padding:12px;margin:0 0 20px;background:#eaf0df;border:1px solid #c7d6b8;border-radius:16px;color:#285542}
.practice-path>span{display:block;font-size:13px;margin-bottom:8px}
.practice-path>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.practice-path button{min-height:44px;padding:10px 8px;border:1px solid #b5c9a4;border-radius:12px;background:#fffbed;color:#285542;font:inherit;font-size:14px}
.practice-path button[aria-pressed=true]{background:#285542;color:#fffbed;border-color:#285542}
.reasoning-kicker{font-size:13px;font-weight:700;color:#796146;letter-spacing:.03em}
.reasoning-prompt{line-height:1.85;font-size:18px}
.reasoning-form fieldset{border:0;padding:0;margin:16px 0;min-width:0}
.reasoning-form legend{font-size:14px;margin-bottom:10px}
.reasoning-option{display:flex;align-items:center;gap:12px;min-height:52px;padding:12px;margin:8px 0;border:1px solid #d5ddc7;border-radius:14px;background:#fffbed;cursor:pointer}
.reasoning-option:has(input:checked){border-color:#3e7853;background:#eaf0df;box-shadow:inset 0 0 0 1px #3e7853}
.reasoning-option input{width:20px;height:20px;flex:none;accent-color:#285542;margin:0}
.reasoning-option span{font-size:19px;overflow-wrap:anywhere}
.reasoning-feedback:not(:empty),.reasoning-hint{padding:14px;border-radius:14px;background:#eaf0df;color:#294e3b;line-height:1.8}
.reasoning-hint{background:#fff1cf;color:#684d29}
.reasoning-takeaways{padding-left:22px;line-height:2}
.practice-path button:focus-visible,.reasoning-challenge button:focus-visible,.reasoning-option:focus-within{outline:3px solid #754293;outline-offset:2px}
@media(max-width:480px){.practice-path{padding:10px}.practice-path button{font-size:13px}.reasoning-prompt{font-size:16px}.reasoning-option span{font-size:17px}}

.reasoning-original{font-size:14px;padding:10px 12px;border-left:3px solid #7d9d6a;background:#eef1e5;line-height:1.8}.reasoning-original strong{display:inline-block;margin-left:8px;font-size:18px}
.practice-path>div{grid-template-columns:repeat(3,minmax(0,1fr))}
.story-picker{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.story-picker button{font:inherit;font-size:14px;min-height:44px;padding:8px 12px;border:1px solid #b5c9a4;border-radius:12px;background:#fffbed;color:#285542}
.story-picker button[aria-pressed=true]{background:#285542;color:#fffbed}
.story-text{border-left:4px solid #bf8a41;padding:14px 16px;background:#fff4d8;font-size:17px;line-height:1.9;border-radius:0 14px 14px 0}
.story-challenge h4{font-size:18px;margin:20px 0 8px}.story-challenge p{overflow-wrap:anywhere}
.story-challenge .reasoning-option span{font-size:16px;line-height:1.7}
.story-finish{padding:16px;border:1px solid #c7d6b8;background:#eaf0df;border-radius:16px}
.story-challenge button:focus-visible,.story-challenge input:focus-visible{outline:3px solid #754293;outline-offset:3px}
#lab[data-practice-mode=story] .room-balance-help,#lab[data-practice-mode=story] .room-balance-back,#lab[data-practice-mode=story] #manipulatives,#lab[data-practice-mode=story] #liveEquation,#lab[data-practice-mode=story] #visualNote{display:none!important}
@media(max-width:480px){.practice-path>div{grid-template-columns:1fr 1fr}.practice-path [data-practice-mode=story]{grid-column:1/-1}.story-text{font-size:16px;padding:12px}.story-challenge .reasoning-option{padding:10px;gap:8px}}

#lab[data-practice-mode="story"] .room-object-controls, #lab[data-practice-mode="story"] .room-caption {display:none}
/* ==== learning-brief.css ==== */
.learning-brief{margin:1rem 0;border:1px solid #bbd6ce;border-radius:18px;background:#f4faf6;color:#183e36;overflow:hidden}
.learning-brief>summary{padding:1rem;cursor:pointer;font-weight:700;min-height:44px}
.learning-brief-body{padding:0 1rem 1rem;font-size:1rem;line-height:1.6;overflow-wrap:anywhere}
.learning-brief h3{font-size:1.25rem;margin:.5rem 0}.learning-brief h4{font-size:1rem;margin:0 0 .4rem}
.learning-brief p{margin:.5rem 0}.brief-eyebrow{font-size:.875rem;color:#42655b}
.brief-skills{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin:1rem 0}
.brief-skills article,.brief-assessment,.brief-note{padding:.8rem;border-radius:12px;background:#fff;border:1px solid #d5e6dc}
.brief-skills p{font-size:.875rem}.brief-assessment{border-left:4px solid #338568;margin-bottom:1rem}
.learning-brief-body summary{cursor:pointer;padding:.6rem 0;min-height:44px}.brief-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin:1rem 0}
.brief-actions button,.brief-share button{min-height:44px;font-size:1rem;white-space:normal}
.brief-share{border-top:1px solid #bbd6ce}.brief-share label{display:block;margin:.7rem 0}
.brief-share select,.brief-share textarea{display:block;width:100%;max-width:100%;box-sizing:border-box;font:inherit;color:#183e36;background:white;border:1px solid #74998c;border-radius:8px;padding:.65rem;margin:.4rem 0}
.brief-share textarea{resize:vertical;font-size:.875rem}.learning-brief :focus-visible{outline:3px solid #ae6500;outline-offset:3px}
@media(max-width:420px){.brief-skills{grid-template-columns:1fr}.learning-brief-body{padding:0 .75rem .75rem}.brief-actions{flex-direction:column}.brief-actions button{width:100%}}
/* ==== learner-launch.css ==== */
.learner-launch{max-width:1120px;margin:24px auto;padding:24px;background:#fffbed;border:1px solid #d5e2cb;border-radius:24px;color:#244e3b}.launch-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.launch-heading h2{font-size:clamp(22px,3vw,30px);margin:4px 0}.launch-heading .overline{margin:0;font-size:11px}.launch-score{background:#edf4d5;border-radius:18px;padding:12px 18px;display:grid;gap:4px}.launch-score strong{font-size:20px;color:#375b19}.launch-score small{font-size:11px}.launch-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.launch-choices button{display:grid;grid-template-columns:32px 1fr;text-align:left;align-items:center;gap:4px 10px;padding:16px;border-radius:18px;box-shadow:0 4px 0 #b9c6a6;transition:transform .12s}.launch-choices button:active{transform:translateY(3px);box-shadow:0 1px 0 #b9c6a6}.launch-choices button>span{grid-row:span 2;font-size:28px}.launch-choices small{font-size:12px;font-weight:400}.learner-launch .microcopy{font-size:11px;margin-bottom:0}.progress-heading>span{font-weight:700;color:#476a14}.progress-stars .earned>span:first-child{color:#d69b17;filter:drop-shadow(0 2px 0 #99721622)}@media(max-width:650px){.learner-launch{margin:16px 12px;padding:16px;border-radius:20px}.launch-heading{align-items:flex-start;flex-direction:column;gap:10px}.launch-score{width:100%;box-sizing:border-box;padding:10px 12px}.launch-score strong{font-size:18px}.launch-choices{grid-template-columns:1fr;gap:10px}.launch-choices button{padding:12px 16px}.learner-launch>p{font-size:13px}}@media(prefers-reduced-motion:reduce){.launch-choices button{transition:none}}

.launch-recommendation{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 16px;margin-top:20px;padding:16px;border-left:4px solid #c49a43;border-radius:12px;background:#edf1df}.launch-recommendation[hidden]{display:none}.launch-recommendation h3{font-size:17px;margin:0 0 6px}.launch-recommendation p{font-size:14px;line-height:1.65;margin:0}.launch-recommendation button{white-space:normal;max-width:260px;min-height:44px}.launch-recommendation details{grid-column:1/-1}.launch-recommendation summary{font-size:13px;cursor:pointer;padding:6px 0}.launch-recommendation details p{font-size:12px;max-width:75ch}@media(max-width:650px){.launch-recommendation{grid-template-columns:1fr;padding:12px}.launch-recommendation h3{font-size:16px}.launch-recommendation button{max-width:none;width:100%}.launch-recommendation details{grid-column:auto}}
.launch-recommendation{margin-bottom:16px}
.recommendation-actions{display:grid;gap:6px;justify-items:stretch}
.recommendation-actions .text-button{font-size:12px;min-height:44px;padding:8px;color:#43653c}

.practice-finish{margin:20px 0 8px;padding:16px;border:1px solid #c6d5b5;border-radius:18px;background:#edf2df}
.practice-finish h4{margin:0 0 8px;font-size:20px;color:#285841}
.practice-finish p{margin:0 0 14px;line-height:1.7}
.practice-finish-actions{display:grid;gap:10px}
#lab .practice-finish button{min-height:44px;white-space:normal;width:100%;margin:0}
.practice-finish small{display:block;margin-top:12px;font-size:12px;line-height:1.7;color:#536448}

#lab .comfort-choices button[aria-pressed=true]{background:#285841;color:#fffbed}
#lab .comfort-plan [data-comfort-cancel]{padding:10px 8px;min-height:44px}

.practice-comfort{margin:0 0 18px;border:1px solid #c7d8b6;border-radius:14px;background:#f1f5e6}.practice-comfort>summary{cursor:pointer;padding:12px 14px;min-height:44px;box-sizing:border-box;color:#285841;font-size:14px;font-weight:600}.comfort-body{padding:0 12px 14px}.comfort-choices{display:flex;flex-wrap:wrap;gap:8px}.comfort-choices button{min-height:44px;border:1px solid #b7cba5;background:#fffbed;border-radius:12px;padding:10px 12px;font-size:13px;color:#285841}.comfort-choices button[aria-pressed=true]{background:#285841;color:#fffbed}.comfort-plan{margin-top:12px;padding:12px;background:#fffbed;border-radius:12px}.comfort-plan strong{font-size:16px}.comfort-plan p,.comfort-status{font-size:14px;line-height:1.7}.comfort-body small{display:block;font-size:11px;color:#536448;margin-top:8px}.comfort-status:empty{display:none}.comfort-plan[hidden]{display:none}@media(max-width:650px){.comfort-choices{display:grid;grid-template-columns:1fr 1fr}.comfort-choices button:last-child{grid-column:1/-1}.comfort-plan [data-comfort-confirm]{width:100%;white-space:normal}}
/* ==== result-practice.css ==== */
.result-practice{margin:14px 0;border:1px solid #c9d9bc;border-radius:14px;background:#f4f7ec;color:#344a31}
.result-practice summary{padding:14px 16px;cursor:pointer;font-size:16px;font-weight:500;min-height:48px}
.result-practice form{padding:0 14px 16px}
.result-practice fieldset{border:0;padding:0;margin:0;display:grid;gap:8px;min-width:0}
.result-practice legend{font-size:14px;padding:2px 0 12px;color:#55634c}
.result-practice label{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #d7dfce;border-radius:10px;background:#fffef7;cursor:pointer;font-size:16px;line-height:1.6}
.result-practice label:has(input:checked){background:#e4efd5;border-color:#6e934c}
.result-practice input{accent-color:#507936;width:18px;height:18px;flex-shrink:0}
.result-practice .topic-symbol{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#e6ecd9;font-size:24px;flex-shrink:0}
.result-practice p{font-size:14px;line-height:1.7;color:#55634c;margin:12px 0}
.result-practice .primary{width:100%;min-height:48px;font-size:16px;white-space:normal}
.result-practice :focus-visible{outline:3px solid #8861a5;outline-offset:3px}
.result-practice button:disabled{opacity:.55;cursor:default}
/* ==== hint-deck.css ==== */
.hint-deck{margin:16px 0;padding:14px;border:1px solid #b7c7a5;border-radius:18px;background:#eaf0de;box-shadow:0 3px 0 #cbd5bb;color:#294c38;min-width:0}
.hint-deck-top{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:1rem}
.hint-deck-count{font-size:.875rem;color:#536447;white-space:nowrap}
.hint-deck-track{display:flex;gap:5px;margin:10px 0}
.hint-deck-track span{flex:1;text-align:center;border:1px solid #bcccad;border-radius:5px;background:#f8faef;font-size:.875rem;color:#647459}
.hint-deck-track .is-open{background:#dce7bf;color:#365b2b;border-color:#7a9951}
#lab .hint-deck .hint-card-turn{display:flex;align-items:center;gap:12px;width:100%;min-height:90px;padding:14px;border:2px solid #d5b861;border-radius:12px;background:#295d48;color:#fff8db;box-shadow:0 4px 0 #194434;text-align:left;text-decoration:none;cursor:pointer;font:inherit}
.hint-card-turn strong{display:block;font-size:1rem;font-weight:500}.hint-card-turn small{display:block;font-size:.875rem;color:#e1edda;margin-top:3px}
.hint-card-number{display:grid;place-items:center;width:36px;height:44px;border:1px solid #d5b861;border-radius:7px;font:500 1.5rem 'Space Grotesk',sans-serif;flex-shrink:0}
.hint-card-arrow{margin-left:auto;font-size:1.5rem}
#lab .hint-deck .hint-card-turn:disabled{min-height:44px;background:#e0e8cf;border:1px solid #c1cda8;box-shadow:none;color:#526648;opacity:1;cursor:default;font-size:.875rem}
.hint-deck .hint-card-turn:focus-visible{outline:3px solid #8a63aa;outline-offset:4px}
.hint-deck .hint-card-turn:not(:disabled):active{transform:translateY(2px);box-shadow:0 2px 0 #194434}
#lab .hint-deck .hint-card-face{margin:14px 0 0;padding:16px;border:1px solid #d1bb7f;border-radius:12px;background:#fff9e6;color:#3c5139;font-size:1rem;line-height:1.85;overflow-wrap:anywhere;transform-origin:center}
#lab .hint-deck .hint-card-face:empty{display:none}
#lab .hint-deck .hint-card-face p{margin:0;font-size:inherit;color:inherit;line-height:inherit}
#lab .hint-deck .hint-card-face p+p{margin-top:12px;padding-top:12px;border-top:1px dashed #cdbf96}
#lab .hint-deck .story-hints .reasoning-hint{background:none;border:0;padding:0}
@media(max-width:400px){.hint-deck{padding:12px}.hint-deck-top{flex-wrap:wrap;gap:4px}#lab .hint-deck .hint-card-turn{padding:12px;gap:9px}}
@media(prefers-reduced-motion:reduce){.hint-card-turn{transition:none!important;transform:none!important}}
/* Cosmetic skin is separate from hint depth, item content and evidence. */
.hint-deck[data-card-skin="cloud-garden"]{--card-edge:#d5b861;--card-ink:#fff8db}
#lab .hint-deck .hint-card-turn{position:relative;display:grid;grid-template-columns:76px minmax(0,1fr) 18px;gap:12px;padding:9px;min-height:108px;overflow:hidden;border-color:var(--card-edge,#d5b861);background:linear-gradient(135deg,#254f41,#123d32);color:var(--card-ink,#fff8db)}
.hint-card-art{width:76px;height:88px;object-fit:cover;border-radius:7px;border:1px solid #d5b86170}
.hint-card-turn .hint-card-number{position:absolute;left:13px;top:13px;width:23px;height:26px;border-radius:5px;background:#173d31dd;color:#fff8db;font-size:.875rem}
.hint-card-turn .hint-card-series{font-size:.75rem;line-height:1.5;color:#e2cc8a;margin:0 0 4px}
.hint-card-turn strong{line-height:1.55}.hint-card-turn .hint-card-arrow{margin:0;font-size:1.25rem}
#lab .hint-deck .hint-card-turn:disabled{display:block;padding:10px}
@media(hover:hover){#lab .hint-deck .hint-card-turn:not(:disabled):hover{border-color:#f7da8d;box-shadow:0 4px 0 #194434,0 0 0 2px #d5b86144}}
.hint-history{margin-top:14px;border-top:1px dashed var(--frame-line,#b7c7a5);padding-top:10px;min-width:0}
.hint-history summary{cursor:pointer;font-size:.875rem;line-height:1.7;padding:7px 0;min-height:40px}
.hint-history-hand{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 12px}
#lab .hint-history-hand button{min-height:44px;min-width:60px;padding:8px 12px;border:1px solid var(--frame-line,#b7c7a5);border-radius:9px;background:#fff9e6;color:#3c5139;font:inherit;font-size:.875rem;box-shadow:0 2px 0 var(--frame-line,#b7c7a5)}
#lab .hint-history-hand button[aria-pressed=true]{background:var(--frame-start,#254f41);color:#fff8db;border-color:var(--frame-edge,#d5b861)}
#lab .hint-history-face{padding:12px;margin:0 0 9px;border:1px solid #d1bb7f;border-radius:10px;background:#fff9e6;color:#3c5139;font-size:1rem;line-height:1.85;overflow-wrap:anywhere}
.hint-history>small{font-size:.8125rem;line-height:1.7;display:block;color:var(--frame-text,#294c38)}
.hint-history :focus-visible{outline:3px solid #8a63aa;outline-offset:3px}
/* ==== learning-board.css ==== */
.learning-board{margin:12px 0 18px;padding:12px 10px;border:1px solid #c8ccad;border-radius:16px;background:#f1efd8;color:#33513c}
.learning-board>p{margin:0 0 10px;font-size:.875rem;font-weight:500}
.learning-board ol{display:grid;grid-template-columns:repeat(var(--board-stops),minmax(0,1fr));padding:0;margin:0;list-style:none;gap:6px}
.learning-board li{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;font-size:.875rem;line-height:1.5;min-width:0}
.learning-board li:not(:last-child):after{content:'';position:absolute;top:17px;left:calc(50% + 19px);width:calc(100% - 32px);border-top:2px dashed #a6b99a}
.board-marker{display:grid;place-items:center;width:36px;height:36px;border:1px solid #b5c6a3;border-radius:10px;background:#fff9e8;color:#61704e;font-size:1rem}
.learning-board [data-stop=done] .board-marker{background:#deebc9;border-color:#9fb776;color:#496b30}
.learning-board [data-stop=current] .board-marker{background:#295d48;border:2px solid #d9b765;color:#fff8db;box-shadow:0 3px 0 #b4c4a0}
.learning-board [data-stop=current]{font-weight:600}
#lab .practice-path{padding:12px;background:#efe8cd;border-color:#ccbd8f}
#lab .practice-path>span{font-size:1rem;color:#455838}
#lab .practice-path>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#lab .practice-path button{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:7px;padding:12px 5px;min-height:90px;border:1px solid #b4c69a;border-radius:12px;box-shadow:0 3px 0 #c5cda9;font-size:.875rem;line-height:1.5;white-space:normal;min-width:0}
#lab .practice-path button strong{font-weight:500}
#lab .practice-path .mission-card-symbol{display:grid;place-items:center;width:30px;height:30px;border:1px solid currentColor;border-radius:8px;font:500 1.25rem 'Space Grotesk',sans-serif}
#lab .practice-path button[aria-pressed=true]{border:2px solid #ceae53;background:#295d48;color:#fff8db;box-shadow:0 3px 0 #194434}
#lab .practice-path button:focus-visible{outline:3px solid #8a63aa;outline-offset:3px}
#lab .practice-path button{position:relative;overflow:hidden;padding:0 0 10px;justify-content:start;gap:6px;border-color:#b9c69b}
.mission-card-art{display:block;width:100%;height:66px;object-fit:cover;object-position:center 43%;border-radius:9px 9px 0 0}
#lab .practice-path .mission-card-symbol{position:absolute;top:8px;left:7px;width:26px;height:28px;border-radius:6px;background:#fff8deed;border-color:#cab56e;color:#2b5b44;box-shadow:0 1px 3px #18392b55}
#lab .practice-path button strong{padding:1px 5px;line-height:1.6}
#lab .practice-path button[data-practice-mode="reason"]{border-color:#ae9fbf}#lab .practice-path button[data-practice-mode="story"]{border-color:#d1b171}
#lab .practice-path button[aria-pressed=true]{border-color:#d7b758}
#lab .practice-path button[data-practice-mode]{grid-column:auto}
/* R60: each mission has its own readable, lightweight illustration. */
#lab .practice-path .mission-card-art{height:auto;aspect-ratio:11/7;flex-shrink:0;border-bottom:1px solid #cfceac;object-fit:contain}
#lab .practice-path button[data-practice-mode]{border-width:2px;gap:3px}
#lab .practice-path button[data-practice-mode] strong{display:flex;align-items:center;justify-content:center;flex:1;padding:3px 5px 0;overflow-wrap:anywhere}
#lab .practice-path button[data-practice-mode] small{font-size:.75rem;line-height:1.5;padding:0 4px;color:#607154}
#lab .practice-path button[aria-pressed=true] small{color:var(--frame-muted,#e2cc8a)}
.mission-card-check{position:absolute;top:6px;right:6px;width:22px;height:22px;display:grid;place-items:center;background:var(--frame-start,#254f41);color:#fff8db;border:1px solid var(--frame-edge,#d5b861);border-radius:50%;opacity:0}
[aria-pressed=true]>.mission-card-check{opacity:1}
.mission-moving{transform-box:fill-box;transform-origin:center}
@media(prefers-reduced-motion:no-preference){
 #lab .practice-path button[data-practice-mode]:is(:hover,:focus-visible) .mission-moving{animation:mission-nudge .65s ease-in-out 1}
 @keyframes mission-nudge{0%,100%{transform:translateY(0) rotate(0)}35%{transform:translateY(-3px) rotate(-3deg)}70%{transform:translateY(-1px) rotate(2deg)}}
}
@media(max-width:380px){#lab .practice-path{padding:8px}#lab .practice-path>div{gap:5px}#lab .practice-path button[data-practice-mode] small{font-size:.6875rem}}
#lab .practice-path>div{grid-template-columns:repeat(auto-fit,minmax(min(100%,4.8rem),1fr))}
#lab .practice-path>span{flex-wrap:wrap}
/* Fold the chooser without removing the learner's work or selected mission. */
#lab .practice-path>.mission-picker-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px}
.mission-picker-head>span{min-width:0;overflow-wrap:anywhere}
#lab .practice-path [data-mission-current]{display:block;padding:0;font-size:1rem;color:var(--frame-text,#294c38)}
#lab .practice-path [data-mission-current][hidden],#lab .practice-path>div[hidden],#lab .practice-path>.mission-picker-tools[hidden]{display:none!important}
#lab .practice-path [data-mission-fold]{display:inline-flex;flex:none;align-items:center;justify-content:center;min-height:44px;padding:7px 10px;border:1px solid var(--frame-line,#b7c7a5);border-radius:9px;box-shadow:none;background:#fff9e6;color:var(--frame-text,#294c38);font-size:.8125rem;white-space:normal;max-width:100%}
#lab .practice-path>.mission-picker-tools{display:flex;justify-content:flex-end;margin:10px 0 0}
#lab .practice-path[data-collapsed=true]{padding:8px 10px;margin-bottom:12px;background:var(--frame-paper,#eaf0de)}
#lab .practice-path[data-collapsed=true]>.mission-picker-head{margin:0}
#lab .practice-path[data-collapsed=true] [data-mission-title]{font-size:.75rem;line-height:1.4}
@media(prefers-reduced-motion:reduce){#lab .practice-path [data-mission-fold]{transition:none}}
#lab .practice-path button[data-practice-mode] [data-mission-progress]{display:block;align-self:center;margin:4px 4px 0;padding:3px 6px;border:1px solid #c6cfb4;border-radius:7px;background:#edf0e4;color:#516247;font-size:.6875rem;line-height:1.6;max-width:calc(100% - 8px);overflow-wrap:anywhere}
#lab .practice-path button[data-practice-mode] [data-work-status=started]{background:#fff1c9;color:#765020;border-color:#dfc38d}
#lab .practice-path button[data-practice-mode] [data-work-status=done]{background:#dcebd7;color:#2e593b;border-color:#a2c299}
#lab .practice-path>.mission-picker-tools{justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap}
.mission-picker-tools>small{font-size:.75rem;line-height:1.6;color:#58694c}
.practice-change{width:min(460px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:24px;border:2px solid var(--frame-line,#b7c7a5);border-radius:20px;background:#fff8e7;color:#304d37;box-shadow:0 14px 40px #142b3540}
.practice-change::backdrop{background:#173a3299;backdrop-filter:blur(3px)}
.practice-change h2{font-size:1.5rem;line-height:1.5;margin:8px 0 12px;font-weight:500}
.practice-change>p{font-size:1rem;line-height:1.8;margin:0 0 16px;overflow-wrap:anywhere}
.practice-change>p.overline{font-size:.8125rem;margin:0;color:#667756}
.practice-change>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));gap:10px}
.practice-change button{min-height:48px;font:inherit;white-space:normal;padding:10px 12px;border-radius:10px}
.practice-change :focus-visible{outline:3px solid #8a63aa;outline-offset:3px}
.practice-change{max-width:calc(100vw - 24px)}
/* ==== card-customizer.css ==== */
:root,[data-card-frame=garden]{--frame-start:#254f41;--frame-end:#123d32;--frame-edge:#d5b861;--frame-muted:#e2cc8a;--frame-paper:#eaf0de;--frame-line:#b7c7a5;--frame-text:#294c38;--frame-shade:#194434}
[data-card-frame=night]{--frame-start:#353967;--frame-end:#172a4a;--frame-edge:#c8b9f1;--frame-muted:#ddd3fa;--frame-paper:#eeedf7;--frame-line:#c0bad8;--frame-text:#383d65;--frame-shade:#19233c}
[data-card-frame=sunrise]{--frame-start:#854530;--frame-end:#592f2b;--frame-edge:#f3c77c;--frame-muted:#ffdfb5;--frame-paper:#faeddf;--frame-line:#d8ba98;--frame-text:#673d2d;--frame-shade:#472722}
#lab .hint-deck{background:var(--frame-paper);border-color:var(--frame-line);color:var(--frame-text);box-shadow:0 3px 0 var(--frame-line)}
#lab .hint-deck .hint-card-turn:not(:disabled){background:linear-gradient(135deg,var(--frame-start),var(--frame-end));border-color:var(--frame-edge);box-shadow:0 4px 0 var(--frame-shade)}
#lab .hint-deck .hint-card-series{color:var(--frame-muted)}
#lab .hint-deck .hint-card-number{background:var(--frame-end);border-color:var(--frame-edge)}
#lab .practice-path button[aria-pressed=true]{background:linear-gradient(135deg,var(--frame-start),var(--frame-end));border-color:var(--frame-edge);box-shadow:0 3px 0 var(--frame-shade)}
.card-customize{padding:6px 8px;min-height:36px;border:1px solid currentColor;border-radius:9px;background:transparent;font:inherit;font-size:.875rem;color:var(--frame-text,#294c38);cursor:pointer;white-space:nowrap}
.hint-deck-top{gap:7px;flex-wrap:wrap}.hint-deck-top .card-customize{margin-left:auto}.hint-deck-count{font-size:.8125rem}
.practice-path>span:has(.card-customize){display:flex!important;align-items:center;justify-content:space-between;gap:8px}
.card-customizer{width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:26px;border:2px solid #738c62;border-radius:22px;background:#fff8e7;color:#304d37;box-shadow:0 14px 40px #142b3540}
.card-customizer::backdrop{background:#173a32a6;backdrop-filter:blur(3px)}
.card-customizer .corner{position:absolute;top:10px;right:10px}.card-customizer-eyebrow{font-size:.8125rem;margin:0 48px 8px 0;color:#617151}
.card-customizer h2{font-size:1.65rem;font-weight:500;margin:0 32px 10px 0;line-height:1.4}
.card-customizer>p:not(.card-customizer-eyebrow){font-size:1rem;line-height:1.7;margin:0 0 16px}
.card-frame-preview{display:flex;align-items:center;gap:18px;padding:12px;border:2px solid var(--frame-edge);border-radius:14px;background:linear-gradient(130deg,var(--frame-start),var(--frame-end));color:#fff8db;box-shadow:0 4px 0 var(--frame-shade);margin:8px 0 24px}
.card-frame-preview img{width:116px;height:116px;object-fit:cover;border-radius:8px;flex-shrink:0}.card-frame-preview strong{display:block;font-size:1.4rem;line-height:1.5;font-weight:500;margin:5px 0}.card-frame-preview small,.card-frame-preview [data-frame-name]{color:var(--frame-muted);font-size:.875rem}
.card-customizer fieldset{border:0;padding:0;margin:0;min-width:0}.card-customizer legend{font-size:1rem;margin-bottom:10px}
.card-frame-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.card-frame-options label{position:relative;display:flex;align-items:center;flex-direction:column;gap:6px;padding:10px 6px;border:1px solid #c9cfb9;border-radius:12px;background:#fffdf2;cursor:pointer;text-align:center;min-width:0}
.card-frame-options input{align-self:flex-start;accent-color:#345d44;width:18px;height:18px}.card-frame-options strong{font-size:.9375rem;font-weight:500}.card-frame-options small{font-size:.75rem;line-height:1.5;color:#596649}
.card-frame-options label:has(:checked){outline:2px solid #50793a;outline-offset:1px;background:#edf2df}
.card-frame-swatch{width:100%;height:30px;background:linear-gradient(135deg,var(--frame-start),var(--frame-end));border:2px solid var(--frame-edge);border-radius:6px}
.card-frame-notice{font-size:.875rem;line-height:1.7;color:#526148;min-height:24px;margin:16px 0}
.card-frame-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.card-frame-actions button{width:100%;margin:0;min-height:48px;font:inherit;font-size:1rem;white-space:normal}
.card-customizer :focus-visible,.card-customize:focus-visible{outline:3px solid #8c65a8;outline-offset:3px}
@media(max-width:400px){.card-customizer{padding:20px 16px}.card-frame-preview{gap:12px}.card-frame-preview img{width:80px;height:100px}.card-frame-preview strong{font-size:1.2rem}.card-frame-options small{display:none}}
@media(prefers-reduced-motion:no-preference){.card-frame-preview{transition:box-shadow .18s ease,border-color .18s ease}.card-customizer[open]{animation:frame-enter .18s ease-out}@keyframes frame-enter{from{opacity:.3;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}}
#lab .practice-path .card-customize{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:6px 8px;border:1px solid #627c51;border-radius:9px;box-shadow:none;background:transparent;color:#38523c;font-size:.875rem;flex-shrink:0;grid-column:auto}
/* Reflow instead of shrinking the type when the learner enlarges text. */
.card-customizer{max-width:calc(100vw - 24px)}
.card-frame-preview{flex-wrap:wrap}.card-frame-preview>div{flex:1 1 110px;min-width:0;overflow-wrap:anywhere}
.card-frame-options{grid-template-columns:repeat(auto-fit,minmax(min(100%,4.6rem),1fr))}
.card-frame-options strong{max-width:100%;overflow-wrap:anywhere}
.card-frame-actions{grid-template-columns:repeat(auto-fit,minmax(min(100%,7rem),1fr))}
.card-frame-actions button{min-width:0;overflow-wrap:anywhere}
/* ==== ratio.css ==== */
#ratioLab{width:min(760px,calc(100vw - 20px));max-width:calc(100vw - 20px);max-height:94dvh;padding:0;border:1px solid #bdcfb9;border-radius:26px;color:#264f42;background:#f5f3e8}#ratioLab::backdrop{background:#122f38aa;backdrop-filter:blur(4px)}#ratioLab *{box-sizing:border-box}#ratioLab [hidden]{display:none!important}.ratio-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 24px;background:#e5eddc}.ratio-header h2{font-size:1.3rem;margin:3px 0}.ratio-header small{color:#476853}#ratioLab button{font:inherit;cursor:pointer;min-height:44px;border:1px solid #b6c5ac;border-radius:12px;padding:10px 14px;background:#fffdf6;color:#285942;font-weight:650}#ratioLab button:disabled{opacity:.5;cursor:default}#ratioLab button:focus-visible,#ratioLab input:focus-visible,#ratioLab summary:focus-visible{outline:3px solid #3277ad;outline-offset:3px}.ratio-body{padding:16px 24px}.ratio-save,.ratio-note{font-size:.8rem;line-height:1.6;color:#5c6d60}.ratio-menu{background:#e8eedf;border-radius:14px;padding:12px 16px}.ratio-menu summary{cursor:pointer;min-height:32px;font-weight:700}.ratio-menu summary span{float:right;font-weight:400;font-size:.8rem}.ratio-menu nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.ratio-menu p,.ratio-records p{font-size:.8rem}.ratio-steps{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}#ratioLab [aria-pressed=true]{background:#315e46;color:white;border-color:#315e46}.ratio-steps button{flex:1;font-size:.8rem!important;min-width:100px}.ratio-table{padding:22px;border:1px solid #d8ccb4;border-radius:22px;background:#fffdf7;box-shadow:0 6px 0 #e3d6ba}.ratio-table-heading{display:flex;align-items:center;gap:12px}.ratio-emblem{display:grid;place-items:center;width:48px;height:48px;border-radius:16px;background:#e0eddf;color:#458269;font-size:1.8rem}.ratio-table h3{font-size:1.3rem;margin:5px 0}.ratio-table small{font-size:.8rem;color:#697761}.ratio-prompt{font-size:1.08rem;line-height:1.75;margin:15px 0}.ratio-visual{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ratio-ingredient{background:#fbefd9;border:1px solid #ebcea0;border-radius:14px;padding:14px}.ratio-ingredient:nth-child(2){background:#e3f1ef;border-color:#bad9d0}.ratio-ingredient span{display:block;font-size:.8rem}.ratio-ingredient strong{font-size:1.7rem}.ratio-tokens{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.ratio-tokens i{height:12px;width:12px;display:block;background:#ca8737;border-radius:50%}.ratio-ingredient:nth-child(2) i{background:#3d8f83}.ratio-inputs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ratio-inputs label{font-size:.85rem}.ratio-inputs input{display:block;width:100%;min-width:0;padding:12px;font:inherit;font-size:1.2rem;text-align:center;border:2px solid #b4c8b2;border-radius:12px;background:white;color:#264f42;margin-top:5px}.ratio-primary{width:100%;background:#386c4d!important;color:white!important;box-shadow:0 3px 0 #254e38}.ratio-feedback{background:#edf1e3;padding:12px 15px;border-radius:12px;line-height:1.65;font-size:.93rem}.ratio-hint{background:#fcf0ca!important;border-color:#cba753!important;box-shadow:0 3px 0 #ddc285}.ratio-hints{padding-left:24px;font-size:.9rem;line-height:1.7}.ratio-hints li{padding:8px}.ratio-finish{padding:16px;background:#e6efdc;border-radius:16px;animation:ratio-arrive .3s ease}.ratio-finish h4{margin:0}.ratio-finish button{display:block;margin-top:12px}.ratio-records{padding:12px;background:#ececdf;border-radius:12px}.ratio-records button{margin:4px}#ratioLab summary{cursor:pointer}#ratioLab p,#ratioLab h3,#ratioLab button,#ratioLab label{overflow-wrap:anywhere}@keyframes ratio-arrive{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@media(max-width:500px){.ratio-body{padding:12px}.ratio-header{padding:12px 16px}.ratio-table{padding:14px}.ratio-table h3{font-size:1.1rem}.ratio-menu nav{grid-template-columns:1fr}.ratio-prompt{font-size:1rem}.ratio-menu summary span{float:none;display:block}.ratio-inputs{gap:8px}.ratio-steps{gap:5px}.ratio-steps button{min-width:78px;padding:8px!important}.ratio-visual{gap:8px}.ratio-ingredient{padding:10px}}@media(prefers-reduced-motion:reduce){.ratio-finish{animation:none}}
.ratio-import{margin-top:16px;border-top:1px solid #c6cbb6;padding-top:14px}.ratio-import label{display:block;font-weight:650}.ratio-import input{display:block;max-width:100%;margin-top:8px;font:inherit;font-size:.8rem}[data-ratio-import-preview]{padding:12px;border:2px solid #bc9c58;border-radius:12px;background:#fff7dd}

#ratioWorkbench{width:min(1120px,98vw);height:94dvh;max-height:96dvh;padding:0;border:1px solid #a5baa0;border-radius:20px;background:#f6f4e9;color:#264a38;overflow:hidden}#ratioWorkbench::backdrop{background:#13291ecc}#ratioWorkbench>header{height:64px;padding:8px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}#ratioWorkbench h2{font-size:18px;margin:0}#ratioWorkbench button{font:inherit;min-height:44px;border:1px solid #a5baa0;background:#fffdf5;color:#264a38;border-radius:12px;padding:6px 12px}#ratioWorkbench iframe{width:100%;height:calc(100% - 64px);border:0;display:block}#ratioWorkbench button:focus-visible{outline:3px solid #a56718;outline-offset:2px}[data-workbench-open]{min-height:48px;border-radius:14px;background:#e5eed9;color:#264a38;border:1px solid #99b08c;padding:10px 14px;font:inherit;font-weight:700}@media(max-width:480px){#ratioWorkbench{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0}#ratioWorkbench>header{padding:8px}#ratioWorkbench h2{font-size:16px}#ratioWorkbench button{font-size:14px}}

#lightKitchen{width:min(1120px,98vw);height:94dvh;max-height:96dvh;padding:0;border:1px solid #a5baa0;border-radius:20px;background:#f6f4e9;color:#264a38;overflow:hidden}#lightKitchen::backdrop{background:#13291ecc}#lightKitchen>header{height:64px;padding:8px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}#lightKitchen h2{font-size:18px;margin:0}#lightKitchen button{font:inherit;min-height:44px;border:1px solid #a5baa0;background:#fffdf5;color:#264a38;border-radius:12px;padding:6px 12px}#lightKitchen iframe{width:100%;height:calc(100% - 64px);border:0;display:block}#lightKitchen button:focus-visible{outline:3px solid #a56718;outline-offset:2px}[data-workbench-open]{min-height:48px;border-radius:14px;background:#e5eed9;color:#264a38;border:1px solid #99b08c;padding:10px 14px;font:inherit;font-weight:700}@media(max-width:480px){#lightKitchen{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0}#lightKitchen>header{padding:8px}#lightKitchen h2{font-size:16px}#lightKitchen button{font-size:14px}}
/* ==== percent.css ==== */
#percentLab *{box-sizing:border-box}#percentLab{font-size:17px}#percentLab{margin:0;background:#edf3e8;color:#294b40;font:1rem/1.65 system-ui,sans-serif}#percentLab .percent-body{max-width:820px;margin:auto;padding:28px 18px}#percentLab h1{margin:8px 0;font-size:2rem}#percentLab h1 span{display:inline-block;background:#e2ac4e;color:#fffbe9;border-radius:18px;padding:0 16px;transform:rotate(7deg)}#percentLab h2,#percentLab h3{margin:8px 0}#percentLab .tag,#percentLab .small,#percentLab .scope,#percentLab .pfooter{font-size:.85rem}#percentLab .scope{background:#fff4d3;border-radius:12px;padding:12px}#percentLab nav{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}#percentLab button{font:inherit;min-height:44px;border:1px solid #c4ceb9;border-radius:13px;background:#fffdf5;color:#294b40;padding:10px 14px;cursor:pointer}#percentLab button[aria-pressed=true],#percentLab .primary{background:#32674c;color:white}#percentLab button:disabled{opacity:.55;cursor:default}#percentLab .card{background:#fffcf3;border:1px solid #ded1b5;border-radius:26px;padding:24px;box-shadow:0 7px 0 #d6d9c1}#percentLab fieldset{border:0;padding:0;margin:16px 0}#percentLab legend{font-weight:700}#percentLab #pct-roles{display:grid;gap:8px;margin-top:8px}#percentLab .role{display:flex;gap:10px;padding:10px;border:1px solid #d8dac8;border-radius:12px;align-items:center;cursor:pointer}#percentLab .role input{width:22px;height:22px;flex-shrink:0}#percentLab #pct-inputs{display:flex;flex-wrap:wrap;gap:12px}#percentLab #pct-inputs label{flex:1;min-width:120px}#percentLab #pct-inputs input{display:block;width:100%;min-width:0;font:inherit;border:2px solid #a6bfa7;border-radius:12px;padding:10px}#percentLab form .primary{margin-top:16px;width:100%}#percentLab #pct-feedback{padding:12px;background:#e8efdc;border-radius:12px;min-height:48px}#percentLab .tools{display:flex;gap:8px;flex-wrap:wrap}#percentLab #pct-hint{background:#f7e5b5}#percentLab #pct-hints li{margin:8px 0}#percentLab #pct-experiment{background:#e7f1ec;border-radius:18px;padding:16px;margin-top:16px}#percentLab .slider{display:flex;align-items:center;flex-wrap:wrap;gap:8px}#percentLab .slider input{min-width:0;flex:1;height:44px;accent-color:#317151}#percentLab #pct-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:3px;max-width:340px;margin:14px auto}#percentLab #pct-grid i{aspect-ratio:1;border-radius:4px;background:#f7f8ef;border:1px solid #bbcdbb;transition:background .12s}#percentLab #pct-grid i.filled{background:#dc9d40;border-color:#b07d2e}#percentLab #pct-done{background:#ebf0d7;padding:16px;border-radius:16px;margin-top:16px}#percentLab .pfooter{margin-top:22px}#percentLab button:focus-visible,#percentLab input:focus-visible{outline:3px solid #2579a0;outline-offset:3px}#percentLab [hidden]{display:none!important}#percentLab p,#percentLab label,#percentLab button{overflow-wrap:anywhere}@media(max-width:400px){#percentLab .percent-body{padding:16px 10px}#percentLab .card{padding:16px}#percentLab h1{font-size:1.65rem}#percentLab nav button{font-size:.85rem;flex:1 1 40%}}@media(prefers-reduced-motion:reduce){#percentLab *{transition:none!important}}

#percentLab{padding:0;width:min(800px,calc(100vw - 20px));max-width:calc(100vw - 20px);max-height:94dvh;border:1px solid #c5ceb6;border-radius:24px}#percentLab::backdrop{background:#153b3bab;backdrop-filter:blur(4px)}#percentLab .percent-body{position:relative}#percentLab header{position:static;display:block;background:none;border:0;padding:0;box-shadow:none;height:auto}#percentLab #pct-close{float:right;margin-left:8px}#percentLab .percent-records{padding:14px;background:#e3eadb;border-radius:16px;margin-top:16px;font-size:.85rem}#percentLab .percent-import{padding-top:16px}#percentLab .percent-import input{display:block;max-width:100%;font:inherit;font-size:.8rem}#percentLab [data-percent-import-preview]{padding:12px;background:#fff5d5;border:1px solid #beae80;border-radius:14px}#percentLab summary{cursor:pointer;min-height:44px}#percentLab #pct-save{font-size:.8rem;margin-top:0;color:#496d51}#percentLab .percent-records button{margin:5px 0}
#percentLab{margin:auto;font-size:1rem}#percentLab .pfooter{display:block;margin-top:22px;font-size:.85rem}
/* ==== practice-passport.css ==== */
#practicePassport{box-sizing:border-box;width:min(820px,calc(100vw - 20px));max-height:94dvh;margin:auto;padding:24px;border:2px solid #a5bfaa;border-radius:24px;background:#faf8ef;color:#233c32;overflow:auto;font-family:inherit;box-shadow:0 24px 90px #16392e44}
#practicePassport::backdrop{background:#18352b88;backdrop-filter:blur(5px)}
#practicePassport header{position:static;height:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0;background:none;border:0}
#practicePassport h2{font-size:clamp(23px,5vw,30px);margin:3px 0}#practicePassport h3{font-size:21px;margin:0}#practicePassport p{line-height:1.65}#practicePassport small{color:#536a60}
#practicePassport button{min-height:44px;font:inherit;font-weight:700;cursor:pointer;border:1px solid #87a390;border-radius:12px;background:#fffdf4;color:#254e3a;padding:10px 15px;overflow-wrap:anywhere}
#practicePassport button:focus-visible,#practicePassport summary:focus-visible{outline:3px solid #b97013;outline-offset:3px}
#practicePassport [data-passport-close]{min-width:44px;font-size:24px;padding:2px}.passport-slot{font-size:13px;margin:8px 0;color:#50695c}
.passport-rooms{display:grid;grid-template-columns:1fr 1fr;gap:16px}.passport-room{min-width:0;padding:19px;border:1px solid #c6d3be;border-radius:20px;background:#fffdf7;box-shadow:0 5px 0 #dce5d4;display:flex;flex-direction:column}.passport-room-heading{display:flex;gap:13px;align-items:center}.passport-icon{display:grid;place-items:center;width:56px;height:62px;flex-shrink:0;background:linear-gradient(135deg,#d9ebc9,#f8dea7);border:2px solid #fff;border-radius:14px;box-shadow:0 3px 0 #acb999;transform:rotate(-5deg);font-size:34px;font-weight:800;color:#2e7550}.passport-room:nth-child(2) .passport-icon{transform:rotate(5deg);background:linear-gradient(135deg,#fce2ab,#f0bc92)}
#practicePassport .passport-count{font-size:14px;margin:18px 0 8px;font-weight:700}.passport-room progress{width:100%;height:10px;accent-color:#47815b;border:0;border-radius:10px;overflow:hidden;background:#e3e9df}.passport-room progress::-webkit-progress-bar{background:#e3e9df}.passport-room progress::-webkit-progress-value{background:#47815b;border-radius:10px}
.passport-track{display:flex;flex-wrap:wrap;gap:6px;padding:0;margin:14px 0;list-style:none}.passport-track li{display:grid;place-items:center;box-sizing:border-box;width:29px;height:29px;border:1px solid #acb8af;border-radius:50%;font-size:12px;background:#fff;color:#59695e}.passport-track li[data-state=complete]{background:#36754e;color:white;border-color:#36754e}.passport-track li[data-state=complete]::before{content:'✓';font-size:8px;position:absolute;transform:translate(10px,-12px);color:#225d37;background:#fff;border-radius:50%}.passport-track li[data-state=in_progress]{background:#ffe1a6;color:#674210;border:2px dashed #ad6d1f}
#practicePassport .passport-next{font-weight:700;font-size:15px}.passport-room details{font-size:13px;margin:auto 0 16px;padding-top:4px}.passport-room summary,.passport-storage summary{cursor:pointer;min-height:32px;padding:6px 0}.passport-room details p{margin:8px 0}#practicePassport .passport-room [data-passport-go]{background:#326f4e;color:#fff;border-color:#326f4e;width:100%}
#practicePassport .passport-legend{font-size:12px;color:#596e61;margin-top:22px}.passport-note{padding:12px 15px;background:#e9efdf;border-radius:12px;font-size:14px}.passport-storage{font-size:13px;margin-bottom:16px}.passport-storage p{margin:8px 0}[data-passport-status]{font-size:13px;margin-bottom:0}.passport-home-entry{font-size:14px!important;border:1px solid #b6c9b9!important;padding:10px 12px!important;border-radius:12px;margin-top:8px}
@media(max-width:580px){#practicePassport{padding:17px;border-radius:18px}.passport-rooms{grid-template-columns:1fr}.passport-room{padding:17px}.passport-icon{width:48px;height:53px;font-size:29px}.passport-track{gap:5px}.passport-track li{width:27px;height:27px}}

#practicePassport .passport-backup{border:1px solid #bacab6;border-radius:15px;padding:14px;margin:18px 0;background:#fffdf5;font-size:14px}#practicePassport .passport-backup>summary{font-weight:700;cursor:pointer;min-height:32px}.bundle-file{display:block;margin:16px 0 8px;font-weight:700}.bundle-file input{display:block;width:100%;max-width:100%;box-sizing:border-box;font:inherit;margin-top:8px;padding:10px 0}.bundle-room{padding:12px;border:1px solid #d5ddce;border-radius:12px;margin:12px 0}.bundle-room h4{font-size:17px;margin:0}.bundle-room p{white-space:pre-line;font-size:13px}.bundle-room button{width:100%}#practicePassport button:disabled{opacity:.65;cursor:default}#practicePassport [data-bundle-preview][hidden]{display:none}#practicePassport [data-bundle-status]{font-size:13px}
/* ==== teacher-ratio.css ==== */
.teacher-ratio{color:#294c3b;line-height:1.65}.teacher-ratio .teacher-section-heading{flex-wrap:wrap;gap:12px}.teacher-ratio h3{margin:0;font-size:22px}.teacher-ratio h4{margin:0;font-size:20px}.teacher-ratio p{font-size:14px}.teacher-ratio-scope{font-weight:700;background:#eaf1e3;padding:12px;border-radius:12px}.teacher-ratio-rooms{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:18px 0}.teacher-ratio-room{min-width:0;padding:18px;background:#fffdf6;border:1px solid #c3d1bb;border-radius:18px}.teacher-ratio .teacher-ratio-count{font-size:23px;font-weight:700;margin:12px 0 8px}.teacher-ratio progress{width:100%;height:10px;accent-color:#44815a}.teacher-ratio-help{background:#edf1e7;border-radius:10px;padding:12px}.teacher-ratio summary{cursor:pointer;min-height:44px;padding:10px 0;box-sizing:border-box;font-weight:700}.teacher-ratio-items{list-style:none;margin:0;padding:0}.teacher-ratio-items li{padding:12px 0;border-top:1px solid #d9dfd2}.teacher-ratio-items p{margin:8px 0}.teacher-ratio-items small{font-size:12px;color:#536454}.teacher-ratio-items strong{font-size:14px}.teacher-ratio-items [data-state=complete]{color:#267042}.teacher-ratio-items [data-state=in_progress]{color:#89520f}.teacher-ratio-conversation{border-left:3px solid #d5ad5d;padding-left:12px;margin-top:18px}.teacher-ratio-unknown{font-weight:700}.teacher-ratio-boundary{font-size:14px}.teacher-ratio button{font:inherit;font-size:14px;min-height:44px;border:1px solid #9caf98;border-radius:10px;background:#fffdf4;color:#2b583d;padding:10px 14px;cursor:pointer}.teacher-ratio button:focus-visible,.teacher-ratio summary:focus-visible{outline:3px solid #a16c13;outline-offset:3px}.teacher-toolbar select:disabled{opacity:.65}.teacher-ratio [role=status]{font-size:13px}@media(max-width:680px){.teacher-ratio-rooms{grid-template-columns:1fr}.teacher-ratio-room{padding:15px}.teacher-ratio h3{font-size:20px}}

.teacher-kitchen-tag{display:inline-block;font-size:14px;font-weight:700;border-radius:20px;padding:4px 10px;background:#f6e6b9;color:#725519;margin-bottom:10px}.teacher-kitchen-completion{border-left:4px solid #48845c;padding:8px 12px;background:#edf3e5;border-radius:0 10px 10px 0}.teacher-kitchen-stages{list-style:none;padding:0;margin:0}.teacher-kitchen-stages li{padding:12px 0;border-top:1px solid #d9dfd2}.teacher-kitchen-stages strong{font-size:16px}.teacher-kitchen-stages p{margin:6px 0;overflow-wrap:anywhere}.teacher-kitchen-state{font-weight:700}.teacher-kitchen-support{color:#435c47}.teacher-kitchen-solution{border-left:3px solid #d5ad5d;padding-left:10px}.teacher-kitchen summary{overflow-wrap:anywhere}.teacher-kitchen [role=status]{min-height:1.5em}

.teacher-ratio-rooms{align-items:start}
.teacher-lens{grid-column:1/-1}.teacher-lens-rows{list-style:none;padding:0;margin:0}.teacher-lens-rows>li{border-top:1px solid #d5dccd;padding:18px 0}.teacher-lens h5{font-size:1.05rem;line-height:1.6;margin:0 0 8px}.teacher-lens-state{font-weight:700}.teacher-lens-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.teacher-lens-help{min-width:0;padding:14px;border-radius:12px;background:#eef3e9;border:1px solid #cedcc4}.teacher-lens-help+section{background:#faf0d8;border-color:#e1cf9e}.teacher-lens h6{font-size:1rem;margin:0 0 10px;line-height:1.6}.teacher-lens ul{margin:0;padding-left:22px;font-size:.9rem}.teacher-lens .teacher-lens-fine{font-size:.875rem}.teacher-lens p,.teacher-lens summary{overflow-wrap:anywhere}@media(max-width:680px){.teacher-lens-pair{grid-template-columns:1fr}.teacher-lens-help{padding:12px}}
/* ==== ratio-experience.css ==== */
/* Shared painted-toy language for the ratio island; all art is decorative. */
.ratio-art{display:block;width:100%;height:auto;overflow:visible}.ratio-home-art{height:150px;display:grid;place-items:center;background:radial-gradient(ellipse,#e1ead4,transparent 70%);margin:12px 0}.ratio-home-art svg{width:210px}.ratio-home-card .card-start{font-size:14px}.ratio-home-card .card-start:first-of-type{background:#356a50;color:#fff9e8;border-radius:13px;padding:12px;margin:10px 0}.ratio-home-card .passport-home-entry{background:#eee9d8}
.ratio-art-spark{transform-origin:80px 20px}.ratio-destination:hover .ratio-art,.ratio-destination:focus-visible .ratio-art,.ratio-home-card:hover .ratio-art{animation:ratio-toy-lift .45s ease both}.mix-welcome{display:flex;align-items:center;gap:12px;margin:0 0 16px;padding:8px 14px 8px 2px;background:#e8efde;border:1px solid #cad6bb;border-radius:20px}.mix-welcome .ratio-art{width:90px;flex:none}.mix-welcome p{margin:0;font-size:14px;line-height:1.6}.mix-welcome strong,.mix-welcome span{display:block}.mix-welcome strong{font-size:12px;color:#52715b;margin-bottom:4px}
#islandDialog.ratio-island{background:radial-gradient(ellipse at 100% 0,#e6efda,transparent 65%),#faf7eb}.ratio-island .future-host{opacity:1}.ratio-island .attraction-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.ratio-island .ratio-destination{padding:12px 16px 18px;text-align:left;border:1px solid #bdcbae;background:#fffdf2;box-shadow:0 5px 0 #d9ddc5;border-radius:21px;min-width:0}.ratio-destination .ratio-art{height:108px;margin:0 auto 8px}.ratio-destination:nth-child(2){background:#fff5df}.ratio-destination:nth-child(3){background:#edf2e3}.ratio-destination strong,.ratio-destination span,.ratio-destination em{display:block}.ratio-destination em{color:#677a60;font-size:12px;font-style:normal}.ratio-destination strong{font-size:20px;margin:5px 0}.ratio-destination span{font-size:14px;line-height:1.6}.ratio-scenic{grid-column:1/-1;margin-top:12px;border-top:1px dashed #b6c5a9;padding:14px 2px}.ratio-scenic summary{cursor:pointer;min-height:44px;align-content:center;color:#526b55}.ratio-scenic>div{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ratio-island .district-return{grid-column:1/-1;background:transparent;color:#4f6b53;border:1px solid #bdc9b0;box-shadow:none}
#ratioLab,#percentLab{font-family:'IBM Plex Sans Thai',sans-serif;width:min(900px,calc(100vw - 24px));border:1px solid #a9bca0;box-shadow:0 20px 70px #163e3540;background:radial-gradient(ellipse at 10% 0,#edf1dc,transparent 60%),#f8f5e9}#ratioLab .ratio-header{position:sticky;top:0;z-index:3;background:#e8eddc;border-bottom:1px solid #cbd4bd;padding:12px 22px}#ratioLab .ratio-header h2{font-size:22px}.ratio-body{padding:18px 24px}.ratio-save{margin:5px 0 12px}.ratio-side-trip{margin:12px 0;padding:10px 14px;background:#f2ecd9;border:1px solid #d7cba9;border-radius:12px}.ratio-side-trip summary{min-height:32px;align-content:center;cursor:pointer;font-size:14px}.ratio-side-trip button{margin-top:8px}.ratio-menu{border:1px solid #c6d3ba;background:#eaf0df}.ratio-steps button{box-shadow:0 3px 0 #c6cfb8}.ratio-table{box-shadow:0 6px 0 #d6c19a,inset 0 0 0 5px #faf5e6;border:1px solid #c8b48e;padding:24px}.ratio-emblem{box-shadow:0 3px 0 #bacbb0;border:2px solid #fffdf5;transform:rotate(-6deg)}.ratio-visual{background:linear-gradient(#f5f4e6 88%,#d7bc90 88%);border-radius:20px;padding:16px 14px 20px;border:1px solid #ded7bf}.ratio-ingredient{background:linear-gradient(115deg,#fff8e9,#f5dfa8);border:2px solid #d2b477;border-radius:12px 12px 24px 24px;box-shadow:inset 5px 0 0 #ffffff99,0 5px 0 #c4af8770;position:relative}.ratio-ingredient:nth-child(2){background:linear-gradient(115deg,#f5faf1,#cce4d6);border-color:#98b7a7}.ratio-ingredient span{font-size:14px}.ratio-ingredient strong{font-size:32px}.ratio-tokens{gap:6px}.ratio-tokens i{height:15px;width:15px;box-shadow:inset 2px 2px 0 #ffffff70,0 2px 0 #90672d55}.ratio-inputs{margin-top:16px}.ratio-hint,#percentLab #pct-hint{border:2px solid #c4a363!important;background:linear-gradient(135deg,#fff8e5,#f0ddb3)!important;color:#5a4727;box-shadow:0 4px 0 #cdb47e;min-height:50px;transform:rotate(-1deg)}.ratio-hints,#percentLab #pct-hints{list-style:none;padding:0;counter-reset:hint}.ratio-hints li,#percentLab #pct-hints li{counter-increment:hint;background:#fff7e5;border:1px solid #d5bd89;border-radius:13px;margin:12px 0;padding:14px 16px;box-shadow:0 3px 0 #e4d4b3;animation:ratio-card-reveal .25s ease-out}.ratio-hints li:before,#percentLab #pct-hints li:before{content:'✦ ' counter(hint);display:block;font-size:12px;color:#83612e;margin-bottom:6px}
#percentLab .percent-body{padding:18px 24px;max-width:none}#percentLab header h1{font-size:26px;margin:4px 0}#percentLab header>p{margin:4px 0 12px;font-size:14px}#percentLab .scope{margin:10px 0;padding:8px 12px}#percentLab .percent-menu{background:#e8efdd;border:1px solid #c7d4b8;border-radius:14px;padding:4px 14px;margin:14px 0}#percentLab .percent-menu summary{font-size:14px;font-weight:600;padding:8px 0;align-content:center}#percentLab #pct-missions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:8px 0}#percentLab #pct-missions button{text-align:left;font-size:14px}#percentLab #pct-close{position:sticky;top:8px;z-index:3;background:#eef2df;border-radius:50%;width:44px;height:44px;padding:0;font-size:24px}#percentLab .card{border:1px solid #c8b48e;box-shadow:0 6px 0 #d6c19a,inset 0 0 0 5px #faf5e6}#percentLab #pct-step{display:inline-block;border-radius:20px;background:#e6edd9;padding:4px 12px;font-size:12px;margin:0 0 8px}#percentLab #pct-title{font-size:23px}#percentLab #pct-prompt{font-size:17px;line-height:1.8}#percentLab .role:has(input:checked){background:#e3edda;border-color:#5d8a68;box-shadow:inset 3px 0 #52845f}#percentLab #pct-experiment{border:1px solid #b7c9ad;box-shadow:0 4px 0 #c9d6bc}#percentLab #pct-grid{background:#c1b391;padding:10px;border-radius:15px;box-shadow:0 5px 0 #a79878}#percentLab #pct-grid i{box-shadow:inset 1px 1px #fff9,0 1px 0 #7e927655}#percentLab #pct-grid i.filled{background:#dba952;border-color:#ad843e}
#practicePassport{background:radial-gradient(ellipse at top right,#e4edda,transparent 65%),#faf7eb}#practicePassport .passport-icon{width:80px;height:65px;background:none;border:0;box-shadow:none;transform:none}#practicePassport .passport-extra-art{height:88px;background:radial-gradient(ellipse,#eaf0dd,transparent 75%);margin:-4px 0 10px}.passport-extra-art .ratio-art{height:88px}#practicePassport .passport-extra-heading{font-size:19px;margin:26px 0 15px}.passport-extra-status{font-size:13px;color:#52664e}#practicePassport [data-passport-extras] .passport-room>button{margin-top:auto}
#ratioWorkbench>header,#lightKitchen>header,#lensLab>header{background:#e8eddc;border-bottom:1px solid #c6d1b8;font-family:'IBM Plex Sans Thai',sans-serif}
@keyframes ratio-toy-lift{50%{transform:translateY(-4px) rotate(-2deg)}}@keyframes ratio-card-reveal{from{opacity:0;transform:translateY(7px) rotate(-2deg)}to{opacity:1;transform:none}}
@media(min-width:740px){.ratio-table{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:24px}.ratio-table-heading,.ratio-prompt,.ratio-finish{grid-column:1/-1}.ratio-visual{grid-column:1;grid-row:3/5;align-content:center}.ratio-table>form{grid-column:2;grid-row:3/6}.ratio-table>.ratio-note{grid-column:1}.ratio-feedback,.ratio-hint,.ratio-hints{grid-column:1/-1}.ratio-inputs{margin-top:0}.ratio-table>.ratio-hint{justify-self:start}}
@media(max-width:580px){#ratioLab,#percentLab{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:0;border-radius:0}.ratio-body,#percentLab .percent-body{padding:12px}.ratio-header{padding:8px 12px!important}.ratio-header small{font-size:11px}.ratio-header h2{font-size:19px!important}.mix-welcome{padding:4px 8px 4px 0;gap:2px;margin-bottom:10px;border-radius:15px}.mix-welcome .ratio-art{width:68px}.mix-welcome p{font-size:13px}.mix-welcome strong{font-size:11px}.ratio-table,#percentLab .card{padding:16px;border-radius:20px}.ratio-visual{padding:12px 10px 16px}.ratio-steps button{font-size:12px!important;min-width:0;line-height:1.5}.ratio-island .attraction-cards{gap:12px}.ratio-island .ratio-destination{padding:8px 10px 14px}.ratio-destination .ratio-art{height:76px}.ratio-destination strong{font-size:17px}.ratio-destination span{font-size:12px}.ratio-destination em{font-size:11px}.ratio-scenic>div{grid-template-columns:1fr}#percentLab header h1{font-size:23px}#percentLab .tag{font-size:12px}#percentLab #pct-title{font-size:21px}#percentLab #pct-prompt{font-size:16px}}
@media(prefers-reduced-motion:reduce){.ratio-art,.ratio-hints li,#percentLab #pct-hints li{animation:none!important;transition:none!important}}
.tram-destinations{position:absolute;z-index:20;left:22px;bottom:94px;width:min(330px,calc(100% - 32px));max-height:calc(100% - 90px);overflow:auto;background:#fffdf1f5;border:1px solid #b1c2a3;border-radius:20px;padding:10px;box-shadow:0 12px 40px #203d3440;backdrop-filter:blur(10px);color:#294d40}.tram-destinations[hidden]{display:none}.tram-destination-head{display:flex;justify-content:space-between;align-items:center;padding-left:8px;font-size:14px}.tram-destination-head button{border:0;background:none;min-width:44px;min-height:44px;font-size:24px;color:inherit}.tram-destinations [data-destination]{display:grid;grid-template-columns:34px 1fr 18px;align-items:center;gap:8px;width:100%;min-height:62px;border:1px solid #d0d9c3;border-radius:12px;background:#f3f5e8;color:inherit;text-align:left;padding:9px;margin:6px 0;font:inherit;cursor:pointer}.tram-destinations [data-destination]>span:first-child{display:grid;place-items:center;font-size:24px;background:#e1ead4;border-radius:10px;min-height:36px}.tram-destinations b,.tram-destinations small{display:block}.tram-destinations b{font-size:14px}.tram-destinations small{font-size:11px;font-weight:400;margin-top:2px}.tram-destinations button:focus-visible{outline:3px solid #aa7424;outline-offset:2px}.tram-destinations button:hover{background:#e6edd9}@media(max-width:580px){.tram-destinations{left:12px;bottom:78px;width:min(310px,calc(100% - 24px))}}
@media(max-width:580px){#islandDialog.ratio-island .island-host{display:grid;grid-template-columns:60px minmax(0,1fr);gap:8px;padding:12px;margin:12px 0 18px;align-items:center}#islandDialog.ratio-island .host-portrait{width:60px;height:86px;grid-row:1/3}#islandDialog.ratio-island .host-portrait img{width:100%;height:100%;object-fit:contain}#islandDialog.ratio-island .island-host p{margin:0;min-width:0}#islandDialog.ratio-island .island-host strong{font-size:18px}#islandDialog.ratio-island #guardianRole{display:none}#islandDialog.ratio-island #guardianQuote{font-size:13px;line-height:1.6}#islandDialog.ratio-island #islandGuide{grid-column:2;justify-self:start;padding:4px 0;min-height:30px;font-size:12px}}
/* ==== reward-celebration.css ==== */
#pieceCelebration{box-sizing:border-box;width:min(500px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:94dvh;padding:28px 26px 20px;overflow:auto;text-align:center;border:2px solid #ead28d;border-radius:30px;background:radial-gradient(ellipse at 50% 35%,#fff8d7 0,#e9efda 60%,#d6e7d4 100%);color:#28553e;box-shadow:0 0 0 6px #d7bc6920,0 25px 100px #122f3e77;font-family:'IBM Plex Sans Thai',sans-serif;line-height:1.7}#pieceCelebration::backdrop{background:#123f38c4;backdrop-filter:blur(6px)}#pieceCelebration *{box-sizing:border-box}#pieceCelebration button{font:inherit;min-height:44px;cursor:pointer}#pieceCelebration .piece-close{position:absolute;top:9px;right:9px;border:0;border-radius:50%;background:#ffffff88;color:#365d43;width:44px;padding:0;font-size:25px}#pieceCelebration .piece-eyebrow{font-size:13px;margin:20px 10px 2px;font-weight:600;color:#6b7550}#pieceCelebration h2{font-size:clamp(22px,5vw,29px);line-height:1.5;margin:8px 0}#pieceCelebration #pieceDescription{font-size:14px;margin:12px 0 20px}#pieceCelebration .piece-continue{width:100%;background:#326c50;color:#fff9dc;border:1px solid #1f5139;border-radius:15px;box-shadow:0 5px 0 #244e36;padding:12px;font-weight:700}#pieceCelebration .piece-later{border:0;background:none;color:#4e6950;padding:8px 18px;margin-top:10px}#pieceCelebration button:focus-visible{outline:3px solid #a76e1c;outline-offset:3px}.piece-stage{height:230px;position:relative;isolation:isolate;display:grid;place-items:center;overflow:hidden}.piece-rays{position:absolute;width:300px;height:300px;border-radius:50%;background:repeating-conic-gradient(from 5deg,#e2b85833 0deg 12deg,transparent 12deg 30deg);mask-image:radial-gradient(circle,#000 25%,transparent 69%);animation:piece-rays 1.7s ease-out both;z-index:-1}.piece-object{width:240px;max-width:88%;height:210px;filter:drop-shadow(0 10px 10px #597e4922);animation:piece-reveal 1.05s cubic-bezier(.2,.7,.2,1) both}.piece-star{position:absolute;left:calc(50% - 9px);top:calc(50% - 16px);font-size:25px;color:#c28a2f;opacity:0;animation:piece-star 1.8s ease-out var(--delay) both;pointer-events:none}@keyframes piece-reveal{0%{opacity:0;transform:scale(.3) rotate(-15deg)}40%{opacity:1;transform:scale(1.12) rotate(4deg)}65%{transform:scale(.95) rotate(-2deg)}100%{transform:scale(1) rotate(0)}}@keyframes piece-rays{from{opacity:0;transform:scale(.4) rotate(-15deg)}to{opacity:1;transform:scale(1) rotate(15deg)}}@keyframes piece-star{0%{opacity:0;transform:rotate(var(--turn)) translateY(-40px) scale(.2)}25%{opacity:1}70%{opacity:1}100%{opacity:0;transform:rotate(var(--turn)) translateY(-116px) scale(.65)}}@media(max-width:420px){#pieceCelebration{padding:22px 18px 14px}.piece-stage{height:190px}.piece-object{height:180px}.piece-rays{width:260px;height:260px}#pieceCelebration #pieceDescription{font-size:13px}}@media(prefers-reduced-motion:reduce){.piece-rays,.piece-object,.piece-star{animation:none!important}.piece-star{display:none}.piece-rays{opacity:.7}}
/* ==== ratio-trail.css ==== */
.ratio-trail-banner,.ratio-trail-reward{grid-column:1/-1;padding:20px;border:1px solid #c0cdb1;border-radius:22px;background:linear-gradient(125deg,#e2ecd8,#fcf4df);color:#294e3e}.ratio-trail-banner h3,.ratio-trail-reward h3{margin:0 0 6px;font-size:22px}.ratio-trail-banner p,.ratio-trail-reward p{font-size:14px;margin:5px 0 12px}.ratio-trail-banner>.cloud-text{display:block;margin:8px 0 0}.ratio-trail-dots{display:flex;align-items:center;gap:0;margin:16px 0}.ratio-trail-dots span{width:32px;height:32px;border-radius:50%;border:2px solid #b6c9a4;background:#fffcf0;display:grid;place-items:center;position:relative;margin-right:22px;font-size:13px}.ratio-trail-dots span:not(:last-child):after{content:'';position:absolute;width:22px;height:2px;background:#b6c9a4;left:30px;top:13px}.ratio-trail-dots .done{background:#366c50;color:#fff4d8;border-color:#366c50}.ratio-trail-stop .ratio-trail-state{display:inline-block;padding:5px 9px;margin-top:12px;border:1px solid #c5cfb5;border-radius:30px;color:#53654c;font-size:12px;background:#f0f3e5}.ratio-trail-state[data-done=true]{background:#e1eed7;color:#28583f}.ratio-trail-reward{display:grid;grid-template-columns:110px 1fr;gap:12px;background:linear-gradient(120deg,#f5e5b9,#fffaf0)}.ratio-trail-reward>.ratio-art{width:100%;height:120px}.ratio-trail-reward ul{padding:0;list-style:none;font-size:13px;line-height:1.7}.ratio-trail-reward li{margin:6px 0}.ratio-trail-reward li button{text-align:left;padding:4px 0;min-height:44px;line-height:1.6}.ratio-trail-stop:hover{transform:translateY(-2px)}.ratio-trail-stop:focus-visible{outline:3px solid #a8772c;outline-offset:3px}@media(max-width:580px){.ratio-trail-banner,.ratio-trail-reward{padding:14px}.ratio-trail-banner h3,.ratio-trail-reward h3{font-size:19px}.ratio-trail-dots{justify-content:space-between}.ratio-trail-dots span{margin-right:0;width:28px;height:28px}.ratio-trail-dots span:not(:last-child):after{width:10px;left:26px;top:11px}.ratio-trail-reward{grid-template-columns:1fr}.ratio-trail-reward>.ratio-art{width:84px;height:58px}.ratio-trail-banner .cloud-primary,.ratio-trail-reward .cloud-primary{white-space:normal;line-height:1.5}.ratio-trail-stop .ratio-trail-state{padding:4px 6px;font-size:11px}}@media(prefers-reduced-motion:reduce){.ratio-trail-stop:hover{transform:none}}
@media(max-width:580px){#islandDialog.ratio-island{width:calc(100vw - 16px);max-width:calc(100vw - 16px);padding:16px;max-height:calc(100dvh - 16px)}#islandDialog.ratio-island #islandTitle{font-size:25px;line-height:1.4}.ratio-island .attraction-cards{grid-template-columns:1fr}.ratio-island .ratio-trail-stop{display:grid;grid-template-columns:68px minmax(0,1fr);column-gap:10px;align-items:center;text-align:left}.ratio-trail-stop>.ratio-art{grid-column:1;grid-row:1/5;width:68px;height:76px;margin:0}.ratio-trail-stop>em,.ratio-trail-stop>strong,.ratio-trail-stop>span,.ratio-trail-stop>.ratio-trail-state{grid-column:2}.ratio-trail-stop>.ratio-trail-state{justify-self:start;margin-top:7px}.ratio-trail-dots{max-width:300px}.ratio-trail-banner h3{font-size:18px}}
@media(max-width:580px){.ratio-island .ratio-trail-stop{min-height:138px;row-gap:3px;align-content:center}.ratio-island .ratio-trail-stop>strong{font-size:17px;margin:3px 0}.ratio-island .ratio-trail-stop>span{font-size:12px}.ratio-island .ratio-trail-stop>em{font-size:11px}}
/* ==== city-passport.css ==== */
#practicePassport .passport-islands{display:flex;gap:8px;border-bottom:1px solid #c7d0b8;margin:12px 0 20px;padding-bottom:12px;flex-wrap:wrap}#practicePassport .passport-islands button{flex:1;min-width:120px;font-size:14px}#practicePassport .passport-islands button[aria-pressed=true]{background:#315f4a;color:#fff4d9;border-color:#315f4a;box-shadow:0 3px 0 #c6ad70}#practicePassport>[data-passport-balance]>h3{font-size:26px}.passport-balance-resume{background:#e8efdd;border:1px solid #bdcdb0;border-radius:18px;padding:14px;margin:12px 0 20px}.passport-balance-resume p{margin:0 0 10px}.passport-balance-stations{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}#practicePassport .passport-balance-stations button{display:flex;flex-direction:column;align-items:center;text-align:center;gap:7px;padding:14px 8px;background:#fffcf3;border:1px dashed #b8c5ad}.passport-balance-stations strong{font-size:14px}.passport-balance-stations small{font-size:11px}.passport-stamp{width:44px;height:44px;border:2px solid #bfcab3;border-radius:50%;display:grid;place-items:center;font-size:20px;color:#6c7e67;transform:rotate(-6deg)}[data-recorded=true] .passport-stamp{color:#336b4b;background:#dcebcf;border:3px double #638863}.passport-balance-reward{padding:20px;margin:20px 0;background:#f4e8c5;border:1px solid #d6c797;border-radius:18px}.passport-balance-reward button{margin:4px 8px 4px 0}#practicePassport [hidden]{display:none!important}#practicePassport .passport-room ul{padding-left:18px;font-size:13px;line-height:1.8}.city-passport-entry{margin:10px 0}.passport-island-name{display:block;color:#56715c;font-size:12px;text-transform:uppercase;letter-spacing:.08em}@media(max-width:580px){.passport-balance-stations{grid-template-columns:repeat(2,minmax(0,1fr))}#practicePassport .passport-balance-stations button{min-height:125px}#practicePassport .passport-islands{gap:7px}.passport-balance-reward{padding:14px}.passport-balance-reward button{width:100%;margin:5px 0}#practicePassport .passport-balance-stations strong{font-size:13px}}@media(prefers-reduced-motion:reduce){.passport-stamp{transform:none}}

/* Leather binding, paper leaves and original ink seals; no image assets. */
#practicePassport{border:6px solid #203e51;border-left-width:13px;border-radius:13px 22px 22px 13px;padding:24px 28px;background:linear-gradient(90deg,#cfbea0 0,#f8f0dc 18px,#fff9e9 52%,#f8edda 100%);box-shadow:4px 5px 0 #e5d8bb,7px 8px 0 #28485a,0 24px 80px #112c4666;color:#273f49}
#practicePassport>header{background:radial-gradient(ellipse at top left,#385e70,#1e3748);color:#efd38c;margin:-24px -28px 18px;padding:22px 26px;border-bottom:4px double #c9ac69;gap:15px;box-shadow:0 3px 8px #34465833}
#practicePassport>header small{color:#dfc98f;font-size:10px;letter-spacing:.18em}#practicePassport>header h2{font-size:clamp(22px,4vw,30px);color:#f8dfa2;text-shadow:0 1px #fff4}#practicePassport .passport-cover-sub{font-size:10px;letter-spacing:.2em;color:#d8c391}#practicePassport .passport-crest{width:64px;flex-shrink:0;display:block}#practicePassport .passport-crest svg{display:block;width:100%}#practicePassport [data-passport-close]{align-self:flex-start;background:#ffffff0a;color:#f6d991;border:1px solid #bba66c;margin-left:auto;min-width:44px}
#practicePassport .passport-slot{border-bottom:1px dotted #ac9a7c;padding:7px 0 12px;color:#53636a}#practicePassport .passport-islands{border:0;margin:8px 0;padding:0}#practicePassport .passport-islands button{background:#ede0c3;border:1px solid #c1ae88;color:#475754;border-radius:10px 10px 2px 2px;box-shadow:none;font-size:13px}#practicePassport .passport-islands button[aria-pressed=true]{background:#203e51;color:#f8dfa2;border-color:#203e51}
#practicePassport .passport-page-turner{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 19px;padding:8px 0;border-bottom:1px solid #c4b592;font-size:12px;color:#697371}#practicePassport .passport-page-turner button{min-width:44px;padding:5px 10px;background:transparent;border-color:#c6b797;font-size:20px}#practicePassport .passport-page-turner button:disabled{opacity:.3}
#practicePassport [data-passport-balance],#practicePassport [data-passport-ratio]{transform-origin:left center}#practicePassport .passport-balance-resume{border-radius:5px;background:#e5eadb99;box-shadow:2px 3px 0 #b6bcad33}.passport-balance-stations{gap:10px}#practicePassport .passport-balance-stations button{border:1px dashed #beae90;background:#fff9e650;border-radius:4px;box-shadow:none;padding:8px;gap:3px}#practicePassport .passport-stamp{width:100px;height:100px;max-width:100%;border:0;border-radius:0;background:none;color:#888071;opacity:.48;transform:rotate(-6deg)}.passport-stamp svg{width:100%;height:100%}#practicePassport [data-recorded=true] .passport-stamp{color:#286651;opacity:.9;filter:drop-shadow(.5px .5px 0 #42735d44);background:none;border:0}#practicePassport .passport-balance-stations button:nth-child(even) .passport-stamp{transform:rotate(7deg)}#practicePassport .passport-balance-stations button[data-recorded=true]:nth-child(3n) .passport-stamp{color:#486b92}#practicePassport .passport-balance-stations small{font-size:10px}#practicePassport .passport-balance-stations strong{font-size:13px}
#practicePassport .passport-room{border:1px solid #cbbb99;border-radius:7px;background:#fffdf333;box-shadow:2px 3px 0 #cebf9d33}#practicePassport .passport-note{background:#e9e0ca80;border-radius:5px}#practicePassport .passport-balance-reward{background:#ecdeba;border-radius:6px}#practicePassport .passport-room-seal{width:100px;align-self:center;margin:12px 0 0;text-align:center;color:#8b8271;opacity:.55;transform:rotate(-5deg)}#practicePassport .passport-room-seal svg{width:100%;display:block}#practicePassport .passport-room-seal small{font-size:10px;color:inherit;display:block}#practicePassport .passport-room-seal[data-recorded=true]{color:#35644f;opacity:1}
@media(max-width:580px){#practicePassport{padding:17px 13px;border-width:4px;border-left-width:8px;width:calc(100vw - 14px)}#practicePassport>header{margin:-17px -13px 12px;padding:18px 12px;gap:9px}#practicePassport .passport-crest{width:43px}#practicePassport>header small{font-size:8px;letter-spacing:.1em}#practicePassport>header h2{font-size:21px}#practicePassport .passport-cover-sub{font-size:8px;letter-spacing:.1em}#practicePassport .passport-islands button{padding:9px 5px;min-width:100px;font-size:12px}#practicePassport .passport-stamp{width:90px;height:90px}#practicePassport .passport-balance-stations button{min-height:145px}#practicePassport .passport-page-turner{font-size:10px}#practicePassport .passport-room{padding:14px}}
@media(prefers-reduced-motion:reduce){#practicePassport .passport-stamp,#practicePassport .passport-room-seal,#practicePassport .passport-balance-stations button:nth-child(even) .passport-stamp{transform:none}}

#practicePassport{border-color:var(--passport-cover,#203e51)}#practicePassport>header{background:var(--passport-cover,#203e51);color:var(--passport-foil,#efd38c)}#practicePassport>header h2,#practicePassport>header small,#practicePassport .passport-cover-sub{color:var(--passport-foil,#efd38c)}
.passport-owner{border:1px solid #bbaa85;padding:12px;border-radius:5px;margin:12px 0 18px;background:#fffdf340}.passport-owner-summary{display:flex;align-items:center;gap:12px}.passport-owner-summary>div:nth-child(2){min-width:0;flex:1}.passport-owner-summary strong,.passport-owner-summary span,.passport-owner-summary small{display:block;overflow-wrap:anywhere}.passport-owner-summary strong{font-size:20px;line-height:1.5}.passport-owner-summary span{font-size:12px}.passport-owner-summary small{font-size:10px}.passport-owner-avatar{width:62px;flex-shrink:0}.passport-owner-avatar img,.passport-owner-avatar svg{display:block;width:100%;border-radius:10px}#practicePassport [data-owner-edit]{font-size:12px;padding:7px 10px}.passport-owner form{padding-top:20px;border-top:1px dashed #b8aa8e;margin-top:14px}.passport-owner form p{font-size:13px}.passport-owner label{display:block;font-size:14px;font-weight:700}.passport-owner input[name=nickname]{display:block;box-sizing:border-box;width:100%;font:inherit;padding:11px;margin:8px 0 18px;border:1px solid #9d967e;border-radius:6px;background:#fffdf4;color:#233c32}.passport-owner fieldset{border:0;padding:0;margin:0 0 20px;min-width:0}.passport-owner legend{font-size:14px;margin-bottom:10px}.passport-house-choices{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.passport-house-choice{position:relative;min-width:0;cursor:pointer}.passport-house-choice input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.passport-house-choice>span{display:flex;flex-direction:column;align-items:center;padding:10px 4px;background:var(--house-color);color:var(--house-accent);border:3px solid transparent;border-radius:10px}.passport-house-choice svg{width:54px;max-width:100%}.passport-house-choice b{font-size:13px}#practicePassport .passport-house-choice small{font-size:10px;color:inherit}.passport-house-choice input:checked+span{outline:3px solid #977428;outline-offset:2px;border-color:#f5e2ac}.passport-house-choice input:focus-visible+span{outline:3px solid #2064af;outline-offset:3px}.passport-cover-preview{box-sizing:border-box;max-width:260px;margin:20px auto;background:var(--house-color);color:var(--house-accent);padding:25px 16px;text-align:center;border-radius:4px 15px 15px 4px;border:1px solid #384537;box-shadow:inset 7px 0 4px #0003,3px 3px 0 #cabd99,5px 5px 0 var(--house-color)}.passport-cover-preview [data-preview-crest]{width:74px;margin:0 auto 13px}.passport-cover-preview strong{display:block;font-size:22px;margin:14px 0;overflow-wrap:anywhere}.passport-cover-preview span{display:block;font-size:14px}#practicePassport .passport-cover-preview small{display:block;font-size:9px;color:inherit;letter-spacing:.07em}.passport-cover-preview [data-preview-motto]{margin-top:20px}.passport-owner-actions{display:flex;gap:8px;flex-wrap:wrap}#practicePassport .passport-owner-actions button[type=submit]{background:var(--passport-cover,#203e51);color:#fff4d9}.passport-owner-scope{color:#59645d;font-size:12px!important}#practicePassport [data-owner-status]{font-size:12px;margin:7px 0 0}#practicePassport [data-owner-status]:empty{display:none}
@media(max-width:580px){.passport-house-choices{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.passport-house-choice:first-child{grid-column:1/-1}.passport-house-choice:first-child>span{flex-direction:row;justify-content:center;gap:10px}.passport-house-choice:first-child svg{width:32px}.passport-owner-summary{gap:8px;flex-wrap:wrap}.passport-owner-avatar{width:48px}.passport-owner-summary strong{font-size:17px}.passport-owner-summary [data-owner-edit]{margin-left:auto}.passport-cover-preview{max-width:100%}.passport-owner{padding:10px}.passport-owner-actions button{flex:1}}

/* R85: a named first-screen entry, hidden with the existing tools in driver POV. */
#cloudWorld .cloud-tools{max-width:680px}
#cloudWorld .cloud-tools #cloudPassport{display:flex;width:112px;height:44px;padding:6px 9px;background:#203e51;color:#f8dfa2;border:1px solid #c4aa70;box-shadow:inset 0 0 0 2px #203e51,inset 0 0 0 3px #c4aa7066,0 3px 8px #203e5126;gap:7px}
#cloudPassport svg{width:22px;height:26px}.passport-home-label{font-size:12px;font-weight:700;line-height:1.35;text-align:left}.passport-home-label small{display:block;font-size:10px;font-weight:400;color:#f1dfb6}
#cloudPassport:focus-visible,.avatar-house-shortcut:focus-visible{outline:3px solid #d99b29;outline-offset:3px}
.avatar-house-shortcut{display:block;width:100%;min-height:44px;border:1px solid #bda673;border-radius:12px;background:#203e51;color:#f8dfa2;padding:12px;font:inherit;cursor:pointer}
@media(max-width:650px){#cloudWorld .cloud-tools #cloudPassport{width:88px;min-width:88px;min-height:48px;height:48px;padding:6px;align-self:flex-end;border-radius:12px}#cloudPassport svg{width:18px;height:24px}.passport-home-label{font-size:11px}.passport-home-label small{font-size:10px}}

.passport-owner-tools{display:flex;flex-direction:column;gap:6px;flex-shrink:0}#practicePassport .passport-owner-tools button{font-size:12px;min-height:44px}#practicePassport [data-owner-avatar-edit]{background:transparent;border:1px solid #bbaa85}#practicePassport [data-owner-avatar-edit]:disabled{opacity:.5}
@media(max-width:580px){.passport-owner-tools{width:100%;flex-direction:row;flex-wrap:wrap}.passport-owner-tools button{flex:1}.passport-owner-summary .passport-owner-tools [data-owner-edit]{margin-left:0}}

@media(max-width:380px){.passport-owner-tools{flex-direction:column}.passport-owner-tools button{width:100%}}
#percentLab #pct-close[aria-label]:not([aria-label="กลับเมืองเมฆ"]){width:auto;height:auto;min-height:44px;padding:8px 12px;border-radius:12px;font-size:13px;white-space:nowrap}
#percentLab #pct-close[aria-label]:not([aria-label="กลับเมืองเมฆ"])+header{clear:both;padding-top:10px}
#ratioLab [data-ratio-close][aria-label]:not([aria-label="กลับเมืองเมฆ"]){font-size:13px;white-space:nowrap;flex-shrink:0;padding:8px 10px}

/* R88: the explorer's dressing room, using the existing original house emblems. */
#practicePassport .passport-owner{position:relative;padding:20px;margin:12px 0 20px;border:1px solid #c6b789;border-radius:18px;background:radial-gradient(ellipse at 7% 30%,#e5ebda 0,transparent 60%),linear-gradient(125deg,#fffdf2,#f4ead3);box-shadow:0 4px 0 #c6b78933,inset 0 0 0 4px #fffaf066}
#practicePassport .passport-owner-summary{display:grid;grid-template-columns:170px minmax(0,1fr);gap:24px;align-items:center}
.passport-owner-stage{height:206px;position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center}
.owner-orbit{position:absolute;inset:14px 0 20px;border:1px dashed #8c9d8480;border-radius:50%;transform:rotate(-18deg);background:radial-gradient(ellipse at center,#fffdfaaa,#c5d3b033)}
#practicePassport .passport-owner-avatar{position:relative;z-index:1;width:112px;margin-right:38px;filter:drop-shadow(0 9px 6px #203e5126);transform:rotate(-5deg);animation:owner-arrive 650ms ease-out,owner-bob 4s ease-in-out 650ms 2}
#practicePassport .passport-owner-avatar img,#practicePassport .passport-owner-avatar svg{border-radius:26px;width:100%;aspect-ratio:1;object-fit:contain}
.owner-mini-book{position:absolute;z-index:2;right:0;bottom:28px;width:68px;min-height:98px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:12px 8px;background:var(--passport-cover,#203e51);color:var(--passport-foil,#efd38c);border:1px solid #b79b58;border-left:4px solid #152b3280;border-radius:3px 10px 10px 3px;box-shadow:2px 2px 0 #e9d8b5,4px 4px 0 var(--passport-cover,#203e51),0 9px 12px #203e5126;transform:rotate(12deg)}
.owner-mini-book [data-owner-crest]{width:39px}.owner-mini-book svg{width:100%;display:block}#practicePassport .owner-mini-book small,#practicePassport .owner-mini-book>span{font-size:7px;letter-spacing:1px;color:inherit}
.owner-stage-caption{position:absolute;bottom:0;font-size:9px!important;font-weight:700;letter-spacing:.2em;color:#657662}.owner-spark{position:absolute;font-style:normal;color:#a17624;z-index:3;animation:owner-twinkle 3s ease-in-out 3}.owner-spark-one{top:16px;right:22px;font-size:26px}.owner-spark-two{left:0;bottom:31px;font-size:19px;animation-delay:600ms}
#practicePassport .owner-kicker{color:#65765f;font-size:10px;letter-spacing:.06em}#practicePassport .passport-owner-intro h3{font-size:clamp(19px,2.5vw,25px);line-height:1.4;margin:3px 0 10px;color:#243f38}#practicePassport .passport-owner-intro>[data-owner-name]{font-size:17px}#practicePassport .passport-owner-intro>[data-owner-house]{color:#34594b;font-weight:700;font-size:12px}#practicePassport .owner-invitation{font-size:12px;line-height:1.7;margin:10px 0;color:#52624f}
#practicePassport .passport-owner-tools{display:flex;flex-direction:column;gap:8px;width:100%;max-width:290px}#practicePassport .passport-owner-tools button{width:100%;margin:0;min-height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:9px;font-size:13px;transition:transform 150ms,box-shadow 150ms}
#practicePassport [data-owner-edit]{background:var(--passport-cover,#203e51);color:var(--passport-foil,#efd38c);border:1px solid #b99a52;box-shadow:0 3px 0 #18392f;padding:9px 12px}#practicePassport [data-owner-edit]>span:last-child{display:flex;align-items:center;gap:12px}#practicePassport [data-owner-button-crest]{width:25px;height:27px}#practicePassport [data-owner-button-crest] svg{width:100%;height:100%}#practicePassport [data-owner-avatar-edit]{background:#fffdf4;border-color:#bbaa85;color:#345247}#practicePassport [data-owner-avatar-edit]>span{font-size:21px;line-height:1}#practicePassport .passport-owner-tools button:hover:not(:disabled){transform:translateY(-2px)}#practicePassport .passport-owner-tools button:active:not(:disabled){transform:translateY(1px)}#practicePassport .passport-owner-tools button:focus-visible{outline:3px solid #2774a8;outline-offset:4px}#practicePassport .owner-freedom{font-size:10px;color:#65735f;margin-top:11px;line-height:1.6}
@keyframes owner-arrive{from{opacity:0;transform:translateY(8px) rotate(-9deg)}to{opacity:1;transform:translateY(0) rotate(-5deg)}}
@keyframes owner-bob{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-5px) rotate(-2deg)}}
@keyframes owner-twinkle{0%,100%{opacity:.6;transform:scale(.9)}50%{opacity:1;transform:scale(1.12)}}
@media(max-width:580px){#practicePassport .passport-owner{padding:14px}#practicePassport .passport-owner-summary{grid-template-columns:1fr;gap:8px}#practicePassport .passport-owner-stage{height:133px;width:170px;margin:0 auto}#practicePassport .passport-owner-avatar{width:90px;margin-right:40px}#practicePassport .owner-mini-book{width:57px;min-height:78px;bottom:13px;right:9px;padding:7px;gap:3px}.owner-mini-book [data-owner-crest]{width:30px}.owner-stage-caption{display:none!important}.owner-orbit{inset:0 9px 4px}.owner-spark-one{top:0;right:13px}.owner-spark-two{bottom:17px;left:12px}#practicePassport .passport-owner-intro{text-align:center}#practicePassport .passport-owner-intro h3{font-size:21px;margin:3px 0 6px}#practicePassport .passport-owner-tools{max-width:none}#practicePassport .owner-invitation{margin:8px 0}#practicePassport .owner-freedom{font-size:9px;margin-top:10px}}
@media(prefers-reduced-motion:reduce){#practicePassport .passport-owner-avatar,.owner-spark{animation:none!important}#practicePassport .passport-owner-tools button{transition:none}}
/* Both pale city covers and dark house covers keep legible controls. */
#practicePassport [data-passport-close]{color:var(--passport-foil,#efd38c);border-color:currentColor}
#practicePassport .passport-owner-actions button[type=submit]{color:var(--passport-foil,#efd38c)}
#practicePassport .passport-owner[data-house=wind] [data-owner-edit]{background:#205c42;color:#e9fff0;border-color:#86b397;box-shadow:0 3px 0 #163a2b}
/* ==== city-trail.css ==== */
#cityTrail{box-sizing:border-box;width:min(840px,96vw);max-height:92dvh;border:2px solid #cab882;border-radius:24px;padding:24px;background:#fbf4e3;color:#29473e;box-shadow:0 20px 80px #133d4666}#cityTrail::backdrop{background:#193c42b3;backdrop-filter:blur(5px)}#cityTrail header{display:flex;align-items:center;justify-content:space-between;gap:14px}#cityTrail h2{margin:3px 0;font-size:28px}#cityTrail header small{color:#68785c;font-size:11px}#cityTrail p{font-size:14px;line-height:1.8}#cityTrail button,.city-trail-bar button{font:inherit;cursor:pointer;min-height:44px;border:1px solid #aebd9b;border-radius:12px;padding:8px 12px;background:#fffdf5;color:#284c3d}#cityTrail button:focus-visible,.city-trail-bar button:focus-visible{outline:3px solid #286fba;outline-offset:3px}#cityTrail button:disabled{cursor:default;opacity:.6}.city-trail-stops{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:23px 0}.city-trail-stops button{position:relative;text-align:left;display:flex;flex-direction:column;gap:7px;box-shadow:0 4px 0 #b6c4a6;transition:transform .15s}.city-trail-stops button:hover:not(:disabled){transform:translateY(-3px)}.city-trail-stops svg{width:100%;display:block}.city-trail-stops strong{font-size:17px}.city-trail-stops span:not(.trail-stop-number){font-size:12px;line-height:1.7}.city-trail-stops small{font-size:11px;font-weight:700;color:#59734b}.trail-stop-number{position:absolute;top:10px;left:10px;font-size:12px;border-radius:50%;background:#285943;color:#fff4dc;padding:6px}.city-trail-note{display:block;font-size:11px;line-height:1.8;margin-top:16px;color:#6a705d}#cityTrail [data-trail-retry]{font-size:12px}#cityTrail:has([data-trail-unavailable][hidden]) [data-trail-retry]{display:none}.city-trail-bar{position:absolute;z-index:9;left:50%;bottom:12px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 24px);padding:9px 12px;border:1px solid #c4b587;border-radius:16px;background:#fff8e9ed;box-shadow:0 4px 15px #17362e33;color:#29473e}.city-trail-bar strong{display:block;font-size:12px;margin:0 3px 6px}.city-trail-bar>div{display:flex;gap:7px}.city-trail-bar button{font-size:11px;padding:5px 10px}.city-trail-bar [data-trail-next]{background:#295941;color:#fff4db}#cloudWorld .city-trail-bar[hidden]{display:none}.passport-trail-entry{display:flex!important;align-items:center;gap:12px;width:100%;text-align:left;margin:12px 0;background:#e6eddf!important;border:1px solid #9caf92!important;border-radius:14px!important;padding:14px!important;color:#31543e!important}.passport-trail-entry>span:first-child{font-size:27px}.passport-trail-entry strong,.passport-trail-entry small{display:block}.passport-trail-entry strong{font-size:14px}.passport-trail-entry small{font-size:11px;font-weight:400;margin-top:3px}
@media(max-width:580px){#cityTrail{padding:16px;border-radius:18px}#cityTrail h2{font-size:21px}#cityTrail header{align-items:start;gap:8px}#cityTrail header button{font-size:11px;padding:8px}.city-trail-stops{grid-template-columns:1fr;gap:12px;margin:16px 0}.city-trail-stops button{display:grid;grid-template-columns:88px 1fr;column-gap:12px;padding:10px!important}.city-trail-stops svg{grid-row:1/4;align-self:center}.city-trail-stops strong{font-size:16px}.trail-stop-number{top:3px;left:4px;font-size:9px;padding:4px}.city-trail-bar{padding:8px;bottom:8px}.city-trail-bar>div{gap:5px}.city-trail-bar button{font-size:10px;padding:5px 7px}}
@media(prefers-reduced-motion:reduce){.city-trail-stops button{transition:none}.city-trail-stops button:hover:not(:disabled){transform:none}}
/* The small itinerary replaces, rather than covers, the existing bottom controls. */
#cloudWorld.trail-preview-active #rideTram,#cloudWorld.trail-preview-active #cloudJourney,#cloudWorld.trail-preview-active #stationDock{display:none!important}
#cloudWorld.trail-preview-active [aria-controls="stationDock"],#cloudWorld.trail-preview-active .cloud-enter-link{display:none!important}
/* ==== city-walkthrough.css ==== */
#cityGuideOpen b{font-size:22px}#cityWalkthrough{box-sizing:border-box;width:min(490px,94vw);max-height:92dvh;border:2px solid #c2af7e;border-radius:25px;padding:24px 28px;background:#fff8e8;color:#2d4d40;box-shadow:0 20px 90px #203e5170}#cityWalkthrough::backdrop{background:#214039ad;backdrop-filter:blur(4px)}#cityWalkthrough [hidden],.city-guide-invite[hidden],.city-guide-resume[hidden]{display:none!important}#cityWalkthrough button,.city-guide-invite button,.city-guide-resume{font:inherit;min-height:44px;border:1px solid #a9b99b;border-radius:12px;padding:9px 13px;cursor:pointer;background:#fffdf6;color:#2b503e}#cityWalkthrough .guide-dismiss{float:right;font-size:24px;padding:2px;width:44px}.guide-eyebrow{font-size:11px;color:#718267;display:block;padding-top:10px}.guide-postcard{height:137px;clear:both;background:radial-gradient(ellipse,#ebf0dc,transparent 70%);margin:5px auto}.guide-postcard svg{display:block;height:100%;max-width:100%;margin:auto}#cityWalkthrough h2{font-size:25px;line-height:1.4;margin:10px 0}#cityWalkthrough p{font-size:14px;line-height:1.85;margin:10px 0}#cityWalkthrough .guide-tip{font-size:12px;padding:10px 12px;background:#ecefdb;border-radius:10px;color:#5a704c}#cityWalkthrough [data-guide-step]{display:block;font-size:11px;color:#708268;margin-top:10px}#cityWalkthrough [data-guide-dots]{display:flex;gap:6px}#cityWalkthrough [data-guide-dots] span{height:5px;flex:1;background:#dadcc5;border-radius:8px}#cityWalkthrough [data-guide-dots] .current{background:#427556}#cityWalkthrough .guide-try{width:100%;background:#315f49;color:#fff4d4;border-color:#315f49;box-shadow:0 3px 0 #1c3c2c;font-weight:700;margin:9px 0}#cityWalkthrough button:disabled{opacity:.5;cursor:default}#cityWalkthrough [data-guide-not-ready]{font-size:11px;line-height:1.7;color:#80562a}.guide-nav{display:flex;justify-content:space-between;gap:8px;margin-top:16px}#cityWalkthrough [data-guide-next]{background:#ecddba;border-color:#bcab7c;font-weight:700}#cityWalkthrough .guide-skip{display:block;margin:12px auto 0;border:0;background:transparent;font-size:12px;min-height:38px}#cityWalkthrough button:focus-visible,.city-guide-invite button:focus-visible,.city-guide-resume:focus-visible{outline:3px solid #3474a0;outline-offset:3px}.city-guide-invite{position:absolute;left:20px;bottom:90px;z-index:12;width:280px;max-width:calc(100% - 40px);box-sizing:border-box;padding:16px;border:1px solid #c6b889;border-radius:17px;background:#fff8eaf5;box-shadow:0 8px 28px #203e512d;color:#35513e}.city-guide-invite strong,.city-guide-invite>span{display:block}.city-guide-invite strong{font-size:15px}.city-guide-invite>span{font-size:12px;line-height:1.7;margin:6px 0 12px}.city-guide-invite>div{display:flex;gap:8px}.city-guide-invite button{font-size:11px;padding:7px}.city-guide-invite [data-guide-start]{background:#315f49;color:#fff4db}.city-guide-resume{position:absolute;z-index:25;left:12px;top:12px;box-shadow:0 3px 12px #203e5130;background:#fff8eaf5;font-size:12px}body:has(dialog[open]) .city-guide-invite,#cloudWorld.cab-visible .city-guide-invite{display:none!important}
@media(max-width:580px){#cityWalkthrough{padding:16px 19px;border-radius:19px;max-height:94dvh}.guide-postcard{height:100px}#cityWalkthrough h2{font-size:22px}#cityWalkthrough p{font-size:13px;line-height:1.8}#cityWalkthrough .guide-tip{font-size:11px}.guide-nav button{font-size:12px!important;padding:8px!important}.city-guide-invite{bottom:90px;left:12px;max-width:calc(100% - 24px)}.city-guide-resume{font-size:11px;max-width:180px}}

/* Compact nonmodal guide controls remain available while driving. */
.city-guide-resume{display:flex;align-items:center;gap:2px;padding:3px;border:1px solid #c6b889;border-radius:14px;max-width:calc(100% - 24px)}
.city-guide-resume button{font:inherit;font-size:12px;min-height:44px;padding:6px 9px;border:0;border-radius:10px;background:transparent;color:#2b503e;cursor:pointer}
.city-guide-resume [data-guide-continue]{background:#315f49;color:#fff4db}.city-guide-resume [data-guide-end]{min-width:44px;font-size:22px}
.city-guide-resume button:focus-visible{outline:3px solid #3474a0;outline-offset:1px}
#cityWalkthrough [data-guide-finish]>button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin:10px 0;padding:13px;background:#edf0df;border-color:#a9b99b}
#cityWalkthrough [data-guide-finish] b{display:grid;place-items:center;width:43px;min-width:43px;height:43px;border-radius:13px;background:#315f49;color:#fff4d4;font-size:26px}
#cityWalkthrough [data-guide-learn=ratio]{background:#fff0d5}#cityWalkthrough [data-guide-learn=ratio] b{background:#ae6438}
#cityWalkthrough [data-guide-finish] strong,#cityWalkthrough [data-guide-finish] small{display:block;font-size:13px;line-height:1.7}#cityWalkthrough [data-guide-finish] small{font-size:12px;font-weight:400}#cityWalkthrough [data-guide-finish] i{margin-left:auto;font-style:normal}
#cityWalkthrough [data-guide-finish]>[data-guide-revisit]{justify-content:center;font-size:12px;background:transparent;border:0;margin:0;padding:4px}
@media(max-width:360px){.city-guide-resume button{font-size:11px;padding:6px}#cityWalkthrough [data-guide-finish]>button{gap:8px;padding:10px}#cityWalkthrough [data-guide-finish] strong{font-size:12px}}
#cloudWorld.cab-visible .city-guide-resume{top:auto;bottom:78px}
#cityWalkthrough [data-guide-finish]>[data-guide-learn=ratio]{background:#fff0d5}
/* ==== passport-report.css ==== */
#passportReport{box-sizing:border-box;width:min(880px,calc(100vw - 16px));max-height:94dvh;padding:22px;margin:auto;border:3px solid #254557;border-radius:18px;background:#efe5cc;color:#273e46;overflow:auto}#passportReport::backdrop{background:#163a4599;backdrop-filter:blur(4px)}#passportReport>.report-controls{background:none;position:static;height:auto;display:flex;gap:12px;align-items:center;justify-content:space-between;padding:0;border:0}#passportReport h2{font-size:23px;margin:4px 0}#passportReport form.report-controls{display:block;margin:18px 0}#passportReport fieldset{padding:12px;border:1px solid #afa383;border-radius:8px}#passportReport label{display:inline-flex;gap:8px;align-items:center;min-height:44px;margin-right:14px;font-size:14px}#passportReport input{width:18px;height:18px;accent-color:#315c58}#passportReport .report-controls p{font-size:13px}#passportReport button{font:inherit;min-height:44px;border:1px solid #8d9e8a;background:#fff9e7;color:#284b47;border-radius:8px;padding:9px 13px;cursor:pointer}#passportReport [data-report-close]{font-size:23px;min-width:44px}#passportReport button:disabled{opacity:.5;cursor:default}#passportReport button:focus-visible,#passportReport input:focus-visible{outline:3px solid #af7525;outline-offset:3px}.report-actions{display:flex;gap:8px;flex-wrap:wrap}#passportReport [data-report-print]{background:#254557;color:#fff2d0}#passportReport [data-report-preview]{box-shadow:0 5px 20px #243f4920}.passport-report-entry{margin:14px 0;width:100%}@media(max-width:580px){#passportReport{padding:12px}#passportReport label{display:flex;margin:0}.report-actions button{flex:1;min-width:120px}}
@media print{body.passport-report-open{margin:0!important;background:white!important;height:auto!important;overflow:visible!important}body.passport-report-open>:not(#passportReport){display:none!important}body.passport-report-open #passportReport{display:block!important;position:static!important;width:100%!important;height:auto!important;max-height:none!important;overflow:visible!important;padding:0!important;margin:0!important;border:0!important;border-radius:0!important;background:white!important;box-shadow:none!important}#passportReport::backdrop,#passportReport .report-controls{display:none!important}#passportReport [data-report-preview]{box-shadow:none}#passportReport .report-sheet{padding:0!important}.report-sheet{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
#passportReport .report-controls p{margin:10px 0;line-height:1.6}
#passportReport .report-controls p{font-size:.875rem}#passportReport fieldset{min-width:0}#passportReport label{overflow-wrap:anywhere}
#passportReport [data-report-open-file]{display:inline-flex;align-items:center;min-height:44px;color:#254557;background:#fff9e7;border:1px solid #8d9e8a;border-radius:8px;padding:9px 13px;font-size:.875rem;text-decoration:underline}#passportReport [data-report-open-file][hidden]{display:none}#passportReport [data-report-open-file]:focus-visible{outline:3px solid #af7525;outline-offset:3px}
@media print{html:has(body.passport-report-open){background:white!important}body.passport-report-open #passportReport{max-width:none!important}body.passport-report-open .report-sheet{width:100%;margin:0}}
/* ==== passport-medals.css ==== */
.passport-medals{margin:14px 0 18px;border:1px solid #c7b27a;border-radius:8px;background:#eee1bb55}.passport-medals>[data-medal-collection]>summary{display:flex;align-items:center;gap:10px;cursor:pointer;min-height:64px;padding:12px;list-style:none}.passport-medals summary::-webkit-details-marker{display:none}.passport-medals summary:focus-visible{outline:3px solid #246594;outline-offset:2px}.passport-medals summary strong{display:block;font-size:15px}.passport-medals summary small{display:block;font-size:11px}.passport-medals>[data-medal-collection]>summary>span:last-child{margin-left:auto}.medal-summary-icon{color:#97712c;font-size:28px}.medal-note{font-size:12px;padding:0 14px;line-height:1.7;margin:10px 0 16px}.medal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:0 12px}.medal-grid details{min-width:0;border:1px solid #cbbb96;border-radius:10px;background:#f9f3e5;align-self:start}.medal-grid summary{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:15px 7px;cursor:pointer;list-style:none}.medal-art{width:78px;max-width:100%;display:block;color:#776e57}.medal-art svg{display:block;width:100%;height:auto}.medal-rim{fill:#d8d0bb;stroke:#a99c7b;stroke-width:2}.medal-core{fill:#eee9d8;stroke:#b6aa8c;stroke-width:1}.medal-ribbon{fill:#bdbbb0;stroke:#a09d8e;stroke-width:1}.medal-grid [data-state=earned]{background:radial-gradient(ellipse at 50% 28%,#fff6d6,#f9ecd0 60%);border-color:#bca362}.medal-grid [data-state=earned] .medal-art{color:#7a5019;filter:drop-shadow(0 3px 2px #8a64232b)}.medal-grid [data-state=earned] .medal-rim{fill:#d9b664;stroke:#9f7630}.medal-grid [data-state=earned] .medal-core{fill:#f9df94;stroke:#a78031}.medal-grid [data-state=earned] .medal-ribbon{fill:#486d67;stroke:#2f524b}.medal-grid [data-state=unknown]{border-style:dashed}.medal-grid [data-state=unknown] .medal-art{opacity:.5}.medal-grid summary strong{font-size:13px;line-height:1.5}.medal-status{font-size:10px;color:#566a60}.medal-grid [data-state=earned] .medal-status{color:#315b40;font-weight:bold}.medal-criteria-prompt{color:#7b632e!important}.medal-grid details>p{border-top:1px dashed #c1ad7f;padding:10px;margin:0;font-size:12px;line-height:1.7}.medal-grid [data-state=earned] summary:hover .medal-art{transform:rotate(-4deg);transition:transform .18s ease}@media(max-width:580px){.medal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 8px}.medal-grid summary strong{font-size:12px}.medal-art{width:65px}.passport-medals summary small{font-size:10px}.passport-medals summary strong{font-size:13px}.medal-note{font-size:11px}}@media(prefers-reduced-motion:reduce){.medal-grid [data-state=earned] summary:hover .medal-art{transform:none;transition:none}}
@media(max-width:380px){.medal-grid{grid-template-columns:1fr}.medal-grid summary{display:grid;grid-template-columns:62px minmax(0,1fr);column-gap:12px;text-align:left;padding:12px}.medal-grid .medal-art{grid-column:1;grid-row:1/6;width:62px}.medal-grid summary strong,.medal-grid summary>span:not(.medal-art),.medal-grid summary>small{grid-column:2}.medal-grid summary strong{font-size:13px}}
/* ==== delivery-trip.css ==== */
#deliveryTrip{box-sizing:border-box;width:min(480px,94vw);max-height:92dvh;padding:24px;border:2px solid #c5af7d;border-radius:24px;background:#fff8e8;color:#2c503f;box-shadow:0 25px 70px #17342b66}#deliveryTrip::backdrop{background:#1f3d3ba8;backdrop-filter:blur(4px)}#deliveryTrip header{display:flex;align-items:center;justify-content:space-between}#deliveryTrip small{font-size:11px;line-height:1.8}#deliveryTrip h2{font-size:26px;line-height:1.4;margin:12px 0}#deliveryTrip p{font-size:14px;line-height:1.8}#deliveryTrip button,.delivery-trip-bar button{font:inherit;min-height:44px;padding:10px 14px;border:1px solid #adc0a2;border-radius:12px;background:#fffdf5;color:#2c503f;cursor:pointer}#deliveryTrip button:focus-visible,.delivery-trip-bar button:focus-visible{outline:3px solid #267aad;outline-offset:3px}#deliveryTrip button:disabled{opacity:.5;cursor:default}#deliveryTrip [hidden],.delivery-trip-bar[hidden]{display:none!important}.delivery-ticket-art{margin:12px auto;background:radial-gradient(ellipse,#e7edd6,transparent 70%);max-width:260px}.delivery-ticket-art svg{display:block;width:100%}#deliveryTrip [data-delivery-route]{display:block;border-top:2px dashed #d7c59c;padding-top:12px;color:#6e7856}.delivery-actions{display:grid;gap:9px;margin:18px 0 10px}#deliveryTrip [data-delivery-ride],#deliveryTrip [data-delivery-practice]{background:#325f48;color:#fff4d6;box-shadow:0 3px 0 #193e2a;font-weight:700}#deliveryTrip [data-delivery-back]{display:block;margin:8px auto;border:0;background:transparent;font-size:12px}.delivery-footnote{display:block;text-align:center;color:#78816b;margin-top:16px}#deliveryTrip [data-delivery-note]{background:#eee4c9;border-radius:10px;padding:9px;font-size:12px}.delivery-trip-bar{position:absolute;left:12px;bottom:16px;z-index:24;max-width:calc(100% - 24px);box-sizing:border-box;padding:9px 12px;border-radius:15px;border:1px solid #b9af85;background:#fff8eaf5;color:#2c503f;box-shadow:0 5px 20px #193e292a}.delivery-trip-bar strong{display:block;font-size:12px;margin-bottom:6px}.delivery-trip-bar>div{display:flex;gap:8px}.delivery-trip-bar button{font-size:12px;padding:7px 12px}.delivery-trip-bar [data-delivery-checkpoint]{background:#325f48;color:#fff4d6}#cloudWorld.delivery-trip-active #rideTram,#cloudWorld.delivery-trip-active #cloudJourney,#cloudWorld.delivery-trip-active #stationDock,#cloudWorld.delivery-trip-active [aria-controls="stationDock"],#cloudWorld.delivery-trip-active .cloud-enter-link{display:none!important}#cityTrail .delivery-trail-entry{display:flex;width:100%;align-items:center;gap:14px;padding:15px;background:#e4ecd6;border-color:#9eb18c;text-align:left}#cityTrail .delivery-trail-entry b{font-size:32px;color:#396747}#cityTrail .delivery-trail-entry strong,#cityTrail .delivery-trail-entry small{display:block}#cityTrail .delivery-trail-entry strong{font-size:16px}#cityTrail .delivery-trail-entry small{font-size:12px;line-height:1.7;margin-top:3px}@media(max-width:580px){#deliveryTrip{padding:16px;border-radius:20px}#deliveryTrip h2{font-size:22px}#deliveryTrip p{font-size:13px}.delivery-ticket-art{max-width:200px}.delivery-footnote{font-size:10px!important}.delivery-trip-bar{bottom:12px;padding:8px 10px}#cityTrail .delivery-trail-entry strong{font-size:14px}}

#cloudWorld.delivery-trip-active .city-guide-invite{display:none!important}
#cloudWorld.delivery-trip-active .cloud-title,#cloudWorld.delivery-trip-active #cloudResume{display:none!important}
#deliveryTrip .delivery-save{font-size:11px;line-height:1.7;padding:8px 10px;border-radius:10px;background:#e9edd9;margin:9px 0;color:#536d48}.delivery-trip-bar .delivery-save{display:block;font-size:10px;line-height:1.65;max-width:260px;margin:0 0 7px;color:#5e7054}.delivery-trip-bar .delivery-save[hidden]{display:none}#deliveryTrip [data-delivery-resume]{background:#315e48;color:#fff4d6;font-weight:700;box-shadow:0 3px 0 #193e2a}#deliveryTrip.has-checkpoint [data-delivery-ride]{background:#fffdf5;color:#315e48;box-shadow:none;font-weight:400}#deliveryTrip.has-checkpoint .delivery-ticket-art{max-width:190px}#deliveryTrip.has-checkpoint .delivery-actions{margin-top:10px}@media(max-width:580px){#deliveryTrip.has-checkpoint .delivery-ticket-art{max-width:140px}#deliveryTrip.has-checkpoint .delivery-actions button{font-size:13px}#deliveryTrip.has-checkpoint .delivery-footnote{margin-top:9px}}
#cityTrail .balance-trip-entry{margin-top:10px;background:#e2eeeb;border-color:#92b5ae}#cityTrail .balance-trip-entry b{color:#38776e}#deliveryTrip[data-trip=balance] .delivery-ticket-art{background:radial-gradient(ellipse,#dcebe5,transparent 70%)}
/* ==== nobi.css ==== */
.nobi-art{display:block;width:100%;aspect-ratio:1;background-repeat:no-repeat;background-position:var(--nobi-x) var(--nobi-y);flex-shrink:0}
.nobi-art[data-nobi-sheet=umbrella]{background-image:var(--nobi-umbrella-image,url('/assets/nobi/j-umbrella-v1.png'));background-size:300% 300%}
html[data-nobi-palette=lavender],.nobi-palette-preview[data-nobi-palette=lavender]{--nobi-umbrella-image:url('/assets/nobi/j-umbrella-lavender-v3.png')}
html[data-nobi-palette=mist],.nobi-palette-preview[data-nobi-palette=mist]{--nobi-umbrella-image:url('/assets/nobi/j-umbrella-mist-v2.png')}
html[data-nobi-palette=peach],.nobi-palette-preview[data-nobi-palette=peach]{--nobi-umbrella-image:url('/assets/nobi/j-umbrella-peach-v2.png')}
.nobi-palette-preview[data-nobi-palette=mint]{--nobi-umbrella-image:url('/assets/nobi/j-umbrella-v1.png')}
#nobiLook{box-sizing:border-box;width:min(460px,94vw);max-height:92dvh;padding:20px;border:2px solid #b7c5a7;border-radius:24px;background:#fff8e8;color:#2d5747;overflow:auto}
#nobiLook::backdrop{background:#173b3c99;backdrop-filter:blur(5px)}
#nobiLook header{display:flex;justify-content:space-between;align-items:center;gap:12px}#nobiLook h2{font-size:24px;margin:0}
#nobiLook button{font:inherit;min-height:44px;padding:10px 12px;border:1px solid #b7c5a7;border-radius:12px;background:#fffdf6;color:inherit;cursor:pointer;font-size:14px}
#nobiLook header button{min-width:44px;font-size:24px}#nobiLook button:disabled{opacity:.5;cursor:default}
#nobiLook button:focus-visible{outline:3px solid #3474a0;outline-offset:2px}
#nobiLook p{font-size:16px;line-height:1.7;margin:12px 0}
#nobiLook .nobi-palette-preview{width:160px;max-width:70%;margin:8px auto}#nobiLook .nobi-palette-preview[hidden]{display:block;visibility:hidden}
#nobiLook [data-nobi-look-name]{display:block;text-align:center;font-size:16px;margin-bottom:16px}
#nobiLook .nobi-color-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#nobiLook .nobi-color-choices button{display:flex;gap:7px;align-items:center;min-width:0;text-align:left}
#nobiLook .nobi-color-choices button[aria-pressed=true]{border:2px solid #315f49;padding:9px 11px;background:#e9efdb}
.nobi-color-dot{width:20px;height:20px;flex-shrink:0;border-radius:50%;border:1px solid #315f4933}
#nobiLook .nobi-look-scope,#nobiLook [data-nobi-look-status]{font-size:14px}
#nobiLook .nobi-look-actions{display:flex;gap:8px;margin-top:16px}#nobiLook .nobi-look-actions button{flex:1}
#nobiLook [data-nobi-look-save]{background:#315f49;color:#fff8e8}
@media(max-width:580px){#nobiLook{padding:16px}#nobiLook .nobi-color-choices button{padding:10px 8px}#nobiLook .nobi-color-choices button[aria-pressed=true]{padding:9px 7px}}
.nobi-art[data-nobi-sheet=growth]{background-image:url('/assets/nobi/growth-v1.png');background-size:400% 300%}
.nobi-art[data-nobi-animate=true][data-nobi-pose=wave]{animation:nobi-peek 2.4s step-end 1}
@keyframes nobi-peek{0%{background-position:0% 0%;transform:rotate(-2deg)}35%{background-position:50% 0%;transform:rotate(2deg)}70%,100%{background-position:100% 0%;transform:none}}
.city-guide-invite .nobi-art{width:62px;float:left;margin:-4px 8px 0 -4px}
.city-guide-invite:after{content:"";display:block;clear:both}
.nobi-guide-art{display:flex;align-items:center;justify-content:center;gap:14px;height:100%;margin:auto}
.nobi-guide-art>.nobi-art{width:137px;max-height:100%}
.nobi-guide-art>.nobi-guide-symbol{display:block;width:110px;max-width:35%;height:100%}
.nobi-guide-symbol svg{opacity:.85}
#cityWalkthrough .nobi-motion-toggle{display:block;margin:3px auto 7px;padding:4px 12px;min-height:34px;font-size:12px;background:transparent;border:0;text-decoration:underline}
#cityWalkthrough[data-nobi-motion=off] .nobi-art{animation:none!important;transform:none!important}
.nobi-travel-stamp{position:relative;display:block;width:100%;height:100%;border:1px dashed currentColor;border-radius:50%;background:#f0eee622}
.nobi-travel-stamp>.nobi-art{width:90%;margin:0 auto}
.nobi-stamp-symbol{position:absolute;right:-2px;bottom:-2px;display:block;width:35%;height:35%;background:#fff7e6;border-radius:50%;box-shadow:0 0 0 2px #fff7e6}
.nobi-stamp-symbol svg{width:100%;height:100%}
#practicePassport .passport-stamp:has(.nobi-travel-stamp){opacity:1;filter:none}
#practicePassport .passport-room-seal:has(.nobi-travel-stamp){opacity:1}
#practicePassport [data-recorded=false] .nobi-travel-stamp{filter:grayscale(1);opacity:.48}
#practicePassport [data-recorded=true] .nobi-travel-stamp{border:2px solid #789481;background:#dbeadc44}
#practicePassport .passport-room-seal>.nobi-travel-stamp{height:100px}
@media(max-width:580px){.nobi-guide-art{gap:6px}.nobi-guide-art>.nobi-art{width:100px}.nobi-guide-art>.nobi-guide-symbol{width:90px}#practicePassport .passport-room-seal>.nobi-travel-stamp{height:100px}}
@media(prefers-reduced-motion:reduce){.nobi-art[data-nobi-animate=true]{animation:none!important;transform:none!important}}

.nobi-art[data-nobi-sheet=chapters]{background-image:url('/assets/nobi/chapter-actions-v1.png');background-size:300% 300%}
.nobi-art[data-nobi-animate=true][data-nobi-sheet=chapters]{animation:nobi-chapter 2.7s step-end 2}
.nobi-art[data-nobi-animate=true][data-nobi-pose=think]{animation:nobi-wonder 1.4s ease-in-out 2}
.nobi-art[data-nobi-animate=true][data-nobi-pose=peek]{animation:nobi-wonder 1.6s ease-in-out 2}
.nobi-art[data-nobi-animate=true][data-nobi-pose=rest]{animation:nobi-wonder 2s ease-in-out 2}
.nobi-art[data-nobi-animate=true][data-nobi-pose=glide]{animation:nobi-float 2.4s ease-in-out 2}
@keyframes nobi-chapter{0%{background-position:0% var(--nobi-y)}34%{background-position:50% var(--nobi-y)}67%,100%{background-position:100% var(--nobi-y)}}
@keyframes nobi-wonder{0%,100%{transform:none}50%{transform:rotate(-5deg) translateY(-3px)}}
@keyframes nobi-float{0%,100%{transform:none}50%{transform:translateY(-10px) rotate(3deg)}}
[data-nobi-motion=off] .nobi-art{animation:none!important;transform:none!important}
button.nobi-icon-control,#cityWalkthrough button.nobi-icon-control{font:inherit;display:inline-grid;place-items:center;min-width:44px;min-height:44px;padding:4px;border:1px solid #b9c9b5;border-radius:50%;background:#fff8e8;color:#2d5747;font-size:18px;text-decoration:none;cursor:pointer}
.nobi-icon-control:focus-visible,#nobiMeet button:focus-visible{outline:3px solid #3474a0;outline-offset:2px}
#cityWalkthrough .guide-postcard{height:150px}
#cityWalkthrough .nobi-meet-trigger{display:flex;flex-direction:column;align-items:center;justify-content:center;width:137px;height:100%;padding:0;border:0;background:transparent;box-shadow:none}
.nobi-meet-trigger>.nobi-art{width:115px}
.nobi-meet-trigger>span:last-child{font-size:14px;text-decoration:underline;text-underline-offset:3px}
#cityWalkthrough .nobi-motion-toggle{margin:0 auto 8px}
.nobi-buddy{display:flex;gap:9px;align-items:center;max-width:100%;box-sizing:border-box;margin:12px 0;padding:8px 10px;border:1px solid #c2d0ba;border-radius:16px;background:#f2f5e8;color:#2d5747;font-size:14px}
.nobi-buddy [data-nobi-buddy-art]{width:70px;flex-shrink:0}.nobi-buddy>div:nth-child(2){flex:1;min-width:0}.nobi-buddy strong,.nobi-buddy small{display:block}.nobi-buddy small{font-size:12px;line-height:1.6}.nobi-buddy button.nobi-icon-control{flex-shrink:0}
#nobiMeet{box-sizing:border-box;width:min(460px,94vw);max-height:92dvh;border:2px solid #b7c5a7;border-radius:24px;padding:20px;background:#fff8e8;color:#2d5747}
#nobiMeet::backdrop{background:#173b3c99;backdrop-filter:blur(5px)}
#nobiMeet header{display:flex;align-items:center;justify-content:space-between;gap:12px}#nobiMeet h2{font-size:24px;margin:0}#nobiMeet h3{font-size:20px;margin:12px 0}
#nobiMeet button{font:inherit;min-height:44px;padding:8px 12px;border:1px solid #b7c5a7;border-radius:12px;background:#fffdf6;color:inherit;cursor:pointer}
#nobiMeet header button{font-size:25px;min-width:44px}
#nobiMeet nav{display:flex;gap:7px;flex-wrap:wrap;margin:16px 0}#nobiMeet nav button{flex:1;font-size:14px}
#nobiMeet nav button[aria-pressed=true]{background:#315f49;color:#fff8e8;border-color:#315f49}
.nobi-meet-stage{width:165px;max-width:60%;margin:0 auto}.nobi-meet-motion{display:flex;gap:8px;justify-content:center}
#nobiMeet p{font-size:16px;line-height:1.8;margin:12px 0}.nobi-story-note{padding:12px;background:#e9efdb;border-radius:12px}
#nobiMeet .nobi-meet-back{display:block;width:100%;background:#315f49;color:#fff8e8}
#nobiMeet [hidden]{display:none!important}
.passport-owner-stage,.passport-cover-preview,#practicePassport>header{position:relative;isolation:isolate}
.passport-magic{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:inherit;z-index:5}
.passport-magic i{position:absolute;left:var(--px);top:var(--py);width:9px;height:9px;border-radius:50%;opacity:0;background:#e8d0ff;box-shadow:0 0 12px #c9a1e888;animation:magic-grow 4s ease-out var(--delay) 1 both}
.passport-magic[data-house=earth] i{background:#dbb36c;box-shadow:0 0 10px #a0c177aa;animation-name:magic-earth}
.passport-magic[data-house=water] i{width:26px;height:26px;background:none;border:2px solid #91d7ee;box-shadow:0 0 12px #a3dff399;animation-name:magic-water}
.passport-magic[data-house=wind] i{width:42px;height:10px;background:none;border-top:2px solid #78bea4;border-radius:50%;box-shadow:none;animation-name:magic-wind}
.passport-magic[data-house=fire] i{background:#f5be64;box-shadow:0 0 16px 3px #ee995b99;animation-name:magic-fire}
.passport-magic:before{content:"";position:absolute;left:50%;top:50%;width:140px;height:140px;border:1px solid #f3dca866;border-radius:50%;background:radial-gradient(circle,#f3dca844,transparent 65%);animation:magic-halo 4.9s ease-out 1 both}
.passport-magic[data-house=earth]:before{border-color:#acd58f66;background:radial-gradient(circle,#acd58f44,transparent 65%)}
.passport-magic[data-house=water]:before{border-color:#98deef88;background:radial-gradient(circle,#98deef44,transparent 65%)}
.passport-magic[data-house=wind]:before{border-color:#a5dbc066;background:radial-gradient(circle,#a5dbc044,transparent 65%)}
.passport-magic[data-house=fire]:before{border-color:#ffbe7377;background:radial-gradient(circle,#ffbe7355,transparent 65%)}
@keyframes magic-halo{0%{opacity:0;transform:translate(-50%,-50%) scale(.1)}25%{opacity:.65}100%{opacity:0;transform:translate(-50%,-50%) scale(2.8)}}
@keyframes magic-grow{0%{opacity:0;transform:scale(.2)}25%{opacity:.8}100%{opacity:0;transform:translateY(-55px) scale(1.3)}}
@keyframes magic-earth{0%{opacity:0;transform:translateY(65px) scale(.3)}35%{opacity:.85}100%{opacity:0;transform:translateY(-25px) rotate(100deg) scale(1.5)}}
@keyframes magic-water{0%{opacity:0;transform:scale(.1)}20%{opacity:.85}100%{opacity:0;transform:scale(4)}}
@keyframes magic-wind{0%{opacity:0;transform:translateX(-75px) rotate(-8deg)}25%{opacity:.9}100%{opacity:0;transform:translateX(95px) rotate(12deg)}}
@keyframes magic-fire{0%{opacity:0;transform:translateY(55px) scale(.3)}25%{opacity:.85}100%{opacity:0;transform:translateY(-90px) scale(.1)}}
.passport-magic[data-nobi-motion=off] i{animation:none!important;opacity:0}
.passport-magic[data-nobi-motion=off]:before{animation:none!important;opacity:0}
#practicePassport .nobi-passport-tools{display:flex;justify-content:center;gap:8px}
#practicePassport .passport-owner-tools .nobi-passport-tools button{width:44px;flex:0 0 44px;min-height:44px;border-radius:50%;font-size:18px}
#lightKitchen[open],#ratioWorkbench[open],#lensLab[open]{display:flex;flex-direction:column}
#lightKitchen>header,#ratioWorkbench>header,#lensLab>header{flex-shrink:0}
#lightKitchen>.nobi-buddy,#ratioWorkbench>.nobi-buddy,#lensLab>.nobi-buddy{margin:6px 10px;flex-shrink:0}
#lightKitchen iframe,#ratioWorkbench iframe,#lensLab iframe{flex:1;min-height:0;height:auto}
@media(max-width:580px){#cityWalkthrough .guide-postcard{height:132px}.nobi-meet-trigger>.nobi-art{width:100px}.nobi-buddy{gap:5px;padding:6px}.nobi-buddy [data-nobi-buddy-art]{width:55px}.nobi-buddy small{font-size:12px}.nobi-buddy button.nobi-icon-control{min-width:44px}#nobiMeet{padding:16px}#nobiMeet nav button{flex-basis:40%}}
@media(prefers-reduced-motion:reduce){.nobi-art[data-nobi-animate=true]{animation:none!important;transform:none!important}.passport-magic i{animation:none!important;opacity:.18;transform:none}.passport-magic:before{animation:none!important;opacity:.12;transform:translate(-50%,-50%)}}
/* ==== nobi-companion.css ==== */
.nobi-companion-dialog{box-sizing:border-box;width:min(530px,94vw);max-height:94dvh;overflow:auto;padding:22px;border:2px solid #b7c5a7;border-radius:26px;background:#fff8e8;color:#2d5747;font-size:16px;line-height:1.7}
.nobi-companion-dialog::backdrop{background:#173b3c99;backdrop-filter:blur(5px)}
.nobi-companion-dialog header{display:flex;align-items:center;justify-content:space-between;gap:12px}.nobi-companion-dialog h2{margin:0;font-size:25px}.nobi-companion-dialog h3{margin:12px 0;font-size:19px}.nobi-companion-dialog header small{font-size:11px;letter-spacing:.09em}
.nobi-companion-dialog button,.nobi-companion-dialog select{font:inherit;box-sizing:border-box;max-width:100%;min-height:44px;padding:9px 12px;border:1px solid #b7c5a7;border-radius:12px;background:#fffdf6;color:inherit;cursor:pointer;font-size:14px;white-space:normal}
.nobi-companion-dialog header button{min-width:44px;font-size:24px}.nobi-companion-dialog button:disabled{opacity:.55;cursor:default}.nobi-companion-dialog button:focus-visible,.nobi-companion-dialog select:focus-visible,.nobi-companion-dialog input:focus-visible{outline:3px solid #3474a0;outline-offset:3px}
.nobi-companion-dialog select{display:block;width:100%;margin:7px 0}.nobi-companion-dialog .nobi-primary{background:#315f49;color:#fff8e8}.nobi-companion-dialog p{margin:10px 0}.nobi-companion-dialog .nobi-scope{font-size:14px;color:#4f6259}
.nobi-action-stage{width:195px;max-width:75%;margin:auto}.nobi-action-art{display:block;width:100%;aspect-ratio:1;background-repeat:no-repeat}
.nobi-action-motion{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap}.nobi-action-motion>button{min-width:44px;font-size:19px}.nobi-action-motion label{font-size:14px;display:flex;align-items:center;min-height:44px}.nobi-action-clips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.nobi-action-clips button{flex:1}.nobi-action-clips button[aria-pressed=true]{background:#e9efdb;border-color:#315f49}
#nobiActions [data-action-status]{font-size:14px;min-height:24px}#nobiActions [data-action-play]{display:block;width:100%;margin-bottom:9px}
.nobi-game-friend{width:100px;margin:2px auto}.nobi-game-modes{display:grid;gap:10px}.nobi-game-modes button{text-align:left;padding:14px}.nobi-game-modes strong,.nobi-game-modes span{display:block}.nobi-game-modes strong{font-size:16px}.nobi-game-modes span{margin-top:5px}
.nobi-friend-row{display:flex;align-items:center;gap:10px}.nobi-friend-row .nobi-game-friend{width:88px;flex-shrink:0}.nobi-friend-row .nobi-friend-speech{flex:1;min-width:0;font-size:15px}
.nobi-friend-speech{padding:12px;border:1px solid #c3d5bd;border-radius:16px;background:#eff5e5}.nobi-game-equation{text-align:center;font-size:24px;font-weight:700;letter-spacing:.03em}
.nobi-scale{position:relative;border-radius:16px;background:#edf2e7;padding:18px 14px 24px}.nobi-scale-beam{position:absolute;bottom:13px;left:15%;width:70%;height:5px;background:#8a7959;transform:rotate(var(--balance-tilt));border-radius:8px}.nobi-scale-values{display:flex;justify-content:space-around;gap:12px;text-align:center}.nobi-scale-values strong{display:block;font-size:26px}.nobi-scale[data-equal=true]{background:#e1edd6;border:1px solid #a5c295}
.nobi-math-groups{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin:12px 0}.nobi-math-group{padding:7px 10px;background:#e4dcef;border:1px solid #b9a4ca;border-radius:9px;font-weight:600}
.nobi-game-slider{display:flex;align-items:center;gap:10px;margin:7px 0 12px}.nobi-game-slider button{min-width:44px}.nobi-game-slider input{min-width:0;flex:1;accent-color:#315f49;height:44px}.nobi-game-partner{border-left:3px solid #b6a5cc;padding-left:12px;margin:12px 0}.nobi-game-hints{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.nobi-game-hints button{flex:1}.nobi-game-comfort{margin-top:18px;border-top:1px solid #c3d0ba;padding-top:12px}.nobi-game-comfort label{display:flex;align-items:center;gap:8px;min-height:44px}.nobi-game-comfort summary{cursor:pointer;min-height:44px}
.nobi-companion-entry{display:block;width:100%;text-align:left;padding:12px 15px!important;margin:12px 0;border:1px solid #b7c5a7!important;border-radius:14px!important;background:#edf2e7!important;color:#2d5747!important;font:inherit!important;min-height:44px}
.nobi-buddy{flex-wrap:wrap}.nobi-buddy .nobi-buddy-links{display:flex;gap:8px;flex-basis:100%;flex-wrap:wrap}.nobi-buddy-links button{font:inherit;min-height:44px;border:1px solid #b7c5a7;border-radius:10px;padding:6px 12px;color:#2d5747;background:#fffdf6;flex:1;cursor:pointer;font-size:14px}
.nobi-buddy [data-nobi-buddy-message]{flex-basis:100%;margin:0;font-size:14px;line-height:1.7}.nobi-buddy .nobi-buddy-quiet{display:flex;align-items:center;gap:7px;min-height:44px;font-size:13px}
#nobiMeet{overflow:auto}
.nobi-companion-dialog .nobi-art[data-nobi-animate=true][data-nobi-pose=joy]{animation:nobi-shared-joy 1s ease-out 2}
@keyframes nobi-shared-joy{0%,100%{transform:none}45%{transform:translateY(-7px) rotate(3deg)}70%{transform:translateY(-2px) rotate(-2deg)}}
.nobi-companion-dialog[data-nobi-motion=off] .nobi-art{animation:none!important;transform:none!important}
@media(prefers-reduced-motion:reduce){.nobi-companion-dialog .nobi-art{animation:none!important;transform:none!important}}
@media(max-width:580px){.nobi-companion-dialog{padding:16px}.nobi-companion-dialog h2{font-size:22px}.nobi-action-stage{width:170px}.nobi-game-friend{width:82px}.nobi-action-clips button{flex-basis:42%}}
@media(max-width:380px){.nobi-friend-row{gap:5px}.nobi-friend-row .nobi-game-friend{width:62px}.nobi-friend-row .nobi-friend-speech{padding:9px;font-size:14px}}
/* ADR0203: a small companion, with words and preferences only on request. */
.nobi-buddy{display:block;padding:6px 10px;flex-shrink:0}
.nobi-buddy [hidden]{display:none!important}
.nobi-buddy .nobi-buddy-toggle{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;margin:0;padding:0 4px;border:0;box-shadow:none;background:transparent;color:#2d5747;font:inherit;text-align:left;cursor:pointer}
.nobi-buddy-toggle [data-nobi-buddy-art]{display:block;width:44px;flex:0 0 44px}
.nobi-buddy-toggle>span:nth-child(2){flex:1;min-width:0}.nobi-buddy-toggle strong{font-size:14px}.nobi-buddy-toggle small{font-size:14px;line-height:1.5}
.nobi-buddy .nobi-buddy-details{padding:8px 4px 0;border-top:1px solid #c2d0ba;margin-top:6px}
.nobi-buddy-details>small{font-size:14px;line-height:1.6}
.nobi-buddy-motion{display:flex;gap:6px;margin:6px 0}.nobi-buddy-motion button{min-width:44px;min-height:44px}
.nobi-buddy .nobi-buddy-quiet{font-size:14px}
.nobi-buddy-toggle:focus-visible{outline:3px solid #337a9e;outline-offset:3px;border-radius:10px}
.hint-deck>.nobi-buddy{margin:0 0 8px;padding:0 0 6px;border:0;border-bottom:1px solid var(--frame-line,#c2d0ba);border-radius:0;background:transparent}
/* ==== rally-entry.css ==== */
.rally-trial-card{grid-column:1/-1;border:1px solid #aac6b4;border-radius:18px;background:#edf5e9;padding:16px;color:#245650}.rally-trial-card strong{display:block;font-size:1rem}.rally-trial-card p{font-size:.85rem;line-height:1.6;margin:8px 0}.rally-trial-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border-radius:14px;background:#1e6c64;color:#fffaf0;text-decoration:none;font-weight:600}.rally-trial-link:focus-visible{outline:3px solid #dca944;outline-offset:3px}.rally-trial-view{position:absolute;right:20px;bottom:112px;max-width:245px;padding:13px;border-radius:18px;background:#f6f8edeb;border:1px solid #bdd4c5;color:#245650;z-index:8;box-shadow:0 5px 20px #2343}.rally-trial-view strong,.rally-trial-view small{display:block}.rally-trial-view small{margin:5px 0 9px;font-size:.75rem}.rally-trial-view .rally-trial-link{font-size:.85rem}.rally-trial-view[hidden]{display:none}@media(max-width:600px){.rally-trial-view{right:12px;bottom:148px;max-width:220px;font-size:.85rem;padding:11px}.rally-trial-view .rally-trial-link{font-size:.8rem}}
/* ==== lesson-entry-0410.css ==== */
.lessons-dialog-0410{width:min(1100px,98vw);height:94dvh;max-width:98vw;max-height:96dvh;border:1px solid #cdd6c4;border-radius:22px;background:#f5f3ea;padding:0;overflow:hidden}.lessons-dialog-0410::backdrop{background:#283d4d99}.lessons-dialog-0410 header{display:flex;align-items:center;justify-content:space-between;padding:8px 18px;border-bottom:1px solid #d5daca;background:#fffdf5;height:52px}.lessons-dialog-0410 header button{font:inherit;font-size:24px;background:#e7ecd9;color:#334438;border:0;border-radius:50%;width:44px;height:40px;cursor:pointer}.lessons-dialog-0410 iframe{width:100%;height:calc(100% - 52px);border:0;display:block}.lesson-choice-0410{border-top:4px solid var(--place-color);min-height:140px}.lesson-icon-0410{font-size:32px;color:var(--place-color);background:#efeee0;padding:10px;border-radius:16px}.lesson-choice-0410:hover .lesson-icon-0410{transform:translateY(-3px) rotate(3deg);transition:transform .18s}.tram-destinations{max-height:min(65dvh,500px);overflow:auto}@media(max-width:650px){.lessons-dialog-0410{width:100vw;height:98dvh;border-radius:16px;max-height:98dvh}.lesson-choice-0410{min-height:125px}.lessons-dialog-0410 header{padding:6px 12px}}@media(prefers-reduced-motion:reduce){.lesson-icon-0410{transition:none!important;transform:none!important}}
/* ==== answer-desk-0430/style.css ==== */
.answer-desk{box-sizing:border-box;width:min(1080px,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 24px);padding:0;border:1px solid #b9cbbf;border-radius:24px;background:#f6faf6;color:#19382d;overflow:auto;font:17px/1.65 system-ui,-apple-system,"Thonburi",sans-serif;overscroll-behavior:contain}
.answer-desk::backdrop{background:#132b30b3}.answer-desk *{box-sizing:border-box}.answer-desk [hidden]{display:none!important}.answer-desk .ad-header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 26px;background:#fff;border-bottom:1px solid #d6e1d8;position:sticky;top:0;z-index:2}.answer-desk h2{font-size:24px;margin:0;line-height:1.5}.answer-desk h3{font-size:23px;margin:20px 0 10px}.answer-desk h4{font-size:18px;margin:0 0 12px}.answer-desk p{margin:10px 0;overflow-wrap:anywhere}.answer-desk .ad-eyebrow{font-size:13px;font-weight:750;letter-spacing:.04em;color:#477160;margin:0 0 6px}.answer-desk .ad-body{padding:24px 26px 30px}.answer-desk .ad-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.answer-desk button{min-height:46px;min-width:46px;padding:10px 16px;border-radius:14px;border:1px solid #adc4b8;background:#fff;color:#214636;font:inherit;font-weight:650;cursor:pointer;line-height:1.5;white-space:normal}.answer-desk button:focus-visible,.answer-desk input:focus-visible,.answer-desk textarea:focus-visible,.answer-desk select:focus-visible,.answer-desk summary:focus-visible{outline:3px solid #2675b8;outline-offset:3px}.answer-desk .ad-close{font-size:26px;padding:0;flex:none}.answer-desk .ad-primary,.answer-desk [aria-current=true],.answer-desk [aria-pressed=true]{background:#215c46;color:#fff;border-color:#215c46}.answer-desk .ad-secondary{margin:10px 0}.answer-desk .ad-nav,.answer-desk .ad-toolbar,.answer-desk .ad-item-nav{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.answer-desk .ad-channels{padding:16px 0 18px;border:0;border-bottom:1px solid #d7e3d9;display:flex;gap:10px;flex-wrap:wrap;min-width:0}.answer-desk legend{font-weight:700;padding:0;margin:8px 0}.answer-desk .ad-cal-card{display:grid;place-items:center;width:120px;min-height:100px;background:#f1e3bf;border:1px solid #d5c698;border-radius:20px;font-size:40px;font-weight:750;margin:18px 0}.answer-desk .ad-field{display:flex;flex-direction:column;gap:6px;max-width:460px;margin:14px 0}.answer-desk input,.answer-desk textarea,.answer-desk select{min-width:0;width:100%;min-height:48px;border:1px solid #98b3a4;background:#fff;color:#142f26;border-radius:12px;padding:11px 12px;font:18px/1.5 system-ui,-apple-system,"Thonburi",sans-serif;resize:vertical}.answer-desk .ad-workspace{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0}.answer-desk .ad-column{min-width:0;background:#fff;border:1px solid #cadbcf;border-radius:18px;padding:18px}.answer-desk .ad-column .ad-field{margin:0}.answer-desk .ad-equation{font-size:24px;font-weight:750}.answer-desk .ad-note{font-size:14px;color:#466354}.answer-desk .ad-feedback:not(:empty),.answer-desk .ad-help{padding:14px 18px;border-radius:16px;background:#e1eef4;border:1px solid #b9d4e3}.answer-desk .ad-help{background:#fff3d7;border-color:#e5d39c}.answer-desk .ad-save{margin:0;padding:12px 26px;background:#fff0cc;color:#684e1b}.answer-desk .ad-history{margin-top:24px;padding-top:16px;border-top:1px solid #cadbcf}.answer-desk summary{cursor:pointer;min-height:44px;font-weight:700}.answer-desk .ad-history ol{padding-inline-start:24px}.answer-desk .ad-history li{margin:16px 0}.answer-desk .ad-history strong{font-size:14px}
@media(max-width:760px){.answer-desk{width:calc(100vw - 12px);max-height:calc(100dvh - 12px);border-radius:18px}.answer-desk .ad-header{padding:14px 16px;gap:10px}.answer-desk h2{font-size:20px}.answer-desk .ad-body{padding:16px}.answer-desk .ad-workspace{grid-template-columns:1fr}.answer-desk .ad-channels{display:grid;grid-template-columns:1fr}.answer-desk .ad-channel{text-align:left;width:100%}.answer-desk .ad-nav{display:grid;grid-template-columns:1fr 1fr;width:100%}.answer-desk .ad-nav button{padding:10px 8px;font-size:15px}.answer-desk .ad-toolbar{display:grid;grid-template-columns:1fr}.answer-desk .ad-body>.ad-primary,.answer-desk form>button{width:100%}.answer-desk .ad-item-nav button{flex:1;min-width:60px;font-size:15px;padding:8px}.answer-desk .ad-save{padding:12px 16px}.answer-desk h3{font-size:21px}}

.answer-desk .ad-clue-roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}.answer-desk .ad-clue-card{background:#fff2ca;border:1px solid #d5bf80;padding:18px;border-radius:18px;margin:16px 0}.answer-desk .ad-reason-check{display:flex;align-items:center;gap:12px;min-height:48px;cursor:pointer;max-width:100%;overflow-wrap:anywhere}.answer-desk .ad-reason-check input{width:24px;height:24px;min-height:24px;flex:none}.answer-desk .ad-nav button:last-child{grid-column:1/-1}@media(max-width:760px){.answer-desk .ad-clue-roles{grid-template-columns:1fr}}

.ad-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.ad-nav button:nth-child(3){grid-column:auto}.tc-preview,.tc-teacher{border:1px solid #cad8cd;border-radius:18px;padding:16px;margin-top:20px;overflow-wrap:anywhere}.tc-preview{background:#fff9e9}.tc-teacher{background:#eef6f0}.tc-preview li{margin-bottom:14px}.tc-teacher>button{display:block;width:100%;margin-top:12px}.tc-preview button{width:100%}.ad-field select{width:100%;min-height:48px;font-size:18px;white-space:normal}.answer-desk button:disabled{opacity:.55;cursor:default}
/* ==== island-explorer-0414.css ==== */
.island-explorer[hidden],.island-explorer [hidden]{display:none!important}.island-explorer{position:absolute;inset:0;pointer-events:none;z-index:9;color:#284c3b}.island-explorer button,.island-explorer a,.island-explorer aside,.explorer-detail{pointer-events:auto}.explorer-intro{position:absolute;left:20px;top:20px;display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #dacdb3;border-radius:20px;background:#fffdf2ed;box-shadow:0 6px 20px #35563a15}.explorer-intro h2{font-size:18px;margin:0 8px}.explorer-intro button,.explorer-map button,.explorer-detail-top button{width:36px;height:36px;border:1px solid #ddd2bb;border-radius:50%;background:#edf1df;color:#315942;font-size:19px}.explorer-map{position:absolute;left:20px;top:87px;width:200px;border:1px solid #d8cbaa;border-radius:18px;background:#fffdf2ed;box-shadow:0 6px 18px #34563a18;overflow:hidden}.explorer-map header{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;font-size:13px}.explorer-map svg{display:block;width:100%;height:auto}.explorer-map small{display:block;padding:0 10px 10px;font-size:11px;text-align:center}.explorer-land{fill:#dbe5c4;stroke:#b6c397;stroke-width:3}.explorer-paths path{fill:none;stroke:#c6b78d;stroke-width:3;stroke-linecap:round;stroke-dasharray:4 4}.explorer-paths path.chosen{stroke:#b5782e;stroke-width:4}.explorer-map circle{fill:#4b775c;stroke:#fff9e6;stroke-width:3}.explorer-map a[aria-current] circle{fill:#bd8543}.explorer-map text{fill:#4b684e;font-size:11px}.explorer-map a text{fill:white;text-anchor:middle;font-size:14px;font-weight:800}.explorer-map a:focus circle{stroke:#784fb0;stroke-width:5}.explorer-pins{position:absolute;inset:0;pointer-events:none}.explorer-pin{pointer-events:auto!important}.explorer-pin b{box-shadow:0 3px 0 #35573c30}.explorer-pin span{max-width:190px}.explorer-detail{position:absolute;right:20px;bottom:20px;width:340px;padding:12px;border:1px solid #d8cbaa;border-radius:22px;background:#fffdf2f5;box-shadow:0 8px 24px #284b3425}.explorer-detail-top{display:flex;align-items:center;gap:9px}.explorer-detail-top [data-number]{font-weight:900;color:#ad7a33;font-size:13px}.explorer-detail-top [data-art]{width:58px;flex-shrink:0}.explorer-detail-top img{width:70px;height:56px;object-fit:contain}.explorer-detail-top h3{font-size:19px;margin:2px 0}.explorer-detail-top small{font-size:11px;line-height:1.4;display:block}.explorer-detail-top button{flex-shrink:0;margin-left:auto}.explorer-detail details{font-size:13px;margin:6px 0 10px}.explorer-detail details p{line-height:1.6;margin:8px 0}.explorer-actions{display:flex;gap:8px;align-items:center}.explorer-actions>[data-play]{flex:1;font-size:14px;min-height:44px;border-radius:14px}.explorer-actions>[data-previous],.explorer-actions>[data-next]{width:36px;min-height:44px;background:#edf1df;border:1px solid #d8cbaa;border-radius:12px;font-size:23px}.explorer-restore{position:absolute;right:20px;bottom:20px;border:1px solid #cfbb92;background:#fffdf2;border-radius:20px;padding:10px 16px;color:#345b45;font-weight:700}.other-island-mode :is(.cloud-heading,.cloud-minimap,.station-dock,.welcome-journey,.welcome-tour-controls,.ratio-hub,.ratio-hub-pins,.cloud-resume){display:none!important}.other-island-mode .cloud-tools{top:auto;bottom:18px;left:20px;right:auto;display:flex}.other-island-mode .cloud-tools>:not(#cloudQuality){display:none!important}.other-island-mode .cloud-journey{display:none!important}.explorer-choice{border:1px solid #dac9a8;background:linear-gradient(145deg,#fffdf5,#f4ecd5);border-radius:24px;overflow:hidden;box-shadow:0 5px 0 #ddd1b4}.explorer-choice .attraction-choice{width:100%;height:auto;border:0;background:none;box-shadow:none;display:flex;flex-direction:column;text-align:left;align-items:stretch}.explorer-choice .attraction-visual{height:150px;background:radial-gradient(ellipse at center,#fffaf0 10%,#e9eddb 75%);border-radius:18px}.explorer-choice .attraction-visual b{width:32px;height:32px;border-radius:50%;display:grid;place-items:center}.explorer-choice .attraction-visual img{width:100%;height:150px;object-fit:contain}.explorer-look{margin:0 16px 14px!important}.explorer-list-actions{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap}.explorer-choice:hover{transform:translateY(-2px)}.explorer-choice:focus-within{outline:3px solid #b2955a;outline-offset:3px}.island-explorer button:focus-visible{outline:3px solid #8054a0;outline-offset:3px}
@media(max-width:650px){.explorer-intro{top:12px;left:10px;right:10px;border-radius:16px;padding:6px;gap:3px}.explorer-intro h2{font-size:15px;flex:1;margin:0 3px}.explorer-intro button{width:32px;height:32px}.explorer-map{left:10px;top:67px;width:124px;border-radius:14px}.explorer-map header{padding:4px 6px;font-size:11px}.explorer-map button{width:28px;height:28px;font-size:15px}.explorer-map small{display:none}.explorer-detail{left:10px;right:10px;bottom:10px;width:auto;max-height:260px;overflow:auto;padding:10px;border-radius:18px}.explorer-detail-top [data-art]{width:40px}.explorer-detail-top img{width:48px;height:44px}.explorer-detail-top h3{font-size:17px}.explorer-detail-top small{font-size:10px}.explorer-pin span{font-size:11px;max-width:145px}.explorer-pin b{min-width:26px;min-height:26px;font-size:12px}.explorer-restore{right:10px;bottom:10px;font-size:13px}.other-island-mode .cloud-tools{left:auto;right:10px;top:68px;bottom:auto}.explorer-choice .attraction-visual,.explorer-choice .attraction-visual img{height:110px}}
.other-island-mode :is(.cloud-title,.cloud-dock,.cloud-ride,#cloudResume){display:none!important}.explorer-list-map .explorer-land{fill:#dbe5c4}.explorer-list-map .explorer-paths path{fill:none;stroke:#cab990;stroke-width:3;stroke-dasharray:4 4}.explorer-list-map .explorer-paths .chosen{stroke:#b5782e;stroke-width:4}.explorer-list-map a circle{fill:#4b775c;stroke:#fff9e6;stroke-width:3}.explorer-list-map a[aria-current] circle{fill:#bd8543}.explorer-list-map text{fill:#4b684e;font-size:11px}.explorer-list-map a text{fill:white;text-anchor:middle;font-size:14px;font-weight:800}.explorer-list-map a:focus circle{stroke:#784fb0;stroke-width:5}
@media(max-width:650px){#cloudWorld.other-island-mode{padding-top:0;height:calc(100svh - 66px);min-height:480px;overflow:hidden}#cloudWorld.other-island-mode #cloudScene{height:100%;inset:0}#cloudWorld.other-island-mode .cloud-tools{top:68px;left:auto;right:10px;bottom:auto}.explorer-intro button{min-width:32px}.explorer-map button{min-width:28px}.explorer-list-map{display:block}.explorer-list-map>svg{max-height:170px}}
@media(prefers-reduced-motion:no-preference){.explorer-pin:hover b,.explorer-pin.hovered b{animation:explorer-wiggle .7s ease-in-out 1}.explorer-choice{transition:transform .16s ease}.explorer-detail{animation:explorer-arrive .18s ease-out}@keyframes explorer-wiggle{50%{transform:translateY(-4px) rotate(-5deg)}}@keyframes explorer-arrive{from{opacity:.5;transform:translateY(8px)}to{opacity:1;transform:none}}}

.other-island-mode #showStationDock{display:none!important}.explorer-pin{--place-color:#d6ae62}.explorer-intro h2:focus{outline:none}.island-explorer[data-static=true] .explorer-map:after{content:'ภาพ 3D ไม่พร้อม · เลือกจุดจากแผนที่ได้';display:block;padding:8px;font-size:11px;line-height:1.5;background:#f5eddb}

.explorer-pin span{width:max-content;max-width:190px;white-space:normal;text-align:center}.explorer-list-map{grid-template-columns:240px minmax(0,1fr)}.explorer-list-map>svg{width:100%;max-height:180px}
@media(max-width:650px){.explorer-pin span{max-width:160px}.explorer-list-map{display:block}.explorer-list-map>svg{max-height:150px}.explorer-intro button{width:36px;height:36px;min-width:36px}}
/* ==== avatar-studio-0413/studio.css ==== */
.avatar-studio-dialog{width:min(930px,calc(100% - 28px));padding:26px;background:#f7f6ee}
.avatar-studio-dialog #avatarTitle{font-size:clamp(23px,3.2vw,31px);line-height:1.4;margin-bottom:5px}
.avatar-studio-dialog .avatar-choices{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}
.avatar-studio-dialog .avatar-character-0413{position:relative;min-height:175px;background:linear-gradient(165deg,#fff9eb,#edf0e5);border:2px solid #e2e5db;padding:9px 8px 12px;box-shadow:0 3px 0 #d6dcce;display:flex;flex-direction:column;align-items:center;gap:4px;transition:border-color .15s}
.avatar-studio-dialog .avatar-character-0413[aria-pressed=true]{border-color:#34786c;box-shadow:0 3px 0 #34786c;background:linear-gradient(165deg,#fff7df,#dfeddb)}
.avatar-studio-dialog .avatar-character-0413[aria-pressed=true]::after{content:'✓';position:absolute;right:8px;top:8px;background:#34786c;color:#fff;width:24px;height:24px;border-radius:50%;line-height:24px;font-weight:700}
.avatar-studio-dialog .avatar-character-0413 img{height:133px;max-width:100%;object-fit:contain}
.avatar-studio-dialog .avatar-character-0413 strong{font-size:17px;line-height:1.35}
.avatar-studio-dialog .avatar-character-0413 small{font-size:11px;line-height:1.45;color:#51625a;text-wrap:balance}
.avatar-card-fallback{width:70px;height:110px;display:grid;place-items:center;font-size:32px;color:var(--avatar-accent)}
.avatar-studio{display:grid;grid-template-columns:.9fr 1.1fr;gap:22px;align-items:stretch}
.avatar-studio-stage{position:relative;isolation:isolate;border-radius:22px;background:radial-gradient(ellipse at 50% 45%,#fff8df 0%,#edf0e2 66%);text-align:center;overflow:hidden;padding:16px 15px 18px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.avatar-studio-stage::before{content:'';position:absolute;z-index:-1;width:160px;height:160px;border:1px solid #cfdbc9;border-radius:50%;top:80px;left:calc(50% - 80px)}
.avatar-studio-kicker{font-size:10px;letter-spacing:.13em;font-weight:700;color:#536b60}
.avatar-stage-art{position:relative;height:235px;width:100%;display:grid;place-items:center}
.avatar-stage-art::after{content:'';position:absolute;width:100px;height:16px;bottom:9px;border-radius:50%;background:#50674422;filter:blur(4px);z-index:-1}
.avatar-stage-art img{width:100%;height:235px;object-fit:contain}
.avatar-stage-fallback{font-size:76px;color:var(--avatar-accent)}
.avatar-studio [hidden]{display:none!important}
.avatar-studio-stage h3{font-size:25px;margin:4px 0;color:#254a3e}
.avatar-stage-detail{font-size:12px;line-height:1.5;margin:1px 0 8px;color:#526459}
.avatar-draft-note{font-size:11px;border:1px solid #d8deca;border-radius:30px;padding:5px 11px;color:#526459;background:#ffffffa8}
.avatar-studio-tools{display:flex;flex-direction:column;min-width:0;justify-content:center;gap:12px}
.avatar-studio-tools fieldset{min-width:0;border:0;padding:0;margin:0}
.avatar-studio-tools legend{font-weight:600;font-size:16px;margin-bottom:9px}
.avatar-palettes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.avatar-palettes button,.avatar-accessories button{background:#fffdf5;border:1.5px solid #d8dfd4;border-radius:12px;min-height:44px;padding:8px;font-size:12px;line-height:1.4;color:#25483d;display:flex;align-items:center;justify-content:center;gap:6px}
.avatar-palettes button{flex-direction:column}
.avatar-palettes i{width:21px;height:21px;border-radius:50%;border:2px solid #ffffff;box-shadow:0 0 0 1px #829588}
.avatar-accessories{display:flex;flex-wrap:wrap;gap:7px}
.avatar-palettes [aria-pressed=true],.avatar-accessories [aria-pressed=true]{border-color:#34786c;background:#e2edde;box-shadow:inset 0 0 0 1px #34786c}
.avatar-free-note,.avatar-storage-note{font-size:12px;line-height:1.6;color:#5b6c60;margin:0}
.avatar-studio-apply{background:#f4cc64;color:#234739;border:2px solid #244f43;border-radius:13px;box-shadow:0 3px 0 #244f43;font-size:17px;font-weight:700;min-height:49px;padding:10px 18px}
.avatar-studio-cancel{background:transparent;color:#496456;text-decoration:underline;text-underline-offset:3px;min-height:44px;font-size:13px}
.avatar-studio-dialog button:focus-visible{outline:3px solid #284c83;outline-offset:3px}
.avatar-studio-dialog #avatarStatus{font-size:13px;line-height:1.7;margin-bottom:9px}
@media(max-width:600px){.avatar-studio-dialog{padding:19px;max-height:92svh}.avatar-studio-dialog .avatar-choices{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.avatar-studio-dialog .avatar-character-0413{min-height:157px}.avatar-studio-dialog .avatar-character-0413 img{height:113px}.avatar-studio{grid-template-columns:1fr;gap:17px}.avatar-studio-stage{padding:12px;display:grid;grid-template-columns:125px 1fr;text-align:left;min-height:156px;column-gap:12px;align-items:center}.avatar-stage-art{grid-column:1;grid-row:1/5;height:145px}.avatar-stage-art img{height:145px}.avatar-studio-kicker,.avatar-studio-stage h3,.avatar-stage-detail,.avatar-draft-note{grid-column:2;width:auto;max-width:100%}.avatar-studio-kicker{font-size:8px}.avatar-studio-stage h3{font-size:23px}.avatar-stage-detail{font-size:11px}.avatar-draft-note{font-size:10px;text-align:center}.avatar-studio-stage::before{width:118px;height:118px;left:14px;top:18px}.avatar-palettes{grid-template-columns:repeat(3,minmax(0,1fr))}.avatar-studio-tools{gap:11px}}
@media(max-width:360px){.avatar-studio-dialog{padding:14px}.avatar-studio-stage{grid-template-columns:99px 1fr;column-gap:8px}.avatar-studio-kicker{letter-spacing:.06em}.avatar-studio-stage h3{font-size:21px}.avatar-stage-detail{font-size:10px}.avatar-stage-art img{max-width:99px}.avatar-studio-dialog .avatar-character-0413 small{font-size:10px}}
@media(prefers-reduced-motion:reduce){.avatar-studio-dialog *{transition:none!important;animation:none!important}}
/* ==== passport-six-0418.css ==== */
/* Original paper folios; inherited cover/house colors stay independent of progress. */
#practicePassport .passport-islands{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;overflow:visible}
#practicePassport .passport-islands button{min-width:0;white-space:normal;padding:8px 6px;min-height:44px;font-size:12px;line-height:1.45}
#practicePassport .passport-new-kicker{font-size:10px;color:var(--island-ink);letter-spacing:.06em;margin:14px 0 3px}
#practicePassport [data-passport-additional]>h3{margin:2px 0 6px;color:var(--island-ink);font-size:22px}
#practicePassport .passport-new-intro{font-size:13px;margin:6px 0 14px}
#practicePassport .passport-new-room{min-width:0;border-top:3px solid var(--island-ink);position:relative}
#practicePassport .passport-new-heading{display:flex;align-items:center;gap:10px}
#practicePassport .passport-new-heading h4{font-size:16px;margin:4px 0;line-height:1.5}
#practicePassport .passport-new-symbol{border:2px double var(--island-ink);border-radius:50%;width:42px;height:42px;display:grid;place-items:center;color:var(--island-ink);background:#faf1d8;flex-shrink:0;font-size:23px;transform:rotate(-7deg)}
#practicePassport .passport-new-room details{font-size:12px;margin:10px 0}#practicePassport .passport-new-room details p{font-size:12px;line-height:1.65}
#practicePassport .passport-new-room button{min-height:44px;width:100%;margin-top:8px}
#practicePassport .passport-new-room progress{width:100%;accent-color:var(--island-ink)}
#practicePassport .passport-discussion{border-style:dashed;opacity:.8}
#practicePassport .passport-page-turner>span{text-align:center;overflow-wrap:anywhere}
#practicePassport .passport-islands button[aria-pressed=true]{box-shadow:0 3px 0 #9f896433}
@media(max-width:580px){#practicePassport .passport-islands{grid-template-columns:repeat(2,minmax(0,1fr))}#practicePassport .passport-islands button{font-size:11px}#practicePassport [data-passport-additional]>h3{font-size:20px}#practicePassport .passport-new-room{padding:12px}#practicePassport .passport-new-heading h4{font-size:15px}}
@media(prefers-reduced-motion:reduce){#practicePassport .passport-new-symbol{transform:none}}
/* Keep the six page choices reachable while reading a long folio. */
#practicePassport .passport-islands{position:sticky;top:0;z-index:4;padding:6px 0;background:#fbf5e7;border-bottom:1px solid #cbbb99;box-shadow:0 4px 5px #cbbb9922}
/* ==== passport-report-0420.css ==== */
#passportReport .report-island-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:4px 0}#passportReport .report-island-choices label{display:flex;margin:0;padding:10px;border:1px solid #b3b59a;border-radius:12px;background:#fffaf0;min-width:0}#passportReport .report-island-choices label:has(input:checked){background:#e4efdf;border-color:#4d765e}#passportReport .report-island-choices input{flex:0 0 18px}#passportReport fieldset+fieldset{margin-top:12px}@media(max-width:380px){#passportReport .report-island-choices label{font-size:13px;padding:8px;gap:6px;align-items:flex-start}#passportReport .report-island-choices input{margin-top:3px}}@media print{#passportReport .report-controls{display:none!important}}

#passportReport .report-decoration{margin-top:12px}#passportReport .report-decoration summary{cursor:pointer;min-height:44px;display:flex;align-items:center;padding:8px 10px;border:1px dashed #9f9577;border-radius:8px;font-size:14px}#passportReport .report-decoration summary::before{content:"+";margin-right:8px}#passportReport .report-decoration[open] summary::before{content:"−"}#passportReport .report-decoration fieldset{margin-top:8px}
/* ==== island-backup-0421.css ==== */
.passport-new-backup{margin:16px 0;padding:12px;border:1px dashed #9f8c64;border-radius:12px;background:#fff8e5;color:#284743}.passport-new-backup summary{font-weight:700;min-height:44px;cursor:pointer;line-height:1.5}.passport-new-backup p{font-size:14px;line-height:1.65;overflow-wrap:anywhere}.passport-new-backup button,.passport-new-backup a{font:inherit;min-height:44px;padding:10px;border:1px solid #789185;border-radius:8px;background:#e4edde;color:#284743;max-width:100%;overflow-wrap:anywhere}.passport-new-backup a{display:block;margin:8px 0;text-decoration:underline}.passport-new-backup [hidden]{display:none!important}.passport-new-backup button:disabled{opacity:.55}.new-backup-file{display:block;margin:12px 0}.new-backup-file input{display:block;max-width:100%;margin-top:8px}.new-backup-unit{padding:12px;margin:10px 0;border:1px solid #c0b795;border-radius:10px;background:#fffdf4}.new-backup-unit h4{margin:0;font-size:16px}.new-backup-unit p{white-space:pre-line}.passport-new-backup :is(button,input,summary,a):focus-visible{outline:3px solid #ad7b32;outline-offset:3px}@media(max-width:380px){.passport-new-backup{padding:10px}.new-backup-unit{padding:8px}.new-backup-unit button{width:100%;font-size:14px}}
/* ==== explorer-journey-r2b/style.css ==== */
.ej-entry,.ej-dialog{font-family:inherit;color:#254c42}.ej-entry{max-width:1120px;margin:20px auto;padding:14px 22px;background:#edf1dc;border:1px solid #cdd7bd;border-radius:24px;display:flex;align-items:center;justify-content:space-between;gap:14px}.ej-entry-copy{font-weight:600}.ej-entry button,.ej-dialog button{font:inherit;min-height:48px;cursor:pointer;border:1px solid #bdcdbb;border-radius:14px;padding:10px 14px;color:#294f43;background:#fffdf0;line-height:1.45}.ej-entry button,.ej-dialog .ej-primary{background:#286953;color:#fffdf0;font-weight:700}.ej-dialog{width:min(660px,calc(100vw - 24px));max-width:660px;height:min(760px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);margin:auto;padding:18px;border:1px solid #b5c7b5;border-radius:26px;background:#fffcee;box-sizing:border-box;overflow:hidden;box-shadow:0 22px 90px #12352744}.ej-dialog[open]{display:flex;flex-direction:column}.ej-dialog::backdrop{background:#12352780;backdrop-filter:blur(4px)}.ej-dialog *{box-sizing:border-box}.ej-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-shrink:0}.ej-dialog h2{font-size:clamp(21px,4.8vw,28px);margin:0;line-height:1.4}.ej-dialog .ej-close{font-size:25px;min-width:48px;padding:4px;background:#eef2df}.ej-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0;margin:8px 0}.ej-progress{font-size:14px;margin:0;background:#ebefdb;padding:5px 10px;border-radius:18px;white-space:nowrap}.ej-dialog .ej-skip{border:0;background:transparent;text-decoration:underline;text-underline-offset:4px;padding:8px;font-size:14px}.ej-scroll{overflow:auto;min-height:0;flex:1;padding:3px 4px 12px;scroll-padding:8px;overscroll-behavior:contain}.ej-status{margin:0 0 8px;color:#705c34;font-size:13px;line-height:1.5}.ej-status:empty{display:none}.ej-dialog h3{font-size:20px;margin:6px 0 8px;line-height:1.45}.ej-person{display:flex;align-items:center;gap:16px;background:#f0f1dd;padding:14px;border-radius:20px;margin:0 0 16px}.ej-avatar{width:82px;flex-shrink:0}.ej-avatar svg{width:100%;display:block}.ej-person strong{display:block;font-size:22px;margin-bottom:8px}.ej-name-label{display:block;font-weight:600}.ej-name-label input{display:block;width:100%;font:inherit;min-height:50px;padding:10px 12px;border:1px solid #a8bda7;border-radius:14px;background:#fff;color:#254c42;margin:8px 0}.ej-note{font-size:13px;color:#617465;line-height:1.55;margin:6px 0 12px}.ej-options,.ej-missions{display:grid;gap:8px}.ej-options button,.ej-missions button{text-align:left;display:grid;gap:3px}.ej-options small,.ej-missions span,.ej-missions small{font-size:13px;font-weight:400}.ej-options button[aria-pressed=true],.ej-intents button[aria-pressed=true],.ej-missions .ej-recommended{border:2px solid #286953;background:#eaf0d8}.ej-intents{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}.ej-intents button{padding:9px;font-size:14px}.ej-options+h3{margin-top:16px}.ej-missions button{font-weight:700;font-size:18px}.ej-missions .ej-recommended small{color:#315a45}.ej-why{font-size:14px;line-height:1.55;margin:0 0 12px}.ej-foot{display:block;flex-shrink:0;width:100%;margin:0;gap:0;border-top:1px solid #dce2ca;padding:10px 0 0;background:#fffcee}.ej-actions{display:flex;gap:8px;align-items:stretch}.ej-actions button{flex:1;min-width:0}.ej-actions .ej-primary{flex:1.7}.ej-foot-note{display:block;text-align:center;color:#617465;font-size:12px;margin-top:8px;line-height:1.45}.ej-dialog button:disabled{opacity:.55;cursor:default}.ej-dialog button:focus-visible,.ej-name-label input:focus-visible,.ej-dialog h2:focus-visible,.ej-scroll:focus-visible{outline:3px solid #ab7221;outline-offset:2px}.ej-dialog h2:focus-visible{outline-offset:0}#avatarDialog[data-explorer-return=r2a] .avatar-studio-apply{font-weight:700}
@media(max-width:480px){.ej-entry{margin:12px;padding:14px;flex-direction:column;align-items:stretch}.ej-dialog{padding:12px;border-radius:20px}.ej-person{padding:12px;gap:12px}.ej-avatar{width:64px}.ej-person button{font-size:14px;padding:9px}.ej-options button{padding:9px 12px}.ej-intents{grid-template-columns:1fr}.ej-intents button{text-align:left;min-height:48px}.ej-meta{gap:4px}.ej-progress{font-size:12px;padding:5px 8px}.ej-dialog .ej-skip{font-size:13px;padding:8px 4px}.ej-actions button{font-size:14px;padding:10px}.ej-foot-note{font-size:11px}}
@media(max-height:450px){.ej-dialog{padding:10px}.ej-dialog h2{font-size:21px}.ej-head .ej-close{min-height:40px}.ej-meta{margin:2px 0}.ej-dialog .ej-skip{min-height:40px}.ej-foot{padding-top:6px}.ej-foot-note{margin-top:4px;font-size:11px}}
@media(prefers-reduced-motion:reduce){.ej-dialog::backdrop{backdrop-filter:none}}
.ej-r2b .ej-missions button{padding:0;overflow:hidden;display:block}.ej-mission-art{display:block;width:100%;height:104px;object-fit:cover;border-bottom:1px solid #ccd7bd}.ej-mission-copy{padding:10px 13px;display:grid;gap:3px}.ej-mission-copy strong{font-size:18px}.ej-r2b .ej-missions{gap:12px}.ej-r2b .ej-recommended{box-shadow:0 2px 0 #28695333}@media(min-width:600px){.ej-r2b .ej-missions{grid-template-columns:1fr 1fr}.ej-mission-art{height:116px}}
/* ==== explorer-journey-r3/style.css ==== */
.r3-home{margin:0 auto 20px;padding:22px;max-width:920px;border:1px solid #bfcdb9;border-radius:24px;background:#fffbed;color:#284e41;box-sizing:border-box}.r3-home h2{font-size:1.4rem;margin:8px 0 14px}.r3-home p{line-height:1.65;margin:12px 0}.r3-home small{display:block;line-height:1.6}.r3-actions,.r3-intents{display:flex;flex-wrap:wrap;gap:8px}.r3-home button,.r3-home a,.r3-kitchen button,.r3-kitchen a{min-height:44px;padding:10px 14px;border:1px solid #92ab97;border-radius:14px;color:#254b3d;background:#fffbed;font:inherit;box-sizing:border-box;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.r3-home [aria-pressed=true]{background:#dceacf;border-color:#306b56;box-shadow:inset 0 0 0 1px #306b56}.r3-home a{background:#286e59;color:#fffbed}.r3-home :focus-visible,.r3-kitchen :focus-visible{outline:3px solid #b66e30;outline-offset:3px}.r3-kitchen{position:absolute;z-index:4;top:76px;right:18px;width:min(360px,calc(100% - 36px));box-sizing:border-box;background:#fffbedee;padding:10px;border-radius:16px;color:#254b3d}.r3-kitchen p{font-size:12px;line-height:1.5;margin:8px 0 0}.r3-kitchen button:disabled{opacity:.55;cursor:default}.r3-kitchen [hidden],.r3-home [hidden]{display:none!important}@media(max-width:600px){.r3-home{margin:0 12px 16px;padding:16px}.r3-intents button{flex:1 1 100%}.r3-actions{gap:6px}.r3-home .r3-actions>*{flex:1 1 100%}.r3-kitchen{top:70px;right:10px;width:calc(100% - 20px);padding:8px}.r3-kitchen .r3-actions>*{flex:1 1 auto;padding:8px;font-size:12px}.r3-kitchen p{max-height:3em;overflow:auto}.r3-kitchen:has(+.lanterns){top:70px}}@media(max-height:480px){.r3-kitchen{top:65px;width:300px}.r3-kitchen p{display:none}}
/* Keep the new shortcuts out of the original task, camera and answer surfaces. */
#game[data-phase=intro] .r3-kitchen,#game[data-phase=complete] .r3-kitchen{display:none}
#game:has(.r3-kitchen) .camera-tools{top:205px}
@media(max-width:700px){#game:has(.r3-kitchen){grid-template-rows:auto auto auto minmax(170px,1fr) auto}.r3-kitchen{position:relative;grid-row:2;top:auto;right:auto;width:calc(100% - 24px);margin:47px auto 0}.r3-kitchen p{display:none}#game:has(.r3-kitchen) .objective{grid-row:3;margin-top:12px}#game:has(.r3-kitchen) .scene-space{grid-row:4}#game:has(.r3-kitchen) .play{grid-row:5}#game:has(.r3-kitchen) .camera-tools{top:60px}}
@media(max-height:480px) and (min-width:701px){#game:has(.r3-kitchen) .camera-tools{top:140px}}
@media(max-height:480px) and (min-width:701px){.r3-kitchen{width:360px}#game:has(.r3-kitchen) .camera-tools{top:145px}}
/* Short landscape pages scroll in reading order, including an expanded hint. */
@media(max-height:480px) and (min-width:701px){#game:has(.r3-kitchen){display:grid;grid-template-rows:auto auto auto minmax(170px,1fr) auto;padding-bottom:16px}.r3-kitchen{position:relative;grid-row:2;top:auto;right:auto;width:calc(100% - 56px);margin:12px auto 0}#game:has(.r3-kitchen) header{grid-row:1}#game:has(.r3-kitchen) .objective{position:relative;grid-row:3;top:auto;left:auto;margin:12px 28px 0;max-width:335px}#game:has(.r3-kitchen) .scene-space{grid-row:4;height:auto;min-height:170px}#game:has(.r3-kitchen) .play{position:relative;grid-row:5;right:auto;bottom:auto;width:calc(100% - 56px);max-width:400px;margin:0 auto}#game:has(.r3-kitchen) .camera-tools{top:165px}}
/* ==== explorer-profiles-01/style.css ==== */
.xp-entry{max-width:1120px;margin:14px auto;padding:16px 20px;background:#e9efdc;border:1px solid #b6c7ac;border-radius:20px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;box-sizing:border-box;color:#244f3d}.xp-entry p{margin:0;flex:1 1 250px;line-height:1.6}.xp-entry button,.xp-dialog button{font:inherit;min-height:44px;padding:10px 16px;border:1px solid #9cb394;background:#fffbed;color:#244f3d;border-radius:13px;cursor:pointer}.xp-entry button:first-of-type{background:#2d7156;color:#fffbed}.xp-dialog{box-sizing:border-box;width:min(600px,calc(100% - 24px));max-height:calc(100svh - 24px);overflow:auto;border:1px solid #afc4a5;border-radius:24px;background:#fffbed;color:#244f3d;padding:20px;font:inherit}.xp-dialog::backdrop{background:#173c3870}.xp-dialog header{position:static;padding:0;display:flex;align-items:center;justify-content:space-between;gap:12px}.xp-dialog h2{font-size:22px;margin:0}.xp-dialog section{display:grid;gap:12px;margin:16px 0}.xp-dialog p,.xp-dialog small{line-height:1.65;margin:0}.xp-dialog small{display:block;font-size:12px}.xp-dialog input{display:block;width:100%;box-sizing:border-box;font:inherit;min-height:44px;padding:10px;border:1px solid #9cb394;border-radius:10px;margin-top:8px}.xp-looks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.xp-looks button{padding:8px;min-width:0}.xp-looks span,.xp-row>span{display:block}.xp-looks svg{width:70px;max-width:100%;height:85px}.xp-looks [aria-pressed=true]{background:#dce8cd;border:2px solid #347657}.xp-row{display:grid;grid-template-columns:52px minmax(0,1fr);gap:5px 10px;align-items:center}.xp-row>span{grid-row:1/3}.xp-row svg{width:50px;height:64px}.xp-row button{text-align:left;overflow-wrap:anywhere}.xp-entry :focus-visible,.xp-dialog :focus-visible{outline:3px solid #b26d32;outline-offset:3px}@media(max-width:600px){.xp-entry{margin:12px;padding:14px}.xp-entry button{flex:1 1 100%}.xp-dialog{padding:16px}.xp-looks{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* ==== mathworld-island-navigation-52/style.css ==== */
/* Mission choices only; no world/scene/dialog or learning-state changes. */
#missions .mission-card :is(a.card-start, button.card-start, button.tutor-entry) {
  min-height: 44px;
  box-sizing: border-box;
  white-space: normal;
  overflow-wrap: anywhere;
}
#missions .mission-card a.card-start {
  display: flex;
  align-items: center;
}
#missions .mission-card :is(a, button):focus-visible {
  outline: 3px solid #155b55;
  outline-offset: 3px;
}
#missions .island-question { font-weight: 600; color: #315e56; }
#missions .island-choice-note { max-width: 65ch; line-height: 1.7; }
#missions .mission-card { min-width: 0; }
/* ==== root-touch-targets-70/style.css ==== */
/* Two corroborated root controls only; preserve font, motion and handlers. */
#cloudWorld #toggleMinimap {
  min-width: 44px;
  min-height: 44px;
}

.park-finale-entry > button[data-park-open="tower"] {
  min-width: 44px;
  min-height: 44px;
}
/* ==== root-boot-layout-75/style.css ==== */
/* Keep the loading/name chip and discovery button inside the narrow header. */
@media (max-width: 420px) {
  .header #learnerOpen {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1 1 0%;
    min-width: 44px;
    gap: 4px;
  }
  .header #learnerLabel {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .header #journalOpen {
    flex: 0 0 60px;
    width: 60px;
    min-width: 60px;
    min-height: 44px;
    height: 44px;
    padding: 0 4px;
  }
}
/* ==== ai-island-harbor-11/entry.css ==== */
.ai-harbor-entry{margin:24px auto;padding:24px;max-width:1160px;background:#f8efd9;border:1px solid #c3a56d;border-radius:20px;color:#234e4a}.ai-harbor-entry h2{margin:6px 0}.ai-harbor-entry a{display:inline-flex;min-height:48px;align-items:center;padding:12px 18px;border:1px solid #af8648;border-radius:14px;background:#286b65;color:#fff8df;text-decoration:none}.ai-harbor-entry p{line-height:1.8}.ai-harbor-entry small{display:block;margin:12px 0}@media(max-width:600px){.ai-harbor-entry{margin:16px 12px;padding:18px}}
/* ==== ai-station128/style.css ==== */
#aiStation128,#aiReturn128{--ai128-ink:#284e4a;--ai128-paper:#fff8e8;box-sizing:border-box;max-width:min(650px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;background:var(--ai128-paper);color:var(--ai128-ink);border:2px solid #b99a65;border-radius:24px;padding:24px;font-family:inherit;line-height:1.6}
#aiStation128::backdrop,#aiReturn128::backdrop{background:#182c2f99}
#aiStation128 h2,#aiReturn128 h2{margin:.3em 0;font-size:clamp(1.35rem,4vw,1.9rem);line-height:1.35}
.ai128-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.ai128-portraits{display:flex;gap:16px;justify-content:center;height:100px;margin:12px 0}
.ai128-portraits img{height:100%;width:auto;max-width:40%;object-fit:contain;position:static}
.ai128-subtitle{font-weight:700;color:#53755e;margin:0}
.ai128-actions{display:flex;gap:10px;flex-wrap:wrap;margin-block:16px}
#aiStation128 button,#aiStation128 a,#aiReturn128 button{box-sizing:border-box;font:inherit;min-height:44px;padding:10px 16px;border:1px solid #769087;border-radius:14px;background:#fffdf4;color:#244e46;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;white-space:normal}
#aiStation128 .cloud-primary,#aiReturn128 .primary{background:#295e51;color:white}
#aiStation128 button:disabled,#aiReturn128 button:disabled{opacity:.55;cursor:default}
#aiStation128 [hidden],#aiReturn128 [hidden]{display:none!important}
#aiStation128 :focus-visible,#aiReturn128 :focus-visible{outline:3px solid #a85d24;outline-offset:3px}
#aiStation128 details{border-top:1px solid #cabd9f;padding-top:12px}#aiStation128 summary{cursor:pointer;min-height:44px}
#aiReturn128 button{display:block;width:100%;margin-block:10px}
@media(max-width:450px){#aiStation128,#aiReturn128{padding:16px}.ai128-actions{flex-direction:column}.ai128-portraits{height:72px}}
/* ==== cloud-landing130/style.css ==== */
/* A world-first shell. Existing game modules retain interaction and storage ownership. */
html[data-landing="130"]{--landing-paper:#fff9e9;--landing-ink:#234d43;--landing-line:#b5bba0;--landing-header:72px;scroll-padding-top:80px}
html[data-landing="130"] .header{position:absolute;inset:0 0 auto;z-index:25;height:var(--landing-header);margin:0;padding:10px 22px;gap:12px;border:0;background:linear-gradient(#fff9e9ed,#fff9e9d9);box-shadow:0 1px 0 #8b9f8640}
html[data-landing="130"] .header .brand{font-size:23px;margin-right:auto}html[data-landing="130"] .header nav{margin-left:0;gap:20px}html[data-landing="130"] .header nav a[href="#how"]{display:none}
html[data-landing="130"] .header button{min-height:44px;border:1px solid var(--landing-line);border-radius:14px;background:var(--landing-paper);color:var(--landing-ink);font:inherit;padding:8px 14px;white-space:nowrap}
html[data-landing="130"] #landing130Explorer{max-width:210px;overflow:hidden;text-overflow:ellipsis;background:#285b4b;color:#fff9e9;border-color:#285b4b}
html[data-landing="130"] .header #journalOpen{gap:7px;font-size:13px}
html[data-landing="130"] #cloudWorld{height:100vh;height:100dvh;--mobile-world-height:100dvh;min-height:560px;max-height:none;padding:0;display:block;overflow:hidden;margin:0;border-radius:0}
html[data-landing="130"] #cloudScene{position:absolute;inset:0;height:100%;width:100%}
html[data-landing="130"] #cloudWorld .cloud-title{top:calc(var(--landing-header) + 22px);left:26px;max-width:330px;pointer-events:none}
html[data-landing="130"] #cloudWorld .cloud-title h1{font-size:clamp(28px,3vw,40px);line-height:1.3;margin:6px 0}html[data-landing="130"] .cloud-title .cloud-eyebrow{font-size:9px}
html[data-landing="130"] #cloudWorld .cloud-tools{display:none!important;top:calc(var(--landing-header) + 10px);right:18px;width:auto;max-width:360px;padding:10px;border:1px solid var(--landing-line);border-radius:18px;background:var(--landing-paper);gap:8px;z-index:20}
html[data-landing="130"] #cloudWorld.landing130-tools-open .cloud-tools{display:flex!important;flex-wrap:wrap}
html[data-landing="130"] #cloudWorld .cloud-tools button{min-height:44px;min-width:44px}
html[data-landing="130"] #cloudWorld .welcome-journey{top:auto;bottom:28px;left:24px;width:310px;max-width:calc(100% - 48px);padding:12px 16px;background:#fff9e9f2}
html[data-landing="130"] .welcome-actions{display:flex;flex-direction:row;align-items:center;gap:8px}html[data-landing="130"] .welcome-actions button{flex:1;white-space:nowrap}html[data-landing="130"] .welcome-brand{font-size:10px}html[data-landing="130"] .welcome-journey h2{font-size:16px}
html[data-landing="130"] #cloudWorld #cloudJourney{top:auto;bottom:8px;left:24px;right:24px;transform:none;width:auto;text-align:center;font-size:11px;pointer-events:none}
html[data-landing="130"] #cloudWorld .cloud-minimap{top:calc(var(--landing-header) + 16px);bottom:auto;left:auto;right:20px}
html[data-landing="130"] #cloudWorld.landing130-tools-open .cloud-minimap{top:calc(var(--landing-header) + 140px)}
html[data-landing="130"] #cloudWorld #stationDock{position:absolute;top:auto;bottom:34px;margin:0;left:auto;right:18px;max-width:420px}
html[data-landing="130"] #cloudWorld #showStationDock{top:auto;bottom:36px;right:20px}
html[data-landing="130"] #cloudWorld .camera-picker,html[data-landing="130"] #cloudWorld .sky-picker{top:calc(var(--landing-header) + 140px);max-height:calc(100dvh - 240px);overflow:auto}
html[data-landing="130"] main>.ej-entry,html[data-landing="130"] main>.xp-entry,html[data-landing="130"] main>.r3-home{display:none}
.landing130-drawer{box-sizing:border-box;width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 28px);overflow:auto;margin:14px 14px 14px auto;padding:22px;border:1px solid var(--landing-line);border-radius:24px;background:var(--landing-paper);color:var(--landing-ink);font:inherit}
.landing130-drawer::backdrop{background:#173d4270;backdrop-filter:blur(3px)}
.landing130-drawer>header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.landing130-drawer h2{font-size:24px}.landing130-drawer h3{font-size:17px;margin:16px 0 8px}.landing130-drawer>p{font-size:13px;line-height:1.7}.landing130-drawer>section{border-top:1px solid #d8d4bb;margin-top:16px;padding-top:6px}
.landing130-drawer button{font:inherit;min-height:44px;padding:9px 13px;border-radius:12px;border:1px solid var(--landing-line);background:#f4f0db;color:var(--landing-ink)}
.landing130-drawer :is(.xp-entry,.ej-entry,.r3-home,#cloudResume){position:static!important;display:block;width:auto!important;max-width:none;margin:10px 0!important;padding:12px;transform:none;box-sizing:border-box}
.landing130-drawer .xp-entry button{margin:6px 6px 0 0}.landing130-drawer #cloudResume:empty{display:none}.landing130-drawer #cloudResume .return-card{display:block;width:auto;margin:0}.landing130-drawer .r3-actions{display:flex;flex-wrap:wrap;gap:8px}.landing130-drawer :is(button,a):focus-visible{outline:3px solid #a66f22;outline-offset:3px}
#landing130Alert:not([hidden]),html[data-landing="130"] [data-save-status]:not([hidden]){position:fixed;z-index:40;bottom:12px;left:12px;right:12px;padding:12px;background:#fff0cf;color:#5b3017;border:2px solid #ad7136;border-radius:12px;font-size:14px}#landing130Alert button{min-height:44px;font:inherit}
@media(max-width:650px){html[data-landing="130"]{--landing-header:64px}html[data-landing="130"] .header{padding:8px 10px;gap:6px}html[data-landing="130"] .header .brand{font-size:0;gap:0;margin-right:auto}html[data-landing="130"] .header .brand small{display:none}html[data-landing="130"] .header .brand-mark{width:34px;height:34px}html[data-landing="130"] .header button{padding:8px 10px;font-size:12px}html[data-landing="130"] #landing130Explorer{max-width:135px;flex:0 1 auto}html[data-landing="130"] .header #journalOpen{width:44px;min-width:44px;flex:0 0 44px;padding:6px}html[data-landing="130"] #journalOpen span:not([aria-hidden]),html[data-landing="130"] #journalCount{display:none}html[data-landing="130"] #cloudWorld{min-height:520px}html[data-landing="130"] #cloudWorld .cloud-title{top:82px;left:16px;max-width:250px}html[data-landing="130"] #cloudWorld .cloud-title h1{font-size:28px}html[data-landing="130"] #cloudWorld .cloud-title p{font-size:12px}html[data-landing="130"] #cloudWorld .cloud-minimap{top:84px;right:12px;left:auto}html[data-landing="130"] #cloudWorld .welcome-journey{left:12px;bottom:30px;width:300px;max-width:calc(100% - 24px)}html[data-landing="130"] #cloudWorld .welcome-journey h2{font-size:15px}html[data-landing="130"] #cloudWorld #stationDock{max-width:calc(100% - 24px);left:12px;right:12px;bottom:36px}html[data-landing="130"] #cloudWorld #rideTram{top:auto;bottom:160px;left:12px}html[data-landing="130"] #cloudWorld .welcome-tour-controls{top:auto;bottom:50px}html[data-landing="130"] #cloudWorld .cloud-tools{width:min(290px,calc(100vw - 24px))}html[data-landing="130"] #cloudWorld .cloud-tools .cloud-tool{width:44px}.landing130-drawer{padding:16px;margin:12px}.landing130-drawer h2{font-size:21px}}
/* Legacy mobile dock used an !important in-flow layout below a shorter canvas. */
@media(max-width:650px){html[data-landing="130"] #cloudWorld #stationDock{position:absolute!important;inset:auto 12px 36px!important;max-height:calc(100dvh - 280px);overflow:auto}html[data-landing="130"] #cloudWorld:not(.cab-visible) #rideTram{bottom:220px}html[data-landing="130"] #cloudWorld.station-dock-hidden:not(.cab-visible) #rideTram{bottom:100px}}
@media(max-width:650px){html[data-landing="130"] #cloudWorld:not(.cab-visible) #rideTram{top:auto!important}html[data-landing="130"] #cloudWorld .cloud-enter-link{display:none}}
@media(prefers-reduced-motion:reduce){html[data-landing="130"]{scroll-behavior:auto}.landing130-drawer,html[data-landing="130"] .header button{transition:none}}

/* BEGIN local93 island HUD lane */
/* Local93: retain the world-first header; reserve a separate island HUD lane. */
html[data-landing="130"] #cloudWorld {
  --island-hud-top: calc(var(--landing-header) + max(12px, env(safe-area-inset-top, 0px)));
}
html[data-landing="130"] #cloudWorld :is(.explorer-intro, .park-intro) {
  top: var(--island-hud-top);
}
html[data-landing="130"] #cloudWorld .explorer-intro {
  max-width: calc(100% - 40px);
}
html[data-landing="130"] #cloudWorld .explorer-intro h2 {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
html[data-landing="130"] #cloudWorld .explorer-intro button {
  width: 44px;
  min-width: 44px;
  height: 44px;
  min-height: 44px;
  flex: 0 0 44px;
}
html[data-landing="130"] #cloudWorld .explorer-map,
html[data-landing="130"] #cloudWorld.island-mode #cloudMinimap {
  top: calc(var(--island-hud-top) + 70px);
}
html[data-landing="130"] #cloudWorld.other-island-mode .cloud-tools {
  top: calc(var(--island-hud-top) + 70px);
  left: auto;
  bottom: auto;
  width: auto;
}
@media (max-width: 650px) {
  html[data-landing="130"] #cloudWorld .explorer-intro {
    max-width: calc(100% - 20px);
  }
  html[data-landing="130"] #cloudWorld .explorer-intro h2 {
    flex: 1;
  }
}
/* ==== rally-grid-ui-20261026/loading.css ==== */
/* Visible before the module graph arrives. No synthetic percentages or timers. */
.nobi-load-wheel{transform-box:fill-box;transform-origin:center;animation:nobi-wheel .75s linear infinite}
@keyframes nobi-wheel{to{transform:rotate(360deg)}}
.nobi-load-feedback{--load-cyan:#24d9e5;--load-track:#244758;line-height:1.5}
.nobi-load-feedback progress{display:block;appearance:none;width:100%;height:9px;border:0;border-radius:9px;overflow:hidden;background:var(--load-track);accent-color:var(--load-cyan)}
.nobi-load-feedback progress::-webkit-progress-bar{background:var(--load-track);border-radius:9px}
.nobi-load-feedback progress::-webkit-progress-value{background:linear-gradient(90deg,#18b8cc,#a5ffed);border-radius:9px}
.nobi-load-feedback progress::-moz-progress-bar{background:#24d9e5;border-radius:9px}
.nobi-load-feedback progress:not([value]){background:linear-gradient(90deg,var(--load-track) 0 25%,var(--load-cyan) 45% 55%,var(--load-track) 75%) 0/220% 100%;animation:nobi-load-strip 1.35s ease-in-out infinite alternate}
.nobi-load-feedback progress:not([value])::-webkit-progress-bar{background:transparent}
@keyframes nobi-load-strip{to{background-position:100% 0}}
#rally-boot-0597{background:radial-gradient(ellipse at 70% 10%,#063e53,transparent 65%),#050e1d;color:#f1f6fa}
#rally-boot-0597 .rally-boot-card-0597{background:#0c1b2a;border:1px solid #2f6779;border-top:3px solid #25dce7;border-radius:22px;box-shadow:0 24px 80px #0008}
#rally-boot-0597 .rally-boot-brand-0597,#rally-boot-0597 .rally-boot-car-0597{color:#54e6e8}
#rally-boot-0597 p{color:#c5d7e1}#nobi-boot-count{font-size:.85rem;margin:10px 0!important;color:#a9d9df!important;font-variant-numeric:tabular-nums}
#rally-boot-0597 .rally-boot-links-0597 a{border-color:#46758a;background:#152f43;color:#f3f8ff}
#rally-boot-0597 .rally-boot-links-0597 a:first-child{background:#ffd185;color:#18263b;border-color:#ffe4a7}
#rally-boot-0597[data-load-feedback=failed] :is(.nobi-load-wheel,progress){animation:none!important}
#rally-boot-0597[data-load-feedback=failed] progress{visibility:hidden}
.nobi-cloud-loading{position:absolute;z-index:3;right:4%;top:160px;width:min(300px,42%);box-sizing:border-box;padding:14px 18px;border:1px solid #a5c7b7;border-radius:18px;background:#fffaf0ed;color:#245846;box-shadow:0 8px 25px #23574314;pointer-events:none;--load-track:#d3e8e0;--load-cyan:#21857a}
.nobi-cloud-loading svg{width:105px;height:55px;display:block;margin:0 auto 4px;color:#217b77}
.nobi-cloud-loading strong{font-size:15px;display:block;text-align:center}.nobi-cloud-loading p{font-size:12px;margin:4px 0 10px;text-align:center}
#cloudWorld:is([data-graphics-mode=3d],[data-graphics-mode=static]) .nobi-cloud-loading{display:none}
.nobi-course-feedback{display:flex;gap:16px;align-items:center;padding:10px 0}.nobi-course-feedback progress{flex:1}.nobi-load-orbit{font-size:30px;color:#18b8cc;animation:nobi-wheel 1.6s linear infinite}
.nobi-course-feedback[data-state=failed] .nobi-load-orbit{animation:none}.nobi-course-feedback[data-state=failed] progress{visibility:hidden}
@media(max-width:650px){.nobi-cloud-loading{top:155px;right:4%;width:42%;padding:8px 10px}.nobi-cloud-loading svg{width:76px;height:40px}.nobi-cloud-loading strong{font-size:12px}.nobi-cloud-loading p{font-size:11px}}
@media(prefers-reduced-motion:reduce){.nobi-load-wheel,.nobi-load-orbit,.nobi-load-feedback progress{animation:none!important}}
body:has(#quiet:checked) :is(.nobi-load-wheel,.nobi-load-orbit,.nobi-load-feedback progress){animation:none!important}
#cloudWorld:is([data-graphics-mode=3d],[data-graphics-mode=static]) .nobi-cloud-loading{display:none!important}
#cloudWorld .city-learning-entry .nobi-cloud-loading{position:static!important;inset:auto!important;width:100%;max-width:none;display:grid;grid-template-columns:76px minmax(0,1fr);gap:3px 10px;padding:0 0 14px;margin:0 0 12px;background:transparent;border:0;border-bottom:1px solid #ccdcd1;border-radius:0;box-shadow:none}
#cloudWorld .city-learning-entry .nobi-cloud-loading svg{grid-row:1/4;width:76px;height:48px;margin:auto}
#cloudWorld .city-learning-entry .nobi-cloud-loading strong{font-size:14px;text-align:left;line-height:1.4}
#cloudWorld .city-learning-entry .nobi-cloud-loading p{font-size:12px;margin:0;text-align:left;line-height:1.5}
#cloudWorld .city-learning-entry .nobi-cloud-loading progress{grid-column:2;height:6px;margin-top:3px}
/* ==== entry-clarity-20261028.css ==== */
/* Parallel learning/exploration entry; retain existing city and lesson ownership. */
html[data-landing="130"] #cloudWorld .welcome-journey:not(.welcome-minimized){
  --entry-paper:#fff9e9;--entry-ink:#234d43;--entry-action:#285b4b;
  width:330px;max-width:calc(100% - 32px);padding:12px;
  color:var(--entry-ink);background:var(--entry-paper);
}
html[data-landing="130"] .welcome-actions{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:8px}
html[data-landing="130"] .welcome-actions [data-welcome-balance]{
  grid-column:1 / -1;min-height:44px;padding:10px 14px;font-size:16px;font-weight:600;
  background:var(--entry-action);color:var(--entry-paper);border-color:var(--entry-action);
}
html[data-landing="130"] .welcome-actions [data-welcome-tour]{
  min-height:44px;min-width:0;padding:8px 10px;background:var(--entry-paper);
  color:var(--entry-ink);border-color:#8d9f84;box-shadow:none;
}
html[data-landing="130"] .welcome-actions [data-welcome-tour] strong{font-size:14px;line-height:1.5}
html[data-landing="130"] .welcome-actions [data-welcome-tour] svg{display:none}
html[data-landing="130"] .welcome-actions [data-welcome-choose]{min-height:44px;font-size:14px;padding:8px}
html[data-landing="130"] #welcomeJourney button:focus-visible{outline:3px solid var(--entry-ink);outline-offset:3px}
@media(max-width:650px){
  html[data-landing="130"] #cloudWorld .welcome-journey:not(.welcome-minimized){top:auto;bottom:28px;left:12px;right:auto;width:330px;max-width:calc(100% - 24px);padding:10px 12px}
  html[data-landing="130"] .welcome-card-head{margin-bottom:8px}
  html[data-landing="130"] .welcome-card-head>div:first-child{display:block}
  html[data-landing="130"] .welcome-card-tools{position:static}
  html[data-landing="130"] .welcome-brand{display:none}
  html[data-landing="130"] .welcome-journey h2{font-size:16px;line-height:1.5}
}
@media(max-height:500px) and (min-width:500px){
  html[data-landing="130"] #cloudWorld[data-graphics-mode="3d"]{min-height:0}
  html[data-landing="130"] #cloudWorld .welcome-journey:not(.welcome-minimized){top:auto;bottom:16px;left:12px;right:auto;width:520px;max-width:calc(100% - 24px);padding:8px 56px 8px 8px}
  html[data-landing="130"] .welcome-card-head{margin:0}
  html[data-landing="130"] .welcome-card-head>div:first-child{display:none}
  html[data-landing="130"] .welcome-card-tools{position:absolute;top:8px;right:8px}
  html[data-landing="130"] .welcome-actions{grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr) minmax(0,.8fr);gap:6px}
  html[data-landing="130"] .welcome-actions [data-welcome-balance]{grid-column:auto;font-size:14px;padding:8px}
  html[data-landing="130"] .welcome-actions [data-welcome-tour]{padding:8px 4px}
}
/* ==== lab-touch-refine-20261029.css ==== */
/* Larger controls in the existing balance lab on narrow viewports. */
@media (max-width: 1024px) {
  #lab#lab #labSceneHost .scene-controls button {
    min-width: 44px;
    min-height: 44px !important;
    height: 44px;
  }
}
/* ==== hint-controls-refine-20261029.css ==== */
/* Preserve the existing card and lab interactions while enlarging controls. */
@media (max-width: 1024px) {
  #lab .hint-deck-top .card-customize,
  #lab .lab-finale-link { min-width: 44px; min-height: 44px; }
  #cardCustomizer .close-button { width: 44px; height: 44px; }
  #cardCustomizer h2 { margin-right: 50px; }
}
/* ==== prediction-layout-20261029.css ==== */
/* Keep the model and prediction choices together on narrow screens. */
@media (max-width: 760px) {
  #lab[data-phase="predict"] #labSceneHost { height: 150px; min-height: 0; max-height: none; }
  #lab[data-phase="predict"] .manipulatives { padding: 7px 14px; gap: 14px; }
  #lab[data-phase="predict"] .manipulatives strong { font-size: 13px; margin-bottom: 4px; }
  #lab[data-phase="predict"] .manipulatives > div > div { gap: 2px; }
  #lab[data-phase="predict"] .math-token { width: 16px; height: 16px; font-size: 11px; }
  #lab[data-phase="predict"] .lab-panel { padding: 12px 16px 24px; }
  #lab[data-phase="predict"] .lab-panel h3 { font-size: 22px; line-height: 1.5; margin: 0 0 6px; }
  #lab[data-phase="predict"] .lab-panel h3 br { display: none; }
  #lab[data-phase="predict"] .panel-intro { font-size: 16px; line-height: 1.6; margin: 4px 0 12px; }
}
/* ==== experiment-layout-20261029.css ==== */
/* Keep the model and operation controls closer in the experiment phase. */
@media (max-width: 760px) {
  #lab[data-phase="experiment"] #labSceneHost { height: 150px; }
  #lab[data-phase="experiment"] .manipulatives { padding: 7px 14px; gap: 14px; }
  #lab[data-phase="experiment"] .manipulatives strong { font-size: 13px; margin-bottom: 4px; }
  #lab[data-phase="experiment"] .manipulatives > div > div { gap: 2px; }
  #lab[data-phase="experiment"] .math-token { width: 16px; height: 16px; font-size: 11px; }
}
@media (max-width: 760px) and (max-height: 660px) {
  #lab[data-phase="experiment"] #labSceneHost { height: 140px; }
}
/* ==== division-visibility-20261029.css ==== */
/* In division, do not pin the scene over the grouped manipulatives. */
@media (max-width: 760px) {
  #lab[data-phase="explain"] #labSceneHost { position: relative; top: auto; }
}
@media (max-width: 760px) {
  #lab[data-phase="explain"]:has(#divisionDeck:not([hidden])) .manipulatives {
    position: sticky;
    top: 0;
    z-index: 4;
    background: #f4f5e9;
  }
}
@media (max-width: 760px) and (max-height: 500px) {
  #lab[data-phase="explain"]:has(#divisionDeck:not([hidden])) .manipulatives { position: static; }
}
/* ==== substitution-visibility-20261029.css ==== */
/* Show the substitution model while its box controls are focused. */
@media (max-width: 760px) {
  #lab[data-phase="check"] #labSceneHost { position: relative; top: auto; }
  #lab[data-phase="check"]:has(.substitution-deck:focus-within) .manipulatives {
    position: sticky; top: 0; z-index: 4; background: #f4f5e9;
  }
}
@media (max-width: 760px) and (max-height: 500px) {
  #lab[data-phase="check"]:has(.substitution-deck:focus-within) .manipulatives { position: static; }
}
/* ==== bridge-scroll-20261029.css ==== */
/* Let the comparison content use the screen while the 3D scene scrolls away. */
@media (max-width: 760px) {
  #lab[data-phase="bridge"] #labSceneHost { position: relative; top: auto; }
}
/* ==== workshop-landscape-20261029.css ==== */
/* Keep the finale entry reachable while returning space to short landscape screens. */
@media (max-width: 760px) and (max-height: 450px) and (orientation: landscape) {
  #lab[data-phase="tutor"] .lab-finale-link { margin: 2px auto; }
}
/* ==== workshop-experiment-20261029.css ==== */
/* Keep the workshop model and experiment controls together on narrow screens. */
@media (max-width: 760px) {
  #lab[data-phase="tutor"] #labPanel:has(#operationEquation) .tutor-controls { gap: 6px; }
  #lab[data-phase="tutor"] #labPanel:has(#operationEquation) #operationEquation { margin: 6px 0; }
}
/* ==== workshop-division-focus-20261029.css ==== */
/* Give answer entry room while retaining the scene at the start of the step. */
@media (max-width: 760px) {
  #lab[data-phase="tutor"] .lab-layout:has(#tutorNumberForm:focus-within) .room-scene[data-room="tutor"][data-tutor-step="4"] { position: relative; top: auto; }
}
/* ==== workshop-check-scene-20261030.css ==== */
/* Preserve the workshop scene while giving the check prompt more room on phones. */
@media (max-width: 760px) {
  #lab[data-phase="tutor"] .room-scene[data-room="tutor"][data-tutor-step="5"] .room-canvas { height: 170px; }
}
/* ==== workshop-target-scene-20261030.css ==== */
/* Give the changed question room while retaining the workshop scene. */
@media (max-width: 760px) {
  #lab[data-phase="tutor"] .room-scene[data-room="tutor"][data-tutor-step="6"] .room-canvas { height: 170px; }
}
/* ==== workshop-reflect-scene-20261030.css ==== */
/* Leave more room for the reflection summary while retaining the scene. */
@media (max-width: 760px) {
  #lab[data-phase="tutor"] .room-scene[data-room="tutor"][data-tutor-step="7"] .room-canvas { height: 170px; }
}
/* ==== detective-notice-scene-20261030.css ==== */
/* Reveal the detective prompt while keeping the model on narrow screens. */
@media (max-width: 760px) {
  #lab[data-phase="repair"] .room-scene[data-room="repair"][data-repair-stage="notice"] .room-canvas { height: 160px; }
}
/* ==== detective-located-scroll-20261030.css ==== */
/* Keep the repair instruction readable when scrolling to its choices. */
@media (max-width: 760px) {
  #lab[data-phase="repair"] .room-scene[data-room="repair"][data-repair-stage="located"] { position: relative; top: auto; }
}
/* ==== cloud-city-ux-20261030/style.css ==== */
/* Cloud City review fixes. Presentation only. */

/* The tour caption sat behind the landing header. */
html[data-landing="130"] #cloudWorld #tourCaption{top:calc(var(--landing-header) + 12px);left:16px;max-width:min(70%,340px);padding:6px 12px;border-radius:12px;background:#fff9e9eb;color:#214d3d;text-shadow:none}
#cloudWorld #welcomeTourControls .tour-visit{width:auto!important;min-width:max-content;max-width:none;padding:8px 14px;background:#285b4b;color:#fff9e9;border-color:#285b4b;font-size:14px;line-height:1.3;white-space:nowrap}
#cloudWorld #welcomeTourControls .tour-visit[hidden]{display:none}
html[data-landing="130"] #cloudWorld.touring .cloud-title{display:none}

/* The map is the main way around the city, so phones need readable labels. */
.atlas-key{font-size:12px}
@media(max-width:650px){
 #cityAtlas .atlas-place-label{font-size:12px;font-weight:600}
 #cityAtlas .map-number{font-size:11px;transform:translateY(1px)}
 #cityAtlas .map-origin text{font-size:12px}
 #cityAtlas{overflow:visible}
 #cityAtlas [data-city-id="arun"] .atlas-place-label{text-anchor:end;transform:translate(7px,-24px)}
 #cityAtlas .map-node{r:9px}
 #cityAtlas .map-land{rx:13px;ry:11px}
 .atlas-key{font-size:13px}
}

/* While the scene loads, nothing should offer a ride that cannot start yet. */
html[data-landing="130"] #cloudScene[aria-busy="true"]~#rideTram{display:none}

/* Small English labels a Thai grade 7 learner does not need. */
.cloud-title .cloud-eyebrow,#cloudMapDialog .cloud-dialog-head .cloud-eyebrow,#islandDialog .cloud-dialog-head .cloud-eyebrow,#avatarDialog .cloud-dialog-head .cloud-eyebrow,.welcome-brand{display:none}
html[data-landing="130"] #cloudWorld .cloud-title p{width:fit-content;margin-top:2px;padding:2px 8px;border-radius:8px;background:#fff9e9d9;font-size:15px;text-shadow:none}

/* Still-image mode: keep the title clear of the fixed header. */
html[data-landing="130"] #cloudWorld.cloud-graphic-static{padding-top:calc(var(--landing-header) + 16px)}

#continueHint{margin:6px 0 0;font-size:14px;line-height:1.5;color:#536c5b}
#continue:not([disabled]) + #continueHint{display:none}
/* ==== cloud-city-menus-20261031/style.css ==== */
/* Passport and the character now live in the two menus; the view tools keep only the view. */
#cloudWorld #landing130ViewTools #cloudAvatar,#cloudWorld #landing130ViewTools #cloudPassport{display:none!important}
#journal>.overline{display:none}
.my-menu-link,#landing130Choices [data-park-open="tower"]{display:block;width:100%;min-height:44px;margin:8px 0 0;text-align:left}
#journal #landing130Resume{margin:12px 0}
#journal #landing130Resume>h3{font-size:16px;margin:0 0 8px}
/* ==== mathworld-foundation-20261102/home.css ==== */
/* Packet V: MathWorld home foundation (2026-11-02).
   A layer on top of style.css. It changes colour and size only; wording, answers and evidence are untouched.
   Values follow DESIGN.md: on-surface-muted #566a5c (5.39:1 on #f6f7ef, 5.53:1 on #fff9e9, 4.94:1 on #e9efdb)
   and readable text never below 12px. Selectors start with `html body` so they beat the per-context rules in
   style.css, learner-launch.css and mobile-workbench.css without !important. Sizes are only raised where the
   current value is below 12px; the 14px rules in learning.css and tutor.css keep winning. */
:root {
  --mw-on-surface-muted: #566a5c;
  --mw-on-partner-strip: #5d4f6b;
}

/* Contrast: pale green labels were 2.2:1 to 3.4:1. */
html body .overline,
html body .microcopy,
html body .availability,
html body .topic-tag,
html body .card-number,
html body .mission-card p,
html body .footer-note,
html body footer p {
  color: var(--mw-on-surface-muted);
}

/* Partner strip sits on a lilac surface, so it keeps its own hue (6.1:1). */
html body .partner-strip p,
html body .partner-strip .overline,
html body .partner-strip .outline,
html body #aboutOpen {
  color: var(--mw-on-partner-strip);
}

/* Small text: 7-11px labels raised to the 12px floor. */
html body .overline,
html body .microcopy,
html body footer p,
html body .launch-score small {
  font-size: 12px;
}
html body :is(.lab-header, .lab-panel, .small-dialog, .partner-strip, .launch-heading) .overline,
html body .learner-launch .microcopy,
html body .availability.availability {
  font-size: 12px;
}
html body .brand small,
html body :is(.header, footer) .brand small {
  font-size: 12px;
  letter-spacing: 0.6px;
}
html body .overline { letter-spacing: 1.2px; }

/* Header menu: the unselected links sit on the translucent bar over the 3D scene (4.2:1 measured on pixels). */
html body .header nav a:not(.selected) {
  color: var(--mw-on-surface-muted);
}

/* No-3D page (data-graphics-mode="static"): content keeps the page gutter (16px, 24px from 650px), sits in a
   1160px column and the section is only as tall as its content, so the next block follows instead of an empty half page. */
html[data-landing="130"] body #cloudWorld.cloud-graphic-static {
  --mw-gutter: 16px;
  height: auto;
  min-height: 0;
  padding-inline: max(var(--mw-gutter), calc((100% - 1160px) / 2));
  padding-bottom: 24px;
}
@media (min-width: 650px) {
  html[data-landing="130"] body #cloudWorld.cloud-graphic-static { --mw-gutter: 24px; }
}

/* Motion (UX.md): the start panel answers a press with a 120ms transform only, nothing waits for it,
   and it is switched off when the device asks for less motion. */
@media (prefers-reduced-motion: no-preference) {
  html body .welcome-journey :is(button, a),
  html body .learner-launch :is(button, a) {
    transition: transform 120ms ease-out;
  }
}
@media (prefers-reduced-motion: reduce) {
  html body .welcome-journey :is(button, a),
  html body .learner-launch :is(button, a) {
    transition: none;
    animation: none;
  }
}

/* Footer link to the user guide (/guide/): muted ink, underlined, a 44px-tall touch target. */
html body footer p a.guide-link {
  display: inline-block;
  padding: 10px 0;
  color: var(--mw-on-surface-muted);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Keep repair feedback visible during answer entry. */
@media (max-width: 760px) {
  #lab[data-phase="repair"] .lab-layout:has(#repairVerify:focus-within) .room-scene[data-room="repair"][data-repair-stage="divided"] { position: relative; top: auto; }
}
