:root{--bg:#0b0e14;--bg-panel:#131824;--bg-elevated:#1b2232;--border:#262f44;--text:#e8ecf4;--text-dim:#93a0b8;--accent:#f5b301;--green:#1fd67f;--red:#ff5c7a;--radius:14px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:Avenir Next,Avenir,Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);margin:0}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}h1,h2,h3,p{margin:0}.app-loading{height:100%;color:var(--text-dim);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.logo-t{color:#000;background:#fff;border:5px solid #000;border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;font-size:44px;font-weight:800;display:flex;box-shadow:0 0 0 3px #fff}.logo-t.pulse{animation:1.2s ease-in-out infinite pulse}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.home-screen{max-width:1080px;min-height:100%;margin:0 auto;padding:48px 24px 64px}.hero{text-align:center;flex-direction:column;align-items:center;gap:12px;margin-bottom:40px;display:flex}.hero h1{letter-spacing:-1px;font-size:44px}.tagline{color:var(--text-dim);font-size:18px}.star-total{background:var(--bg-panel);border:1px solid var(--border);border-radius:999px;padding:8px 20px;font-weight:600}.pack-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;display:grid}.pack-card{text-align:left;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:10px;padding:22px;transition:border-color .2s;display:flex}.pack-card:hover:not(.locked){border-color:var(--accent)}.pack-card.locked{opacity:.45;cursor:not-allowed}.pack-card h3{font-size:20px}.pack-card p{color:var(--text-dim);flex:1;font-size:14px;line-height:1.5}.pack-number{background:var(--bg-elevated);border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-weight:700;display:flex}.explore-card .pack-number{font-size:18px}.pack-progress{color:var(--text-dim);align-items:center;gap:10px;font-size:13px;display:flex}.pack-progress-bar{background:var(--bg-elevated);border-radius:3px;flex:1;height:6px;overflow:hidden}.pack-progress-fill{background:var(--accent);border-radius:3px;height:100%;transition:width .4s}.pack-locked-note{color:var(--text-dim);font-size:13px}.star{color:#3a445c;font-size:inherit}.star.earned{color:var(--accent)}.pack-screen{flex-direction:column;gap:18px;max-width:860px;min-height:100%;margin:0 auto;padding:28px 24px 64px;display:flex}.pack-header{align-items:center;gap:18px;display:flex}.pack-header h1{font-size:26px}.pack-desc{color:var(--text-dim);font-size:14px}.pack-star-count{white-space:nowrap;margin-left:auto;font-weight:700}.cards-toggle{align-self:flex-start}.line-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid;overflow:hidden}.line-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.line-card-head{align-items:center;gap:10px;margin-bottom:6px;display:flex}.line-card-extent{color:var(--accent);margin-bottom:8px;font-size:13px;font-weight:600}.line-card ul{color:var(--text-dim);margin:0;padding-left:18px;font-size:13px;line-height:1.55}.challenge-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.challenge-row{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:14px;width:100%;padding:14px 18px;transition:border-color .15s;display:flex}.challenge-row:hover{border-color:var(--accent)}.challenge-num{background:var(--bg-elevated);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:700;display:flex}.challenge-route{text-align:left;flex-wrap:wrap;flex:1;align-items:center;gap:8px;display:flex}.challenge-route .arrow{color:var(--text-dim)}.challenge-stars{white-space:nowrap;font-size:18px}.challenge-screen,.explore-screen{flex-direction:column;height:100%;display:flex}.challenge-header{border-bottom:1px solid var(--border);background:var(--bg-panel);flex-wrap:wrap;align-items:center;gap:14px;padding:12px 18px;display:flex}.challenge-title{flex:1;align-items:center;gap:10px;min-width:200px;font-size:17px;font-weight:700;display:flex}.challenge-title .arrow{color:var(--accent)}.header-actions{align-items:center;gap:10px;display:flex}.view-toggle{background:var(--bg-elevated);border-radius:999px;padding:3px;display:flex}.view-toggle button,.mode-tabs button{color:var(--text-dim);border-radius:999px;padding:6px 16px;font-size:13px;font-weight:600}.view-toggle button.active,.mode-tabs button.active{background:var(--accent);color:#000}.hint-bar{color:var(--accent);background:#f5b3011f;border-bottom:1px solid #f5b30159;padding:10px 18px;font-size:14px}.closure-bar{color:#ffd7de;background:linear-gradient(90deg,#ff5c7a47,#ff5c7a1f);border-bottom:1px solid #ff5c7a8c;align-items:center;gap:12px;padding:12px 18px;font-size:15px;display:flex;position:relative;box-shadow:0 3px 14px #ff5c7a38}.closure-bar:before{content:"";background:repeating-linear-gradient(-45deg, var(--red) 0 10px, #2a1218 10px 20px);height:5px;position:absolute;top:0;left:0;right:0}.closure-bar strong{color:#ff8ba1;letter-spacing:.02em}.closure-text{flex-direction:column;gap:2px;display:flex}.closure-headline{font-size:15px;font-weight:700}.closure-note{opacity:.85;font-size:13px}.closure-pill-wrap .route-pill{vertical-align:baseline;filter:saturate(.5);outline-offset:1px;outline:1.5px solid #ff5c7a;text-decoration:line-through}.closure-amp{color:#ffd7de}.closure-icon{color:#ff5c7a;font-size:26px;line-height:1}.challenge-body{flex:1;min-height:0;display:flex}.map-panel{background:#e8ecf0;flex:1;min-width:0;position:relative}.geo-map{width:100%;height:100%;inset:0;position:absolute!important}.schematic-map{background:#f7f8fa;width:100%;height:100%;position:absolute;inset:0}.schematic-map .station-label{fill:#1a1f2b;paint-order:stroke;stroke:#f7f8fa;stroke-width:3px}.pulse-ring{transform-origin:50%;transform-box:fill-box;animation:1.4s ease-out infinite ring}@keyframes ring{0%{opacity:1}70%{opacity:.25}to{opacity:1}}.map-pin{background:var(--bg);color:#fff;border:2px solid var(--green);white-space:nowrap;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:700;transform:translateY(-6px)}.map-pin.pin-dest{border-color:var(--red)}.dest-x{color:var(--red);text-shadow:0 0 3px #0b0e14,0 0 6px #0b0e14;pointer-events:none;font-size:20px;font-weight:900;line-height:1}.current-pos{background:var(--green);border:3px solid #fff;border-radius:50%;width:18px;height:18px;animation:1.6s ease-in-out infinite current-pulse;box-shadow:0 0 0 4px #1fd67f59}@keyframes current-pulse{0%,to{box-shadow:0 0 0 4px #1fd67f59}50%{box-shadow:0 0 0 10px #1fd67f1f}}.vehicle-dot{background:var(--accent);border:3px solid #000;border-radius:50%;width:16px;height:16px;box-shadow:0 0 10px #f5b301e6}.builder-panel{background:var(--bg-panel);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:16px;width:380px;padding:20px;display:flex;overflow-y:auto}.panel-heading{text-transform:uppercase;letter-spacing:1.5px;color:var(--text-dim);font-size:15px}.step-block{flex-direction:column;gap:12px;display:flex}.step-prompt{font-size:14px;line-height:1.5}.option-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.option-btn{text-align:left;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;width:100%;padding:10px 14px;font-size:14px;transition:border-color .15s;display:flex}.option-btn:hover{border-color:var(--accent)}.option-name{flex:1;min-width:120px}.option-meta{color:var(--text-dim);font-size:12px}.alight-list,.boardings,.route-list,.stop-scroll{max-height:42vh;overflow-y:auto}.builder-actions{flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:10px;display:flex}.btn-primary{background:var(--accent);color:#000;border-radius:10px;flex:1;padding:10px 20px;font-weight:700}.btn-primary:disabled{opacity:.35;cursor:not-allowed}.btn-secondary{background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;padding:10px 16px;font-weight:600}.btn-ghost{color:var(--text-dim);border-radius:8px;padding:6px 10px;font-weight:600}.btn-ghost:hover{color:var(--text)}.route-pill{letter-spacing:.3px;white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:800;display:inline-block}.journey-summary{background:var(--bg-elevated);border-radius:10px;flex-direction:column;gap:8px;margin:0;padding:12px 14px;font-size:13px;list-style:none;display:flex}.js-dot{background:var(--green);border-radius:50%;width:9px;height:9px;margin-right:4px;display:inline-block}.results{flex-direction:column;gap:16px;display:flex}.stars-row{justify-content:center;gap:10px;font-size:46px;display:flex}.results-verdict{text-align:center;font-size:20px}.results-tease{text-align:center;color:var(--accent);margin:4px 0;font-size:14px;font-style:italic}.time-compare{gap:10px;display:flex}.time-box{background:var(--bg-elevated);text-align:center;border:1px solid var(--border);border-radius:10px;flex-direction:column;flex:1;gap:4px;padding:12px;display:flex}.time-box.you{border-color:var(--green)}.time-box.best{border-color:var(--accent)}.time-label{text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);font-size:11px}.time-value{font-size:22px;font-weight:800}.journey-breakdown{background:var(--bg-elevated);border-left:4px solid var(--green);border-radius:10px;padding:14px}.journey-breakdown.best{border-left-color:var(--accent)}.journey-breakdown h3{text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin-bottom:10px;font-size:13px}.journey-breakdown ol{flex-direction:column;gap:8px;margin:0;padding-left:18px;font-size:13px;line-height:1.5;display:flex}.leg-time{color:var(--text-dim);font-size:12px;display:block}.mode-tabs{background:var(--bg-elevated);border-radius:999px;align-self:flex-start;gap:6px;padding:4px;display:flex}.route-detail{flex-direction:column;gap:12px;display:flex}.route-detail-head{align-items:center;gap:10px;display:flex}.route-detail-meta{color:var(--text-dim);font-size:13px;line-height:1.6}.stop-scroll{color:var(--text-dim);margin:0;padding-left:22px;font-size:13px;line-height:1.9}.difficulty-stage{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.difficulty-picker{text-align:center;width:100%;max-width:760px}.difficulty-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin:18px 0;display:grid}.difficulty-card{background:var(--panel);border:2px solid var(--border);color:var(--text);cursor:pointer;font:inherit;border-radius:14px;flex-direction:column;align-items:center;gap:8px;padding:18px 14px;display:flex;position:relative}.difficulty-card.last-used{box-shadow:0 0 0 3px #f5b30140}.difficulty-name{letter-spacing:.02em;font-size:17px;font-weight:800}.difficulty-tagline{color:var(--text-dim);font-size:12.5px;line-height:1.4}.difficulty-reward{color:#f5b301;letter-spacing:2px;font-size:15px}.crown-glyph{color:#ff5c7a}.last-used-tag{text-transform:uppercase;letter-spacing:.06em;color:#14161b;background:#f5b301;border-radius:6px;padding:2px 7px;font-size:10px;font-weight:700;position:absolute;top:-9px;right:10px}.boarding-group{margin-bottom:12px}.boarding-group-header{border-bottom:1px dashed var(--border);cursor:default;align-items:baseline;gap:8px;margin-bottom:6px;padding:4px 2px;display:flex}.boarding-group-header .bg-kind{text-transform:uppercase;letter-spacing:.07em;color:var(--accent);white-space:nowrap;font-size:10.5px;font-weight:700}.boarding-group-header.walk .bg-kind{color:#f5b301}.boarding-group-header .bg-stop{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.emphasis-stop{background:#f5b30140;border:3px solid #f5b301;border-radius:50%;width:26px;height:26px;animation:1.4s ease-out infinite pos-pulse}.geo-map.drawing-mode{cursor:crosshair}.geo-map.drawing-mode canvas{cursor:crosshair!important}.star.capped{opacity:.25}.crown{filter:drop-shadow(0 0 8px #ff5c7a99);margin-left:6px;font-size:30px}.star-cap-note{color:var(--text-dim);margin:4px 0 0;font-size:12.5px;font-style:italic}.arcade-section{max-width:1080px;margin:36px auto 0;padding:0 24px 48px}.arcade-heading{text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);margin:0 0 14px;font-size:15px;font-weight:700}.arcade-section .pack-grid{margin:0;padding:0}.arcade-card .pack-number{font-size:22px}.arcade-icon{margin-right:6px}.quiz-progress{color:var(--text-dim);text-align:right;min-width:48px;font-size:13px;font-weight:700}.option-btn.quiz-correct{background:#1fd67f24;border-color:#1fd67f}.option-btn.quiz-wrong{background:#ff5c7a24;border-color:#ff5c7a}.option-btn.quiz-dim{opacity:.45}.arcade-score{color:var(--accent);margin:8px 0;font-size:44px;font-weight:800}.arcade-score-max{color:var(--text-dim);font-size:20px;font-weight:600}.arcade-results .results{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:28px 32px}.time-guess-value{color:var(--accent);text-align:center;margin:12px 0 4px;font-size:38px;font-weight:800}.time-guess-slider{width:100%;accent-color:var(--accent);margin-bottom:14px}.crown-total{color:var(--green)}.login-card{background:var(--bg-elevated,#ffffff0a);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;align-items:center;gap:14px;width:min(400px,92vw);padding:36px 40px;display:flex}.login-card h1{letter-spacing:-1px;font-size:36px}.login-label{text-transform:uppercase;letter-spacing:1px;width:100%;color:var(--text-dim);flex-direction:column;gap:6px;font-size:13px;display:flex}.login-input{border:1px solid var(--border);width:100%;color:inherit;background:#00000059;border-radius:10px;padding:10px 14px;font-family:inherit;font-size:16px}.login-input:focus{border-color:var(--accent);outline:none}.login-error{color:var(--red);font-size:14px}.login-submit{width:100%;margin-top:6px;font-size:16px}.user-bar{justify-content:flex-end;align-items:center;gap:10px;max-width:980px;margin:0 auto 4px;display:flex}.user-bar .brand{align-items:center;gap:8px;margin-right:auto;display:flex}.user-bar .brand-name{letter-spacing:.02em;font-weight:800}.logo-t.small{border-width:2px;width:26px;height:26px;font-size:16px;box-shadow:0 0 0 1.5px #fff}.user-name{color:var(--accent);font-weight:700}@media (width<=800px){.challenge-body{flex-direction:column}.map-panel{min-height:45vh}.builder-panel{border-left:none;border-top:1px solid var(--border);width:100%;max-height:48vh}.hero h1{font-size:32px}}
