*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1f2a30}body{background:linear-gradient(#cfdde6,#e9eef0 55%,#f3f1ea)}#stars{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;opacity:0}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}#labels{position:fixed;inset:0;pointer-events:none;overflow:hidden}.label{position:absolute;left:0;top:0;white-space:nowrap;font-size:11px;font-weight:600;line-height:1;padding:3px 6px;border-radius:9px;background:#ffffffe0;box-shadow:0 1px 3px #0000002e;will-change:transform}.label.town-1{font-size:13px;background:#282e36e6;color:#fff}.label.town-3{font-size:10px;font-weight:500;background:#ffffffbf}.label.capital{font-size:13px;background:#be2d23f0;color:#fff}.label.ring-orr{background:#d9480f;color:#fff}.label.ring-irr{background:#6f2dbd;color:#fff}.label.highway{background:#39404c;color:#fff;border-radius:4px}.label.river{background:#246ea0e6;color:#fff;font-style:italic}.label.hill{background:#3f583f;color:#fff}.label.temple{background:#fff4da;color:#553820}.label.station{background:#8f2e24;color:#fff;border-radius:4px}.label.station:before{content:"🚉 "}.label.station-small{font-size:10px;font-weight:500;background:#fff4ece6;color:#6b2a20;border-radius:4px}header{position:fixed;left:12px;top:12px;right:210px;pointer-events:none}@media (max-width: 699px){header{right:150px}}h1{margin:0;font-size:17px;font-weight:700}header p{margin:3px 0 0;font-size:11.5px;color:#4a5961}button{font:inherit;font-size:12px;font-weight:600;border:0;border-radius:10px;padding:9px 10px;background:#ffffffeb;color:#1f2a30;box-shadow:0 1px 4px #0003;min-width:48px;min-height:40px}button:active{background:#e3e8eb}body.intro-playing :is(header,#labels,#time-bar,#legend,#panels-toggle,#btn-sound,#zoom,#north,#hint),body.map-only :is(header,#labels,#time-bar,#legend,#panels-toggle,#btn-sound,#zoom,#north,#hint,#menu-credits),body.map-only #buttons>button:not(:is(#btn-map-only,#btn-tour,#btn-tour-mute)){display:none}#btn-tour,#btn-tour-mute{display:none}#plan-switch,#style-switch{display:flex;gap:2px;padding:3px;border-radius:10px;background:#ffffffeb;box-shadow:0 1px 4px #0003}#plan-switch[hidden],#style-switch[hidden],body.map-only :is(#plan-switch,#style-switch){display:none}#style-switch.off{opacity:.45;pointer-events:none}#plan-switch button,#style-switch button{flex:1;padding:6px 7px;border-radius:8px;box-shadow:none;background:transparent}#plan-switch button[aria-pressed=true],#style-switch button[aria-pressed=true]{background:#1f2a30;color:#fff}#btn-projects{display:inline-flex;align-items:center;justify-content:center;gap:6px}#btn-projects[hidden]{display:none}#btn-projects i{width:9px;height:9px;border-radius:50%;background:#adb5bd}#btn-projects[aria-pressed=true] i{background:#e8590c;box-shadow:0 0 0 3px #e8590c40}#btn-projects[aria-pressed=false]{opacity:.7}body.map-only #btn-tour,body.tour-playing #btn-tour-mute:not([hidden]){display:block}#tour-fade{position:fixed;inset:0;background:#101517;opacity:0;pointer-events:none}#time-bar{position:fixed;left:12px;top:58px;display:flex;gap:2px;padding:3px;max-width:calc(100% - 98px);overflow-x:auto;scrollbar-width:none;background:#ffffffeb;border-radius:12px;box-shadow:0 1px 4px #0003}#time-bar button{display:flex;flex-direction:column;align-items:center;gap:2px;flex:none;min-width:45px;min-height:0;padding:5px 3px 4px;border-radius:9px;box-shadow:none;background:transparent;font-size:10px;font-weight:600;color:#4a5961}#time-bar button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}#time-bar button.active{background:#1f2a30;color:#fff}#time-bar.failed{padding:8px 10px;font-size:11px;color:#8a2a20}body.dark h1{color:#eef2f7}body.dark header p{color:#b9c3d0}#zoom{position:fixed;right:16px;bottom:96px;width:42px;display:flex;flex-direction:column;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px #0003}#zoom button{min-width:0;width:42px;height:42px;min-height:0;padding:0;border-radius:0;box-shadow:none;font-size:22px;font-weight:500;line-height:1}#zoom button+button{border-top:1px solid #e1e4e6}#btn-sound{position:fixed;right:16px;bottom:192px;width:42px;height:42px;min-width:0;min-height:0;padding:0;border-radius:50%;display:grid;place-items:center}#btn-sound[hidden]{display:none}#btn-sound svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}#btn-sound .cross,#btn-sound.off .wave{display:none}#btn-sound.off .cross{display:block}#btn-sound.off{color:#8a949a}#north{position:fixed;right:16px;bottom:44px;width:42px;height:42px;border-radius:50%;background:#ffffffeb;box-shadow:0 1px 4px #0003;display:grid;place-items:center;padding:0;cursor:pointer}#north:hover{background:#fff}#north:active{background:#e3e8eb}#north svg{width:26px;height:26px;pointer-events:none}#legend{position:fixed;left:12px;bottom:40px;max-width:calc(100% - 80px);background:#ffffffed;border-radius:12px;box-shadow:0 1px 4px #0003;padding:8px 10px;font-size:11.5px}#legend-toggle{display:block;min-height:32px;padding:6px 10px;box-shadow:none;background:#eef1f2;margin-bottom:6px}#legend.min #legend-body{display:none}#legend.min #legend-toggle{margin:0}#legend.min{padding:6px}#legend label{display:flex;align-items:center;gap:7px;padding:4px 0;white-space:nowrap}#legend input{width:16px;height:16px;margin:0}#legend i{width:18px;height:6px;border-radius:3px;display:inline-block;flex:none}#legend small{display:block;margin-top:5px;color:#5b6870;font-size:10px;white-space:normal;max-width:230px}#road-key{border-top:1px solid #e1e4e6;margin-top:5px;padding-top:5px}.key-row{display:flex;align-items:center;gap:8px;padding:3px 0;white-space:nowrap}.key-row span:first-child{width:100px;display:flex;justify-content:center;flex:none}.key-row canvas{border-radius:2px;display:block}#time-bar,#legend{transition:transform .3s ease,opacity .3s ease}body.panels-hidden #time-bar,body.panels-hidden #legend{transform:translate(calc(-100% - 16px));opacity:0;pointer-events:none}#panels-toggle{position:fixed;left:0;top:122px;min-width:0;width:26px;height:48px;padding:0;border-radius:0 12px 12px 0;display:grid;place-items:center}#panels-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s ease}body.panels-hidden #panels-toggle svg{transform:rotate(180deg)}#osm-credit{position:fixed;left:12px;bottom:8px;padding:2px 4px;border-radius:3px;font-size:12px;line-height:1.3;color:#fff;background:#1f2a30}.map-notice{margin:12px 0 0;color:#3d4a52;font-size:12px;line-height:1.4}.map-notice a{color:inherit}#menu-credits{padding:8px 10px;border-radius:10px;background:#fffffff7}#menu-credits summary{cursor:pointer;font-size:12px;font-weight:600}#menu-credits .map-notice{max-width:230px}#hint{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:#1f2a30d1;color:#fff;font-size:12.5px;padding:9px 14px;border-radius:18px;pointer-events:none;transition:opacity .6s;text-align:center}#error{position:fixed;inset:0;display:none;place-items:center;padding:24px;text-align:center;font-size:14px}#startup-loading{position:fixed;inset:0;z-index:19;display:grid;place-items:center;background:#e9eef0eb}html.intro-waiting #startup-loading{display:none}.loading-status{margin:0;padding:14px 20px;border-radius:12px;text-align:center;background:#1f2a30;color:#fff;font-weight:700;font-variant-numeric:tabular-nums}@media (min-width: 700px){h1{font-size:21px}#time-bar{top:66px}#panels-toggle{top:132px}.label{font-size:12.5px}.label.town-1,.label.capital{font-size:15px}.label.town-3{font-size:11px}}#top-actions{position:fixed;right:12px;top:12px;z-index:6;display:flex;gap:8px}#top-actions>button{display:flex;align-items:center;gap:6px;padding:8px 12px}#top-actions svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round}body.menu-open #menu-toggle,body.search-open #search-toggle{background:#1f2a30;color:#fff}#search-panel{position:fixed;right:12px;top:58px;z-index:7;width:min(330px,calc(100vw - 24px));padding:8px;border-radius:12px;background:#fffffffa;box-shadow:0 4px 16px #00000038}#search-panel[hidden]{display:none}#search-input{width:100%;box-sizing:border-box;padding:9px 11px;border:1px solid #ced4da;border-radius:8px;font:inherit;font-size:14px;color:#1f2a30;background:#fff;outline:none}#search-input:focus{border-color:#e8590c;box-shadow:0 0 0 3px #e8590c33}#search-results{list-style:none;margin:6px 0 0;padding:0;max-height:min(360px,calc(100dvh - 140px));overflow-y:auto}#search-results li[role=option]{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 9px;border-radius:8px;cursor:pointer;font-size:13px}#search-results li[aria-selected=true]{background:#f1f3f5}.search-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:#1f2a30}.search-kind{flex:none;padding:2px 7px;border-radius:10px;font-size:10.5px;font-weight:600;background:#e9ecef;color:#495057}.search-kind.kind-project{background:#fff0e6;color:#c2410c}.search-kind:is(.kind-city,.kind-town,.kind-capital){background:#e7f0fb;color:#1c5fa8}.search-kind:is(.kind-hill,.kind-river){background:#e9f5ea;color:#2b6a33}.search-empty{padding:10px 9px 4px;color:#6b737c;font-size:13px}body.dark #search-panel{background:#1d2530fa}body.dark #search-input{background:#141b23;color:#eef2f7;border-color:#3a4655}body.dark .search-name{color:#eef2f7}body.dark #search-results li[aria-selected=true]{background:#2a3442}@media (max-width: 699px){#search-toggle span{display:none}#search-toggle{padding:8px 10px}}#buttons{position:fixed;right:12px;top:58px;display:none;grid-template-columns:1fr 1fr;gap:6px;padding:8px;grid-auto-flow:row dense;width:min(250px,calc(100vw - 24px));border-radius:12px;max-height:calc(100dvh - 70px);overflow-y:auto;background:#fffffff7;box-shadow:0 4px 16px #00000038;z-index:6}body.menu-open #buttons{display:grid}#buttons>button{padding:8px 6px;font-size:12px;box-shadow:none;background:#eef1f2}body.menu-open #buttons>button.wide{grid-column:span 2}#buttons>:is(#plan-switch,#style-switch){grid-column:span 2;box-shadow:none;background:#eef1f2}#menu-credits{grid-column:1 / -1;padding:8px 4px 0;border-top:1px solid #e1e4e6;border-radius:0;background:none}body.map-only #buttons{display:flex;flex-direction:column;top:12px;width:auto;padding:0;background:none;box-shadow:none}body:is(.map-only,.intro-playing) :is(#top-actions,#search-panel),body.intro-playing #buttons{display:none}#intro{display:none}html.intro-waiting #intro{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:16px;background:radial-gradient(ellipse at center,#10182073,#101820c7);transition:opacity .6s ease}#intro.leaving{opacity:0;pointer-events:none}.intro-card{width:min(420px,100%);padding:26px 24px 20px;border-radius:18px;text-align:center;max-height:calc(100dvh - 32px);overflow-y:auto;background:#fffffff2;box-shadow:0 12px 40px #00000059}.intro-kicker{margin:0;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#6b7880}.intro-card h2{margin:6px 0 8px;font-size:26px}.intro-lead{margin:0 0 18px;font-size:14px;line-height:1.45;color:#3d4a52}#intro-enter{display:block;width:100%;min-height:48px;font-size:16px;font-weight:700;background:#1f2a30;color:#fff;border-radius:12px}#intro-enter:disabled{opacity:.55}#intro-enter[hidden]{display:none}.intro-link{margin-top:10px;background:none;box-shadow:none;color:#3d4a52;text-decoration:underline;min-height:36px}.intro-never{display:flex;justify-content:center;align-items:center;gap:6px;font-size:12px;color:#4a5961;margin-top:2px}.intro-note{margin:10px 0 0;font-size:11.5px;color:#6b7880}#intro-skip-live{position:fixed;right:16px;bottom:40px;z-index:15}#intro-skip-live[hidden]{display:none}#projects{position:fixed;inset:0;pointer-events:none;z-index:4}body.intro-playing #projects{display:none}#projects>*{position:absolute;left:0;top:0;pointer-events:auto;will-change:transform}.project-chip{display:flex;align-items:center;gap:4px;max-width:140px;padding:2px 7px 2px 5px;border-radius:10px;font-size:10.5px;font-weight:600;line-height:1.35;background:#fffffff0;color:#1f2a30;box-shadow:0 1px 4px #00000038;cursor:pointer;min-width:0;min-height:0}.project-chip:before{content:"";position:absolute;inset:-6px -2px}.project-chip .dot{flex:none;width:6px;height:6px;border-radius:50%;background:#e8590c}.project-chip .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-card{width:220px;border-radius:12px;background:#fff;color:#1f2a30;box-shadow:0 6px 22px #0000004d;font-size:12px}.project-card:after{content:"";position:absolute;left:50%;bottom:-6px;width:12px;height:12px;background:inherit;transform:translate(-50%) rotate(45deg);box-shadow:3px 3px 6px #0000001f}.project-open{position:relative;z-index:1;display:block;color:inherit;text-decoration:none;border-radius:12px;overflow:hidden;background:inherit}a.project-open:hover h3{text-decoration:underline}a.project-open:focus-visible{outline:3px solid #e8590c;outline-offset:2px}.project-photo{position:relative;height:112px;background:linear-gradient(135deg,#ffb37a,#e8590c 60%,#a8400a)}.project-photo img{width:100%;height:100%;object-fit:cover;display:block}.project-badges{position:absolute;left:8px;bottom:8px;right:8px;display:flex;flex-wrap:wrap;gap:4px}.project-badges .badge{padding:2px 7px;border-radius:10px;font-size:10.5px;font-weight:600;background:#ffffffeb;color:#1f2a30}.project-badges .badge.sample{background:#1f2a30;color:#fff}.project-badges :is(.status-launched,.status-ready,.status-completed,.status-construction_completed,.status-development_completed){background:#2b8a3e;color:#fff}.project-badges :is(.status-under_construction,.status-under_development){background:#e8590c;color:#fff}.project-badges :is(.status-planned,.status-announced){background:#1c7ed6;color:#fff}.project-badges :is(.status-sold_out,.status-on_hold){background:#868e96;color:#fff}.project-close{position:absolute;z-index:2;right:6px;top:6px;width:26px;height:26px;min-width:0;min-height:0;padding:0;border-radius:50%;font-size:16px;line-height:1;background:#ffffffe6;color:#1f2a30;box-shadow:none}.project-body{padding:8px 11px 10px}.project-body h3{margin:0 0 2px;font-size:13.5px;line-height:1.25}.project-kind{color:#6b737c;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-progress{display:flex;align-items:center;gap:8px;margin-bottom:7px;font-weight:600;font-size:11px}.project-progress-bar{flex:1;height:5px;border-radius:3px;background:#e9ecef;overflow:hidden}.project-progress-bar span{display:block;height:100%;border-radius:3px;background:#2b8a3e}.project-link{font-weight:700;color:#e8590c}body.dark :is(.project-chip,.project-card){background:#1d2530;color:#eef2f7}body.dark .project-kind{color:#aab4c0}body.dark .project-progress-bar{background:#34404d}@media (max-width: 699px){.project-card{width:196px}.project-photo{height:92px}}#preview-banner{position:fixed;left:50%;bottom:14px;transform:translate(-50%);z-index:8;max-width:calc(100vw - 24px);padding:6px 12px;border-radius:16px;background:#1f2a30;color:#fff;font-size:12px;font-weight:600;pointer-events:none;box-shadow:0 2px 8px #0000004d}body.embed :is(header,#legend,#time-bar,#panels-toggle,#top-actions,#buttons,#search-panel,#btn-sound,#hint,#intro,#intro-skip-live,#menu-credits){display:none!important}body.embed #preview-banner{top:8px;bottom:auto;left:8px;transform:none;font-size:11px;padding:4px 9px;opacity:.85}
