:root{--bg:#f1e6c8;--panel:#e8d9b0;--panel-line:#b9a373;--ink:#3d3222;--muted:#7a6a4c;--accent:#8a6d3b;--accent-ink:#f7eed6;--bad:#a8403a;--good:#3f7a4a}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{flex-direction:column;height:100%;display:flex}.top{background:var(--panel);border-bottom:1px solid var(--panel-line);flex-wrap:wrap;align-items:center;gap:10px 16px;padding:8px 12px;display:flex}.top h1{letter-spacing:.5px;margin:0;font-size:18px}.date{min-width:150px;font-weight:600}.stats{color:var(--muted)}.controls,.newworld{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.newworld{margin-left:auto}button,select,input{font:inherit;color:var(--ink);border:1px solid var(--panel-line);background:#f7eed6;border-radius:6px;padding:3px 10px}button{cursor:pointer;background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button.secondary{color:var(--ink);border-color:var(--panel-line);background:#f7eed6}button:hover{filter:brightness(1.08)}input[type=number]{width:70px}input.seed{width:110px}main{flex:1;min-height:0;display:flex}.mapwrap{flex:1;min-width:0;position:relative}canvas{cursor:grab;touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.hover{border:1px solid var(--panel-line);pointer-events:none;background:#f1e6c8e6;border-radius:6px;padding:2px 8px;font-size:12px;position:absolute;bottom:8px;left:8px}.hover:empty{display:none}.hint{color:var(--muted);pointer-events:none;font-size:12px;position:absolute;bottom:8px;right:8px}aside{border-left:1px solid var(--panel-line);background:var(--panel);flex-direction:column;width:400px;max-width:45vw;min-height:0;display:flex}.panel{padding:10px 12px;overflow:auto}aside .panel{flex:1}.tabs{border-bottom:1px solid var(--panel-line);display:flex}.tab{background:var(--panel);color:var(--ink);border:0;border-right:1px solid var(--panel-line);border-radius:0;flex:1;padding:6px 4px}.tab.on{background:var(--accent);color:var(--accent-ink)}.alert{border-bottom:1px solid var(--panel-line);cursor:pointer;background:#f3d7a6;padding:6px 12px}.stats.wide{flex-basis:100%;font-size:12px}.family select,.family input,.family button{max-width:100%;margin:2px 0}h2{margin:0 0 6px;font-size:15px}h3{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin:10px 0 4px;font-size:13px}.badge{background:var(--accent);color:var(--accent-ink);border-radius:999px;margin-left:6px;padding:0 8px;font-size:12px;display:inline-block}table{border-collapse:collapse;width:100%}td,th{text-align:left;vertical-align:top;padding:2px 4px}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.kv td:first-child{color:var(--muted)}.bad{color:var(--bad);font-weight:600}.good{color:var(--good)}details{border:1px solid var(--panel-line);background:#ffffff59;border-radius:6px;margin:4px 0;padding:3px 8px}summary{cursor:pointer}details table{margin-top:4px;font-size:12px}.muted{color:var(--muted)}.chip{vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.log{margin:0;padding:0;list-style:none}.log li{border-bottom:1px dotted var(--panel-line);padding:3px 0}.log .when{color:var(--muted);font-size:12px}.log .k-food{color:var(--bad)}.log .k-found{color:var(--good)}.log .k-war{color:#8f2a2a}.log .k-trade{color:#8a5a1f}.log .k-politics{color:#4a5a8a}.log .k-death{color:#6b3a35}.jhead{justify-content:space-between;align-items:center;display:flex}@media (width<=800px){.top{gap:4px 8px;padding:4px 8px}.top h1,.stats.wide{display:none}.date{min-width:0}.mapwrap{flex:0 0 38%}main{flex-direction:column}aside{border-left:0;border-top:1px solid var(--panel-line);flex:1;width:100%;max-width:none}}
