/* E.R.A.S. runtime / lobby / global world surfaces */
.play-hub-page .site-header,.runtime-page .site-header{z-index:90}.play-hub{overflow:hidden}.play-system{position:absolute;left:50%;top:50%;width:min(78vw,720px);aspect-ratio:1;transform:translate(-50%,-50%);display:grid;place-items:center}.play-system .orbit{pointer-events:none}.play-core{position:relative;width:260px;height:260px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(151,239,241,.16);background:radial-gradient(circle,rgba(28,91,95,.19),rgba(2,12,14,.86) 62%);box-shadow:0 0 90px rgba(66,195,202,.12),inset 0 0 70px rgba(43,143,149,.08);transform:translate(var(--core-x,0),var(--core-y,0))}.play-core::before{content:"";position:absolute;inset:18%;border-radius:50%;border:1px dotted rgba(151,239,241,.14)}.play-core-ring{position:absolute;border-radius:50%;border:1px solid rgba(131,224,227,.1)}.play-core-ring.ring-a{inset:-12%;animation:spin 24s linear infinite}.play-core-ring.ring-b{inset:7%;border-style:dotted;animation:spin 16s linear infinite reverse}.play-core-copy{position:relative;z-index:2;text-align:center}.play-core-copy p{margin:0;color:#6ea3a6;font:700 7px/1 var(--mono);letter-spacing:.16em}.play-core-copy h1{margin:10px 0 8px;color:#effafa;font:300 48px/.9 var(--sans);letter-spacing:.12em}.play-core-copy span{display:block;color:#55777a;font:700 6px/1.45 var(--mono);letter-spacing:.12em}
@property --orbit-angle{syntax:"<angle>";inherits:true;initial-value:0deg}@property --counter-angle{syntax:"<angle>";inherits:true;initial-value:0deg}.play-moving-node{--radius:255px;--orbit-angle:0deg;--counter-angle:0deg;position:absolute;left:50%;top:50%;width:0;height:0;z-index:8;text-decoration:none;animation:erasOrbitAngle 17s linear infinite;transform:rotate(var(--orbit-angle));transform-origin:0 0}.play-moving-node.join-node{--radius:215px;animation-duration:13s;animation-direction:reverse;animation-delay:-4s}.play-moving-node.global-node{--radius:300px;animation-duration:23s;animation-delay:-9s}.play-moving-node:hover,.play-moving-node:focus-visible{animation-play-state:paused;outline:none}.moving-node-dot{position:absolute;left:-15px;top:-15px;width:30px;height:30px;border:1px solid #bffeff;border-radius:50%;background:rgba(131,224,227,.2);box-shadow:0 0 24px rgba(131,224,227,.68),inset 0 0 13px rgba(199,255,255,.14);transform:translateX(var(--radius))}.moving-node-dot::before{content:"";position:absolute;inset:-9px;border:1px solid rgba(151,239,241,.13);border-radius:50%;box-shadow:0 0 22px rgba(131,224,227,.15)}.moving-node-dot::after{content:"";position:absolute;inset:7px;border-radius:50%;background:#d7ffff;box-shadow:0 0 13px #91eff2}.moving-node-label{position:absolute;left:calc(var(--radius) + 28px);top:-25px;min-width:180px;padding:11px 13px;border:1px solid rgba(151,239,241,.2);background:rgba(2,11,13,.94);box-shadow:0 8px 28px rgba(0,0,0,.35);opacity:0;transform:rotate(var(--counter-angle)) translateY(5px);transition:opacity .14s ease;pointer-events:none;transform-origin:center center}.play-moving-node:hover .moving-node-label,.play-moving-node:focus-visible .moving-node-label{opacity:1;transform:rotate(var(--counter-angle)) translateY(0)}.moving-node-label b{display:block;color:#eaffff;font:800 12px/1 var(--mono);letter-spacing:.16em}.moving-node-label small{display:block;margin-top:6px;color:#73989b;font:700 7px/1.35 var(--mono);letter-spacing:.12em}@keyframes erasOrbitAngle{from{--orbit-angle:0deg;--counter-angle:0deg}to{--orbit-angle:360deg;--counter-angle:-360deg}}

/* Shared runtime pages */
body.runtime-page{overflow:auto;background:#02090b}.runtime-shell{min-height:100svh;padding:96px 28px 34px;background:radial-gradient(circle at 50% 30%,rgba(32,105,110,.12),transparent 34rem),#02090b}.runtime-wrap{position:relative;z-index:2;max-width:1180px;margin:auto}.runtime-heading{display:flex;justify-content:space-between;gap:22px;align-items:flex-end;margin-bottom:14px;padding:18px;border:1px solid rgba(131,224,227,.15);background:rgba(3,12,14,.75)}.runtime-kicker{margin:0 0 8px;color:#67979a;font:700 7px/1 var(--mono);letter-spacing:.15em}.runtime-heading h1{margin:0;color:#effafa;font:500 clamp(28px,4vw,46px)/.95 var(--sans);letter-spacing:.08em}.runtime-heading p:last-child{max-width:650px;margin:10px 0 0;color:#769194;font-size:12px;line-height:1.5}.runtime-back{min-height:38px;padding:0 13px;display:grid;place-items:center;border:1px solid rgba(131,224,227,.2);text-decoration:none;color:#91b7b9;font:700 7px/1 var(--mono);letter-spacing:.12em}.runtime-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(290px,.85fr);gap:12px}.runtime-card{border:1px solid rgba(131,224,227,.14);background:rgba(3,12,14,.78);padding:16px}.runtime-card h2{margin:0 0 14px;color:#c9dcdd;font:700 10px/1 var(--mono);letter-spacing:.14em}.runtime-form{display:grid;gap:11px}.runtime-field{display:grid;gap:6px}.runtime-field>span{color:#658487;font:700 7px/1 var(--mono);letter-spacing:.12em}.runtime-field input,.runtime-field select,.runtime-field textarea{width:100%;min-height:39px;border:1px solid rgba(131,224,227,.13);background:rgba(0,8,10,.75);color:#e7f4f4;padding:9px 10px;font:600 11px/1.3 var(--sans);outline:none}.runtime-field textarea{min-height:90px;resize:vertical}.runtime-field input:focus,.runtime-field select:focus,.runtime-field textarea:focus{border-color:rgba(151,239,241,.45)}.runtime-split{display:grid;grid-template-columns:1fr 1fr;gap:9px}.runtime-primary,.runtime-secondary{min-height:42px;border:1px solid rgba(151,239,241,.4);background:rgba(131,224,227,.1);color:#eaffff;font:800 8px/1 var(--mono);letter-spacing:.12em;cursor:pointer}.runtime-primary:hover,.runtime-secondary:hover{background:rgba(131,224,227,.16)}.runtime-secondary{border-color:rgba(131,224,227,.15);background:rgba(0,8,10,.6);color:#89aeb0}.runtime-danger{border-color:rgba(231,102,119,.25);color:#e38b97}.runtime-feedback{min-height:16px;margin:4px 0 0;color:#5f8083;font:700 7px/1.4 var(--mono);letter-spacing:.08em}.runtime-feedback[data-tone=ok]{color:#78e2a3}.runtime-feedback[data-tone=error]{color:#ec8793}.runtime-status{display:grid;gap:9px}.runtime-status-row{padding:10px;border:1px solid rgba(131,224,227,.09);background:rgba(0,8,10,.58)}.runtime-status-row span{display:block;color:#557477;font:700 6px/1 var(--mono);letter-spacing:.11em}.runtime-status-row b{display:block;margin-top:5px;color:#d3e6e7;font:700 11px/1.25 var(--sans);word-break:break-word}.lobby-code{font:800 24px/1 var(--mono)!important;letter-spacing:.18em;color:#9af0f2!important}.runtime-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.runtime-list{display:grid;gap:8px}.runtime-list-empty{padding:20px 8px;text-align:center;color:#4e6b6e;font:700 7px/1.5 var(--mono);letter-spacing:.11em}.lobby-row,.friend-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px;border:1px solid rgba(131,224,227,.1);background:rgba(0,8,10,.58)}.lobby-row strong,.friend-row strong{display:block;color:#cce0e1;font-size:12px}.lobby-row small,.friend-row small{display:block;margin-top:4px;color:#5f7e81;font:700 6px/1.4 var(--mono);letter-spacing:.07em}.runtime-tabs{display:flex;gap:6px;margin-bottom:10px}.runtime-tab{flex:1;min-height:36px;border:1px solid rgba(131,224,227,.1);background:rgba(0,8,10,.5);color:#637f82;font:800 7px/1 var(--mono);letter-spacing:.1em;cursor:pointer}.runtime-tab.is-active{border-color:rgba(151,239,241,.35);color:#ddf2f2;background:rgba(131,224,227,.08)}.join-code-form{display:flex;gap:8px}.join-code-form input{flex:1;min-width:0;text-transform:uppercase;letter-spacing:.18em}

/* Global 2D world */
body.global-page{overflow:hidden}.global-shell{position:relative;width:100%;height:100svh;padding:82px 14px 14px}.global-hud{position:absolute;z-index:20;left:18px;right:18px;top:78px;display:flex;justify-content:space-between;gap:10px;pointer-events:none}.global-hud-box{pointer-events:auto;padding:9px 12px;border:1px solid rgba(131,224,227,.16);background:rgba(2,10,12,.84);color:#698c8f;font:700 7px/1.45 var(--mono);letter-spacing:.09em}.global-hud-box b{display:block;color:#d9ecec;font-size:10px}.global-map{position:relative;width:100%;height:100%;overflow:hidden;border:1px solid rgba(131,224,227,.17);background-color:#071113;background-image:linear-gradient(rgba(131,224,227,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(131,224,227,.045) 1px,transparent 1px),radial-gradient(circle at 28% 32%,rgba(82,166,113,.12),transparent 22%),radial-gradient(circle at 72% 65%,rgba(72,125,166,.1),transparent 25%);background-size:42px 42px,42px 42px,auto,auto}.global-map::before,.global-map::after{content:"";position:absolute;border:1px solid rgba(131,224,227,.09);background:rgba(131,224,227,.025);pointer-events:none}.global-map::before{left:8%;top:12%;width:24%;height:18%;transform:rotate(-6deg)}.global-map::after{right:8%;bottom:10%;width:28%;height:22%;border-radius:50%}.world-landmark{position:absolute;color:#406669;font:800 7px/1 var(--mono);letter-spacing:.15em;opacity:.8}.landmark-a{left:14%;top:17%}.landmark-b{right:14%;bottom:15%}.player-token{position:absolute;z-index:8;width:54px;height:54px;transform:translate(-50%,-50%);transition:left .16s linear,top .16s linear;filter:drop-shadow(0 7px 8px rgba(0,0,0,.45))}.player-token.is-local{z-index:10}.player-avatar{width:46px;height:46px;border-radius:50%;overflow:hidden;border:2px solid rgba(151,239,241,.48);background:#111;box-shadow:0 0 16px rgba(131,224,227,.16)}.player-token.is-local .player-avatar{border-color:#baffff;box-shadow:0 0 19px rgba(131,224,227,.34)}.player-avatar svg{width:100%;height:100%;display:block}.player-name{position:absolute;left:50%;top:49px;transform:translateX(-50%);white-space:nowrap;padding:3px 5px;border:1px solid rgba(131,224,227,.1);background:rgba(0,7,9,.82);color:#d4e6e7;font:700 6px/1 var(--mono);letter-spacing:.05em}.touch-pad{position:absolute;z-index:25;left:24px;bottom:24px;width:132px;height:132px;display:none;grid-template:repeat(3,1fr)/repeat(3,1fr);gap:4px}.touch-pad button{border:1px solid rgba(151,239,241,.22);background:rgba(2,10,12,.7);color:#a6c9cb;font:800 16px/1 var(--mono);touch-action:none}.touch-up{grid-column:2}.touch-left{grid-row:2;grid-column:1}.touch-down{grid-row:3;grid-column:2}.touch-right{grid-row:2;grid-column:3}.global-message{position:absolute;z-index:25;right:24px;bottom:24px;max-width:300px;padding:9px 12px;border:1px solid rgba(131,224,227,.12);background:rgba(2,10,12,.78);color:#618286;font:700 6px/1.5 var(--mono);letter-spacing:.08em}
@media(max-width:760px){.play-system{width:112vw}.play-core{width:210px;height:210px}.play-core-copy h1{font-size:38px}.play-moving-node{--radius:185px}.play-moving-node.join-node{--radius:155px}.play-moving-node.global-node{--radius:215px}.moving-node-dot{left:-12px;top:-12px;width:24px;height:24px}.moving-node-dot::before{inset:-7px}.moving-node-dot::after{inset:6px}.moving-node-label{left:calc(var(--radius) + 22px);top:-22px;min-width:142px;padding:9px 10px}.moving-node-label b{font-size:10px}.moving-node-label small{font-size:6px}.runtime-shell{padding:78px 14px 24px}.runtime-heading{display:block}.runtime-back{display:inline-grid;margin-top:12px}.runtime-grid{grid-template-columns:1fr}.runtime-split{grid-template-columns:1fr}.global-shell{padding:70px 8px 8px}.global-hud{left:10px;right:10px;top:66px}.global-hud-box:last-child{display:none}.touch-pad{display:grid;left:14px;bottom:14px}.global-message{right:14px;bottom:14px;max-width:180px}.player-token{width:48px;height:48px}.player-avatar{width:40px;height:40px}.player-name{top:43px}}
@media(prefers-reduced-motion:reduce){.play-moving-node{animation:none}.play-moving-node.host-node{transform:translate(215px,-40px)}.play-moving-node.join-node{transform:translate(-190px,70px)}.play-moving-node.global-node{transform:translate(30px,250px)}}
/* v1.4.3: movement is predicted/interpolated in JS; CSS transitions caused local rubberbanding. */
.player-token{transition:none!important;will-change:left,top}.player-token.is-local{transition:none!important}

/* ============================================================
   E.R.A.S. v1.5.0 — Global-turn tactical tabletop
   ============================================================ */
.tactical-global-page .global-shell{padding-top:82px}.tactical-board{cursor:crosshair;background-color:#080d0f;background-image:linear-gradient(rgba(166,215,213,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(166,215,213,.05) 1px,transparent 1px),linear-gradient(45deg,rgba(255,255,255,.012) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.012) 75%);background-size:40px 40px,40px 40px,80px 80px;box-shadow:inset 0 0 90px rgba(0,0,0,.72),inset 0 0 0 6px rgba(131,224,227,.018)}.tactical-board::before,.tactical-board::after{display:none}.battle-zone{position:absolute;pointer-events:none;border:1px dashed rgba(151,239,241,.11);border-radius:50%;background:radial-gradient(circle,rgba(131,224,227,.035),transparent 68%)}.battle-zone-north{width:28%;aspect-ratio:1;left:8%;top:8%}.battle-zone-south{width:34%;aspect-ratio:1;right:6%;bottom:5%;border-color:rgba(124,194,120,.12);background:radial-gradient(circle,rgba(100,180,105,.045),transparent 68%)}.battle-wall,.battle-cover{position:absolute;z-index:2;pointer-events:none;border:1px solid rgba(164,210,210,.2);background:linear-gradient(145deg,#121b1d,#071012);box-shadow:0 9px 18px rgba(0,0,0,.4),inset 0 1px rgba(255,255,255,.04)}.battle-wall::before,.battle-cover::before{content:"";position:absolute;inset:4px;border:1px solid rgba(151,239,241,.05)}.wall-a{left:35%;top:22%;width:6%;height:31%;transform:rotate(7deg)}.wall-b{right:29%;bottom:16%;width:5%;height:28%;transform:rotate(-14deg)}.battle-cover{width:12%;height:7%;border-radius:4px}.cover-a{left:16%;bottom:29%;transform:rotate(-8deg)}.cover-b{right:16%;top:24%;transform:rotate(13deg)}.battle-object{position:absolute;z-index:5;width:62px;height:62px;padding:0;border:1px solid rgba(169,238,236,.28);border-radius:50%;background:rgba(4,15,17,.82);box-shadow:0 8px 22px rgba(0,0,0,.48),0 0 20px rgba(107,206,205,.08);color:#8eb4b5;cursor:pointer}.battle-object i{position:absolute;inset:9px;border-radius:50%;border:1px solid rgba(151,239,241,.18);background:radial-gradient(circle,rgba(151,239,241,.18),rgba(7,18,20,.8) 63%)}.battle-object span{position:absolute;left:50%;top:66px;transform:translateX(-50%);white-space:nowrap;color:#527477;font:800 6px/1 var(--mono);letter-spacing:.09em}.battle-object:hover,.battle-object:focus-visible,.battle-object.is-selected{border-color:#c8ffff;box-shadow:0 0 26px rgba(131,224,227,.32);outline:none}.objective-core{left:50%;top:50%;transform:translate(-50%,-50%)}.objective-cache{right:18%;top:63%}.objective-terminal{left:19%;top:19%}.objective-cache i{background:radial-gradient(circle,rgba(105,203,117,.24),rgba(8,22,13,.82) 63%)}.objective-terminal i{background:radial-gradient(circle,rgba(101,132,215,.23),rgba(8,14,27,.82) 63%)}
.turn-clock{position:absolute;z-index:48;left:50%;top:78px;transform:translateX(-50%);height:74px;min-width:252px;padding:7px 14px 7px 76px;border:1px solid rgba(151,239,241,.24);background:rgba(2,9,11,.94);box-shadow:0 12px 32px rgba(0,0,0,.5),0 0 24px rgba(131,224,227,.08);pointer-events:none}.turn-progress{--turn-angle:0deg;position:absolute;left:10px;top:8px;width:56px;height:56px;border-radius:50%;background:conic-gradient(#a9f4f1 var(--turn-angle),rgba(151,239,241,.08) 0);display:grid;place-items:center}.turn-progress::after{content:"";width:44px;height:44px;border-radius:50%;background:#061012;border:1px solid rgba(151,239,241,.14)}.turn-progress span{position:absolute;width:7px;height:7px;border-radius:50%;background:#e5ffff;box-shadow:0 0 11px #8aeeeb}.turn-copy{display:grid;grid-template-columns:1fr auto;column-gap:14px;align-items:end}.turn-copy small{grid-column:1;color:#567c7f;font:800 6px/1 var(--mono);letter-spacing:.16em}.turn-copy b{grid-column:1;color:#dff5f4;font:800 11px/1.1 var(--mono);letter-spacing:.12em}.turn-copy strong{grid-column:2;grid-row:1/3;color:#fff;font:500 28px/.9 var(--mono);letter-spacing:.06em}.turn-copy em{grid-column:1/3;margin-top:6px;color:#668d8f;font:700 6px/1 var(--mono);font-style:normal;letter-spacing:.09em}.tactical-global-page .global-hud{top:158px}.tactical-global-page .world-landmark{z-index:3}
.player-token{width:74px;height:84px;cursor:pointer;filter:drop-shadow(0 9px 8px rgba(0,0,0,.48))}.player-base{--move-angle:0deg;position:relative;width:68px;height:68px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#7bdcda var(--move-angle),#293234 0);box-shadow:0 8px 0 #020506,0 11px 13px rgba(0,0,0,.5),0 0 0 1px rgba(151,239,241,.25)}.player-base::before{content:"";position:absolute;inset:5px;border-radius:50%;background:#111819;border:1px solid rgba(214,255,255,.14);box-shadow:inset 0 0 13px rgba(0,0,0,.7)}.player-avatar{position:relative;z-index:2;width:50px;height:50px;border:1px solid rgba(224,255,255,.32);box-shadow:none}.player-token.is-local .player-base{box-shadow:0 8px 0 #020506,0 11px 13px rgba(0,0,0,.52),0 0 0 2px rgba(194,255,253,.82),0 0 20px rgba(131,224,227,.3)}.player-token.is-exhausted .player-base{background:conic-gradient(#8a4f4f 360deg,#293234 0)}.player-token.is-selected .player-base{box-shadow:0 8px 0 #020506,0 11px 13px rgba(0,0,0,.52),0 0 0 3px #fff6bd,0 0 28px rgba(255,233,142,.36)}.player-action-pip{position:absolute;z-index:4;right:5px;bottom:5px;width:9px;height:9px;border-radius:50%;border:1px solid #cffffe;background:#4bc5c1;box-shadow:0 0 8px rgba(131,224,227,.8)}.player-token-state{position:absolute;left:50%;top:66px;transform:translateX(-50%);white-space:nowrap;color:#547578;font:800 5px/1 var(--mono);letter-spacing:.1em}.player-name{top:75px}.player-token.action-resolved .player-base,.battle-object.action-resolved{animation:actionResolvePulse 1.1s ease-out}.battle-object.action-resolved{z-index:15}@keyframes actionResolvePulse{0%{box-shadow:0 0 0 0 rgba(255,244,167,.9),0 0 0 rgba(255,255,255,.8)}35%{box-shadow:0 0 0 18px rgba(255,244,167,.2),0 0 34px rgba(255,255,255,.75)}100%{box-shadow:0 0 0 32px rgba(255,244,167,0),0 0 0 rgba(255,255,255,0)}}
.tactical-action-panel{position:absolute;z-index:30;right:24px;bottom:68px;width:294px;padding:12px;border:1px solid rgba(151,239,241,.17);background:rgba(2,9,11,.91);box-shadow:0 15px 38px rgba(0,0,0,.44)}.tactical-stat{display:grid;gap:5px;padding:8px 0;border-bottom:1px solid rgba(151,239,241,.07)}.tactical-stat:first-child{padding-top:0}.tactical-stat span{color:#55797c;font:800 6px/1 var(--mono);letter-spacing:.13em}.tactical-stat b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d6ebeb;font:700 10px/1.25 var(--mono);letter-spacing:.05em}.tactical-stat small{color:#527477;font:700 5px/1.3 var(--mono);letter-spacing:.07em}.tactical-stat i{--budget-left:100%;display:block;position:relative;height:4px;background:rgba(151,239,241,.08)}.tactical-stat i::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--budget-left);background:#7cd9d7;box-shadow:0 0 8px rgba(131,224,227,.35);transition:width .1s linear}.tactical-buttons{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}.tactical-buttons button{min-height:34px;border:1px solid rgba(151,239,241,.2);background:rgba(131,224,227,.07);color:#cfe8e8;font:800 6px/1 var(--mono);letter-spacing:.08em;cursor:pointer}.tactical-buttons button:hover:not(:disabled){border-color:rgba(200,255,255,.5);background:rgba(131,224,227,.13)}.tactical-buttons button:disabled{opacity:.28;cursor:not-allowed}.tactical-buttons .is-cancel{border-color:rgba(227,114,127,.18);color:#dd8b95}.tactical-buttons .is-secondary{color:#718f91;background:rgba(0,6,8,.55)}.tactical-global-page .global-message{right:24px;bottom:24px;max-width:294px}
@media(max-width:900px){.tactical-action-panel{width:250px}.turn-clock{top:72px}.tactical-global-page .global-hud{top:151px}}
@media(max-width:760px){.tactical-action-panel{right:14px;bottom:64px;width:min(45vw,230px)}.turn-clock{top:67px;min-width:218px;height:66px;padding-left:68px}.turn-progress{width:48px;height:48px}.turn-progress::after{width:37px;height:37px}.turn-copy strong{font-size:23px}.tactical-global-page .global-hud{top:139px}.tactical-global-page .global-message{display:none}.player-token{width:64px;height:74px}.player-base{width:58px;height:58px}.player-avatar{width:43px;height:43px}.player-token-state{top:57px}.player-name{top:66px}.battle-object{width:52px;height:52px}.battle-object span{top:56px}}


/* ============================================================
   E.R.A.S. v1.5.3 — rolling game log + readable desktop labels
   ============================================================ */
.turn-copy{grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:center}.turn-copy small{grid-column:1;grid-row:1}.turn-copy strong{grid-column:2;grid-row:1/3}.turn-copy em{grid-column:1;grid-row:2;margin-top:7px}
.game-log-panel{position:absolute;z-index:31;left:24px;bottom:24px;width:350px;max-height:270px;border:1px solid rgba(151,239,241,.17);background:rgba(2,9,11,.93);box-shadow:0 15px 38px rgba(0,0,0,.44);overflow:hidden}.game-log-panel summary{min-height:34px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;list-style:none;color:#d8efef;font:800 8px/1 var(--mono);letter-spacing:.12em;user-select:none}.game-log-panel summary::-webkit-details-marker{display:none}.game-log-panel summary::before{content:"+";margin-right:7px;color:#74a3a5}.game-log-panel[open] summary::before{content:"−"}.game-log-panel summary span{margin-left:auto;color:#55797c;font-size:6px;letter-spacing:.09em}.game-log{max-height:226px;overflow:auto;padding:0 9px 10px;border-top:1px solid rgba(151,239,241,.08);scrollbar-width:thin}.game-log-turn{padding:9px 2px;border-bottom:1px solid rgba(151,239,241,.06)}.game-log-turn:last-child{border-bottom:0}.game-log-turn h3{margin:0 0 7px;color:#587f82;font:800 6px/1 var(--mono);letter-spacing:.12em}.game-log-turn.is-current h3{color:#a5e4e3}.game-log-turn p{margin:0;color:#405f62;font:700 5.5px/1.4 var(--mono);letter-spacing:.08em}.game-log-turn ul{display:grid;gap:5px;margin:0;padding:0;list-style:none}.game-log-turn li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:7px;color:#78999b;font:700 6px/1.25 var(--mono)}.game-log-turn li b{max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d3e9e9}.game-log-turn li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-log-turn li em{font:800 5px/1 var(--mono);font-style:normal;color:#8cccca;letter-spacing:.06em}.game-log-turn li em[data-status="cancelled"]{color:#c47f88}.game-log-turn li em[data-status="resolved"]{color:#d9c978}
@media(min-width:761px){.tactical-global-page .player-name{top:77px;max-width:180px;padding:5px 8px;font-size:10px;font-weight:900;letter-spacing:.07em;text-shadow:0 1px 3px #000}.tactical-global-page .player-token-state{top:67px;font-size:6px}.tactical-global-page .world-landmark{font-size:11px;letter-spacing:.16em;opacity:.95;text-shadow:0 1px 4px #000}.tactical-global-page .battle-object span{top:68px;padding:3px 5px;background:rgba(0,7,9,.66);font-size:9px;letter-spacing:.1em;text-shadow:0 1px 3px #000}.tactical-global-page .global-hud-box b{font-size:13px}}
@media(max-width:760px){.game-log-panel{left:12px;bottom:184px;width:min(52vw,245px);max-height:210px}.game-log-panel summary{min-height:31px;padding:8px 9px;font-size:6px}.game-log{max-height:170px}.game-log-turn li{grid-template-columns:minmax(0,1fr) auto;gap:4px;font-size:5px}.game-log-turn li b{grid-column:1/3;max-width:none}.game-log-turn li span{grid-column:1}.game-log-turn li em{grid-column:2}.turn-copy em{margin-top:5px}}

/* ============================================================
   E.R.A.S. v1.5.4 — desktop tactical readability pass
   Screenshot-driven pass: increase desktop character, map,
   objective, movement-panel, and rolling-log typography.
   Mobile sizing remains unchanged.
   ============================================================ */
@media (min-width: 761px) {
  .tactical-global-page .player-name {
    top: 80px;
    max-width: 240px;
    padding: 6px 10px;
    font-size: 15px;
    line-height: 1.05;
    font-weight: 900;
    letter-spacing: .075em;
    border-color: rgba(151,239,241,.2);
    background: rgba(0,7,9,.9);
    text-shadow: 0 2px 4px #000;
  }

  .tactical-global-page .player-token-state {
    top: 68px;
    padding: 2px 4px;
    font-size: 8px;
    line-height: 1;
    letter-spacing: .11em;
    background: rgba(0,7,9,.72);
    text-shadow: 0 1px 3px #000;
  }

  .tactical-global-page .world-landmark {
    padding: 4px 7px;
    font-size: 15px;
    line-height: 1.05;
    letter-spacing: .17em;
    opacity: 1;
    background: rgba(0,7,9,.45);
    text-shadow: 0 2px 5px #000;
  }

  .tactical-global-page .battle-object span {
    top: 70px;
    padding: 5px 7px;
    font-size: 12px;
    line-height: 1.05;
    letter-spacing: .11em;
    background: rgba(0,7,9,.84);
    border: 1px solid rgba(131,224,227,.1);
    text-shadow: 0 2px 4px #000;
  }

  .tactical-global-page .global-hud-box {
    padding: 11px 14px;
    font-size: 9px;
    line-height: 1.5;
  }

  .tactical-global-page .global-hud-box b {
    margin-bottom: 3px;
    font-size: 15px;
    letter-spacing: .08em;
  }

  .tactical-action-panel {
    width: 320px;
    padding: 15px;
  }

  .tactical-stat {
    gap: 7px;
    padding: 10px 0;
  }

  .tactical-stat span {
    font-size: 8px;
    letter-spacing: .14em;
  }

  .tactical-stat b {
    font-size: 13px;
    line-height: 1.25;
  }

  .tactical-stat small {
    font-size: 7px;
    line-height: 1.4;
  }

  .tactical-buttons button {
    min-height: 39px;
    font-size: 8px;
    letter-spacing: .09em;
  }

  .game-log-panel {
    width: 390px;
    max-height: 300px;
  }

  .game-log-panel summary {
    min-height: 39px;
    padding: 11px 13px;
    font-size: 10px;
  }

  .game-log-panel summary span {
    font-size: 8px;
  }

  .game-log {
    max-height: 255px;
    padding: 0 12px 12px;
  }

  .game-log-turn {
    padding: 11px 3px;
  }

  .game-log-turn h3 {
    margin-bottom: 8px;
    font-size: 8px;
  }

  .game-log-turn p {
    font-size: 7px;
    line-height: 1.5;
  }

  .game-log-turn li {
    gap: 8px;
    font-size: 8px;
    line-height: 1.35;
  }

  .game-log-turn li b {
    max-width: 125px;
  }

  .game-log-turn li em {
    font-size: 7px;
  }
}

/* ============================================================
   E.R.A.S. v1.6.0 — Universal Credits + Cache Slime combat
   ============================================================ */
.game-credit-header{pointer-events:auto;margin-left:auto;margin-right:10px;min-height:34px;padding:0 11px;display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(255,225,133,.18);background:rgba(34,27,8,.42);color:#d9c778;font:800 8px/1 var(--mono);letter-spacing:.09em;white-space:nowrap}.game-credit-header b{color:#fff0a7;font-size:12px;text-shadow:0 0 12px rgba(255,221,115,.2)}
.enemy-token{position:absolute;z-index:9;width:78px;height:96px;padding:0;border:0;background:transparent;color:inherit;transform:translate(-50%,-50%);cursor:pointer;filter:drop-shadow(0 8px 8px rgba(0,0,0,.46));font-family:var(--mono)}.enemy-base{position:relative;width:68px;height:68px;margin:0 auto;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(129,226,141,.34);background:radial-gradient(circle,rgba(82,196,103,.16),rgba(5,18,10,.92) 67%);box-shadow:0 8px 0 #020506,0 11px 15px rgba(0,0,0,.55),0 0 18px rgba(81,211,104,.12)}.enemy-sprite{position:relative;z-index:2;width:51px;height:51px;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:rgba(76,198,96,.08)}.enemy-sprite img{width:48px;height:48px;object-fit:contain;image-rendering:auto;filter:sepia(1) saturate(4) hue-rotate(68deg) brightness(1.05);opacity:.95}.enemy-health{--enemy-hp:100%;position:absolute;z-index:4;left:11px;right:11px;bottom:7px;height:3px;background:rgba(255,255,255,.08)}.enemy-health::after{content:"";display:block;width:var(--enemy-hp);height:100%;background:#77dc83;box-shadow:0 0 7px rgba(118,225,129,.45)}.enemy-token>strong{position:absolute;left:50%;top:73px;transform:translateX(-50%);min-width:130px;padding:4px 6px;border:1px solid rgba(117,217,132,.12);background:rgba(0,8,4,.88);color:#bdeac2;font:900 10px/1 var(--mono);letter-spacing:.07em;white-space:nowrap;text-align:center}.enemy-token>small{position:absolute;left:50%;top:89px;transform:translateX(-50%);color:#6f9b74;font:800 7px/1 var(--mono);letter-spacing:.06em;white-space:nowrap}.enemy-token.is-selected .enemy-base{border-color:#fff1a7;box-shadow:0 8px 0 #020506,0 11px 15px rgba(0,0,0,.55),0 0 0 3px rgba(255,241,167,.92),0 0 28px rgba(255,226,105,.27)}.enemy-token.is-dead{z-index:6;opacity:.48;filter:grayscale(.75) drop-shadow(0 6px 7px rgba(0,0,0,.4));cursor:default}.enemy-token.is-dead .enemy-base{transform:scaleY(.55);transform-origin:center bottom}.enemy-token.action-resolved .enemy-base{animation:actionResolvePulse 1.1s ease-out}.player-token.player-death-pulse .player-base{animation:playerDeathPulse 1.1s ease-out}@keyframes playerDeathPulse{0%{box-shadow:0 0 0 0 rgba(255,90,109,.9)}45%{box-shadow:0 0 0 22px rgba(255,90,109,.22)}100%{box-shadow:0 0 0 35px rgba(255,90,109,0)}}
@media(max-width:760px){.game-credit-header{display:none}.enemy-token{width:66px;height:82px}.enemy-base{width:58px;height:58px}.enemy-sprite{width:44px;height:44px}.enemy-sprite img{width:41px;height:41px}.enemy-token>strong{top:62px;min-width:105px;font-size:7px}.enemy-token>small{top:75px;font-size:5px}}

/* ============================================================
   E.R.A.S. v1.6.1 — player-follow camera + central soft zone
   The battlefield is now larger than the visible viewport. The
   world layer is translated by JS while HUD/UI remain screen-fixed.
   ============================================================ */
.global-map-viewport{
  position:relative;
  width:100%;
  height:100%;
  overflow:hidden;
  border:1px solid rgba(131,224,227,.17);
  background:#02090b;
  box-shadow:inset 0 0 60px rgba(0,0,0,.45);
}
.tactical-global-page .global-map-viewport .global-map{
  position:absolute;
  left:0;
  top:0;
  width:160%;
  height:160%;
  border:0;
  will-change:transform;
  transform:translate3d(0,0,0);
  transform-origin:0 0;
}

/* ============================================================
   E.R.A.S. v1.7.1 — roaming slimes, rest, PvP + Global records
   ============================================================ */
.enemy-token.is-wandering{transition:left 12s linear,top 12s linear}.enemy-token.is-combat{transition:none}.enemy-token.is-combat .enemy-base{border-color:rgba(255,120,120,.48);box-shadow:0 8px 0 #020506,0 11px 15px rgba(0,0,0,.55),0 0 24px rgba(255,82,82,.2)}
.tactical-buttons .is-rest{border-color:rgba(126,225,155,.28);color:#a9e7b8;background:rgba(75,158,97,.09)}.tactical-buttons .is-rest:hover:not(:disabled){border-color:rgba(150,244,177,.55);background:rgba(75,158,97,.16)}.tactical-buttons .tactical-button-wide{grid-column:1/-1}
.left-telemetry-stack{position:absolute;z-index:31;left:24px;bottom:24px;width:390px;max-height:calc(100svh - 190px);display:grid;align-content:end;gap:8px;overflow:auto;scrollbar-width:thin;pointer-events:none}.left-telemetry-stack>*{pointer-events:auto}.left-telemetry-stack .game-log-panel,.left-telemetry-stack .pvp-record-panel,.left-telemetry-stack .scoreboard-panel{position:relative;left:auto;right:auto;top:auto;bottom:auto;width:100%;margin:0}
.scoreboard-panel,.pvp-record-panel{border:1px solid rgba(151,239,241,.17);background:rgba(2,9,11,.93);box-shadow:0 15px 38px rgba(0,0,0,.44);overflow:hidden}.scoreboard-panel>header,.pvp-record-panel summary{min-height:36px;padding:10px 12px;display:flex;align-items:center;gap:10px;color:#d8efef;font:800 9px/1 var(--mono);letter-spacing:.11em}.scoreboard-panel>header span,.pvp-record-panel summary span{margin-left:auto;color:#55797c;font-size:7px;letter-spacing:.08em}.pvp-record-panel summary{cursor:pointer;list-style:none;user-select:none}.pvp-record-panel summary::-webkit-details-marker{display:none}.pvp-record-panel summary::before{content:"+";color:#74a3a5}.pvp-record-panel[open] summary::before{content:"−"}.pvp-record-panel .game-log{max-height:150px}
.global-scoreboard{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 11px 11px;border-top:1px solid rgba(151,239,241,.08)}.global-scoreboard>div{min-width:0}.global-scoreboard h3{margin:0 0 7px;color:#7eb2b3;font:900 8px/1 var(--mono);letter-spacing:.11em}.global-scoreboard ol{display:grid;gap:4px;margin:0;padding:0;list-style:none}.global-scoreboard li{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:5px;align-items:center;color:#75979a;font:800 7px/1.2 var(--mono)}.global-scoreboard li i{font-style:normal;color:#4e7477}.global-scoreboard li b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#cce4e4}.global-scoreboard li strong{color:#f1dd86;font-size:9px}.global-scoreboard li.is-empty{grid-template-columns:1fr;color:#456568;font-size:6px}
.left-telemetry-stack .game-log-panel{max-height:235px}.left-telemetry-stack .game-log-panel .game-log{max-height:195px}
@media(max-width:1000px) and (min-width:761px){.left-telemetry-stack{width:330px}.global-scoreboard li{font-size:6px}.left-telemetry-stack .game-log-panel{max-height:205px}.left-telemetry-stack .game-log-panel .game-log{max-height:165px}.pvp-record-panel .game-log{max-height:120px}}
.global-header-actions{display:flex;align-items:center;gap:7px;pointer-events:auto}.game-trade-link{min-height:30px;display:grid;place-items:center;padding:0 9px;border:1px solid rgba(131,224,227,.16);background:rgba(3,12,14,.72);color:#8fb9bc;text-decoration:none;font:800 7px/1 var(--mono);letter-spacing:.11em}.game-trade-link:hover{color:#eefefe;border-color:rgba(131,224,227,.38)}
@media(max-width:680px){.game-trade-link{min-height:27px;padding:0 7px;font-size:6px}.global-header-actions{gap:4px}}

/* v2.1 modular hosted-world creator */
.creator-layout{grid-template-columns:minmax(0,1.5fr) minmax(280px,.5fr);align-items:start}.creator-status-card{position:sticky;top:92px}.runtime-config-section{margin:20px 0 0;padding:16px;border:1px solid rgba(129,226,229,.12);background:rgba(0,7,9,.3)}.runtime-config-section h3{margin:0;color:#dff8f8;font:900 12px/1.2 var(--mono,monospace);letter-spacing:.08em}.runtime-config-note{margin:7px 0 0;color:#648487;font:700 9px/1.45 var(--mono,monospace)}.creator-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.creator-definitions{display:grid;gap:12px}.creator-definition{padding:13px;border:1px solid rgba(129,226,229,.12);background:rgba(2,12,14,.72)}.creator-definition>header{display:flex;align-items:center;gap:10px;margin-bottom:12px}.creator-definition>header b{min-width:0;flex:1;color:#eaffff;font:900 11px/1.2 var(--mono,monospace);overflow:hidden;text-overflow:ellipsis}.creator-definition>header button{border:1px solid rgba(255,112,112,.22);background:rgba(120,20,20,.12);color:#f2a0a0;font:800 8px/1 var(--mono,monospace);min-height:30px;padding:0 9px;cursor:pointer}.creator-icon-preview{width:42px;height:42px;display:grid;place-items:center;overflow:hidden;border:1px solid rgba(129,226,229,.14);background:#071012}.creator-icon-preview svg{width:100%;height:100%;display:block}.creator-quad{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.creator-json{min-height:128px!important;font-family:var(--mono,monospace)!important;font-size:10px!important;line-height:1.4!important;white-space:pre!important;overflow:auto!important}.creator-security-note{margin-top:18px;padding:13px;border:1px solid rgba(231,204,94,.15);background:rgba(70,55,4,.12)}.creator-security-note b{color:#e8d78b;font:900 9px/1 var(--mono,monospace)}.creator-security-note p{margin:7px 0 0;color:#837d61;font:700 9px/1.45 var(--mono,monospace)}
@media(max-width:900px){.creator-layout{grid-template-columns:1fr}.creator-status-card{position:static}.creator-quad{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.creator-quad,.runtime-split{grid-template-columns:1fr}.creator-section-head{align-items:stretch;flex-direction:column}.creator-section-head button{width:100%}.creator-definition{padding:10px}.creator-json{min-height:150px!important}}
.creator-subsection{margin:12px 0;padding:12px;border:1px solid rgba(129,226,229,.1);background:rgba(0,7,9,.28)}.creator-subsection .creator-section-head{margin-bottom:8px}.creator-subsection .creator-section-head b{display:block;color:#dff8f8;font:900 9px/1.2 var(--mono,monospace);letter-spacing:.08em}.creator-subsection .creator-section-head small{display:block;margin-top:4px;color:#648487;font:700 8px/1.4 var(--mono,monospace)}.creator-inline-list{display:grid;gap:8px}.creator-inline-row{display:grid;grid-template-columns:minmax(110px,1.4fr) minmax(90px,.8fr) minmax(70px,.55fr) auto;gap:8px;align-items:end;padding:8px;border:1px solid rgba(129,226,229,.08);background:rgba(2,12,14,.52)}.creator-row-remove{min-height:34px;padding:0 8px;border:1px solid rgba(255,112,112,.2);background:rgba(120,20,20,.1);color:#efaaaa;font:800 8px/1 var(--mono,monospace);cursor:pointer}@media(max-width:760px){.creator-inline-row{grid-template-columns:1fr 1fr}.creator-row-remove{grid-column:1/-1}}
