:root{font-family:var(--pf-body);font-size:var(--pf-size-body);font-weight:var(--pf-weight-normal);color:var(--pf-hud-text);background:var(--pf-desk);font-synthesis:none}*{box-sizing:border-box}html,body,#region-root{overscroll-behavior:none;width:100%;height:100%;margin:0;overflow:hidden}#region-root{height:100dvh;position:relative}button,input{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--pf-names-town);background:var(--pf-desk-panel);border-radius:12px;min-height:44px;padding:9px 13px}button:hover{background:var(--pf-board-paper)}button:disabled{opacity:.5;cursor:default}button:focus-visible,input:focus-visible{outline:3px solid var(--pf-town-side);outline-offset:3px}button[aria-pressed=true],.primary{background:var(--pf-hud-text);color:var(--pf-white);border-color:var(--pf-hud-text)}.primary:hover{background:var(--pf-muted-text)}svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;flex-shrink:0;width:21px;height:21px}h1,h2,h3,p{margin:0}h1{font-size:var(--pf-size-heading);font-weight:var(--pf-weight-bold)}h2{font-size:var(--pf-size-heading)}h3{font-size:var(--pf-size-body)}.region-header{z-index:20;top:max(12px, env(safe-area-inset-top));left:max(16px, env(safe-area-inset-left));right:max(16px, env(safe-area-inset-right));pointer-events:none;align-items:center;gap:12px;display:flex;position:absolute}.region-header>*,.header-actions>*{pointer-events:auto}.region-title{background:var(--pf-desk-panel);box-shadow:0 2px 6px var(--pf-shadow);border-radius:16px;padding:12px 16px}.header-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.menu-toggle{width:48px;height:48px;box-shadow:0 2px 6px var(--pf-shadow);border-radius:50%;padding:12px}.world-menu{z-index:50;right:max(16px, env(safe-area-inset-right));top:calc(max(12px, env(safe-area-inset-top)) + 60px);border:1px solid var(--pf-names-town);background:var(--pf-desk-panel);width:min(280px,100% - 32px);box-shadow:0 3px 12px var(--pf-shadow);border-radius:20px;padding:18px;position:absolute}.world-menu>button:not(.menu-close){text-align:left;width:100%;margin-top:12px;display:block}.world-menu .menu-close{border-radius:50%;width:48px;height:48px;padding:12px;position:absolute;top:8px;right:8px}.world-menu h2{margin-bottom:20px}.world-menu[hidden]{display:none}.layer-panel{z-index:50;top:calc(max(12px, env(safe-area-inset-top)) + 68px);right:max(72px, calc(env(safe-area-inset-right) + 72px));width:min(300px,100% - 88px);max-height:calc(100dvh - max(12px, env(safe-area-inset-top)) - max(12px, env(safe-area-inset-bottom)) - 92px);overscroll-behavior:contain;border:1px solid var(--pf-names-town);background:var(--pf-desk-panel);box-shadow:0 3px 12px var(--pf-shadow);border-radius:20px;padding:16px;position:absolute;overflow-y:auto}.layer-panel[hidden]{display:none}.layers-close{z-index:1;float:right;border-radius:50%;width:48px;height:48px;margin:-10px -10px 0 0;padding:12px;position:sticky;top:0}.layer-panel h2{font-size:var(--pf-size-body);margin:4px 40px 8px 0}.layer-panel p{font-size:var(--pf-size-small);color:var(--pf-muted-text)}.layer-panel label{cursor:pointer;border-bottom:1px solid var(--pf-names-town);align-items:center;gap:12px;min-height:60px;padding:9px 0;display:flex}.layer-panel input{width:22px;height:22px;accent-color:var(--pf-hud-text);flex-shrink:0}.layer-panel label span{font-size:var(--pf-size-label)}.layer-panel small{font-size:var(--pf-size-small);color:var(--pf-muted-text);margin-top:3px;display:block}.route-legend{font-size:var(--pf-size-small);flex-wrap:wrap;gap:8px 12px;margin:12px 0;display:flex}.route-legend svg{width:17px;height:17px}.route-legend [data-cargo=vegetables] svg{color:var(--pf-vegetables)}.route-legend [data-cargo=fish] svg{color:var(--pf-fish)}.route-legend [data-cargo=logs] svg{color:var(--pf-logs)}.route-legend [data-cargo=planks] svg{color:var(--pf-planks)}.update-banner{z-index:40;background:var(--pf-desk-panel);border:1px solid var(--pf-board-edge);box-shadow:0 2px 8px var(--pf-shadow);border-radius:16px;justify-content:space-between;gap:10px;padding:12px;display:flex;position:fixed;bottom:16px;left:16px;right:16px}.update-banner .hud-btn{border-radius:50%;width:48px;height:48px;padding:12px}.money{background:var(--pf-desk-panel);font-size:var(--pf-size-heading);font-weight:var(--pf-weight-bold);font-variant-numeric:tabular-nums;box-shadow:0 2px 6px var(--pf-shadow);border-radius:16px;padding:12px 16px}.saving{color:var(--pf-warning-text);background:var(--pf-debt);border:0}.saving.is-saved{color:var(--pf-white);background:var(--pf-town-side)}.money.in-debt{color:var(--pf-debt)}.storage-notice{z-index:35;border:1px solid var(--pf-board-edge);background:var(--pf-desk-panel);max-width:460px;box-shadow:0 2px 8px var(--pf-shadow);border-radius:16px;align-items:center;gap:12px;padding:14px;display:flex;position:absolute;top:80px;left:16px;right:84px}.storage-notice[hidden]{display:none}.storage-notice p{font-size:var(--pf-size-label);flex:1}.storage-notice button{border-radius:50%;flex-shrink:0;width:48px;height:48px;padding:12px}.fleet-panel{gap:10px;display:grid}.fleet-panel select{width:100%;min-height:44px;font:inherit;color:inherit;background:var(--pf-desk-panel);border:1px solid var(--pf-board-edge);border-radius:10px;margin-top:6px;padding:8px;display:block}.wagon-row{border-bottom:1px solid var(--pf-names-town);gap:8px;padding:12px 0;display:grid}.wagon-row small{color:var(--pf-muted-text);display:block}.wagon-row label,.service-metrics{font-size:var(--pf-size-small);line-height:1.5}.service-metrics{grid-template-columns:1fr 1fr;gap:8px;display:grid}.service-metrics>div{background:var(--pf-board-paper);border-radius:10px;padding:9px}.service-metrics small,.service-metrics strong{display:block}.service-metrics strong{font-size:var(--pf-size-body)}.metrics-caption{color:var(--pf-muted-text);grid-column:1/-1}.profit-positive{color:var(--pf-town-side)}.profit-negative{color:var(--pf-debt)}.profit-summary small,.profit-summary strong{display:block}.profit-summary small{font-size:var(--pf-size-small)}.profit-summary strong{font-size:var(--pf-size-heading)}.service-row .income.profit-negative{color:var(--pf-debt)}.starting-fleet{align-items:center;gap:8px;display:flex}.starting-fleet span{flex:1}.starting-fleet button{width:44px;padding:8px}.region-stage,.map-board{margin:0;position:absolute;inset:0}.map-board{background:var(--pf-off-map);overflow:hidden}.map-viewport{touch-action:none;position:absolute;inset:0;overflow:hidden}.map-board canvas{touch-action:none;width:100%;height:100%;display:block}.place-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.place{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;text-align:center;background:var(--pf-desk-panel);width:150px;max-width:150px;min-height:44px;box-shadow:0 2px 5px var(--pf-shadow);border-radius:12px;padding:6px 9px;position:absolute;transform:translate(-50%)}.place .place-name{font-size:var(--pf-size-label);font-weight:var(--pf-weight-bold);white-space:nowrap;display:block}.place .place-cargo{font-size:var(--pf-size-small);justify-content:center;align-items:center;gap:4px;margin-top:2px;display:flex}.place .place-cargo svg{width:16px;height:16px}.place .place-stock{font-size:var(--pf-size-small);margin-top:2px;display:block}.place.match{outline:3px solid var(--pf-town-side);outline-offset:3px}.place.selected{background:var(--pf-hud-text);color:var(--pf-white);border-color:var(--pf-hud-text)}.place[data-cargo=vegetables] .place-cargo svg{color:var(--pf-vegetables)}.place[data-cargo=fish] .place-cargo svg{color:var(--pf-fish)}.place[data-cargo=logs] .place-cargo svg{color:var(--pf-logs)}.place[data-cargo=planks] .place-cargo svg{color:var(--pf-planks)}.place.selected .place-cargo svg{color:var(--pf-white)}.map-viewport.overview .place{width:140px;max-width:140px;padding:5px 8px}.map-viewport.overview .place-stock,.map-viewport:not(.show-names) .place-name,.map-viewport:not(.show-cargo) .place-cargo,.map-viewport:not(.show-cargo) .place-stock{display:none}.map-viewport:not(.show-cargo) .place{width:max-content;max-width:150px}.map-viewport.markers-only .place{width:44px;height:44px;min-height:44px;box-shadow:none;background:0 0;border:0;border-radius:50%;padding:0}.map-viewport.markers-only .place.selected{outline:3px solid var(--pf-hud-text);outline-offset:2px}.map-viewport.markers-only .place.match{outline:3px solid var(--pf-town-side);outline-offset:2px}.map-viewport.markers-only .place:focus-visible{outline:3px solid var(--pf-town-side);outline-offset:4px}.map-controls{z-index:15;top:calc(max(12px, env(safe-area-inset-top)) + 68px);right:max(16px, env(safe-area-inset-right));gap:7px;display:grid;position:absolute}.map-controls button{width:44px;height:44px;box-shadow:0 2px 5px var(--pf-shadow);padding:9px}.speed-controls{z-index:20;bottom:max(12px, env(safe-area-inset-bottom));left:max(16px, env(safe-area-inset-left));background:var(--pf-desk-panel);box-shadow:0 2px 5px var(--pf-shadow);border-radius:16px;gap:5px;padding:5px;display:flex;position:absolute}.speed-controls span{display:none}.speed-controls button{min-width:44px}.map-credit{font-size:var(--pf-size-small);color:var(--pf-muted-text);pointer-events:none;position:absolute;bottom:28px;left:220px}.inspector{z-index:21;right:max(16px, env(safe-area-inset-right));top:calc(max(12px, env(safe-area-inset-top)) + 68px);border:1px solid var(--pf-names-town);background:var(--pf-desk-panel);width:320px;max-height:calc(100dvh - 172px);box-shadow:0 3px 14px var(--pf-shadow);border-radius:20px;flex-direction:column;padding:20px;display:flex;position:absolute}.inspector[hidden]{display:none}.inspector-close{z-index:1;border-radius:50%;width:48px;height:48px;padding:12px;position:absolute;top:8px;right:8px}.inspector-body{overscroll-behavior:contain;touch-action:pan-y;min-height:0;overflow-y:auto}.inspector-context{min-height:32px;font-size:var(--pf-size-label);font-weight:var(--pf-weight-bold);flex-shrink:0;margin:0 40px 12px 0}.inspector-body>*+*{margin-top:14px}.inspector-body>h2,.inspector-body>.eyebrow{margin-right:42px}.inspector-actions{flex-shrink:0;gap:8px;padding-top:12px;display:grid}.inspector-actions[hidden]{display:none}.start-prompt{z-index:16;bottom:calc(max(12px, env(safe-area-inset-bottom)) + 70px);left:max(16px, env(safe-area-inset-left));background:var(--pf-desk-panel);border:1px solid var(--pf-names-town);width:min(300px,100% - 96px);box-shadow:0 3px 12px var(--pf-shadow);border-radius:20px;padding:16px;position:absolute}.start-prompt[hidden]{display:none}.start-prompt h2{font-size:var(--pf-size-body);margin-right:35px}.start-prompt p{font-size:var(--pf-size-label);margin:6px 30px 12px 0}.start-prompt .primary{width:100%}.objective-close{background:0 0;border:0;width:48px;height:48px;padding:12px;position:absolute;top:4px;right:4px}.eyebrow{color:var(--pf-muted-text);font-size:var(--pf-size-small)}.inspector .muted{color:var(--pf-muted-text);font-size:var(--pf-size-label)}.inspector .instruction{font-size:var(--pf-size-label);line-height:1.5}.cargo-panel{background:var(--pf-board-paper);border-radius:14px;padding:14px}.cargo-panel .cargo-title{align-items:center;gap:7px;margin-bottom:9px;display:flex}.cargo-panel .amount{font-size:var(--pf-size-heading);font-weight:var(--pf-weight-bold);font-variant-numeric:tabular-nums}progress{appearance:none;background:var(--pf-names-town);border:0;border-radius:8px;width:100%;height:8px;margin:10px 0 0;overflow:hidden}progress::-webkit-progress-bar{background:var(--pf-names-town)}progress::-webkit-progress-value{background:var(--pf-town-side)}progress::-moz-progress-bar{background:var(--pf-town-side)}.choice-list{gap:7px;display:grid}.choice-list button{text-align:left}.choice-list small{color:var(--pf-muted-text);font-size:var(--pf-size-small);margin-top:3px;display:block}.explore summary{cursor:pointer;min-height:48px;padding:12px 0}.inspector .primary{width:100%}.cost-row{font-size:var(--pf-size-label);justify-content:space-between;gap:10px;margin-top:7px;display:flex}.cost-row.total{font-weight:var(--pf-weight-bold);font-size:var(--pf-size-body);border-top:1px solid var(--pf-names-town);padding-top:8px}.service-row{border-top:1px solid var(--pf-names-town);padding:12px 0}.service-row p+p{margin-top:6px}.service-row .income{color:var(--pf-town-side)}.toast{left:16px;right:84px;top:calc(max(12px, env(safe-area-inset-top)) + 68px);background:var(--pf-desk-panel);max-width:440px;box-shadow:0 2px 8px var(--pf-shadow);border:1px solid var(--pf-town-side);font-size:var(--pf-size-label);z-index:25;border-radius:14px;align-items:center;gap:12px;padding:12px 14px;display:flex;position:absolute}.toast span{flex:1}.toast button{border-radius:50%;flex-shrink:0;width:48px;height:48px;padding:12px}.toast[hidden]{display:none}dialog{border:1px solid var(--pf-names-town);background:var(--pf-desk-panel);width:calc(100% - 32px);max-width:440px;color:var(--pf-hud-text);border-radius:20px;padding:24px}dialog::backdrop{background:var(--pf-backdrop)}dialog h2{margin-bottom:14px;margin-right:40px}dialog p{margin:12px 0;line-height:1.5}dialog .close{border-radius:50%;width:48px;height:48px;padding:12px;position:absolute;top:12px;right:12px}dialog label{margin:16px 0;display:block}dialog input{border:1px solid var(--pf-board-edge);background:var(--pf-white);border-radius:10px;width:100%;min-height:44px;margin-top:6px;padding:9px;display:block}.seed-caption{font-size:var(--pf-size-small);overflow-wrap:anywhere}@media (width<=900px){.region-title{display:none}.region-header{gap:8px}.header-actions{gap:7px;margin:0}.menu-toggle{margin-left:auto}.money{font-size:var(--pf-size-body);padding:12px}.saving{font-size:var(--pf-size-small);padding:9px}.saving svg{width:18px;height:18px}.inspector{top:auto;left:max(12px, env(safe-area-inset-left));right:max(12px, env(safe-area-inset-right));bottom:calc(max(12px, env(safe-area-inset-bottom)) + 70px);width:auto;max-height:min(44dvh,390px);padding:16px}.map-credit,.map-viewport.overview.show-cargo:not(.show-names) .place:not([data-kind=town]) .place-cargo span{display:none}.map-viewport.overview.show-cargo:not(.show-names) .place:not([data-kind=town]){width:44px;padding:9px}.map-viewport.overview.show-cargo:not(.show-names) .place:not([data-kind=town]) .place-cargo{margin:0}.map-viewport.overview .place{max-width:145px}}@media (width>=901px){#region-root:has(.inspector:not([hidden])) .map-controls{right:352px}}@media (width<=559px),(width<=900px) and (height>=521px){.inspector:has(.fleet-panel){max-height:min(60dvh,500px)}.inspector:has(.starting-fleet){max-height:min(56dvh,460px)}}@media (width>=560px) and (width<=900px) and (height<=520px){.map-controls{grid-template-columns:repeat(2,44px)}.inspector{width:300px;max-height:calc(100dvh - 160px);inset:80px 12px auto auto}#region-root:has(.inspector:not([hidden])) .map-controls{right:324px}.start-prompt{width:280px;padding:10px}.start-prompt h2{display:none}.start-prompt p{font-size:var(--pf-size-small);margin:0 32px 8px 0}}
