:root{--bg: #1a1033;--bg2: #2d1b4e;--land: #e8c06c;--land-mid: #d19f4d;--land-dark: #9a6a2c;--land-edge: #3d2512;--sea: #164e63;--sea-light: #2a7a94;--gold: #ffd866;--red: #e85a4f;--green: #6fbf73;--text: #f4f4f0;--text-dim: #b8b4a0;--panel: #0b0620;--panel-light: #1c1340}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;width:100%;font-family:"Press Start 2P",monospace;background:var(--bg);color:var(--text);overflow:hidden;image-rendering:pixelated;-webkit-font-smoothing:none;-moz-osx-font-smoothing:grayscale}button{font-family:inherit}#app{width:100vw;height:100vh;height:100dvh;position:relative;background:radial-gradient(ellipse at 50% 0%,var(--bg2) 0%,var(--bg) 60%,#05030f 100%)}#app:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(1px 1px at 10% 20%,#fff,transparent),radial-gradient(1px 1px at 30% 40%,#fff8,transparent),radial-gradient(1px 1px at 70% 15%,#fff,transparent),radial-gradient(1px 1px at 85% 60%,#fff8,transparent),radial-gradient(1px 1px at 50% 80%,#fff,transparent),radial-gradient(1px 1px at 20% 75%,#fff8,transparent),radial-gradient(2px 2px at 90% 30%,#ffd866,transparent),radial-gradient(1px 1px at 15% 55%,#fff,transparent);background-size:100% 100%;pointer-events:none;opacity:.7}#app:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:repeating-linear-gradient(to bottom,rgba(0,0,0,.15) 0px,rgba(0,0,0,.15) 1px,transparent 1px,transparent 3px);z-index:200;mix-blend-mode:multiply}.lang-switch{position:fixed;top:14px;right:14px;z-index:250;display:flex;gap:3px;padding:3px;background:var(--panel);border:2px solid var(--gold);box-shadow:3px 3px 0 var(--bg),inset 0 0 0 1px #ffd8664d}.lang-switch button{background:transparent;color:var(--text-dim);border:none;padding:6px 10px;font-family:"Press Start 2P",monospace;font-size:10px;letter-spacing:1px;cursor:pointer;image-rendering:pixelated}.lang-switch button:hover{color:var(--text)}.lang-switch button.active{background:var(--gold);color:var(--panel)}.title-screen{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px;text-align:center;padding:20px}.title-screen h1{font-size:clamp(28px,6vw,56px);color:var(--gold);letter-spacing:4px;text-shadow:3px 3px 0 var(--red),6px 6px 0 rgba(0,0,0,.6);animation:float 3s ease-in-out infinite}.title-logo{width:clamp(180px,24vw,280px);height:auto;image-rendering:pixelated;filter:invert(1) sepia(1) saturate(4) hue-rotate(-15deg) brightness(1.1) drop-shadow(0 0 20px rgba(255,216,102,.5));mix-blend-mode:screen;animation:float 3.5s ease-in-out infinite}.title-screen .subtitle{font-size:clamp(10px,1.6vw,14px);color:var(--text-dim);letter-spacing:2px;max-width:600px;line-height:1.8}.title-screen .dedication{font-family:VT323,monospace;font-size:clamp(18px,2.4vw,26px);color:var(--text);line-height:1.4;max-width:700px;padding:0 12px}.title-screen .hero{display:flex;gap:30px;align-items:center;margin:20px 0}.press-start{margin-top:40px;font-size:clamp(10px,1.4vw,14px);color:var(--text);animation:blink 1.1s infinite;cursor:pointer;letter-spacing:3px}.credit{position:absolute;bottom:20px;font-size:8px;color:var(--text-dim);letter-spacing:2px}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:.15}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.map-screen{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;padding:16px;gap:12px}.hud{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border:3px solid var(--gold);background:#0009;box-shadow:0 0 0 3px var(--panel),inset 0 0 0 1px #ffd8664d;font-size:10px}.hud-left{color:var(--gold);letter-spacing:2px}.hud-right{display:flex;gap:10px;align-items:center;font-size:8px;color:var(--text-dim)}.progress-dots{display:flex;gap:6px;align-items:center}.progress-dots .dot{width:10px;height:10px;background:#222;border:2px solid #555}.progress-dots .dot.done{background:var(--gold);border-color:var(--gold);box-shadow:0 0 6px var(--gold)}.progress-dots .dot.current{background:var(--red);border-color:var(--red);animation:pulse .8s infinite alternate}@keyframes pulse{0%{transform:scale(1)}to{transform:scale(1.3)}}.map-container{position:relative;flex:1;border:3px solid var(--gold);background:linear-gradient(180deg,var(--sea) 0%,#0b2f3c 100%);box-shadow:0 0 0 3px var(--panel),0 0 30px #ffd8662e,inset 0 0 60px #00000080;overflow:hidden}.map-svg{width:100%;height:100%;display:block}.city-marker{cursor:pointer}.city-marker.locked{cursor:not-allowed}.city-marker.locked .marker-body{opacity:.55;filter:grayscale(1)}.city-marker:not(.locked):hover .marker-body{transform:scale(1.15);transform-origin:center}.marker-body{transition:transform .1s;transform-origin:center}.city-label{fill:var(--text);font-family:"Press Start 2P",monospace;font-size:10px;text-anchor:middle;paint-order:stroke;stroke:var(--panel);stroke-width:4px;stroke-linejoin:round;pointer-events:none;-webkit-user-select:none;user-select:none}.city-label.current{fill:var(--gold)}.city-label.locked{fill:var(--text-dim)}.pulse-ring{fill:none;stroke:var(--red);stroke-width:2;transform-origin:center;transform-box:fill-box;animation:ringPulse 1.4s infinite}@keyframes ringPulse{0%{transform:scale(.6);opacity:1}to{transform:scale(2.2);opacity:0}}.path-line{stroke-linecap:round;stroke-linejoin:round;fill:none}.path-line.done{stroke:var(--gold);stroke-width:3;filter:drop-shadow(0 0 4px var(--gold))}.path-line.todo{stroke:var(--text-dim);stroke-width:2;stroke-dasharray:4 6;opacity:.5}.bus-group{transform-box:fill-box}.bus-wheel{transform-box:fill-box;transform-origin:center}.bus-group.rolling .bus-wheel{animation:roll .15s linear infinite}@keyframes roll{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.controls{display:flex;justify-content:center;gap:12px;padding:4px 0 8px}.btn{padding:12px 22px;background:var(--red);color:var(--text);border:3px solid var(--panel);box-shadow:4px 4px 0 var(--panel);font-family:inherit;font-size:11px;cursor:pointer;letter-spacing:2px;text-transform:uppercase;transition:transform .05s,box-shadow .05s;image-rendering:pixelated}.btn:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--panel)}.btn:active{transform:translate(4px,4px);box-shadow:0 0 0 var(--panel)}.btn.gold{background:var(--gold);color:var(--panel)}.btn.green{background:var(--green);color:var(--panel)}.btn:disabled{background:#555;color:#999;cursor:not-allowed;transform:none;box-shadow:4px 4px 0 var(--panel)}.modal-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000d1;display:flex;align-items:center;justify-content:center;z-index:150;animation:fadein .15s ease-out;padding:20px}@keyframes fadein{0%{opacity:0}to{opacity:1}}.modal{width:min(760px,100%);max-height:86vh;border:4px solid var(--gold);background:var(--panel);box-shadow:0 0 0 4px var(--bg),0 0 60px #ffd8664d;display:flex;flex-direction:column;animation:popin .18s ease-out}@keyframes popin{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.modal-header{background:var(--gold);color:var(--panel);padding:12px 16px;display:flex;justify-content:space-between;align-items:center;font-size:14px;letter-spacing:2px;image-rendering:pixelated}.modal-header .stop-num{font-size:9px;opacity:.7;margin-right:10px}.close-btn{background:var(--red);color:var(--text);border:2px solid var(--panel);padding:6px 10px;font-family:inherit;font-size:10px;cursor:pointer;letter-spacing:1px}.close-btn:hover{background:#ff7a6f}.modal-body{padding:18px;overflow-y:auto}.blurb{font-family:VT323,monospace;font-size:22px;line-height:1.35;color:var(--text);margin-bottom:16px;padding:12px;background:var(--panel-light);border-left:4px solid var(--gold)}.stop-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;padding-bottom:10px;border-bottom:2px solid var(--gold)}.stop-tab{padding:8px 12px;background:var(--panel-light);color:var(--text-dim);border:2px solid rgba(255,216,102,.25);font-family:inherit;font-size:9px;letter-spacing:1px;cursor:pointer;text-transform:uppercase;image-rendering:pixelated;transition:transform .05s}.stop-tab:hover{color:var(--text);border-color:var(--gold);transform:translate(-1px,-1px)}.stop-tab.active{background:var(--gold);color:var(--panel);border-color:var(--gold);box-shadow:3px 3px 0 var(--panel)}.stop-panel{margin-top:4px}.stop-title{font-family:"Press Start 2P",monospace;font-size:11px;color:var(--gold);letter-spacing:2px;margin-bottom:10px;text-transform:uppercase;text-shadow:2px 2px 0 var(--panel)}.stop-blurb{font-family:VT323,monospace;font-size:22px;line-height:1.4;color:var(--text);margin-bottom:12px;padding:10px 14px;background:var(--panel-light);border-left:3px solid var(--red)}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.gallery .tile{aspect-ratio:4 / 3;background:repeating-linear-gradient(45deg,#221942,#221942 6px,#1a1033 6px,#1a1033 12px);border:2px solid var(--gold);display:flex;align-items:center;justify-content:center;font-size:8px;color:var(--text-dim);text-align:center;padding:8px;letter-spacing:2px}.gallery .tile img{width:100%;height:100%;object-fit:cover;image-rendering:auto}.gallery .tile.clickable{cursor:zoom-in;transition:transform .08s}.gallery .tile.clickable:hover{transform:scale(1.03);outline:2px solid var(--gold)}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000f0;z-index:300;display:flex;align-items:center;justify-content:center;padding:40px;animation:fadein .12s ease-out}.lightbox-figure{display:flex;flex-direction:column;align-items:center;gap:10px;max-width:100%;max-height:100%}.lightbox-stage{position:relative;display:inline-block;line-height:0}.lightbox-img{display:block;max-width:min(92vw,1400px);max-height:82vh;object-fit:contain;border:3px solid var(--gold);box-shadow:0 0 0 3px var(--panel),0 0 40px #ffd86640;background:#000;image-rendering:auto}.lightbox-spinner{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transition:opacity .1s}.lightbox-stage.loading .lightbox-spinner{opacity:1}.lightbox-spinner:before{content:"";width:44px;height:44px;border-radius:50%;border:4px solid rgba(255,216,102,.25);border-top-color:var(--gold);animation:lightbox-spin .8s linear infinite}@keyframes lightbox-spin{to{transform:rotate(360deg)}}.lightbox-counter{font-family:"Press Start 2P",monospace;font-size:10px;color:var(--gold);letter-spacing:2px}.lightbox-close{position:absolute;top:20px;right:20px;background:var(--red);color:var(--text);border:3px solid var(--panel);box-shadow:4px 4px 0 var(--panel);padding:8px 12px;font-family:inherit;font-size:12px;letter-spacing:2px;cursor:pointer}.lightbox-close:hover{background:#ff7a6f}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:var(--gold);color:var(--panel);border:3px solid var(--panel);box-shadow:4px 4px 0 var(--panel);padding:14px 18px;font-family:inherit;font-size:14px;cursor:pointer;-webkit-user-select:none;user-select:none}.lightbox-nav:hover{background:#fff0a8}.lightbox-nav.prev{left:20px}.lightbox-nav.next{right:20px}@media (max-width: 640px){.lightbox-overlay{padding:10px}.lightbox-nav.prev{left:6px}.lightbox-nav.next{right:6px}.lightbox-figure img{max-height:76vh}}@media (max-width: 640px){.map-screen{padding:10px;gap:8px}.hud{padding:8px 10px;font-size:9px;flex-wrap:wrap;gap:6px 10px}.hud-left{font-size:9px;letter-spacing:1px}.hud-right{font-size:7px;gap:6px}.progress-dots .dot{width:8px;height:8px}.controls{flex-wrap:wrap;gap:6px;padding:4px 0 6px}.controls .btn{padding:10px 12px;font-size:10px;letter-spacing:1px;flex:1 1 auto}.lang-switch{top:8px;right:8px;padding:2px}.lang-switch button{padding:5px 8px;font-size:9px}.title-screen{gap:18px;padding:16px}.modal-header{font-size:11px;padding:10px 12px}.modal-body{padding:12px}.stop-tab{font-size:8px;padding:6px 9px}.stop-blurb{font-size:18px;padding:8px 10px}.blurb{font-size:18px;padding:10px}}.modal-body::-webkit-scrollbar{width:10px}.modal-body::-webkit-scrollbar-track{background:var(--bg)}.modal-body::-webkit-scrollbar-thumb{background:var(--gold);border:2px solid var(--bg)}.victory{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000e6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;z-index:160;text-align:center;padding:20px}.victory h2{font-size:clamp(24px,5vw,40px);color:var(--gold);text-shadow:3px 3px 0 var(--red);letter-spacing:4px;animation:float 2s ease-in-out infinite}.victory p{font-family:VT323,monospace;font-size:24px;color:var(--text);max-width:540px;line-height:1.4}
