:root{--paper:#fffdf5;--paper-2:#fdf6e7;--paper-dark:#f6ebd0;--ink:#231f20;--ink-soft:#4b4540;--ink-faint:#231f2047;--rust:#ea580c;--teal:#2dd4bf;--teal-dark:#0f766e;--gold:#f59e0b;--red:#f43f5e;--green:#4ade80;--slate:#64748b;--doodle-lavender:#c084fc;--doodle-mint:#6ee7b7;--doodle-blue:#60a5fa;--doodle-yellow:#facc15;--doodle-pink:#fb7185;--font-hand:"Patrick Hand", "Segoe Print", "Comic Sans MS", cursive;--font-title:"Gloria Hallelujah", "Patrick Hand", cursive;--font-num:"Caveat", "Patrick Hand", cursive;--wobble:255px 15px 225px 15px / 15px 225px 15px 255px;--wobble-2:15px 225px 15px 255px / 255px 15px 225px 15px}*{box-sizing:border-box}html,body{background:var(--paper);height:100%;color:var(--ink);font-family:var(--font-hand);-webkit-user-select:none;user-select:none;margin:0;font-size:18px;line-height:1.25;overflow:hidden}#app{position:fixed;inset:0}button,input,select{font:inherit;color:inherit}.world-layer{position:absolute;inset:0}.world-canvas{touch-action:none;width:100%;height:100%;display:block}.card{background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--wobble);padding:10px 14px;box-shadow:3px 4px #2b262240}.card.alt{border-radius:var(--wobble-2)}.btn{cursor:pointer;background:var(--paper-2);border:2px solid var(--ink);border-radius:var(--wobble);font-family:var(--font-hand);padding:4px 12px;font-size:17px;line-height:1.2;transition:transform 60ms,box-shadow 60ms;box-shadow:2px 2px #2b262259}.btn:hover{background:#fff8ea}.btn:active{transform:translate(1px,1px);box-shadow:1px 1px #2b262259}.btn.active{background:var(--ink);color:var(--paper)}.btn.small{padding:2px 8px;font-size:15px}.btn.danger{background:#f0c9bf}.btn.good{background:#cfe7c2}.btn:disabled{opacity:.45;cursor:default}.btn.icon{place-items:center;width:46px;height:46px;padding:0;display:grid}.btn.icon svg{width:30px;height:30px}.num{border:2px solid var(--ink);width:90px;font-family:var(--font-num);background:#fff8ea;border-radius:8px 4px 9px 5px;padding:2px 6px;font-size:20px}.num.wide{width:130px}select.num{width:auto}.hud-top{pointer-events:none;align-items:stretch;gap:10px;display:flex;position:absolute;top:8px;left:72px;right:8px}.hud-top>*{pointer-events:auto}.hud-qol{align-items:center;gap:10px;padding:6px 14px;display:flex}.qol-dial{width:58px;height:58px}.hud-qol .big{font-family:var(--font-num);font-size:30px;font-weight:700}.hud-qol .label{color:var(--ink-soft);font-size:14px}.hud-funds{min-width:170px;padding:6px 14px}.hud-funds .big,.hud-date .big{font-family:var(--font-num);white-space:nowrap;font-size:26px;font-weight:700}.hud-date{min-width:190px;padding:6px 14px}.hud-warnings{align-items:center;gap:6px;padding:4px 10px;display:flex}.warn-icon{border:2px solid var(--ink);background:var(--doodle-yellow);border-radius:50% 45% 55% 50%;place-items:center;width:40px;height:40px;display:grid}.warn-icon.bad{background:var(--doodle-pink)}.warn-icon svg{width:26px;height:26px}.warn-icon.clickable{cursor:pointer}.hud-mode{flex-direction:column;justify-content:center;min-width:150px;padding:6px 14px;display:flex}.hud-mode .label{color:var(--ink-soft);font-size:14px}.hud-speed{align-items:center;gap:4px;margin-left:auto;padding:4px 8px;display:flex}.hud-speed .btn{min-width:40px}.hud-left{flex-direction:column;gap:6px;width:58px;padding:6px;display:flex;position:absolute;top:8px;bottom:60px;left:8px;overflow:hidden}.tool{place-items:center;width:42px;height:42px;padding:0;display:grid}.tool svg{width:28px;height:28px}.ticker{pointer-events:auto;cursor:pointer;align-items:center;gap:10px;padding:6px 14px;display:flex;position:absolute;bottom:8px;left:72px;right:8px}.ticker .msg{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.ticker .msg.tone-bad,.ticker .msg.tone-alarm{color:var(--red)}.ticker .msg.tone-good{color:var(--teal-dark)}.ticker .msg.tone-warn{color:#8a5a10}.panel-layer{pointer-events:none;position:absolute;inset:0}.panel{pointer-events:auto;min-width:320px;max-height:calc(100% - 100px);position:absolute;overflow:auto}.panel.right{width:380px;top:84px;right:12px}.panel.center{width:min(920px,100% - 100px);top:50%;left:50%;transform:translate(-50%,-50%)}.panel.wide{width:min(1100px,100% - 100px)}.panel-title{font-family:var(--font-title);border-bottom:2px solid var(--ink);justify-content:space-between;align-items:center;margin:0 0 6px;padding-bottom:4px;font-size:22px;display:flex}.panel-title .btn{margin-left:12px}.panel h3{font-family:var(--font-title);margin:10px 0 4px;font-size:18px}.panel p{margin:4px 0 8px}.muted{color:var(--ink-soft);font-size:16px}.row{flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0;display:flex}.row.between{justify-content:space-between}.stat{border-bottom:1px dashed var(--ink-faint);justify-content:space-between;gap:12px;padding:2px 0;display:flex}.stat-value{font-family:var(--font-num);font-size:21px;font-weight:700}.tbl{border-collapse:collapse;width:100%;font-size:17px}.tbl th{text-align:left;font-family:var(--font-title);border-bottom:2px solid var(--ink);padding:3px 6px;font-size:15px}.tbl td{border-bottom:1px dashed var(--ink-faint);font-family:var(--font-num);padding:3px 6px;font-size:20px}.tbl td:first-child{font-family:var(--font-hand);font-size:17px}.build-grid{grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0;display:grid}.build-item{cursor:pointer;border:2px solid var(--ink);background:var(--paper-2);text-align:left;border-radius:12px 6px 14px 8px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.build-item:hover{background:#fff8ea}.build-item.selected{background:#cfe7c2}.build-item.unaffordable{opacity:.55}.build-item .name{font-family:var(--font-title);font-size:15px}.build-item .cost{font-family:var(--font-num);font-size:20px;font-weight:700}.build-item .meta{color:var(--ink-soft);font-size:13px}.build-detail{border-top:2px dashed var(--ink-faint);padding-top:8px}.adviser-grid{grid-template-columns:repeat(6,minmax(0,1fr));align-items:stretch;gap:10px;display:grid}.adviser{cursor:pointer;border:2px solid var(--ink);background:var(--paper-2);text-align:center;min-width:0;height:100%;font-family:var(--font-title);border-radius:14px 10px 16px 8px;flex-direction:column;padding:6px;font-size:13px;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.adviser:hover{border-color:#0891b2;transform:translateY(-2px);box-shadow:0 2px 10px #00f0ff59}.adviser.active{background:#ecfeff;border-color:#0891b2;box-shadow:0 0 0 2px #00f0ff,0 4px 12px #00f0ff59}.portrait{aspect-ratio:2/3;border:2px solid var(--ink);width:100%;box-shadow:2px 2px 0 var(--ink-faint);background:#fff;border-radius:12px;margin-bottom:6px;overflow:hidden}.portrait svg,.portrait img{object-fit:cover;border-radius:9px;width:100%;height:100%;display:block}.adviser-name{justify-content:center;align-items:center;min-height:2.7em;padding:0 2px;line-height:1.15;display:flex}.report{border:2px dashed var(--ink-faint);white-space:pre-line;background:#fff8ea;border-radius:10px;min-height:180px;margin-top:10px;padding:10px 14px}.map-screen{gap:14px;display:flex}.map-canvas{border:2.5px solid var(--ink);background:var(--paper-dark);image-rendering:pixelated;cursor:crosshair;border-radius:6px;max-width:100%}.map-side{flex-direction:column;gap:6px;width:250px;display:flex}.legend{flex-wrap:wrap;gap:6px 12px;font-size:15px;display:flex}.legend span:before{content:"";border:1px solid var(--ink);vertical-align:-1px;background:var(--sw,#999);width:12px;height:12px;margin-right:5px;display:inline-block}.marker-buttons{grid-template-columns:repeat(4,1fr);gap:4px;display:grid}.marker-labels{pointer-events:none;position:absolute;inset:0}.marker-label{font-family:var(--font-num);color:var(--paper);text-shadow:0 0 3px var(--ink), 0 0 2px var(--ink);font-size:22px;font-weight:700;position:absolute;transform:translate(-50%,-100%)}.modal-layer{z-index:40;pointer-events:auto;background:#2b262259;place-items:center;display:grid;position:absolute;inset:0}.modal{width:min(560px,100% - 40px)}.modal .actions{justify-content:flex-end;gap:10px;margin-top:12px;display:flex}.msg-log{max-height:60vh;overflow:auto}.msg-log div{border-bottom:1px dashed var(--ink-faint);padding:3px 0}.msg-log .when{font-family:var(--font-num);color:var(--ink-soft);margin-right:8px}.msg-log .jump{cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.title-screen{background:radial-gradient(ellipse at 30% 20%, #ffffff59, transparent 60%), var(--paper);grid-template-columns:1fr 1fr;gap:24px;padding:40px;display:grid;position:absolute;inset:0;overflow:auto}.title-hero{flex-direction:column;justify-content:center;display:flex}.title-hero h1{font-family:var(--font-title);margin:0;font-size:clamp(40px,7vw,84px);line-height:1;transform:rotate(-2deg)}.title-hero h2{font-family:var(--font-hand);color:var(--ink-soft);margin:8px 0 20px;font-size:22px}.title-hero p{max-width:560px}.world-list{flex-direction:column;gap:8px;max-height:calc(100vh - 80px);padding-right:6px;display:flex;overflow:auto}.world-item{cursor:pointer;text-align:left;grid-template-columns:44px 1fr auto;align-items:center;gap:10px;display:grid}.world-item .idx{font-family:var(--font-num);text-align:center;font-size:30px;font-weight:700}.world-item .name{font-family:var(--font-title);font-size:18px}.world-item .race{color:var(--ink-soft);font-size:14px}.world-item.selected{background:#cfe7c2}.briefing{margin-top:12px}.danger-dots{letter-spacing:3px;color:var(--red)}.hidden{display:none!important}.bar{border:1.5px solid var(--ink);background:#fff8ea;border-radius:6px;height:10px;overflow:hidden}.bar>i{background:var(--teal);height:100%;display:block}.bar.red>i{background:var(--red)}.chip{border:1.5px solid var(--ink);background:#fff8ea;border-radius:10px 6px 12px;margin-right:4px;padding:0 8px;font-size:14px;display:inline-block}.gameover{text-align:center}.gameover h2{font-family:var(--font-title);margin:0 0 8px;font-size:34px}kbd{font-family:var(--font-num);border:1.5px solid var(--ink);background:#fff8ea;border-radius:5px;padding:0 5px;font-size:16px}@media (max-width:900px){.hud-top{flex-wrap:wrap}.panel.right{width:calc(100% - 90px)}.build-grid{grid-template-columns:repeat(2,1fr)}.adviser-grid{grid-template-columns:repeat(3,1fr)}.title-screen{grid-template-columns:1fr;padding:20px}.map-screen{flex-direction:column}}
