:root{--ink:#183e42;--muted:#678184;--teal:#147e78;--deep:#073f45;--paper:#fffcf4;--bg:#ecf4f1;--line:#d9e5df;--gold:#f3c56a;--shadow:0 16px 40px #163e3c16;--red:#ae4540}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:15px/1.5 'Segoe UI','Arial',sans-serif}button,input,select,textarea{font:inherit}button,a,select,input{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}svg{display:block}i{display:inline-flex;align-items:center}i svg{width:22px;height:22px}button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:12px;background:none;color:inherit}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #e4a841;outline-offset:3px}[hidden]{display:none!important}.topbar{height:84px;padding:0 26px;display:flex;align-items:center;justify-content:space-between;background:var(--paper);border-bottom:1px solid var(--line);gap:20px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;flex-shrink:0}.brandmark{width:46px;height:48px;background:var(--deep);color:var(--gold);display:grid;place-items:center;border-radius:15px 15px 15px 4px;font-size:42px;line-height:1;font-weight:800;box-shadow:inset 0 -4px #052b31}.brand b{font-size:23px;letter-spacing:-.8px}.brand small{display:block;font-size:11px;letter-spacing:1.6px;color:var(--muted)}.map-tabs{display:flex;padding:5px;gap:3px;border:1px solid var(--line);border-radius:14px}.map-tabs button{padding:9px 13px;font-size:13px;font-weight:650}.map-tabs button.active{color:#fff;background:var(--teal);box-shadow:0 3px 7px #087b7525}.head-actions{display:flex;align-items:center;gap:7px}.iconbtn{width:39px;height:40px;border:1px solid var(--line);background:#fffaf0}.joinbtn{background:var(--gold);padding:11px 15px;font-weight:700;box-shadow:0 3px #d7a34c}.demo-banner{text-align:center;background:#fff0c5;color:#78551b;font-size:12px;padding:6px}.demo-banner button{text-decoration:underline;padding:0 6px}.game-layout{display:grid;grid-template-columns:236px minmax(320px,1fr) 326px;height:calc(100dvh - 84px);min-height:615px}.demo-banner:not([hidden])+.game-layout{height:calc(100dvh - 114px)}.explorer{padding:21px 16px 12px;background:var(--paper);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.explorer-title{display:flex;justify-content:space-between;align-items:center}.explorer h2{font-size:16px;margin:0 0 16px}.search{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;padding:7px 9px;border-radius:10px}.search i svg{width:17px}.search input{width:100%;border:0;background:none;outline:none;min-width:0;font-size:13px;padding:4px 0}.filter-grid{display:grid;gap:7px;margin:12px 0}.filter-grid select{border:1px solid var(--line);background:#f5f8f3;border-radius:8px;padding:8px;font-size:12px;color:var(--ink);width:100%}.tiny-row{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted);gap:8px;margin:8px 0}.verified-mark{color:var(--teal)}.school-list{overflow:auto;flex:1;min-height:75px;padding:4px 0}.school-item{display:flex;align-items:center;gap:9px;border-radius:10px;padding:11px 9px;text-align:left;width:100%;margin-bottom:5px;border:1px solid transparent;transition:background .15s}.school-item:hover,.school-item.selected{background:#e8f3ea;border-color:#b8d6c5}.school-dot{display:inline-block;width:11px;height:11px;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #c6d2c8;flex-shrink:0}.school-item strong{font-size:12px;display:block}.school-item small{font-size:10px;color:var(--muted)}.explorer-foot{display:flex;align-items:center;gap:9px;font-size:10px;color:var(--muted);border-top:1px solid var(--line);padding:10px 0}.systech-logo{width:75px;height:91px;object-fit:contain;align-self:center}.copyright{color:var(--muted);text-align:center;font-size:9px;margin-top:5px}.maparea{background:#93c5c5;position:relative;overflow:hidden;min-height:420px}#map{width:100%;height:100%;cursor:grab;touch-action:none;background:radial-gradient(ellipse at 45% 40%,#c0d9d3,#75b4b8)}#map.dragging{cursor:grabbing}.map-top{position:absolute;top:17px;left:18px;right:18px;display:flex;justify-content:space-between;gap:8px;pointer-events:none;z-index:2}.map-chip{pointer-events:auto;display:flex;gap:8px;align-items:center;font-size:11px;font-weight:650;padding:9px 12px;background:#fffcf3ec;box-shadow:0 3px 12px #19484915;border:1px solid #e5e2ce;border-radius:9px}.live-dot{width:7px;height:7px;border-radius:50%;background:#289c78;box-shadow:0 0 0 4px #dcece0}.math-chip{font-size:12px}.math-chip span{color:var(--teal);font-size:18px}.map-tools{position:absolute;right:17px;top:78px;display:grid;gap:5px;z-index:2}.map-tools button{width:35px;height:36px;border-radius:9px;background:var(--paper);box-shadow:0 2px 8px #16494d30}.map-tools i svg{width:18px}.map-watermark{position:absolute;top:24%;left:32%;color:#375d5440;font-size:10px;letter-spacing:8px;pointer-events:none}.map-legend{position:absolute;left:14px;bottom:40px;background:#fffcf3ed;border:1px solid #dce5d5;border-radius:9px;display:flex;gap:12px;padding:8px 11px;font-size:10px;box-shadow:0 2px 9px #1b414411}.map-legend span{display:flex;align-items:center;gap:5px}.map-legend b{height:9px;width:9px;border-radius:3px;border:1px solid #45675b60}.neutral-dot{background:#c5dca5}.ours-dot{background:#eab54d}.others-dot{background:#7e9fb7}.attribution{position:absolute;bottom:0;left:0;right:0;background:#fffcf3cc;color:#506e6b;text-align:center;font-size:8px;padding:5px 3px}.welcome-card{position:absolute;left:5%;top:25%;background:#073e45e8;padding:30px 30px 20px;color:white;border:1px solid #e8cb8870;border-radius:22px;box-shadow:0 24px 80px #123e4460;width:min(440px,90%);backdrop-filter:blur(8px)}.welcome-badge{font-size:10px;color:#e4c990;letter-spacing:2px}.welcome-card h1{font-size:34px;line-height:1.3;margin:14px 0;letter-spacing:-1.5px}.welcome-card em{font-style:normal;color:#f7d68a}.welcome-card p{font-size:13px;max-width:32ch;color:#c6dfd9;margin-bottom:22px}.goldbtn{background:linear-gradient(#f7d481,#f2bd56);color:#604617;min-height:47px;padding:11px 18px;font-weight:800;box-shadow:0 4px #bf9143,0 5px 12px #30260018;border:1px solid #ffe4a2;border-radius:11px}.goldbtn:hover{filter:brightness(1.04)}.textbtn{display:block;margin:12px auto 0;font-size:12px;color:inherit;opacity:.85;padding:7px}.welcome-card .goldbtn{width:100%}.play-panel{background:var(--paper);padding:20px 19px 14px;border-left:1px solid var(--line);display:flex;flex-direction:column;overflow:auto;min-height:0}.player-card{display:flex;gap:12px;align-items:center;min-height:59px}.player-card small{display:block;font-size:9px;letter-spacing:1px;color:var(--teal);margin-bottom:3px}.player-card strong{display:block;font-size:13px}.player-card .round-icon{width:43px;height:44px;border-radius:13px;background:#e3efe1;display:grid;place-items:center;flex-shrink:0}.player-card .profile-menu{padding:0;background:none;border:0;text-align:left}.stats-row{display:grid;grid-template-columns:1fr 1fr 1fr;margin:17px 0 20px;padding:13px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center}.stats-row b{display:block;font-size:23px;font-weight:750;line-height:1.2}.stats-row span{font-size:10px;color:var(--muted)}.stats-row>div+div{border-left:1px solid var(--line)}#questPanel{flex:1}.quest-title{display:flex;align-items:center;gap:10px;margin:1px 0 12px}.quest-title h2{font-size:18px;margin:0}.quest-title p{margin:2px 0 0;font-size:11px;color:var(--muted)}.quest-hero{min-height:120px;display:grid;place-items:center;padding:17px;text-align:center;background:#eff4e5;border:1px dashed #afc9a1;border-radius:16px}.quest-hero i{color:#46795d}.quest-hero i svg{width:47px;height:47px}.quest-hero strong{font-size:13px;display:block;margin-top:8px}.quest-description{font-size:12px;color:var(--muted);margin:12px 0 20px}.territory-meta{border:1px solid var(--line);border-radius:11px;padding:13px;margin:13px 0;font-size:12px}.territory-meta b{display:block;font-size:14px}.questbtn{width:100%;background:var(--teal);color:white;min-height:46px;box-shadow:0 3px #075951;font-size:14px;font-weight:750}.progress-head{display:flex;justify-content:space-between;font-size:11px;margin-top:14px}.progress-track{height:7px;border-radius:8px;background:#e4e8d6;overflow:hidden;margin:6px 0 16px}.progress-fill{height:100%;background:#57a986;transition:width .3s}.equation{font-size:45px;font-weight:800;letter-spacing:-1px;text-align:center;padding:4px 0 10px;white-space:nowrap}.answer-field{border:2px solid #33958a;background:#fffef6;border-radius:12px;font-size:30px;text-align:center;height:57px;width:100%;color:var(--ink);outline-offset:2px}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:12px 0}.keypad button{min-height:44px;background:#f9f1df;border:1px solid #e6d4aa;box-shadow:0 2px #d8c393;font-size:19px;font-weight:700;border-radius:9px}.keypad button:active{transform:translateY(1px);box-shadow:none}.keypad button.smallkey{font-size:12px}.feedback{min-height:38px;font-size:12px;padding:7px 0;text-align:center}.feedback.good{color:#1c7e53}.feedback.bad{color:#b95631}.cancelround{display:block;margin:10px auto;color:var(--muted);font-size:11px;text-decoration:underline}.panel-footer{padding-top:15px}.softbtn{padding:9px 11px;background:#f0f5ee;border:1px solid var(--line);width:100%;font-size:12px;font-weight:600}.connection{font-size:9px;color:var(--teal);text-align:center;margin-top:13px}.panel-footer p{text-align:center;color:var(--muted);font-size:10px;margin:6px 0}.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);z-index:30;max-width:90vw;background:#123e44;color:#fffaf1;border:1px solid #799d97;box-shadow:var(--shadow);border-radius:12px;padding:14px 22px;font-size:13px}dialog{padding:0;border:1px solid #e2d1aa;border-radius:22px;width:min(540px,94vw);max-height:90dvh;background:var(--paper);color:var(--ink);box-shadow:0 30px 90px #05323560}dialog::backdrop{background:#0b30285c;backdrop-filter:blur(3px)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:19px 24px;border-bottom:1px solid var(--line)}.modal-head h2{font-size:20px;margin:0}.modal-head .iconbtn{width:32px;height:33px}#modalBody{padding:21px 24px 25px}#modalBody p{font-size:13px;color:var(--muted)}.formstack{display:grid;gap:13px}.formstack label{font-size:12px;font-weight:600;display:grid;gap:6px}.formstack input,.formstack select,.formstack textarea{background:white;color:var(--ink);border:1px solid #c6d8ce;border-radius:10px;padding:12px;width:100%;min-width:0}.formstack button{min-height:44px}.joinresults{display:grid;gap:5px;max-height:160px;overflow:auto}.joinresults button{text-align:left;display:block;padding:10px;border:1px solid var(--line);border-radius:9px;background:#f6f9ef}.joinresults button.chosen{border-color:var(--teal);background:#e3f3e5}.joinresults small{display:block;color:var(--muted);font-size:10px}.error{color:#ae4540!important;font-size:12px;min-height:20px}.notice{padding:12px 15px;background:#fff2cf;border:1px solid #eddaad;border-radius:10px;font-size:12px;color:#7c6225;line-height:1.65}.recovery-code{width:100%;font-family:monospace;resize:vertical;word-break:break-all;padding:12px;border:1px solid var(--line);border-radius:10px;background:white}.rankrow{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line)}.rankrow b{font-size:13px}.rankrow small{font-size:10px;display:block;color:var(--muted)}.ranknum{width:27px;height:28px;display:grid;place-items:center;background:#f2e6bf;border-radius:8px;font-size:12px}.mobile-only{display:none}.country{fill:#d7e0c3;stroke:#93b1a4;stroke-width:.6;vector-effect:non-scaling-stroke}.country-mn{fill:#dae3a9;stroke:#7e996c;stroke-width:1.6}.land-cell{fill:#b8d496;stroke:#f8f2d2;stroke-width:.8;cursor:pointer;vector-effect:non-scaling-stroke;transition:fill .3s;filter:url(#cellshadow)}.land-cell:nth-child(3n){fill:#c8d7a3}.land-cell:nth-child(5n){fill:#b1cc94}.land-cell:hover{stroke:#503e23;stroke-width:2;filter:brightness(1.15)}.land-cell.selected{stroke:#684725;stroke-width:3;filter:brightness(1.09)}.school-map-pin{cursor:pointer;vector-effect:non-scaling-stroke}.map-city-label{font-size:10px;fill:#3b5c50;paint-order:stroke;stroke:#e3eccf;stroke-width:3px;stroke-linejoin:round}.label-world{font-size:12px;fill:#5b7d70;pointer-events:none;letter-spacing:2px}.tiny{font-size:11px;color:var(--muted)}.recoveryActions{display:flex;gap:8px;margin-top:12px}.emptybox{font-size:12px;background:#f2f5ec;border:1px dashed #ccd8c7;border-radius:10px;padding:16px;color:var(--muted)}.array-hint{display:grid;gap:3px;justify-content:center;margin:7px auto}.array-hint div{display:flex;gap:3px}.array-hint b{display:block;width:7px;height:7px;background:#e2b15d;border-radius:2px}.recents{font-size:11px;color:var(--muted);border-top:1px solid var(--line);margin-top:20px;padding-top:12px}.recents p{margin:7px 0}
@media(min-width:1600px){.game-layout{grid-template-columns:260px minmax(400px,1fr) 356px}.play-panel{padding:26px}.keypad button{min-height:52px}.equation{font-size:54px}}
@media(max-width:1150px){.topbar{padding:0 17px;height:74px;gap:10px}.brand b{font-size:19px}.brandmark{width:39px;height:41px}.map-tabs button{padding:8px}.map-tabs span{font-size:11px}.joinbtn{padding:9px;font-size:12px}.game-layout{grid-template-columns:195px minmax(270px,1fr) 294px;height:calc(100dvh - 74px)}.demo-banner:not([hidden])+.game-layout{height:calc(100dvh - 104px)}.explorer{padding:16px 11px}.play-panel{padding:17px 14px}.welcome-card{padding:23px;left:5%;top:26%}.welcome-card h1{font-size:29px}.math-chip{display:none}}
@media(max-width:940px){.explorer{position:fixed;left:0;top:0;bottom:0;width:272px;z-index:25;box-shadow:20px 0 100px #0a34394a;transform:translateX(-120%);transition:transform .2s}.explorer.open{transform:translateX(0)}.mobile-only{display:inline-flex}.game-layout{grid-template-columns:minmax(300px,1fr) 305px}.map-chip{font-size:10px;padding:8px 9px}.brand small{font-size:9px}.head-actions{gap:5px}.map-tabs button{padding:8px}.map-tabs span{display:none}.joinbtn span{max-width:110px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.systech-logo{height:112px;width:85px}.topbar{height:70px}.game-layout{height:calc(100dvh - 70px)}.demo-banner:not([hidden])+.game-layout{height:calc(100dvh - 100px)}.welcome-card{width:88%;left:6%;padding:25px}.welcome-card h1{font-size:30px}}
@media(max-width:620px){.topbar{height:66px;padding:0 11px;gap:7px}.brand{gap:7px}.brand b{font-size:17px}.brand small{font-size:8px;letter-spacing:.7px}.brandmark{height:37px;width:35px;font-size:34px}.head-actions .iconbtn{width:32px;height:34px}.head-actions #helpBtn{display:none}.joinbtn{height:35px;width:36px;border-radius:9px;padding:0;box-shadow:0 2px #d7a34c}.joinbtn span{display:none}.map-tabs{padding:3px;gap:0}.map-tabs button{padding:5px;border-radius:7px}.map-tabs i svg{width:18px;height:18px}.head-actions #soundBtn{display:none}.game-layout{height:auto!important;min-height:0;display:flex;flex-direction:column}.maparea{height:44dvh;min-height:305px;border-bottom:1px solid var(--line)}.map-top{left:10px;right:10px;top:10px}.map-tools{right:10px;top:54px;gap:4px}.map-tools button{height:32px;width:32px}.play-panel{padding:15px 18px 22px;border-left:0;overflow:visible}.player-card{min-height:48px}.player-card strong{font-size:13px}.stats-row{margin:13px 0;padding:9px 0}.stats-row b{font-size:22px}#questPanel{max-width:470px;align-self:center;width:100%}.quest-hero{min-height:86px}.quest-hero i svg{width:33px;height:33px}.welcome-card{top:64px;left:6%;width:80%;padding:15px 19px 9px;backdrop-filter:blur(4px);border-radius:15px}.welcome-card h1{font-size:24px;margin:6px 0 9px}.welcome-card .welcome-badge{font-size:8px}.welcome-card p{display:none}.welcome-card .goldbtn{min-height:37px;padding:7px;font-size:12px}.welcome-card .textbtn{font-size:10px;margin:5px auto;padding:4px}.map-legend{bottom:30px;left:10px;font-size:8px;padding:5px 8px;gap:8px}.attribution{font-size:7px}.demo-banner{font-size:10px;padding:5px 8px;line-height:1.4}.keypad button{min-height:48px}.equation{font-size:44px}.answer-field{height:53px}.panel-footer{padding-top:16px}.copyright{font-size:9px}.modal-head{padding:17px}.modal-head h2{font-size:18px}#modalBody{padding:18px}.toast{bottom:20px}.map-watermark{font-size:8px;letter-spacing:6px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* SVG artwork has explicit UI dimensions; map itself is never constrained. */
button>svg,.round-icon>svg,.quest-title>span>svg{width:22px;height:22px;flex:none}.quest-hero>svg{width:46px;height:46px;margin:4px auto;color:#478b69}.softbtn>svg{width:18px;height:18px}.player-card .round-icon>svg{width:25px;height:25px}.welcome-card>svg{width:20px;height:20px}

.land-cell{filter:none}.player-card .profile-menu{display:block;min-width:0}.player-card .profile-menu strong{overflow-wrap:anywhere}
