/* Light railway palette. Existing meadow and train artwork stay unchanged. */
:root[data-theme=rail]{--paper:#f2f1ea;--surface:#faf9f4;--ink:#263c34;--muted:#65786d;--line:#d8dfd5;--primary:#537c68;--primary-dark:#315e48;--soft:#e6ece1;--sans:'Avenir Next','Segoe UI',sans-serif;--serif:Georgia,'Times New Roman',serif;color-scheme:light}
[data-theme=rail] body{background:var(--paper);color:var(--ink)}
.rail-app{max-width:none;margin:0;min-width:0}
.rail-sidebar{background:var(--surface);border-color:var(--line)}
.rail-app .rail-workspace{background:var(--paper)}
.rail-side-nav>button{color:var(--muted);border-radius:7px;min-height:44px}
.rail-side-nav>button.active,.rail-side-nav>button:hover{background:var(--soft);color:var(--primary-dark)}
.side-brand,.side-brand strong,.side-wallet,.side-settings{color:var(--ink)}
.side-kicker,.side-about,.side-wallet span,.rail-footer{color:var(--muted)}
.secondary-nav{margin-top:28px}
.studio-heading h1,.module-heading h1{font:500 clamp(28px,3vw,38px)/1.2 var(--serif);letter-spacing:-.8px}
.studio-eyebrow{color:var(--primary);letter-spacing:2px;font-weight:650}
.train-nickname,.carriage-description h2,.carriage-facts,.carriage-facts strong{color:var(--ink)}
.carriage-description>p,.carriage-facts>span,.garage-helper,.slot-name,.train-slot small{color:var(--muted)}
.rail-app .button,.floating-action{border-radius:8px;box-shadow:none}
.button.primary{background:var(--primary-dark);color:var(--surface)}
.button.secondary,.floating-action,.browse-carriage,.detach-carriage,.mobile-menu-toggle{background:var(--surface);color:var(--primary-dark);border:1px solid var(--line)}
.floating-action:hover,.button.secondary:hover{background:var(--soft)}
.rail-app .part-card,.rail-app .route-editor-card,.rail-app .travel-route,.rail-app .stop-row,.rail-app .train-slot,.panel,dialog{background:var(--surface);color:var(--ink);border-color:var(--line);box-shadow:none}
.part-card{border-radius:10px;position:relative}
.part-card h3{line-height:1.45}
.stop-input select,.admin-form select,.settings-row select,.admin-form input,.market-page select{background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:10px;font:inherit;max-width:100%}
.stop-small,.stop-remove{background:var(--surface);color:var(--primary-dark);border-color:var(--line)}
.stop-dot,.parts-shop .shop-grid article,.recovery-ride,.notice,.arrival-actions>button:disabled{background:var(--soft);color:var(--ink);border-color:var(--line)}
.stop-dot.destination{background:var(--primary-dark);color:var(--surface)}
.slot-navigation{display:flex;align-items:center;gap:8px;width:min(100%,580px);margin:18px auto 0}
.train-slots{display:flex;width:100%;max-width:none;min-width:0;gap:10px;margin:0;padding:3px 0 7px;scroll-snap-type:x mandatory;overflow-x:auto;overscroll-behavior-x:contain}
.train-slot{flex:0 0 calc((100% - 20px)/3);min-width:0;scroll-snap-align:start;border-radius:8px;min-height:86px;padding:10px}
.train-slot.active{background:var(--soft);border-color:var(--primary)}
.slot-name{color:var(--ink);font-weight:600}.slot-mini img{height:auto}
.extra-slot{align-self:stretch;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;color:var(--primary);font-size:10px;border-style:dashed}
.slot-arrow{flex:0 0 28px;width:28px;height:44px;border:1px solid var(--line);background:var(--surface);color:var(--primary-dark);border-radius:6px;font-size:25px}
.scene-loader{background:var(--paper);color:var(--muted)}
.scene-vignette,.travel-scene{background:var(--paper)}
.meadow-ribbon,.travel-scenery{mask-image:linear-gradient(transparent 25%,#000 60%,#000 80%,transparent 97%);opacity:.85}
.carriage-picker{border-color:var(--line)}.carriage-choice.selected{background:var(--soft);border-color:var(--line)}
.carriage-choice,.add-carriage{color:var(--muted)}
.station-scene{position:absolute;width:66%;left:17%;bottom:26%;aspect-ratio:3;z-index:1;pointer-events:none;will-change:transform}
.station-scene>img{width:100%;height:auto;position:absolute;bottom:-11%;left:0}
.station-sign{position:absolute;right:24%;bottom:23%;max-width:40%;background:#294c63;color:#fff9dc;border:2px solid #e5dcc6;border-radius:2px;padding:3px 6px;white-space:nowrap;font:600 clamp(7px,.8vw,10px)/1.2 var(--sans);box-shadow:0 2px 0 #1a28213b}
.station-sign:after{content:'';position:absolute;left:50%;top:100%;height:24px;width:2px;background:#617061}
.travelling-consist{z-index:2;bottom:21%;display:block;left:6%;width:88%}
.consist-art{display:block;width:100%;height:auto;overflow:visible}
.ride-modes{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 24px}
.ride-modes button{border:1px solid var(--line);border-radius:9px;padding:17px;text-align:left;background:var(--surface);min-width:0}
.ride-modes button.selected{border-color:var(--primary);background:var(--soft)}
.ride-modes strong{display:block;color:var(--ink);font-size:14px;margin-bottom:7px}
.ride-modes small{display:block;color:var(--muted);font-size:11px;line-height:1.6}
.announcement-space{min-height:74px;max-width:730px;margin:0 auto}
.announcement-card{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--primary);border-radius:7px}
.announcement-card[hidden]{display:none}.announcement-card>span{color:var(--primary)}
.announcement-card p{font-size:12px;line-height:1.6;flex:1}.announcement-card button{flex-shrink:0}
.ride-sound{display:flex;align-items:center;justify-content:center;gap:20px;margin:0 auto 22px;color:var(--muted);font-size:11px}
.sound-toggle{display:flex;gap:7px;align-items:center;padding:8px;color:var(--primary-dark);min-height:40px}
.ride-sound label,.announcement-preference{display:flex;align-items:center;gap:8px;font-weight:400;font-size:11px;cursor:pointer}
.ride-sound input,.announcement-preference input{width:16px;height:16px;margin:0;accent-color:var(--primary-dark)}
.announcement-preference{padding:16px 0}
.travel-route li>i{border-color:var(--surface)}
.travel-route li.current{color:var(--primary-dark)}
.delivery-note{margin-top:18px;padding-left:12px;border-left:3px solid var(--primary)}
.delivery-note strong{display:block;font-size:12px;color:var(--primary-dark)}
.daily-shop .delivery-note small{background:none;border-radius:0;padding:0;margin:6px 0 0;color:var(--muted);font-size:10px}
.rarity-badge{font-size:10px;letter-spacing:.2px;display:inline-flex;align-items:center;gap:6px;color:var(--muted);line-height:1.5}
.rarity-badge:before{content:'';display:inline-block;width:5px;height:5px;background:var(--muted);border-radius:1px;transform:rotate(45deg)}
.rarity-badge.rarity-uncommon{color:var(--primary-dark)}.rarity-uncommon.rarity-badge:before{background:var(--primary)}
.rail-app .part-card.rarity-uncommon{border:1px solid #cfe2c2;background:radial-gradient(ellipse at top left,#e6f3cb99,transparent 65%),var(--surface);box-shadow:inset 0 0 26px #b9df973b,0 0 8px #cbe5b329}
.part-card.daily-card.sold{background:var(--soft)}
.daily-card .part-type{color:var(--muted)}
.part-preview img{object-fit:contain;height:auto;max-height:90px}
.thumb-loading{position:relative}.thumb-loading:after{content:'•••';font-size:16px;letter-spacing:4px;color:var(--primary);position:absolute;inset:0;display:grid;place-items:center;background:var(--soft);border-radius:6px}
.thumb-error img{display:none}.thumb-retry{display:block;font-size:11px;text-decoration:underline;color:var(--primary-dark);padding:12px;cursor:pointer}
.part-metadata{margin:16px 0 24px}.part-metadata dl{margin:12px 0;display:grid;gap:0}
.part-metadata dl>div{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);font-size:12px}
.part-metadata dt{color:var(--muted)}.part-metadata dd{margin:0;text-align:right;color:var(--ink)}
.part-metadata>small{font-size:10px;line-height:1.6;color:var(--muted);display:block}
.market-page{max-width:940px;margin:auto}.market-toolbar{display:flex;align-items:center;gap:15px;margin-top:20px;flex-wrap:wrap}
.prototype-label{font-size:10px;color:var(--muted);border:1px solid var(--line);padding:5px 8px;border-radius:4px}
.market-explainer{max-width:590px;margin-top:13px!important}
.listing-top,.listing-price,.listing-stats{display:flex;justify-content:space-between;gap:10px;align-items:center}
.listing-owner{font-size:9px;color:var(--muted)}
.listing-stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:10px;padding:11px 0;color:var(--muted)}
.part-card>small.seller{text-align:left;color:var(--muted);font-size:10px;margin:13px 0}
.listing-price{margin-top:auto;padding-top:12px}.listing-price>strong{font-size:17px;white-space:nowrap}.listing-price .button{margin-top:0}
#market-sell-form select{display:block;width:100%;margin:8px 0 18px;font-size:12px}
.save-transfer{padding:24px 0;border-top:1px solid var(--line);margin-top:18px}
.save-transfer>p{color:var(--muted);font-size:12px;line-height:1.6;margin:8px 0 14px}
.save-transfer .button{display:inline-flex;margin-right:8px;cursor:pointer}.save-transfer input[hidden]{display:none}
.settings-row select{max-width:135px}.settings-row p,.modal-intro,.subtle{color:var(--muted)}
@media(max-width:650px){.rail-app .rail-workspace{padding:0 18px}.slot-navigation{gap:5px}.slot-arrow{flex-basis:25px;width:25px}.train-slot{flex-basis:calc((100% - 10px)/2)}.slot-name{font-size:11px}.ride-modes{gap:9px}.ride-modes button{padding:13px}.ride-modes small{font-size:10px}.announcement-space{min-height:102px}.announcement-card{padding:10px;gap:8px;flex-wrap:wrap}.announcement-card p{font-size:11px;flex-basis:80%}.announcement-card button{margin-left:25px}.ride-sound{gap:10px;flex-wrap:wrap;font-size:10px}.ride-sound label{font-size:10px}.station-sign{padding:3px 6px;border-width:1px}.station-sign:after{height:12px}.listing-top{align-items:flex-start;flex-direction:column;gap:5px}.listing-stats{gap:4px;flex-wrap:wrap;font-size:9px}.listing-price>strong{font-size:15px}.market-card .listing-price{gap:5px}.market-grid .part-card{padding:12px}.ride-modes strong{font-size:13px}.settings-row{gap:12px}.rail-sidebar .side-bottom{padding-bottom:15px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.station-scene{will-change:auto}}
.carriage-picker{background:var(--surface);box-shadow:none}
.rail-side-nav>button small{background:var(--soft);color:var(--primary-dark);border:1px solid var(--line)}
[data-theme=rail] dialog .button.secondary{background:var(--surface);color:var(--primary-dark);border:1px solid var(--line)}
[data-theme=rail] dialog .button.primary{background:var(--primary-dark);color:var(--paper)}
[data-theme=rail] dialog .button.secondary:hover{background:var(--soft)}
@media(max-width:650px){.rail-app .carriage-stage,.journey-follow .travel-scene{margin-left:-18px;margin-right:-18px}}

/* Pale blue railway siding, warm brass accents and quiet contour lines outside the landscape. */
.rail-sidebar{background:#e5edef;border-right:1px solid #cedbdd;box-shadow:inset 0 4px #d6b555}
.rail-side-nav>button{color:#4f676c}
.rail-side-nav>button.active,.rail-side-nav>button:hover{background:#f8f8f1;color:#2d5762}
.side-brand svg{color:#b38a32}.side-brand strong{color:#30515b}.side-brand em{color:#b38a32}
.side-wallet svg{color:#ac8531}
.rail-side-nav [data-id="home"] svg{color:#aa8543}
.rail-side-nav [data-id="garage"] svg{color:#a27460}
.rail-side-nav [data-id="journey"] svg{color:#548a85}
.rail-side-nav [data-id="shop"] svg{color:#b78c3e}
.rail-side-nav [data-id="market"] svg{color:#7f83a2}
.rail-side-nav [data-id="records"] svg{color:#b3984d}
.rail-app .rail-workspace{background-color:var(--paper);background-image:radial-gradient(ellipse 700px 450px at 105% -90px,transparent 70%,#6f999a0b 70.2%,#6f999a0b 70.5%,transparent 70.7%,transparent 74%,#6f999a09 74.2%,#6f999a09 74.5%,transparent 74.7%);background-repeat:no-repeat}
.floating-action:nth-child(1) svg{color:#6f9a96}.floating-action:nth-child(2) svg{color:#b18a38}.floating-action:nth-child(3) svg{color:#7b849f}
.slot-arrow{display:grid;place-items:center;padding:0;line-height:1;align-self:center}
.slot-arrow svg{display:block}.slot-arrow[data-id="-1"] svg{transform:rotate(180deg)}
.slot-cost{display:flex;align-items:center;gap:8px;font-size:22px;margin:20px 0;color:var(--primary-dark)}
.train-slot.extra-slot{background:#eaf0e7;border-color:#c9d6c5;color:#637a5e;gap:4px}
.rail-app .load-control{height:36px;margin:-8px auto 16px;align-items:center}
.rail-app .load-control .button{min-height:30px;padding:5px 12px;border-radius:6px;font-size:10px;gap:6px;background:transparent;border-color:#d6dfd3}
.carriage-description>p{min-height:20px}.carriage-facts{min-height:32px}
.rail-app .travel-route{border:0;background:transparent;padding:12px 22px 0;opacity:.75;box-shadow:none}
.travel-route .route-card-heading{margin-bottom:17px}.travel-route .route-card-heading h2{font-size:12px;font-weight:500;color:var(--muted)}
.travel-route li>i{width:10px;height:10px;border:3px solid var(--paper);margin-bottom:8px;box-shadow:none}
.travel-route li:before{top:4px;height:1px;background:#dce3d8}
.travel-route li.passed:before{background:#b1c5b3}.travel-route li.passed>i{background:#84a58b;box-shadow:none}
.trip-progress{height:2px;background:#dde5d94d;margin-top:16px}.trip-progress>span{background:#a8bfa6}
.simple-settings{max-width:440px}.simple-settings .settings-row{padding:15px 0}.settings-more{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.settings-more summary{cursor:pointer;font-size:12px;color:var(--muted);padding:8px 0}.settings-more .save-transfer{border:0;padding:0;margin:8px 0 16px}.settings-more .danger-link{display:block;margin-top:15px}
@media(max-width:650px){.rail-app .load-control{margin-top:-8px;margin-bottom:16px}.carriage-facts{min-height:40px}.carriage-description>p{min-height:32px}.station-sign{font-size:7px;padding:2px 4px}.station-sign:after{height:9px}.rail-app .travel-route{padding:10px 4px 0}}

/* Compact lobby: the load control floats inside the scene, never in document flow. */
.rail-side-nav>button,.side-settings{font-weight:650}.side-kicker{font-weight:750;letter-spacing:1.4px;color:#4d666b}.side-about{font-weight:550}
.rail-app .floating-actions{gap:12px;margin:18px auto 16px}
.rail-app .floating-action{min-width:145px;min-height:44px;padding:11px 16px;gap:9px;font-size:12px}
.rail-app .floating-action svg{width:19px;height:19px}
.carriage-description{margin-top:8px}.carriage-description>p{margin-top:6px}.carriage-facts{margin-top:12px}
.wagon-load-overlay{position:absolute;z-index:4;top:14px;left:50%;transform:translateX(-50%);display:flex;justify-content:center}
.wagon-load-overlay .button{min-height:34px;padding:6px 13px;font-size:11px;background:#faf9f4ed;border-color:#c9d9c9;box-shadow:0 2px 8px #3355420a}
.departure-train{border:1px solid var(--line);border-radius:9px;background:var(--surface);padding:15px 18px;margin-bottom:18px;display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:center}
.departure-train>div>span,.departure-train small{display:block;font-size:11px;color:var(--muted)}
.departure-train strong{display:block;font-size:16px;margin:5px 0}.departure-consist{min-width:0}
.departure-train label{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;font-weight:600}
.departure-train select{max-width:65%;padding:8px;border:1px solid var(--line);border-radius:6px;background:var(--paper);color:var(--ink);font:inherit}
.travelling-consist{left:2%;width:96%}
.station-scene>img.platform-grass{bottom:-16%;height:auto;width:100%;opacity:.75;pointer-events:none}
.travel-route li{position:relative}.travel-route li:before{display:none}
.leg-line{position:absolute;top:4px;right:50%;width:100%;height:3px;background:#dbe3d5;border-radius:3px;overflow:hidden;z-index:0}
.leg-line>b{display:block;height:100%;width:0;background:#779e81;border-radius:3px;transition:width 1s linear}
.travel-route li>i,.travel-route li>span{position:relative;z-index:1}
.rail-app .travel-route{opacity:1}.trip-progress{background:#dce3d32b;height:2px}.trip-progress>span{background:#b7c6ad66}
.rarity-badge.rarity-rare{color:#497ea2}.rarity-badge.rarity-rare:before{background:#78a9c5}
.rarity-badge.rarity-epic{color:#88649c}.rarity-badge.rarity-epic:before{background:#aa8dbc}
.rarity-badge.rarity-legendary{color:#98702f}.rarity-badge.rarity-legendary:before{background:#c5a05a}
.rail-app .part-card.rarity-rare{border-color:#c9dce9;background:radial-gradient(ellipse at top left,#d9edf899,transparent 65%),var(--surface);box-shadow:inset 0 0 26px #a1cbe32b}
.rail-app .part-card.rarity-epic{border-color:#ded0e6;background:radial-gradient(ellipse at top left,#eddef499,transparent 65%),var(--surface);box-shadow:inset 0 0 26px #c5a4d72b}
.rail-app .part-card.rarity-legendary{border-color:#e5d5b0;background:radial-gradient(ellipse at top left,#f7ebc699,transparent 65%),var(--surface);box-shadow:inset 0 0 26px #dcc0732b}
.admin-reset{border-top:1px solid var(--line);margin-top:22px;padding-top:18px}.admin-reset h3{font-size:14px}.admin-reset p{font-size:12px;line-height:1.6;color:var(--muted);margin:10px 0}.admin-reset .button{margin:5px 6px 0 0}
.part-metadata small+small{margin-top:8px}.garage-grid .part-card h3{min-height:36px}
@media(max-width:650px){.rail-app .floating-actions{gap:7px;margin:14px auto 12px}.rail-app .floating-action{min-width:0;flex:1;flex-direction:row;padding:10px 6px;gap:5px;font-size:10px}.rail-app .floating-action svg{width:16px;height:16px}.wagon-load-overlay{top:4px}.wagon-load-overlay .button{font-size:10px;min-height:32px;padding:5px 10px}.carriage-facts{margin-top:9px}.departure-train{padding:12px;grid-template-columns:1fr}.departure-consist{max-width:100%}.departure-train select{max-width:68%}.departure-train strong{font-size:14px}}
@media(prefers-reduced-motion:reduce){.leg-line>b{transition:none}}.reduce-motion .leg-line>b{transition:none}
.station-scene>img.platform-grass{transform:scaleY(.3);transform-origin:50% 84%;opacity:.65}

/* Trainy Days: combined D/F logo intentionally overlaps the sidebar edge. */
.rail-sidebar{padding-top:22px;overflow:visible}
.rail-sidebar .side-brand{display:block;position:relative;flex:0 0 auto;width:248px;max-width:none;margin:0 0 16px -12px;padding:0;line-height:0;z-index:2;border-radius:12px}
.sidebar-logo{display:block;width:100%;height:auto;max-width:none;filter:none}
.side-brand:focus-visible{outline:3px solid #397d86;outline-offset:5px}
.sidebar-controls{display:flex;flex:1;min-height:0;flex-direction:column;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#c7d5d3 transparent}
.sidebar-controls .side-bottom{margin-top:auto;flex-shrink:0}
@media(max-width:1000px) and (min-width:651px){.rail-sidebar .side-brand{width:224px;margin-left:-7px}}
@media(max-width:650px){.rail-sidebar{padding-top:20px}.rail-sidebar .side-brand{width:248px;margin-left:-12px;margin-bottom:18px}}
@media(max-height:680px){.rail-sidebar{padding-top:12px}.rail-sidebar .side-brand{width:210px;margin-bottom:8px}.sidebar-controls .side-bottom{padding-top:12px}}

/* Scenery viewing preserves the live scene and its animation. */
.travelling-consist{transition:opacity .25s ease}
.travelling-consist.train-transparent{opacity:.3}
.transparency-toggle[aria-pressed="true"]{background:#e1ece4;color:#315f4c}
.station-scene{width:48%;left:26%;bottom:26%}
.station-sign{max-width:65%;right:10%;bottom:33%;font-size:clamp(7px,.7vw,10px);white-space:normal;text-align:center}
@media(prefers-reduced-motion:reduce){.travelling-consist{transition:none}}

.route-network{display:flex;gap:8px;margin-bottom:22px;flex-wrap:wrap}
.network-choice{padding:9px 12px;border:1px solid var(--line);border-radius:7px;color:var(--muted);font-size:12px}
.network-choice.selected{background:var(--soft);border-color:var(--primary);color:var(--ink)}
.stop-input input{margin:0;font:inherit;padding:10px;background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:6px;min-width:0;width:100%}
.route-summary{grid-template-columns:repeat(4,minmax(0,1fr))}
.route-data-note{font-size:11px;line-height:1.7;color:var(--muted);margin:14px 0}
.route-data-note summary{cursor:pointer}.route-data-note p{margin:8px 0}
.journey-reference{text-align:center;color:var(--muted);font-size:11px;margin:-22px 0 18px}
.travel-route ol{flex-wrap:wrap;row-gap:14px}.travel-route li{min-width:70px}
@media(max-width:650px){.route-summary{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:14px}.ride-sound{flex-wrap:wrap}.journey-reference{margin-top:-10px}}

/* Required connecting stations share the route line but cannot be skipped. */
.stop-row.automatic-stop{min-height:64px;background:transparent}
.automatic-stop .stop-dot{background:#e8eee8;color:#64816b}
.automatic-stop .stop-input{display:flex;flex-direction:column;gap:5px;padding:8px 0}
.automatic-stop .stop-input small{font-size:9px;color:var(--muted)}
.automatic-stop .stop-input strong{font-size:13px;font-weight:600;overflow-wrap:anywhere}
