:root{color-scheme:dark;--ink:#182b24;--card:#23392e;--line:#627363;--paper:#f5e9d5;--muted:#c1ccbc;--brass:#dfbd81;--body:var(--mx-font-ui,"Trebuchet MS",sans-serif);--display:var(--mx-font-display,Georgia,serif)}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 30% 0,#354b3a,var(--ink) 58%);color:var(--paper);font:1rem/1.45 var(--body)}
.top{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:calc(.65rem + env(safe-area-inset-top)) max(1rem,calc((100vw - 1280px)/2)) .65rem;border-bottom:1px solid #78857265;background:#15251f}
.top a{min-height:44px;display:inline-flex;align-items:center;color:var(--paper);text-decoration:none}.top .brand{color:var(--brass);letter-spacing:.2em;font-weight:900}
main{width:min(1280px,100%);margin:auto;padding:clamp(1rem,3vw,2rem) 1rem calc(2rem + env(safe-area-inset-bottom))}
.intro{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.2rem}.intro p{margin:.35rem 0 0;color:var(--muted);max-width:48ch}
.eyebrow,.intro .eyebrow{color:var(--brass);font-size:.72rem;font-weight:900;letter-spacing:.14em}
h1,h2{font-family:var(--display);line-height:1.12}h1{margin:.25rem 0;font-size:clamp(2.6rem,7vw,5rem);font-weight:500}h2{margin:0 0 .45rem;font-size:1.25rem}
.workspace{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,1fr);gap:1rem;align-items:start}
.chart,.controls section{border:1px solid #647866;border-radius:16px;background:var(--card);padding:1rem;min-width:0}
.chart{position:sticky;top:1rem;background:linear-gradient(135deg,#30483a,#1d3229)}
.chart-title{display:flex;justify-content:space-between;gap:.7rem;align-items:center}.chart-title h2{margin:.15rem 0;font-size:clamp(1.25rem,4vw,1.8rem);overflow-wrap:anywhere}#map-meta{color:var(--muted);font-size:.79rem;text-align:right}
#map{width:100%;height:auto;display:block;border:1px solid #78857265;border-radius:12px;background:#142821;touch-action:manipulation;margin:.75rem 0;cursor:crosshair}
.map-help,.faction-note,#map-status,small{color:var(--muted);font-size:.83rem;margin:0}
#map-status{margin-top:.75rem;min-height:2.4em;color:#f1d6a9}#map-status[data-error="true"]{color:#ffbda8}
.controls{display:grid;gap:.75rem}.controls section{display:grid;gap:.72rem}
.paint,.pair,.faction,.counts{display:grid;gap:.55rem;align-items:end}.paint{grid-template-columns:1.15fr 1.15fr .65fr .65fr auto}.pair{grid-template-columns:repeat(2,minmax(0,1fr))}.faction{grid-template-columns:minmax(0,1fr) 82px}.counts{grid-template-columns:repeat(3,minmax(0,1fr))}
.legend{display:flex;gap:.4rem 1rem;flex-wrap:wrap;margin:.7rem 0;color:var(--muted);font-size:.8rem}.legend span{display:flex;align-items:center;gap:.4rem}.legend i{width:10px;height:10px;border-radius:50%;background:var(--color);flex:none}
label{display:grid;gap:.26rem;font-size:.8rem;font-weight:700;color:var(--muted);min-width:0}
[hidden]{display:none!important}
input,select,textarea,button,.file{font:inherit;color:var(--paper);min-height:44px;min-width:0;padding:.5rem .65rem;border:1px solid var(--line);border-radius:8px;background:#162820}
input,select,textarea{width:100%}input[type=color]{padding:.25rem;cursor:pointer}textarea{resize:vertical}
button,.file{font-size:.88rem;font-weight:800;cursor:pointer;touch-action:manipulation;background:#314a3b}
button:hover,.file:hover{border-color:var(--brass)}button:focus-visible,.file:focus-within,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--brass);outline-offset:3px}
.primary{min-height:50px;background:var(--brass);color:#1b2a23;border-color:var(--brass);white-space:nowrap}
.file{position:relative;display:grid;place-content:center;text-align:center}.file input{position:absolute;inset:0;opacity:0;cursor:pointer}
#undo-map{margin-top:.65rem;width:100%}#undo-map:disabled{opacity:.55;cursor:default}
@media(max-width:760px){.workspace{grid-template-columns:minmax(0,1fr)}.chart{position:static}.intro{align-items:start;flex-direction:column}.primary{width:100%}.paint{grid-template-columns:repeat(2,minmax(0,1fr))}.paint button{grid-column:1/-1}}
