:root{--panel-bg:#fffffff0;--panel-fg:#1f2430;--accent:#2f6db5;--muted:#5b6272;font-family:system-ui,-apple-system,Hiragino Sans,Noto Sans JP,Yu Gothic UI,sans-serif}html,body,#root{background:#1a2340;width:100%;height:100%;margin:0;overflow:hidden}.viewport{position:fixed;inset:0}.hud{pointer-events:none;color:var(--panel-fg);position:fixed;inset:0}.hud>*{pointer-events:auto}.topbar{background:var(--panel-bg);white-space:nowrap;border-radius:12px;align-items:center;gap:16px;padding:8px 14px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #0000002e}.clock{font-variant-numeric:tabular-nums;align-items:baseline;gap:8px;display:flex}.clock .day{color:var(--muted);font-size:13px}.clock .time{font-size:20px;font-weight:700}.speeds{gap:4px;display:flex}.speeds button{cursor:pointer;background:#fff;border:1px solid #c9ced8;border-radius:8px;min-width:40px;padding:5px 8px;font-size:14px}.speeds button.active{background:var(--accent);border-color:var(--accent);color:#fff}.population{color:var(--muted);font-size:13px}.panel{box-sizing:border-box;background:var(--panel-bg);border-radius:12px;width:min(300px,100vw - 24px);padding:14px 16px;position:absolute;top:12px;right:12px;box-shadow:0 2px 12px #00000038}.panel h2{margin:0 28px 10px 0;font-size:18px}.panel dl{grid-template-columns:max-content 1fr;gap:6px 12px;margin:0;font-size:14px;display:grid}.panel dt{color:var(--muted)}.panel dd{overflow-wrap:anywhere;margin:0}.panel .close{cursor:pointer;color:var(--muted);background:0 0;border:none;font-size:22px;line-height:1;position:absolute;top:8px;right:10px}.panel .follow{align-items:center;gap:6px;margin-top:12px;font-size:14px;display:flex}.panel .note{color:var(--muted);margin:10px 0 0;font-size:12px}.help{color:#fff;white-space:nowrap;background:#0000008c;border-radius:8px;padding:6px 12px;font-size:12px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.legend{background:var(--panel-bg);border-radius:10px;grid-template-columns:repeat(2,max-content);gap:4px 12px;margin:0;padding:8px 10px;font-size:12px;list-style:none;display:grid;position:absolute;bottom:12px;left:12px}.legend .swatch{vertical-align:middle;border-radius:2px;outline:1px solid #00000026;width:10px;height:10px;margin-right:6px;display:inline-block}@media (max-width:720px){.help,.legend{display:none}}.topbar .layer{cursor:pointer;background:#fff;border:1px solid #c9ced8;border-radius:8px;padding:5px 10px;font-size:13px}.topbar .layer.active{color:#1f2430;background:#f6ad3b;border-color:#e0952a}.panel{max-height:calc(100vh - 80px);overflow-y:auto}.needs{gap:4px;margin-top:12px;display:grid}.need{color:var(--muted);grid-template-columns:64px 1fr;align-items:center;gap:8px;font-size:12px;display:grid}.need-track{background:#e4e7ee;border-radius:4px;height:8px;overflow:hidden}.need-fill{background:#8a94a8;height:100%;display:block}.panel-actions{justify-content:space-between;align-items:center;gap:8px;margin-top:12px;display:flex}.panel-actions .follow{margin-top:0}.why-button{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:#fff;border-radius:999px;padding:4px 12px;font-size:13px}.why{background:#f3f5f9;border-radius:8px;gap:4px;margin:10px 0 0;padding:8px 10px;font-size:12px;list-style:none;display:grid}.why li{grid-template-columns:40px 1fr;gap:6px;display:grid}.why time{color:var(--muted);font-variant-numeric:tabular-nums}.why .empty{color:var(--muted);display:block}.labels{pointer-events:none;position:absolute;inset:0}.bubble{color:#1f2430;background:#fff;border-radius:10px;max-width:220px;padding:6px 10px;font-size:12px;line-height:1.4;position:relative;transform:translateY(-50%);box-shadow:0 2px 8px #00000040}.bubble:after{content:"";border:6px solid #0000;border-top-color:#fff;border-bottom:0;margin-left:-6px;position:absolute;bottom:-6px;left:50%}.heat-legend{grid-template-columns:1fr;gap:4px;width:160px;display:grid}.heat-bar{background:linear-gradient(90deg,#ffe680,#f59f3a,#d7301f);border-radius:3px;height:10px;display:block}.heat-scale{color:var(--muted);justify-content:space-between;display:flex}.panel{width:min(340px,100vw - 24px)}.card-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.card-head h2{margin:0 28px 0 0}.avatar{color:#2f4a70;background:#dfe7f3;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;font-size:13px;font-weight:700;display:grid}.avatar.deceased{color:#888;background:#e6e6e6}.death{color:var(--muted);margin:2px 0 0;font-size:12px}.life,.health{border-top:1px solid #e7eaf0;margin-top:12px;padding-top:10px}.life h3,.health h3{margin:0 0 6px;font-size:14px}.muted{color:var(--muted);margin:0;font-size:12px;font-weight:400}.life table{border-collapse:collapse;width:100%;font-size:12px}.life th{text-align:left;color:var(--muted);white-space:nowrap;padding:3px 6px 3px 0;font-weight:400}.life td{padding:3px 4px}.life td.value{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:700}.life td.guide{color:var(--muted);font-size:11px}.verdict{white-space:nowrap;border-radius:999px;padding:1px 6px;font-size:11px;display:inline-block}.verdict.ok{color:#2b7a3d;background:#e3f4e6}.verdict.ng{color:#9a5413;background:#fdecd9}.hint{color:#6a5a1f;background:#fbf5dc;border-radius:6px;margin:6px 0 0;padding:4px 6px;font-size:11px}.source{color:#8a91a1;margin:6px 0 0;font-size:10px}.fog{color:#5b6272;background:repeating-linear-gradient(135deg,#eef0f4,#eef0f4 6px,#e5e8ee 6px 12px);border-radius:8px;margin:0;padding:8px 10px;font-size:13px}.organs{grid-template-columns:1fr 1fr;gap:4px 10px;margin:6px 0;padding:0;font-size:12px;list-style:none;display:grid}.organs li{align-items:center;gap:6px;display:flex}.organs .stage{color:var(--muted);margin-left:auto;font-size:11px}.organs .dot{background:#7fbf7f;border-radius:50%;width:9px;height:9px}.organs .stage-warning .dot{background:#e5a33a}.organs .stage-critical .dot{background:#d24b3b}.life td.guide{white-space:nowrap}.status{box-sizing:border-box;background:var(--panel-bg);border-radius:12px;gap:4px;padding:10px 12px;font-size:13px;display:grid;box-shadow:0 2px 10px #0000002e}.status .approval,.status .finance{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.status .label{color:var(--muted);min-width:3em}.status .value{font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.status .value.ng,.status .net.ng{color:#c2412d}.status .net{font-size:12px}.status .net.ok{color:#2e8b57}.status .bar{background:#e2e6ee;border-radius:3px;flex:1 0 100%;height:6px;overflow:hidden}.status .bar>span{background:#3fae6a;height:100%;display:block}.left-column{gap:8px;width:230px;display:grid;position:absolute;top:12px;left:12px}.news,.town-summary{box-sizing:border-box;background:var(--panel-bg);border-radius:12px;padding:10px 12px;font-size:12px;box-shadow:0 2px 10px #0000002e}.news h3,.town-summary h3,.tool-panel h3{margin:0 0 6px;font-size:14px}.news ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.news-day{min-width:4.5em;color:var(--muted);display:inline-block}.town-summary dl{grid-template-columns:1fr max-content;gap:3px 8px;margin:0;display:grid}.town-summary dt{color:var(--muted)}.town-summary dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.skips{gap:4px;display:flex}.skips button{cursor:pointer;background:#fff;border:1px solid #c9ced8;border-radius:8px;padding:5px 8px;font-size:13px}.toolbar-wrap{justify-items:center;gap:8px;display:grid;position:absolute;bottom:44px;left:50%;transform:translate(-50%)}.toolbar{background:#1f2430e0;border-radius:12px;gap:6px;padding:6px;display:flex}.toolbar button{color:#fff;cursor:pointer;background:0 0;border:none;border-radius:8px;min-width:72px;padding:8px 12px;font-size:14px}.toolbar button.active{background:var(--accent)}.tool-panel{box-sizing:border-box;background:var(--panel-bg);border-radius:12px;width:min(420px,100vw - 24px);padding:12px 14px;font-size:13px;box-shadow:0 2px 12px #00000038}.tool-panel p{margin:4px 0}.tool-panel .policy+.policy{border-top:1px solid #e2e6ee;margin-top:8px;padding-top:8px}.tool-panel .policy label{cursor:pointer;align-items:center;gap:8px;display:flex}.tool-panel .cost{color:var(--muted);margin-left:auto;font-size:12px}.ledger{border-collapse:collapse;width:100%}.ledger caption{text-align:left;color:var(--muted);margin-bottom:4px}.ledger th{text-align:left;font-weight:400}.ledger td{text-align:right;font-variant-numeric:tabular-nums}.ledger tr.total th,.ledger tr.total td{border-top:1px solid #e2e6ee;padding-top:4px}.panel .build button{color:#fff;cursor:pointer;background:#3fae6a;border:none;border-radius:8px;margin-top:12px;padding:8px 12px;font-size:14px}.notice{color:#fff;background:#c2412d;border-radius:8px;padding:8px 14px;font-size:13px;position:absolute;top:70px;left:50%;transform:translate(-50%)}.grade-backdrop{background:#0a0e1873;place-items:center;display:grid;position:absolute;inset:0}.grade{box-sizing:border-box;background:#fff;border-radius:14px;width:min(460px,100vw - 32px);padding:18px 20px;box-shadow:0 6px 24px #0000004d}.grade h2{align-items:center;gap:10px;margin:0 0 12px;font-size:18px;display:flex}.grade .letter{color:#fff;background:#5b6272;border-radius:50%;place-items:center;width:40px;height:40px;font-size:22px;display:inline-grid}.grade .letter-S,.grade .letter-A{background:#2e8b57}.grade .letter-B{background:#2f6db5}.grade .letter-C{background:#d9822b}.grade .letter-D{background:#c2412d}.grade ul{gap:8px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.grade li{grid-template-columns:9em 1fr;align-items:center;gap:2px 10px;display:grid}.grade .meter{background:#e2e6ee;border-radius:4px;height:8px;overflow:hidden}.grade .meter>span{background:var(--accent);height:100%;display:block}.grade .comment{color:var(--muted);grid-column:2;font-size:12px}.grade button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-top:12px;padding:8px 16px}.panel{max-height:calc(100vh - 140px);top:72px}@media (max-width:720px){.left-column{display:none}}
