:root{color-scheme:dark;--ink:#e6f0f2;--muted:#a4b9c1;--paper:#18272e;--card:#263b43;--line:#49636d;--green:#416d7b;--lime:#b7dde5;--gold:#e0b77a;font-family:Arial,'Noto Sans KR',sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a.button{cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:12px;padding:12px 18px;text-decoration:none;min-height:46px;font-weight:700}button:disabled{cursor:default;opacity:.45}.primary,a.primary{background:var(--green);color:white;border-color:var(--green)}.quiet{background:transparent}a{color:inherit}input,select{width:100%;padding:13px;border:1px solid var(--line);border-radius:10px;background:#1b3039;color:var(--ink)}label{display:block;font-size:13px;font-weight:700;margin:16px 0 7px}.small,small{font-size:12px;color:var(--muted);line-height:1.6}.eyebrow{font-size:11px;letter-spacing:.13em;color:var(--muted);text-transform:uppercase}.topbar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid var(--line);background:var(--card);gap:16px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:800;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--green);color:var(--lime);font-size:23px}.top-actions{display:flex;align-items:center;gap:8px}.top-actions button,.top-actions a.button{padding:8px 12px;min-height:38px;font-size:12px}.shell{max-width:1160px;margin:0 auto;padding:54px 28px}.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:50px;align-items:center;margin-bottom:45px}.hero h1{font-size:clamp(35px,5vw,62px);line-height:1.2;letter-spacing:-.06em;margin:15px 0 20px}.hero p{color:var(--muted);line-height:1.9;max-width:470px}.era-art{height:260px;border-radius:28px;background:#304b55;display:flex;flex-direction:column;justify-content:center;padding:28px;overflow:hidden}.era-art .year-track{display:flex;justify-content:space-between;font-size:12px}.era-art .river{height:24px;background:#77a6af;transform:rotate(-7deg) scaleX(1.3);margin:18px -20px}.era-art .skyline{display:flex;align-items:end;justify-content:space-around;gap:10px;height:70px}.era-art i{display:block;background:var(--green);width:32px;border-radius:3px 3px 0 0;background-image:repeating-linear-gradient(0deg,transparent 0 11px,#dce8c966 11px 14px);height:var(--h)}.entry-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.entry-card{border:1px solid var(--line);border-radius:20px;background:var(--card);padding:26px;text-decoration:none;display:flex;flex-direction:column;gap:10px;min-height:230px}.entry-card:hover{border-color:var(--green);transform:translateY(-2px)}.entry-card.featured{background:var(--green);color:white}.entry-card.featured p,.entry-card.featured small{color:#d5e9ed}.entry-card h2{font-size:23px;margin:3px 0}.entry-card p{font-size:13px;line-height:1.8;color:var(--muted);margin:0}.entry-card .arrow{margin-top:auto;align-self:flex-end}.steps{display:flex;gap:28px;justify-content:center;margin:28px 0;color:var(--muted);font-size:13px}.panel{border:1px solid var(--line);border-radius:20px;background:var(--card);padding:26px}.form-shell{max-width:520px;margin:40px auto;padding:0 20px}.form-shell h1{font-size:30px;margin:12px 0}.form-shell p{line-height:1.8;color:var(--muted);font-size:14px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.full{width:100%;margin-top:24px}.error{font-size:13px;color:#efa38e;line-height:1.7;min-height:22px}.notice{background:#304b55;border-radius:12px;padding:14px;font-size:13px;line-height:1.8}.teacher-shell{padding:22px 28px;max-width:1600px;margin:auto}.teacher-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px}.teacher-heading h1{font-size:25px;margin:5px 0}.teacher-workspace{display:grid;grid-template-columns:260px 1fr;gap:20px}.join-panel{text-align:center;position:sticky;top:20px;align-self:start}.join-panel svg{width:100%;max-width:212px;height:auto;background:white;border-radius:12px;padding:6px}.room-code{font-size:37px;font-weight:800;letter-spacing:.12em;margin:12px 0}.room-meta{display:flex;gap:10px;align-items:center}.chip{display:inline-flex;align-items:center;background:#355460;padding:7px 11px;border-radius:20px;font-size:12px;font-weight:700}.group-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.group-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px;min-height:230px}.group-card h2{font-size:17px;margin:0}.group-card header{display:flex;justify-content:space-between;align-items:center}.members{display:flex;flex-wrap:wrap;gap:5px;margin:14px 0;min-height:32px}.member{padding:4px 8px;background:#355460;border-radius:20px;font-size:11px}.member.offline{background:#30434b;color:#879da6}.group-stat{display:grid;grid-template-columns:1fr 1fr;gap:12px;border-top:1px solid var(--line);padding-top:12px}.group-stat b{font-size:23px;display:block}.group-stat small{font-size:10px}.group-card footer{font-size:11px;line-height:1.6;margin-top:14px;color:var(--muted)}.progress{height:7px;background:#304b55;border-radius:6px;overflow:hidden}.progress i{display:block;height:100%;background:var(--green);transition:width .3s}.teacher-controls{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.data-note{font-size:11px;color:var(--muted);line-height:1.7;margin-top:18px}.teacher-empty{grid-column:1/-1;text-align:center;padding:45px}.play-body{height:100dvh;overflow:hidden;background:var(--paper)}.play-body .topbar{height:54px;padding:0 18px}.play-body .brand small{display:none}.play-layout{height:calc(100dvh - 54px);display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-template-rows:76px minmax(0,1fr) 48px;gap:0}.play-metrics{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border-bottom:1px solid var(--line)}.play-metric{padding:10px 18px;background:var(--card);display:flex;flex-direction:column;justify-content:center}.play-metric label{margin:0 0 3px;font-size:10px;color:var(--muted)}.play-metric b{font-size:22px}.play-metric small{font-size:10px}.map-area{position:relative;min-width:0;min-height:0;padding:12px}.play-body .world-stage{height:100%;min-height:0;border-radius:18px;position:relative;overflow:hidden}.play-body .world{position:absolute;inset:0}.play-body .world-caption{top:16px;left:16px;pointer-events:none}.play-body .world-caption strong{font-size:13px}.play-body .world-caption span{font-size:10px}.play-body .world-tools{right:12px;top:12px;max-width:65%;flex-wrap:wrap;justify-content:flex-end;gap:5px}.play-body .world-tools button{font-size:10px;min-height:34px;padding:7px 10px}.play-body .view-controls{bottom:14px;left:14px}.play-body .view-controls button{min-height:36px;padding:7px 10px;font-size:11px}.play-body .render-hint{bottom:58px;right:12px;top:auto;font-size:9px}.play-body .gesture-hint{display:none}.play-body .compass{display:none}.play-body .world-feedback{top:85px}.play-body .picked{max-width:310px}.play-body .side{border-left:1px solid var(--line);padding:18px;overflow:auto;background:var(--card);min-height:0}.policy-tabs{display:flex;gap:6px;margin:12px 0}.policy-tabs button{flex:1;padding:9px 5px;font-size:12px}.policy-tabs .active{background:var(--green);color:white}.play-body .action{min-height:112px;border-radius:13px}.play-body .action p{font-size:12px;line-height:1.6}.play-body .cards{display:grid;gap:9px}.play-body .action-head{gap:6px}.play-body .action-head strong{font-size:14px}.play-body .world-loading,.play-body .unsupported{z-index:20}.play-footer{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:0 18px;background:var(--card);gap:10px;font-size:11px}.play-footer nav{display:flex;gap:6px}.play-footer button{font-size:11px;min-height:34px;padding:6px 12px}.play-footer .active{background:var(--green);color:white}.play-footer .mobile-only{display:none}.play-body .modal-back{z-index:100;position:fixed;inset:0;background:#112f28aa;display:flex;align-items:center;justify-content:center;padding:20px}.play-body .modal{width:min(620px,100%);max-height:88dvh;overflow:auto;border-radius:22px;background:var(--card);padding:28px}.play-body .modal h2{font-size:26px}.play-body .modal p{line-height:1.85}.play-body .modal-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:20px}.learning-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.learning-card{padding:20px;text-align:left;background:#263b43;border:1px solid var(--line);border-radius:16px}.learning-card b{display:block;font-size:16px;margin:9px 0}.concept-hero{padding:23px;background:#304b55;border-radius:18px;margin:16px 0}.concept-hero strong{font-size:22px;line-height:1.5;display:block}.concept-flow{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center;margin:18px 0}.concept-flow div{padding:18px;background:#263b43;border-radius:14px;text-align:center;font-weight:700}.concept-question{padding:16px;border-left:4px solid var(--gold);background:#504936;margin-top:18px}.play-body.simulation-mode .play-layout{grid-template-rows:76px minmax(0,1fr) 48px}.play-body .sim-mini{display:none}.play-body .sim-country{padding:10px;font-size:11px;min-height:110px}.play-body .sim-numbers b{font-size:20px}.play-body .sim-country p{font-size:10px}.sim-heading{display:flex;justify-content:space-between;gap:12px;align-items:center}.sim-controls{display:flex;gap:8px;align-items:center}.sim-controls select{width:100px}.sim-controls label{margin:0}.hidden-compat,[hidden]{display:none!important}.zoom-controls{position:absolute;bottom:14px;right:14px;display:flex;gap:5px;z-index:10}.zoom-controls button{min-height:36px;min-width:36px;padding:6px}.waiting-box{text-align:center;max-width:430px;margin:auto}.pulse{width:44px;height:44px;border-radius:50%;background:var(--lime);margin:15px auto;animation:pulse 1.6s infinite}@keyframes pulse{50%{opacity:.4;transform:scale(.85)}}.teacher-dialog{position:fixed;inset:0;background:#143a31aa;z-index:50;display:grid;place-items:center;padding:20px}.teacher-dialog .panel{width:min(1100px,96vw);height:88dvh;padding:10px;display:flex;flex-direction:column}.teacher-dialog iframe{width:100%;flex:1;border:0;border-radius:12px}.teacher-dialog header{display:flex;justify-content:space-between;align-items:center;padding:0 10px 10px}
@media(max-width:1050px){.group-grid{grid-template-columns:repeat(2,1fr)}.play-layout{grid-template-columns:minmax(0,1fr) 300px}.hero{gap:25px}.play-metric{padding:8px 12px}.play-metric b{font-size:20px}}
@media(max-width:760px){.topbar{padding:0 16px;height:60px}.shell{padding:32px 20px}.hero{grid-template-columns:1fr;gap:14px;margin-bottom:26px}.hero h1{font-size:38px}.era-art{height:180px}.entry-grid{grid-template-columns:1fr}.entry-card{min-height:170px;padding:22px}.steps{gap:12px;font-size:11px;flex-wrap:wrap}.teacher-shell{padding:16px}.teacher-workspace{grid-template-columns:1fr}.join-panel{position:static;display:grid;grid-template-columns:120px 1fr;gap:8px;text-align:left;padding:16px}.join-panel .qr{grid-row:1/5}.join-panel .room-code{font-size:28px;margin:2px}.teacher-heading h1{font-size:20px}.group-grid{gap:10px}.group-card{padding:14px;min-height:210px}.teacher-heading{flex-wrap:wrap}.teacher-controls button{flex:1;padding:10px;font-size:12px}.top-actions .optional{display:none}.play-layout{height:calc(100dvh - 54px);grid-template-columns:1fr;grid-template-rows:74px minmax(0,1fr) 52px}.play-metrics{grid-template-columns:repeat(4,1fr)}.play-metric{padding:7px}.play-metric b{font-size:17px}.play-metric label{font-size:9px}.play-metric small{font-size:8px}.map-area{padding:7px}.play-body .side{display:none;border-left:0}.play-body.tab-policies .map-area{display:none}.play-body.tab-policies .side{display:block;grid-column:1;grid-row:2}.play-footer{padding:0 8px;font-size:9px}.play-footer .mobile-only{display:inline-flex}.play-footer .connection-note{display:none}.play-footer button{padding:7px 9px;font-size:10px}.play-body .topbar{padding:0 10px}.play-body .top-actions button{padding:7px 8px;font-size:10px}.play-body .brand{font-size:13px;gap:7px}.play-body .brand-mark{width:29px;height:29px}.play-body .world-caption{top:12px;left:12px}.play-body .world-caption span{display:none}.play-body .world-tools{max-width:55%;gap:4px}.play-body .world-tools button{font-size:9px;padding:6px 8px}.sim-heading{flex-direction:column;align-items:stretch}.sim-controls{justify-content:space-between}.learning-grid{grid-template-columns:1fr}.play-body .modal{padding:22px}.concept-flow{gap:6px}.concept-flow div{padding:12px;font-size:13px}.play-body .world-stage{border-radius:12px}.form-row{gap:10px}.play-body .sound-panel{bottom:60px}.play-body .render-hint{max-width:160px}}

/* Shared legacy scene styles are constrained to the new play shell. */
.play-body .view-controls{left:50%;right:auto;transform:translateX(-50%);bottom:20px;max-width:calc(100% - 110px);width:max-content}.play-body .view-controls button{min-height:38px;white-space:nowrap}.play-body .world-tools .segmented button{padding:6px 5px;white-space:nowrap}.play-body .world-tools{max-width:175px}.play-body .world-stage{min-height:0}.play-body .world-caption{max-width:55%}.play-body .simulation-panel.collapsed .simulation-countries,.play-body .simulation-panel.collapsed #simSummary{display:none}.play-body .sim-heading h2{font-size:17px;margin:0}.play-body .sim-heading p{margin:4px 0;font-size:11px}.play-body .sim-controls button{padding:7px 10px;min-height:36px;font-size:11px}.play-body .sim-controls select{padding:7px}.play-body .sim-country{padding:9px;min-width:0;font-size:10px}.play-body .sim-country p{font-size:10px;line-height:1.5;margin:4px 0}.play-body .sim-country-title{display:block}.play-body .sim-numbers b{font-size:17px}.play-body .map-area{position:relative}
@media(max-width:760px){.play-body #sessionStatus{display:none}.play-body .world-tools{max-width:150px}.play-body .view-controls{max-width:calc(100% - 92px);left:8px;transform:none;bottom:16px}.play-body .view-controls button{padding:7px;min-height:40px;font-size:10px}.play-body .placement-panel{width:calc(100% - 28px);max-height:56%;bottom:66px}.play-body .play-footer button{min-height:44px;font-size:11px}.play-body .world-tools button{min-height:36px}.play-body .build-toolbar{left:9px;top:65px}.play-body .build-toolbar button{padding:8px;font-size:11px;min-height:42px}.play-body .world-tools{top:108px;right:8px}.play-body .sim-heading{gap:5px}.play-body .sim-controls{flex-wrap:wrap;gap:5px}.play-body .simulation-panel .sim-controls select{width:70px}.play-body .play-metric label{font-size:9px}}
@media(max-width:760px){.play-body .cards{max-height:none;overflow:visible;flex:none}.play-body .side{overflow-y:auto}}
@media(max-width:440px){.play-layout,.play-body.simulation-mode .play-layout{grid-template-rows:126px minmax(0,1fr) 52px}.play-metrics{grid-template-columns:repeat(2,1fr);grid-template-rows:63px 63px}.play-metric{padding:5px 10px;border-bottom:1px solid var(--line)}.play-metric b{font-size:19px;line-height:1.15}.play-metric label{font-size:10px;line-height:1.25;white-space:nowrap}.play-metric small{font-size:9px;line-height:1.3}.play-body .top-actions{gap:4px}.play-body .world-caption strong{font-size:11px}.play-body .world-tools{top:109px}}

/* Simulation controls live in the sidebar; the city has no floating dashboard. */
.play-body .simulation-panel{position:static;max-height:none;overflow:visible;margin:0 0 22px;padding:12px;background:#304b55;border:1px solid var(--line);border-radius:14px;box-shadow:none}.play-body .simulation-panel .sim-heading{display:flex;flex-direction:column;align-items:stretch;gap:10px}.play-body .simulation-panel .sim-controls{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:7px;align-items:center}.play-body .simulation-panel .sim-controls label{font-size:11px}.play-body .simulation-panel .sim-controls select{width:78px;min-height:38px}.play-body .simulation-panel #simRemaining{font-size:11px;margin-left:auto}.play-body .simulation-countries{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:12px}.play-body .simulation-panel .sim-country{min-height:94px;text-align:left}.play-body .simulation-panel.collapsed .simulation-countries,.play-body .simulation-panel.collapsed #simSummary{display:none}.play-body .simulation-panel .sim-heading h2{font-size:15px}.play-body .simulation-panel .sim-heading p{line-height:1.6}.play-body .simulation-panel .sim-controls button{min-height:40px}.play-body .side{scroll-padding-top:14px}

.project-subtitle{display:block;font-size:clamp(17px,2.5vw,28px);font-weight:600;letter-spacing:-.5px;margin-top:14px}.brand{white-space:nowrap}.brand small{display:block;font-weight:400;font-size:10px}.sim-controls #simStart{min-width:100px}

.simulation-mode .top-actions #simStart{min-height:42px;white-space:nowrap;background:#90cfdb;color:white;font-weight:700}.brand-name{line-height:1.25}.brand-name small{font-size:9px;letter-spacing:-.1px;margin-top:4px}@media(max-width:600px){.simulation-mode .topbar{padding:8px}.simulation-mode .top-actions{gap:4px}.simulation-mode #sessionInfo{display:none}.simulation-mode .top-actions #simStart{font-size:11px;padding:6px 8px}.simulation-mode .brand{font-size:15px}.simulation-mode .brand-name small{font-size:8px}.simulation-mode #sessionStatus{display:none}}

.simulation-mode #sessionStatus{display:none}
.play-body .brand-name small{display:block}

.load-detail{display:block;margin-top:12px;font-size:11px;line-height:1.6;overflow-wrap:anywhere;max-width:90%;color:#dfbe94}

.sim-clock-readout{font-size:11px;color:#b4cad1;white-space:nowrap;font-variant-numeric:tabular-nums}.simulation-mode #simPause{min-height:42px}.simulation-mode #simStart:disabled{opacity:.8}@media(max-width:600px){.simulation-mode .topbar{height:auto;min-height:54px;flex-wrap:wrap;gap:5px}.simulation-mode .top-actions{flex-wrap:wrap;justify-content:flex-end}.sim-clock-readout{font-size:10px;flex-basis:100%;text-align:right}}
@media(max-width:600px){.play-body.simulation-mode .topbar{height:96px;min-height:96px;display:flex;flex-wrap:wrap;align-content:center;gap:4px}.simulation-mode .topbar .brand{flex-basis:100%}.simulation-mode .top-actions{width:100%;flex-wrap:nowrap;justify-content:flex-start}.simulation-mode .sim-clock-readout{flex-basis:auto;margin-left:auto;font-size:10px}.play-body.simulation-mode .play-layout{height:calc(100dvh - 96px)}}
/* The play control is real HTML in a dedicated footer row, never injected into a collapsible header. */
.play-body.simulation-mode .play-layout{grid-template-rows:76px minmax(0,1fr) 66px}.simulation-mode .play-footer{gap:12px}.simulation-transport{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.simulation-transport .sim-play{min-height:46px;min-width:160px;padding:10px 18px;font-size:15px;font-weight:800;white-space:nowrap;background:#90cfdb;color:white;border:1px solid #90cfdb}.simulation-transport #simPause{min-height:44px;white-space:nowrap}.simulation-transport .sim-clock-readout{font-size:12px;white-space:normal}.simulation-mode .topbar{height:54px;min-height:54px}.simulation-mode .top-actions #simStart{display:none}
@media(max-width:760px){.play-body.simulation-mode .topbar{height:54px;min-height:54px;flex-wrap:nowrap}.simulation-mode .topbar .brand{flex-basis:auto}.simulation-mode .top-actions{width:auto}.play-body.simulation-mode .play-layout{height:calc(100dvh - 54px);grid-template-rows:74px minmax(0,1fr) 116px}.simulation-mode .play-footer{padding:8px;display:flex;flex-wrap:wrap;align-content:center;gap:5px}.simulation-transport{flex-basis:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px}.simulation-transport .sim-play{width:100%;min-width:0;min-height:46px;padding:8px;font-size:14px}.simulation-transport .sim-clock-readout{grid-column:1/-1;font-size:11px;line-height:1.3;text-align:left;margin:0}.simulation-mode .play-footer nav{width:100%;justify-content:space-between}.simulation-mode .play-footer nav button{min-height:30px;padding:4px 8px}.simulation-mode #simPause{font-size:11px;padding:7px}.simulation-mode .top-actions{flex-wrap:nowrap}}
@media(max-width:440px){.play-body.simulation-mode .play-layout{grid-template-rows:126px minmax(0,1fr) 116px}}
/* Six shared-asset canvas previews. Only the selected city uses a full-size view. */
.teacher-body.dashboard-active{height:100dvh;overflow:hidden}.teacher-body .teacher-shell{max-width:none;width:100%;padding:14px 20px}.teacher-body.dashboard-active .teacher-shell{height:calc(100dvh - 68px);display:flex;flex-direction:column;gap:8px}.teacher-body .teacher-heading{margin:0;min-height:45px}.teacher-body .teacher-heading h1{font-size:22px;margin:0}.teacher-body .teacher-workspace{display:grid;grid-template-columns:190px minmax(0,1fr);gap:16px;min-height:0;flex:1}.teacher-body .teacher-workspace>section{display:flex;flex-direction:column;min-height:0}.teacher-body .join-panel{padding:12px;overflow:auto}.teacher-body .join-panel .qr{width:144px;height:144px;margin:auto}.teacher-body .join-panel .qr svg{width:100%;height:100%}.teacher-body .room-code{font-size:28px}.teacher-body .teacher-controls{display:flex;flex-direction:column;gap:6px}.teacher-body .teacher-controls button{padding:9px;min-height:40px}.teacher-body #teacherHint{padding:8px 11px;font-size:12px}.teacher-body .group-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:10px;min-height:0;flex:1}.teacher-body .group-card{padding:9px;min-width:0;min-height:0;display:flex;flex-direction:column;gap:5px;overflow:hidden}.teacher-body .group-card header{margin:0}.teacher-body .group-card h2{font-size:15px;margin:0}.teacher-body .teacher-map{position:relative;width:100%;flex:1;min-height:110px;overflow:hidden;padding:0;border:1px solid #a4b9c1;border-radius:10px;background:#d7e3e5}.teacher-map-world{display:block;position:absolute;inset:0;overflow:hidden}.teacher-map-world canvas{display:block;pointer-events:none}.teacher-map-status{position:absolute;top:40%;left:0;right:0;font-size:11px;color:#a4b9c1}.teacher-map-open{position:absolute;right:6px;bottom:5px;background:#263b43ed;border-radius:7px;padding:3px 7px;font-size:10px}.teacher-body .group-stat{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:0}.teacher-body .group-stat b{font-size:17px}.teacher-body .group-stat small{font-size:10px}.teacher-body .group-card .members{margin:0;max-height:23px;overflow:hidden}.teacher-body .member{font-size:10px;padding:2px 5px}.teacher-body .group-card footer{padding:0;font-size:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.teacher-body .data-note{font-size:10px;margin:5px 0 0}.teacher-body .progress{margin:6px 0!important}
.teacher-body .teacher-dialog{position:fixed;inset:0;z-index:1000;background:#30434b;padding:0}.teacher-body .teacher-dialog>section{display:flex;flex-direction:column;width:100%;height:100dvh;max-width:none;border:0;border-radius:0;padding:0}.teacher-body .teacher-dialog header{display:flex;gap:18px;align-items:center;flex-wrap:wrap;padding:10px 18px;background:#263b43;min-height:64px}.teacher-dialog #cityDialogYear{font-size:25px}.teacher-dialog #cityDialogBudget,.teacher-dialog #cityDialogScore{font-size:14px}.teacher-dialog #closeCity{margin-left:auto;min-height:40px;padding:8px 15px}.teacher-body .teacher-dialog iframe{display:block;width:100%;height:auto;min-height:0;flex:1;border:0}.teacher-dialog:fullscreen{width:100vw;height:100dvh}
@media(max-width:1050px){.teacher-body .teacher-workspace{grid-template-columns:150px minmax(0,1fr);gap:10px}.teacher-body .join-panel .qr{width:120px;height:120px}.teacher-body .teacher-shell{padding:10px}.teacher-body .group-card{padding:7px}.teacher-body .teacher-heading h1{font-size:18px}.teacher-body .teacher-map{min-height:95px}}
@media(max-width:760px){.teacher-body.dashboard-active{height:auto;overflow:auto}.teacher-body.dashboard-active .teacher-shell{height:auto}.teacher-body .teacher-workspace{grid-template-columns:1fr}.teacher-body .join-panel{display:grid;grid-template-columns:100px 1fr 1fr;gap:6px;align-items:center}.teacher-body .join-panel .qr{width:92px;height:92px;grid-row:span 3}.teacher-body .join-panel p{display:none}.teacher-body .group-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:260px;flex:none}.teacher-body .teacher-dialog header{gap:6px 12px;padding:7px 10px}.teacher-dialog #cityDialogYear{font-size:21px}.teacher-dialog #cityDialogBudget,.teacher-dialog #cityDialogScore{font-size:12px}.teacher-dialog #cityDialogStatus{display:none}}
@media(max-width:440px){.teacher-body .group-grid{grid-template-columns:1fr;grid-auto-rows:300px}.teacher-body .teacher-heading{align-items:flex-start;gap:6px;flex-direction:column}}

.entry-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.solo-test-tools{font-size:12px;margin-top:12px;border-top:1px solid #49636d;padding-top:10px}.solo-test-tools button,.solo-test-tools select{min-height:40px;margin-top:7px}.solo-test-tools label{display:block}.solo-mode #simCollapse,.solo-mode #simulationCountries{display:none!important}.solo-mode #simSummary{display:block!important}.solo-mode .simulation-panel .sim-heading{gap:8px}@media(max-width:1000px){.entry-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.entry-grid{grid-template-columns:1fr}}

.teacher-map-fallback{position:absolute;inset:0;display:block;background:#d7e3e5}.teacher-map-fallback[hidden]{display:none}.teacher-body .teacher-map{min-height:145px;flex:1 0 145px}.teacher-map-status{top:auto;bottom:6px;left:6px;right:auto;font-size:10px;background:#263b43ed;border-radius:5px;padding:3px 5px;max-width:70%}.teacher-body .group-card{position:relative}.teacher-body .group-card .learning-notes{font-size:11px;flex:none}.teacher-body .group-card .learning-notes[open]{position:absolute;inset:8px;z-index:8;background:#263b43;padding:12px;border:1px solid #63828e;border-radius:10px;overflow:auto}.teacher-body .group-card .learning-notes[open] summary{font-weight:700;padding:8px}.teacher-body .group-card footer{min-height:16px}.teacher-body .group-stat{flex:none}@media(max-width:760px){.teacher-body .group-grid{grid-auto-rows:310px}.teacher-body .teacher-map{min-height:150px}}
.roster-member{display:flex;gap:6px;align-items:center;justify-content:space-between;padding:5px 0}.roster-member select{width:92px;min-height:36px;background:#25424f;color:#e7f1f3}.roster-member button{padding:5px;font-size:11px}.members>[data-ai-group]{width:100%;margin-top:10px;min-height:38px;border:1px dashed #78aaa8;background:#23424c;color:#cae8df}.teacher-body[data-room-status=waiting] .teacher-map,.teacher-body[data-room-status=waiting] .group-stat,.teacher-body[data-room-status=waiting] .learning-notes,.teacher-body[data-room-status=waiting] .group-card footer{display:none}.teacher-body[data-room-status=waiting] .qr{padding:16px}.teacher-body[data-room-status=waiting] .qr svg{width:100%;height:auto;max-width:320px}.teacher-body[data-room-status=waiting] .join-panel{background:linear-gradient(160deg,#294c58,#182d3c)}.teacher-body[data-room-status=running] .join-panel .qr,.teacher-body[data-room-status=paused] .join-panel .qr,.teacher-body[data-room-status=ended] .join-panel .qr{display:none}.ai-role-note{font-size:11px;color:#a5bdc6}.roster-member .member{overflow-wrap:anywhere}.teacher-dialog{z-index:200}.teacher-dialog iframe{width:100%;height:calc(100dvh - 65px);border:0}.teacher-map{cursor:zoom-in}
.teacher-body[data-room-status=waiting] .teacher-workspace{grid-template-columns:280px minmax(0,1fr)}.teacher-body[data-room-status=waiting] .members{display:block;max-height:none;min-height:80px;overflow:auto;flex:1}.teacher-body[data-room-status=waiting] .group-card{min-height:240px}.teacher-body[data-room-status=waiting] .group-card .roster-member{min-height:42px}.teacher-body[data-room-status=waiting] .members>[data-ai-group]{display:block}@media(max-width:800px){.teacher-body[data-room-status=waiting] .teacher-workspace{grid-template-columns:1fr}.teacher-body[data-room-status=waiting] .qr svg{max-width:230px}.teacher-body[data-room-status=waiting] .group-card{min-height:200px}}

.teacher-body .group-stat{grid-template-columns:repeat(5,minmax(0,1fr))}.teacher-body .group-stat b{font-size:15px}

.rejoin-qr-dialog{width:min(440px,92vw);max-height:90dvh;padding:22px;text-align:center;color:#dcecee;background:#213d49;border:1px solid #7a9ba8;border-radius:14px}.rejoin-qr-dialog::backdrop{background:#0d1924b8}.rejoin-qr-dialog form{text-align:right}.rejoin-qr-dialog h2{margin:5px 0 16px}.rejoin-qr-dialog svg{display:block;width:min(290px,100%);height:auto;margin:0 auto 15px;background:white}.rejoin-qr-dialog strong{font-size:24px}.rejoin-qr-dialog p{line-height:1.6;font-size:13px}.rejoin-qr-dialog a{color:#a5e6d2}

#joinDetails #nickname{color:#fff;background:#14272f;font-size:clamp(20px,4vw,26px);font-weight:700;min-height:54px;border:2px solid #91c0cd}#joinDetails #nickname::placeholder{color:#adc1c9;font-size:16px;font-weight:400}.roster-member .member{font-weight:700;overflow-wrap:anywhere}

.roster-slots{list-style:none;padding:0;margin:0;width:100%}
.teacher-body.dashboard-active[data-room-status=waiting]{height:auto;min-height:100dvh;overflow:auto}
.teacher-body.dashboard-active[data-room-status=waiting] .teacher-shell{height:auto}
.teacher-body[data-room-status=waiting] .group-grid{grid-auto-rows:auto;align-items:start}
.teacher-body[data-room-status=waiting] .group-card{padding:12px;gap:8px}
.teacher-body[data-room-status=waiting] .group-card h2{font-size:20px}
.teacher-body[data-room-status=waiting] .group-card .members{max-height:none;overflow:visible}
.teacher-body[data-room-status=waiting] .roster-slots{display:grid;gap:5px}
.teacher-body[data-room-status=waiting] .roster-member{justify-content:flex-start;min-height:48px;padding:4px 6px;gap:6px;border:1px solid #526f7a;border-radius:7px;background:#1c3540}
.teacher-body[data-room-status=waiting] .seat-empty{border-style:dashed;color:#a7bbc3;background:#233943}
.teacher-body[data-room-status=waiting] .seat-number{flex:none;width:20px;text-align:center;color:#b7d0d9;font-size:12px}
.teacher-body[data-room-status=waiting] .roster-member .member{flex:1;min-width:0;padding:0;font-size:clamp(21px,2vw,27px);line-height:1.16;letter-spacing:-.035em;color:#fff;background:none;border:0;opacity:1}
.teacher-body[data-room-status=waiting] .roster-member .member.offline{color:#c6d6dc}
.teacher-body[data-room-status=waiting] .roster-member select{flex:none;width:55px;min-height:30px;padding:3px;font-size:12px}
.teacher-body[data-room-status=waiting] .roster-member button{flex:none}

.teacher-body[data-room-status=waiting] [data-roster-drag]{cursor:grab;touch-action:none;user-select:none}
.teacher-body .group-card.roster-drop-target{outline:3px solid #8aebc5;outline-offset:-3px;background:#244e4b}
.roster-drag-ghost{position:fixed;z-index:1000;pointer-events:none;padding:8px 14px;border-radius:8px;background:#173742;color:#fff;border:1px solid #a9ded7;font-size:22px;font-weight:750}
