:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f6f4ee;--surface:#fff;--text:#1d1b16;--muted:#6b665a;--border:#ddd8cc;--grid:#e9e5da;--accent:#c7461a;--error:#b3261e;--blue:#3d7eff;--red:#ff4d4d;--lender:#3dd66b;--borrower:#ff4d4d;--both:#ffe04d;--c1:#2f6fdb;--c2:#c7461a;--c3:#2f9e6e;--c4:#8e5bd6;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--bg:#12110f;--surface:#1c1b18;--text:#ece8dd;--muted:#a39d8e;--border:#34312b;--grid:#2a2823;--accent:#f2c14e;--error:#ff8a80;--c1:#6ea8ff;--c2:#ff8a5c;--c3:#5fd3a1;--c4:#b894f0}}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--bg);color:var(--text);margin:0}button,select,input{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:4px 10px}button{cursor:pointer}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);color:var(--bg);border-color:var(--accent);min-width:5em}button[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px 16px;padding:10px 16px;display:flex}.toolbar h1{letter-spacing:.02em;margin:0;font-size:16px}.toolbar .group{align-items:center;gap:6px;display:flex}.toolbar .seed{width:9em}.toolbar .readout{color:var(--muted);font-variant-numeric:tabular-nums}.badge{border-radius:99px;padding:1px 8px;font-size:12px;font-weight:600}.badge.winter{color:#0b1a33;background:#4f9dff}body[data-view=experiments] .toolbar .badge{display:none}.map-legend{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.map-status{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.legend-items{flex-wrap:wrap;gap:4px 12px;display:flex}.legend-item{align-items:center;gap:4px;display:inline-flex}.legend-item svg{flex-shrink:0}.rate{font-variant-numeric:tabular-nums;min-width:5.5rem;color:var(--muted)}.timeline-group{flex:12rem;min-width:8rem}.timeline{flex:1;min-width:6rem}.stop-control input{width:5rem}.stop-error{color:var(--error);margin-left:.5rem}.toolbar-end{align-items:center;gap:6px;margin-left:auto;display:flex}.layout{grid-template-columns:minmax(0,1fr) 400px;gap:16px;padding:16px;display:grid}.stage{flex-direction:column;gap:10px;min-width:0;display:flex}.display-controls{flex-wrap:wrap;gap:12px;display:flex}#grid{aspect-ratio:1;width:100%;max-width:min(100%,82vh);image-rendering:pixelated;touch-action:none;cursor:crosshair;border-radius:6px;align-self:center}.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;min-width:0;max-height:calc(100vh - 90px);display:flex}.tabs{border-bottom:1px solid var(--border);display:flex}.tabs button{color:var(--muted);background:0 0;border:0;border-radius:0;flex:1;padding:10px}.tabs button[aria-selected=true]{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent)}.panel-body{padding:12px 14px;overflow:auto}.banner{background:var(--error);color:#fff;align-items:center;gap:12px;padding:8px 16px;display:flex}.banner button{color:#fff;background:0 0;border-color:#fff}.hint{color:var(--muted)}.preset-reference{margin-bottom:.2em;font-size:.85em}.error{color:var(--error);margin:2px 0 0;font-size:12px}@media (width<=860px){.layout{grid-template-columns:1fr;padding:16px}.panel{max-height:none}}.rules section{border-bottom:1px solid var(--border);padding:10px 0}.rules h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 6px;font-size:13px}.rules h3 .switch{color:var(--text);text-transform:none;letter-spacing:0;font-size:14px}.rules .presets select{width:100%;margin-top:4px}.rules .control{gap:2px;margin:6px 0;display:grid}.rules .control .help{margin:0;font-size:12px}.rules .data-credit{margin:0 0 8px;font-size:12px}.rules .row{align-items:center;gap:8px;display:flex}.rules .row input[type=range]{flex:1}.rules .num{width:5.5em}.badge{background:var(--accent);color:var(--bg);border-radius:99px;padding:1px 6px;font-size:11px}.rules .schedule{margin:0 0 6px;padding-left:1.2em;font-size:12px}.error p{margin:2px 0}.charts,.charts .economy,.charts .disease,.charts .goods,.charts .pollution{gap:12px;display:grid}.charts .economy h3,.charts .disease h3,.charts .goods h3,.charts .pollution h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:8px 0 0;font-size:13px}.chart{margin:0}.chart figcaption{color:var(--muted);margin-bottom:2px;font-size:12px}.u-legend{color:var(--text);font-size:12px}.tools{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.tool-buttons{flex-wrap:wrap;gap:4px;display:flex}.tool-options{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.tool-options .num{width:4.5em}.inspect table{border-collapse:collapse;width:100%}.inspect th{text-align:left;color:var(--muted);white-space:nowrap;vertical-align:top;padding:3px 10px 3px 0;font-weight:400}.inspect td{font-variant-numeric:tabular-nums;padding:3px 0}.inspect code{letter-spacing:.08em;word-break:break-all;font-size:12px}.links{flex-wrap:wrap;gap:4px;display:flex}button.link{padding:0 6px;font-size:12px}.menu{position:relative}.menu summary{cursor:pointer;border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:4px 10px;list-style:none}.menu summary::-webkit-details-marker{display:none}.menu-items{background:var(--surface);border:1px solid var(--border);z-index:10;border-radius:8px;gap:4px;min-width:12em;padding:6px;display:grid;position:absolute;top:calc(100% + 4px);right:0}.menu-items button{text-align:left}.goods .good{border-left:3px solid var(--border);gap:4px;margin:8px 0;padding-left:8px;display:grid}.goods .name,.pollution-table .name{width:9em}.goods input[type=color]{width:2.2em;height:1.8em;padding:0}.goods .peaks{gap:4px;display:grid}.goods .peak .num{width:4.5em}.pollution-table{overflow-x:auto}.pollution-table table{border-collapse:collapse;margin-bottom:6px;font-size:12px}.pollution-table th,.pollution-table td{text-align:left;padding:2px 4px;font-weight:400}.pollution-table tr.pollutant th{padding-top:8px}.pollution-table .num{width:4.5em}.swatch{vertical-align:middle;border-radius:2px;width:10px;height:10px;display:inline-block}.view-switch{display:flex}.view-switch button{border-radius:0}.view-switch button:first-child{border-radius:6px 0 0 6px}.view-switch button:last-child{border-radius:0 6px 6px 0;margin-left:-1px}body[data-view=experiments] .toolbar .group,body[data-view=experiments] .toolbar .readout,body[data-view=experiments] .toolbar-end{display:none}.experiments{padding:16px}.experiments-view{grid-template-columns:380px minmax(0,1fr);align-items:start;gap:16px;display:grid}.sweep-setup{background:var(--surface);border:1px solid var(--border);overflow-wrap:anywhere;border-radius:8px;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0;padding:12px 14px;display:grid}.sweep-setup>*{min-width:0}.sweep-setup .row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sweep-setup select{max-width:100%}.sweep-picker{white-space:nowrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.sweep-picker select{text-overflow:ellipsis;width:100%;min-width:0}.sweep-editor{border:0;min-width:0;margin:0;padding:0}.sweep-fixed h2{margin:0;font-size:15px}.sweep-fixed dl{grid-template-columns:auto 1fr;gap:2px 10px;margin:6px 0;display:grid}.sweep-fixed dt{color:var(--muted)}.sweep-fixed dd{margin:0}.sweep-form{gap:6px;display:grid}.sweep-form fieldset{border:1px solid var(--border);border-radius:6px;gap:4px;margin:0;padding:6px 10px;display:grid}.sweep-form .control,.sweep-form .control>label{gap:2px;display:grid}.sweep-form .row{align-items:center;gap:6px;display:flex}.sweep-form input[type=text]{width:100%}.sweep-form .num{width:7em}.run-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.run-bar progress{flex:1;min-width:6em}.sweep-results{gap:12px;min-width:0;display:grid}.sweep-chart{margin:0}.sweep-table{font-size:12px;overflow-x:auto}.sweep-table table{border-collapse:collapse}.sweep-table th,.sweep-table td{text-align:right;font-variant-numeric:tabular-nums;padding:2px 8px;font-weight:400}.sweep-table th:first-child,.sweep-table td:first-child{text-align:left}.sweep-table th{color:var(--muted)}.sweep-outputs{flex-wrap:wrap;gap:6px;display:flex}.sweep-outputs[hidden]{display:none}@media (width<=860px){.experiments-view{grid-template-columns:1fr}}.tag-groups{gap:4px;margin-top:6px;display:grid}.tag-groups .name{width:7em}.tag-groups .num{width:4em}.tag-groups input[type=color]{width:2.2em;height:1.8em;padding:0}.goods .map-row{flex-wrap:wrap}.goods .noise{flex-wrap:wrap;flex-basis:100%}.goods .noise .num{width:4.5em}.goods .noise .seed{width:8.5em}.chip{border:1px solid var(--border);min-width:0;max-width:10em;color:var(--muted);border-radius:99px;flex:0 auto;align-items:center;gap:4px;padding:1px 4px 1px 10px;font-size:12px;display:inline-flex;overflow:hidden}.chip-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chip button{flex-shrink:0}body[data-view=experiments] .toolbar .chip{display:none}.credit{gap:8px;display:grid}.credit .hint{margin:0}.credit-graph{overflow-x:auto}.credit-graph svg{display:block}.credit-edges line{stroke:var(--muted);stroke-opacity:.6;stroke-width:1px}.credit-node{stroke:var(--text);stroke-width:.5px;cursor:pointer}.credit-node:focus{outline:none}.credit-node:focus-visible{stroke-width:2.5px}.credit-node.lender{fill:var(--lender)}.credit-node.borrower{fill:var(--borrower)}.credit-node.both{fill:var(--both)}.notice{z-index:20;background:var(--surface);max-width:min(92vw,44em);color:var(--text);border:1px solid var(--border);border-radius:8px;align-items:center;gap:10px;padding:8px 12px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #0000002e}.notice button{flex-shrink:0}.shortcuts-card{z-index:20;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.75rem 1rem;position:fixed;bottom:1rem;right:1rem;box-shadow:0 6px 20px #0000002e}.shortcuts-card h2{margin:0 0 .5rem;font-size:1rem}.shortcuts-card dl{grid-template-columns:auto 1fr;gap:.25rem .75rem;margin:0;display:grid}.shortcuts-card dd{margin:0}.replay-chip{max-width:17em}.menu-row{align-items:center;gap:6px;display:flex}.menu-row span{flex:1}.record{display:inline-flex}.record-stop{color:var(--error);font-variant-numeric:tabular-nums}.menu-items label{align-items:center;gap:6px;padding:2px 4px;display:flex}.grids{gap:12px;min-width:0;display:grid}body[data-compare] .grids{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.world{flex-direction:column;gap:6px;min-width:0;margin:0;display:flex}.world-header{flex-wrap:wrap;align-items:center;gap:8px;min-height:28px;display:flex}.world-header .chip{max-width:14em}body[data-compare] #grid{max-width:100%}.grid-b{aspect-ratio:1;width:100%;image-rendering:pixelated;touch-action:none;cursor:crosshair;border-radius:6px}.ring-view{aspect-ratio:1;touch-action:none;cursor:crosshair;border-radius:6px;align-self:center;width:100%;max-width:min(100%,46vh)}body[data-model=ring] #grid,body[data-model=ring] .grid-b{max-width:min(100%,36vh)}body[data-model=anasazi] #grid,body[data-model=anasazi] .grid-b{max-width:min(100%,54vh)}body[data-model=tags] #grid,body[data-model=tags] .grid-b{max-width:min(100%,36vh)}.copy-progress{text-align:center;font-variant-numeric:tabular-nums;margin:0;padding:24px 0}.chips{display:contents}.compare-toggle{margin-left:-8px}body[data-view=experiments] .compare-toggle{display:none}dialog.keep{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:16px 18px}dialog.keep::backdrop{background:#0006}dialog.keep p{margin:0 0 12px}dialog.keep .row{justify-content:flex-end;gap:8px;display:flex}.world-switch{align-items:center;gap:6px;margin:0 0 10px;display:flex}.world-label{color:var(--muted);margin:0 0 8px;font-weight:600}.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
