/* Setup-only visual layer: combat and player screens retain their styles. */
body:not(.player-mode):has(#setup:not(.hidden)){background:radial-gradient(ellipse at 10% 55%,#b87a2710,transparent 48%),#0d1014;color:#e9edf2;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
body:not(.player-mode):has(#setup:not(.hidden)):before{background:radial-gradient(#8694a51c .7px,transparent .7px);background-size:24px 24px;opacity:.35}
body:not(.player-mode):has(#setup:not(.hidden)) .app{max-width:1280px;padding:24px 40px 36px}
body:not(.player-mode):has(#setup:not(.hidden)) header{padding:0 0 24px;border-bottom:1px solid #252b33;gap:20px}
body:not(.player-mode):has(#setup:not(.hidden)) .sigil{color:#eab66b;width:36px;height:40px}
body:not(.player-mode):has(#setup:not(.hidden)) .brand-copy strong{font-size:20px;letter-spacing:-.6px}
body:not(.player-mode):has(#setup:not(.hidden)) .brand-copy span{font-size:9px;color:#939dac;letter-spacing:2px}
body:not(.player-mode):has(#setup:not(.hidden)) #openPlayer{background:#151a21;border-color:#343d49;color:#ccd4df;border-radius:8px;font-size:12px;padding:10px 15px}
body:not(.player-mode):has(#setup:not(.hidden)) #openPlayer:hover{background:#212934;border-color:#eab66b}
#setup{width:100%;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(32px,6vw,88px);align-items:center;background:none;border:0;padding:56px 0;box-shadow:none;place-self:center}
#setup:before{display:none}#setup .eyebrow{display:flex;align-items:center;gap:9px;color:#eab66b;letter-spacing:2px;font-size:10px;margin-bottom:23px}#setup .eyebrow span{width:6px;height:6px;background:#eab66b;border-radius:50%;box-shadow:0 0 14px #eab66b55}
#setup h1{font-family:inherit;font-size:clamp(40px,4.8vw,64px);font-weight:650;line-height:1.08;letter-spacing:-3px;max-width:none;color:#f0f3f8;margin:0 0 22px}#setup h1 span{color:#eab66b}
#setup .lead{font-family:inherit;font-size:15px;line-height:1.8;color:#9aa6b6;max-width:34ch;margin-bottom:36px}
.setup-guide{display:grid;gap:23px}.setup-guide>div{display:flex;align-items:flex-start;gap:15px}.step-number{color:#d5aa6d;border:1px solid #343b44;background:#14191f;border-radius:7px;min-width:32px;height:32px;display:grid;place-items:center;font:500 11px ui-monospace,monospace}.setup-guide h2{font:600 13px/1.4 system-ui;margin:0 0 5px;color:#dce3ec}.setup-guide p{font:400 12px/1.7 system-ui;color:#929eaf;margin:0;max-width:33ch}.setup-local{border-top:1px solid #282e37;padding-top:20px;margin:30px 0 0;color:#8d9aab;font-size:11px;line-height:1.6}.setup-local span{color:#b4c5b5;margin-right:5px}
.setup-editor{border:1px solid #343b46;border-radius:14px;background:linear-gradient(145deg,#1b212a,#14191f);box-shadow:0 24px 80px #0004;padding:30px;min-width:0}.editor-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.editor-heading label{font-size:16px;font-weight:650;letter-spacing:-.3px}.editor-heading>span{font:500 9px/1.5 ui-monospace,monospace;letter-spacing:1px;color:#a5afbc;border:1px solid #3b4350;border-radius:4px;padding:4px 7px}.editor-description{font-size:12px;color:#97a3b3;margin:8px 0 22px}
#setup textarea{display:block;min-height:224px;border:1px solid #3b4451;border-radius:8px;background:#0e1319;color:#e6edf5;padding:18px 20px;font:400 15px/2 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:2;transition:border-color .15s,box-shadow .15s}#setup textarea::placeholder{color:#748296;opacity:1}#setup textarea:focus{outline:none;border-color:#eab66b;box-shadow:0 0 0 3px #eab66b18}
#setup .hint{color:#94a1b2;font:400 11px/1.85 system-ui;margin:12px 0 0}#setup .hint strong{color:#c9d2de;font-weight:550}#setup .or{color:#8491a2;font:500 9px system-ui;letter-spacing:1.4px;margin:21px 0}#setup .or:before,#setup .or:after{background:#303844}
#setup .drop{display:flex;align-items:center;gap:13px;min-height:82px;text-align:left;border:1px dashed #46515f;border-radius:8px;padding:16px;background:#11171e;transition:background .15s,border-color .15s}#setup .drop.drag{background:#30271c;border-color:#eab66b}#setup .drop strong{font:550 12px system-ui;margin:0}#setup .drop small{font:400 11px/1.6 system-ui;color:#9aa7b8;margin-top:5px}.upload-symbol{color:#eab66b;font-size:25px}.file-type{margin-left:auto;color:#8997a8;font:500 10px ui-monospace,monospace;border:1px solid #394452;padding:6px;border-radius:4px}#setup .file-label{position:relative;color:#edc58f;text-underline-offset:3px}#setup .file-label input{width:1px;height:1px;padding:0;border:0}#setup .file-label:focus-within{outline:2px solid #eab66b;outline-offset:4px;border-radius:2px}
#setup .error{font:500 12px/1.5 system-ui;min-height:26px;padding-top:5px;color:#ffb3a4}#setup .primary{display:flex;justify-content:center;gap:16px;align-items:center;border:1px solid #efc78c;border-radius:8px;background:#eab66b;color:#241c11;min-height:50px;padding:13px;font:700 13px system-ui;text-transform:none;letter-spacing:0;transition:background .15s,box-shadow .15s}#setup .primary:hover{background:#f4c98c;box-shadow:0 4px 20px #eab66b1a}#setup .primary:focus-visible{outline:2px solid #fff;outline-offset:4px}#setup .primary span{font-size:19px}.editor-footnote{text-align:center;font-size:10px;line-height:1.6;color:#93a0b1;margin:13px 0 0}
@media(min-width:1500px){#setup{gap:100px}}@media(max-width:900px){#setup{gap:30px;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}.setup-editor{padding:24px}#setup h1{letter-spacing:-2px}.editor-heading{flex-wrap:wrap}.editor-heading>span{font-size:8px}}
@media(max-width:720px){body:not(.player-mode):has(#setup:not(.hidden)) .app{padding:20px}#setup{grid-template-columns:1fr;padding:32px 0 8px;gap:24px}#setup h1{font-size:44px}#setup h1 br{display:none}#setup .lead{max-width:48ch;margin-bottom:0}.setup-guide,.setup-local{display:none}#setup .eyebrow{margin-bottom:15px}.setup-editor{padding:22px}#setup textarea{min-height:208px}}
@media(max-width:390px){body:not(.player-mode):has(#setup:not(.hidden)) .app{padding:16px}.setup-editor{padding:18px}.file-type{display:none}#setup h1{font-size:39px}body:not(.player-mode):has(#setup:not(.hidden)) #openPlayer{font-size:11px;padding:8px}body:not(.player-mode):has(#setup:not(.hidden)) header{gap:12px}}
@media(prefers-reduced-motion:reduce){#setup *{transition:none!important}}
