.rail-game{max-width:980px;margin:1.5rem auto;padding:18px;border:1px solid rgba(70,64,48,.22);border-radius:18px;background:#f4f0e4;color:inherit}.rail-game__header h2,.rail-game__header p{margin-top:0}.rail-game__toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.rail-game button,.rail-game__import-label{display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(70,64,48,.28);border-radius:9px;padding:.68rem .9rem;background:#fff;color:inherit;cursor:pointer}.rail-game__import-label input{position:absolute;inline-size:1px;block-size:1px;opacity:0;pointer-events:none}.rail-game__statusbar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}.rail-game__statusbar>div{display:flex;justify-content:space-between;gap:8px;padding:8px 10px;background:rgba(255,255,255,.7);border-radius:9px}.rail-game__map-wrap{overflow:hidden;border-radius:12px;border:1px solid rgba(70,64,48,.2);background:#d8d39a}.rail-game__map{display:block;width:100%;aspect-ratio:3/2}.rail-game__status{margin-top:10px;padding:8px 10px;border-left:4px solid #7d6a45;background:rgba(255,255,255,.68);border-radius:7px}.rail-game__note{margin-top:14px;border-top:1px solid rgba(70,64,48,.18);padding-top:12px}@media(max-width:520px){.rail-game{margin:.6rem 0;padding:10px}.rail-game__toolbar>*{flex:1 1 100%}.rail-game__statusbar{grid-template-columns:1fr}}

.rail-game button[aria-pressed="true"]{background:#5f4932;color:#fff;border-color:#5f4932}.rail-game__map{cursor:crosshair}
.rail-game__contract{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:10px 12px;border:1px solid rgba(70,64,48,.22);border-radius:10px;background:rgba(255,255,255,.82)}.rail-game__contract[hidden]{display:none!important}.rail-game__contract [data-contract-text]{flex:1 1 320px}.rail-game__contract button{padding:.48rem .7rem}
.rail-game__settlement{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:9px 12px;border:1px solid rgba(70,64,48,.22);border-radius:10px;background:rgba(255,255,255,.7)}.rail-game__settlement[hidden]{display:none!important}.rail-game__settlement [data-settlement-text]{flex:1 1 360px}

.rail-game__network-economy{margin:0 0 10px;padding:10px 12px;border:1px solid rgba(70,64,48,.22);border-radius:10px;background:rgba(255,255,255,.76)}.rail-game__network-economy>span{display:block;margin:.35rem 0 .65rem}.rail-game__table-wrap{overflow-x:auto}.rail-game__route-table{width:100%;border-collapse:collapse;font-size:.9rem;min-width:760px}.rail-game__route-table th,.rail-game__route-table td{padding:.45rem .5rem;border-top:1px solid rgba(70,64,48,.16);text-align:left;vertical-align:top}.rail-game__route-table th{white-space:nowrap}

.rail-game__train-select-label{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem}.rail-game__train-select-label select{max-width:16rem;padding:.38rem .5rem}

.rail-game__traffic {
  display: flex;
  gap: .65rem;
  align-items: baseline;
  flex-wrap: wrap;
  margin: .75rem 0;
  padding: .7rem .85rem;
  border: 1px solid rgba(40, 52, 62, .22);
  border-radius: .45rem;
  background: rgba(255, 255, 255, .72);
  color: #17212b;
}
.rail-game__traffic strong { color: #17212b; }
.rail-game__lines{margin:.8rem 0;padding:.75rem;border:1px solid rgba(0,0,0,.15);border-radius:.5rem}.rail-game__line-controls{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin-top:.45rem}.rail-game__line-controls select,.rail-game__line-controls input{max-width:11rem}.rail-game__line-item{margin-top:.35rem;font-size:.95em}
.rail-game__line-item{padding:.6rem .7rem;border:1px solid rgba(70,64,48,.14);border-radius:.45rem;background:rgba(255,255,255,.52)}.rail-game__line-assessment{margin:.35rem 0;font-weight:600}.rail-game__line-fleet{display:grid;gap:.3rem;margin:.4rem 0}.rail-game__line-train{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap;padding:.35rem .45rem;background:rgba(255,255,255,.68);border-radius:.4rem}.rail-game__line-train span{flex:1 1 260px}.rail-game__line-train button,.rail-game__line-item>button{padding:.38rem .55rem;font-size:.88em}
/* Baden-Spielwelt ist Nord-Süd-orientiert; das Seitenverhältnis wird von game.js aus dem Welt-Raster gesetzt. */
.rail-game__map{aspect-ratio:auto}

.rail-game__line-vias{display:flex;flex-direction:column;gap:.35rem;align-items:stretch}.rail-game__line-via{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.55rem;align-items:center;width:100%;box-sizing:border-box;padding:.4rem .5rem;border:1px solid rgba(0,0,0,.18);border-radius:.35rem;background:rgba(255,255,255,.72);cursor:grab}.rail-game__line-via:active{cursor:grabbing}.rail-game__line-via.is-dragging{opacity:.45}.rail-game__line-via.is-drop-target{outline:2px solid rgba(40,92,68,.6);outline-offset:1px}.rail-game__line-via-grip{font-size:1.05rem;line-height:1;color:rgba(0,0,0,.55);user-select:none}.rail-game__line-via-label{min-width:0}.rail-game__line-via button{font-size:.85em;padding:.15rem .35rem}

.rail-game__line-via button{min-width:2rem}

/* 0.4.2: Hauptbereiche als eigenständige Tabs. */
.rail-game__tabs{display:flex;gap:.45rem;flex-wrap:wrap;margin:12px 0 14px;border-bottom:1px solid rgba(70,64,48,.22);padding-bottom:.45rem}
.rail-game__tabs button{padding:.54rem .9rem;font-weight:600;font-size:12px;line-height:1.15}
.rail-game__tabs button[aria-selected="true"]{background:#5f4932;color:#fff;border-color:#5f4932}
.rail-game__tab-panel[hidden]{display:none!important}
.rail-game__tab-panel{min-width:0}
.rail-game__line-statistics{margin:0 0 10px;padding:10px 12px;border:1px solid rgba(70,64,48,.22);border-radius:10px;background:rgba(255,255,255,.76)}
.rail-game__line-statistics>strong{display:block;margin-bottom:.55rem}
@media(max-width:520px){.rail-game__tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem}.rail-game__tabs button{padding:.5rem .3rem}}

.rail-game__line-service-control{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.55rem;margin:.45rem 0 .8rem;padding:.55rem .7rem;border:1px solid rgba(70,64,48,.18);border-radius:.5rem;background:rgba(255,255,255,.72)}.rail-game__line-service-summary{display:inline-flex;align-items:center;gap:.45rem}.rail-game__line-service-summary span{font-weight:600}.rail-game__line-service-control [data-line-service-status]{font-weight:700}.rail-game__line-service-toggle{display:inline-flex;align-items:center;gap:.45rem}.rail-game__line-service-toggle input{margin:0;inline-size:1.05rem;block-size:1.05rem}

/* 0.6.4: Linien-Tab klar in Steuerung, Neuanlage und Verwaltung gliedern. */
.rail-game__line-section{margin:.75rem 0;padding:.85rem;border:1px solid rgba(70,64,48,.18);border-radius:.65rem;background:rgba(255,255,255,.45)}
.rail-game__line-section h3{margin:0 0 .45rem;font-size:17px}
.rail-game__line-help{margin:.15rem 0 .7rem;font-size:.92rem}
.rail-game__line-section--create{background:rgba(255,255,255,.72);border-color:rgba(95,73,50,.35)}
.rail-game__line-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;align-items:end}
.rail-game__line-controls>label{display:grid;gap:.25rem;min-width:0}
.rail-game__line-controls>label>span,.rail-game__line-via-editor label>span{font-weight:600;font-size:.9rem}
.rail-game__line-controls select,.rail-game__line-controls input{box-sizing:border-box;width:100%;max-width:none;padding:.55rem .6rem}
.rail-game__line-controls small{font-size:.78rem;opacity:.78}
.rail-game__line-via-editor{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem;align-items:end;grid-column:1/-1}
.rail-game__line-via-editor label{display:grid;gap:.25rem;min-width:0}
.rail-game__line-vias{grid-column:1/-1;min-height:2.2rem;padding:.45rem;border:1px dashed rgba(70,64,48,.25);border-radius:.4rem;background:rgba(255,255,255,.46)}
.rail-game__line-editor-actions{grid-column:1/-1;display:flex;gap:.5rem;flex-wrap:wrap;border-top:1px solid rgba(70,64,48,.16);padding-top:.65rem}
.rail-game__primary-action{font-weight:700;border-color:#5f4932!important}
.rail-game__line-item{margin:.5rem 0;padding:0;overflow:hidden}
.rail-game__line-summary{cursor:pointer;padding:.7rem .75rem;font-weight:700;background:rgba(255,255,255,.72)}
.rail-game__line-summary::marker{font-size:.9em}
.rail-game__line-body{padding:.6rem .7rem .7rem;border-top:1px solid rgba(70,64,48,.14)}
.rail-game__line-body>button{margin:.2rem .25rem .15rem 0;padding:.38rem .55rem;font-size:.88em}
@media(max-width:520px){
  .rail-game__line-section{padding:.65rem}
  .rail-game__line-service-control{align-items:flex-start}
  .rail-game__line-service-toggle{width:100%;justify-content:flex-start}
  .rail-game__line-controls{grid-template-columns:1fr}
  .rail-game__line-via-editor{grid-template-columns:1fr}
  .rail-game__line-via-editor button,.rail-game__line-editor-actions button{width:100%}
  .rail-game__line-summary{font-size:.92rem}
}

/* 0.6.6: Linienanlage meldet Fehler/Erfolg direkt am Formular statt nur weit unten in der globalen Statuszeile. */
.rail-game__line-editor-message{margin:.7rem 0 0;padding:.65rem .75rem;border-radius:8px;background:rgba(255,255,255,.72);min-height:1.2em}
.rail-game__line-editor-message:empty{display:none}
.rail-game__line-editor-message[data-type="error"]{border-left:4px solid #9c1f2b;font-weight:600}
.rail-game__line-editor-message[data-type="success"]{border-left:4px solid #4d6d3d;font-weight:600}

/* 0.7.0: Linienverwaltung – Aktionen klar gruppieren, Loeschen eindeutig kennzeichnen. */
.rail-game__line-actions{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.55rem;padding-top:.5rem;border-top:1px solid rgba(70,64,48,.14)}
.rail-game__line-actions button{padding:.42rem .58rem;font-size:.88em}
.rail-game__danger-action{border-color:#9c1f2b!important;color:#7f1721!important}
@media(max-width:520px){.rail-game__line-actions button{flex:1 1 100%}}

/* 0.8.0 E23: kompakte Kennzahl fuer netzweiten Umsteigeverkehr. */
.rail-game__transfer-statistics{display:block;margin:0 0 .55rem;font-size:.9rem}

/* 0.9.0: Stadt-Lightbox als generische Architektur fuer Regiopakete. */
.rail-game__city-modal[hidden]{display:none!important}
.rail-game__city-modal{position:fixed;inset:0;z-index:10000}
.rail-game__city-modal-backdrop{position:absolute;inset:0;background:rgba(17,20,24,.56)}
.rail-game__city-modal-dialog{position:relative;z-index:1;max-width:760px;margin:4vh auto;padding:0 14px;max-height:92vh;overflow:auto}
.rail-game__city-modal-content{position:relative;background:#f5f1e7;color:#17212b;border:1px solid rgba(70,64,48,.22);border-radius:16px;padding:18px 18px 16px;font-size:16px;box-shadow:0 20px 45px rgba(0,0,0,.22)}
.rail-game__city-modal-close{position:absolute;top:10px;right:10px;min-width:2.2rem;min-height:2.2rem;padding:0;font-size:1.4rem;line-height:1}
.rail-game__city-modal-content h3{margin:0 2.2rem .25rem 0;font-size:1.55rem}
.rail-game__city-type{margin:.15rem 0 .8rem;font-size:16px;font-weight:700;color:#4d4237}
.rail-game__city-text{margin:.25rem 0 1rem;font-size:17px;line-height:1.62}
.rail-game__city-figure{margin:0 0 1rem}
.rail-game__city-figure img,.rail-game__city-figure-placeholder{display:block;width:100%;border-radius:12px;border:1px solid rgba(70,64,48,.18);background:rgba(255,255,255,.78)}
.rail-game__city-figure [hidden],.rail-game__city-actions [hidden],.rail-game__city-hint[hidden]{display:none!important}
.rail-game__city-figure img{max-height:440px;object-fit:contain;height:auto}
.rail-game__city-figure-placeholder{padding:2.2rem 1rem;text-align:center;color:#4d4237}
.rail-game__city-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;margin:0 0 .9rem}
.rail-game__city-meta>div{padding:.7rem .8rem;border-radius:10px;background:rgba(255,255,255,.72);border:1px solid rgba(70,64,48,.14)}
.rail-game__city-meta span{display:block;font-size:15px;font-weight:700;letter-spacing:.01em;color:#4d4237}
.rail-game__city-meta strong{display:block;margin-top:.25rem;font-size:17px}
.rail-game__city-hint{margin:.2rem 0 1rem;padding:.75rem .85rem;font-size:16px;line-height:1.45;border-radius:10px;background:rgba(255,255,255,.72);border-left:4px solid #5f4932}
.rail-game__city-actions{display:flex;gap:.55rem;flex-wrap:wrap}
@media(max-width:520px){
  .rail-game__city-modal-dialog{margin:2vh auto;padding:0 8px;max-height:96vh}
  .rail-game__city-modal-content{padding:16px 14px 14px;font-size:16px}
  .rail-game__city-meta{grid-template-columns:1fr}
  .rail-game__city-actions button{width:100%}
}

/* 0.11.7: Bahnhofsbilder skalieren passend zur Bahnhofskapazitaet. */
.rail-game__city-figure img[data-station-image-size="small"]{max-height:250px;max-width:78%;margin-inline:auto}
.rail-game__city-figure img[data-station-image-size="medium"]{max-height:300px;max-width:88%;margin-inline:auto}
.rail-game__city-figure img[data-station-image-size="large"]{max-height:350px;max-width:96%;margin-inline:auto}
.rail-game__city-figure img[data-station-image-size="very-large"]{max-height:410px;max-width:100%;margin-inline:auto}
@media(max-width:520px){.rail-game__city-figure img[data-station-image-size]{max-width:100%;max-height:42vh}}

/* 0.12.40 – bestehende Linien als dauerhaft offene, mobil stabile Kacheln. */
.rail-game__line-card{display:block;margin:.7rem 0;padding:0;overflow:visible;background:#fff;border:1px solid rgba(70,64,48,.18);border-radius:.7rem;box-shadow:0 3px 12px rgba(35,42,38,.05)}
.rail-game__line-card-head{display:flex;justify-content:space-between;gap:.8rem;align-items:flex-start;padding:.75rem .8rem;background:rgba(246,248,244,.9);border-bottom:1px solid rgba(70,64,48,.14);border-radius:.7rem .7rem 0 0}
.rail-game__line-card-heading{display:grid;gap:.18rem;min-width:0}.rail-game__line-card-heading strong{font-size:1rem}.rail-game__line-card-heading span{font-size:.9rem;color:var(--muted);overflow-wrap:anywhere}
.rail-game__line-card-badges{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.rail-game__line-card-badges>span{padding:.25rem .5rem;border-radius:999px;background:#eef1ed;font-size:.8rem;font-weight:700;white-space:nowrap}.rail-game__line-state.is-active{background:#e4f2e8;color:#275f39}.rail-game__line-state.is-paused{background:#f7ead7;color:#81511e}
.rail-game__line-card .rail-game__line-body{display:grid;gap:.55rem;padding:.75rem .8rem;border-top:0}
.rail-game__line-card .rail-game__line-assessment{margin:0;padding:.55rem .65rem;border-radius:.5rem;background:#f7f8f4}
.rail-game__line-card .rail-game__line-fleet{margin:0}
.rail-game__line-card .rail-game__line-actions{position:static;margin-top:.1rem}
@media(max-width:700px){.rail-game__line-card{margin:.65rem 0}.rail-game__line-card-head{display:grid;grid-template-columns:1fr}.rail-game__line-card-badges{justify-content:flex-start}.rail-game__line-card .rail-game__line-body{padding:.7rem}.rail-game__line-train{display:grid;grid-template-columns:1fr;align-items:stretch}.rail-game__line-train span{flex:auto}.rail-game__line-train button{width:100%}.rail-game__line-actions{display:grid;grid-template-columns:1fr}.rail-game__line-actions button{width:100%}}

/* 0.12.79 – echte Simulationspause für längere Unterbrechungen. */
.simulation-pause-button{align-self:stretch;min-width:7.4rem;font-weight:800;border:1px solid rgba(70,64,48,.28);background:#fffdf7}
.simulation-pause-button[aria-pressed="true"]{background:#f3dfba;border-color:#9a6c24;color:#55380f}
.rail-game.is-simulation-paused .rail-game__map-wrap::after{content:"PAUSE";position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;background:rgba(250,247,239,.20);font-size:clamp(2rem,7vw,5rem);font-weight:900;letter-spacing:.12em;color:rgba(57,48,38,.42);text-shadow:0 1px 0 rgba(255,255,255,.85)}

/* 0.12.99: Zug-Preview auf der Karte öffnet die vorhandenen Katalogfotos. */
.rail-game__train-photo-modal[hidden]{display:none!important}
.rail-game__train-photo-modal{position:fixed;inset:0;z-index:10020}
.rail-game__train-photo-backdrop{position:absolute;inset:0;background:rgba(17,20,24,.68);backdrop-filter:blur(3px)}
.rail-game__train-photo-dialog{position:relative;z-index:1;width:min(920px,96vw);max-height:94vh;overflow:auto;margin:3vh auto;padding:0 12px}
.rail-game__train-photo-content{position:relative;background:#f5f1e7;color:#17212b;border:1px solid rgba(70,64,48,.22);border-radius:16px;padding:20px;box-shadow:0 22px 55px rgba(0,0,0,.32)}
.rail-game__train-photo-close{position:absolute;z-index:2;top:10px;right:22px;min-width:2.3rem;min-height:2.3rem;padding:0;font-size:1.45rem;line-height:1}
.rail-game__train-photo-kicker{margin:0 0 3px;text-transform:uppercase;letter-spacing:.11em;font-size:.75rem;font-weight:800;color:#6f674e}
.rail-game__train-photo-content h3{margin:.1rem 2.5rem .2rem 0;font-size:1.55rem}
.rail-game__train-photo-type{margin:.15rem 0 1rem;color:#5d5848;font-weight:650}
.rail-game__train-photo-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.rail-game__train-photo-gallery figure{margin:0;background:#fff;border:1px solid rgba(70,64,48,.16);border-radius:12px;overflow:hidden}
.rail-game__train-photo-gallery img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}
.rail-game__train-photo-gallery figcaption{padding:7px 9px;text-align:center;font-size:.86rem;color:#5d5848}
.rail-game__train-photo-actions{display:flex;justify-content:flex-end;margin-top:14px}
@media(max-width:700px){.rail-game__train-photo-dialog{margin:1.5vh auto;max-height:97vh;padding:0 7px}.rail-game__train-photo-content{padding:16px 12px}.rail-game__train-photo-close{right:16px}.rail-game__train-photo-gallery{grid-template-columns:1fr}}

/* 0.12.108: mechanischer Hebel für den Linienbetrieb statt Rand-Checkbox. */
.rail-game__line-service-control{justify-content:center;flex-direction:column;text-align:center;padding:.8rem 1rem 1rem}
.rail-game__line-service-summary{justify-content:center}
.rail-game__service-lever{position:relative;display:grid!important;grid-template-columns:auto 88px auto;align-items:center;justify-content:center;gap:.8rem;width:auto!important;min-width:280px;margin:.25rem auto 0;cursor:pointer;user-select:none;touch-action:manipulation}
.rail-game__service-lever input{position:absolute!important;inline-size:1px!important;block-size:1px!important;opacity:0;pointer-events:none}
.rail-game__service-lever-label{font-size:.75rem;font-weight:800;letter-spacing:.08em;color:#62594c;transition:color .22s ease,transform .22s ease}
.rail-game__service-lever-mechanism{position:relative;width:88px;height:72px;display:block}
.rail-game__service-lever-base{position:absolute;left:17px;right:17px;bottom:5px;height:24px;border-radius:50%;background:linear-gradient(#88755e,#4d4033);border:2px solid #332a22;box-shadow:inset 0 3px 4px rgba(255,255,255,.18),0 3px 5px rgba(0,0,0,.24)}
.rail-game__service-lever-arm{position:absolute;left:42px;bottom:18px;width:8px;height:50px;border-radius:5px;background:linear-gradient(90deg,#4b4238,#b1a28f 48%,#53483c);border:1px solid #3c332a;transform-origin:50% 100%;transform:rotate(-34deg);transition:transform .34s cubic-bezier(.2,.85,.25,1.15);box-shadow:2px 2px 3px rgba(0,0,0,.2)}
.rail-game__service-lever-knob{position:absolute;left:50%;top:-9px;width:22px;height:22px;margin-left:-11px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#d05a50,#8c241d 62%,#59150f);border:2px solid #541812;box-shadow:0 2px 4px rgba(0,0,0,.3)}
.rail-game__service-lever input:checked~.rail-game__service-lever-mechanism .rail-game__service-lever-arm{transform:rotate(34deg)}
.rail-game__service-lever input:not(:checked)~.rail-game__service-lever-label--stop{color:#9b281f;transform:scale(1.05)}
.rail-game__service-lever input:checked~.rail-game__service-lever-label--run{color:#2f6c3b;transform:scale(1.05)}
.rail-game__service-lever input:disabled~*{opacity:.42}
.rail-game__service-lever:focus-within .rail-game__service-lever-base{outline:3px solid rgba(36,102,154,.32);outline-offset:3px}
@media(max-width:520px){.rail-game__service-lever{min-width:0;grid-template-columns:auto 78px auto;gap:.45rem}.rail-game__service-lever-mechanism{width:78px}.rail-game__service-lever-label{font-size:.68rem}}

/* 0.12.136: show the complete station and its name sign. */
.rail-game__city-figure img[data-station-image-size]{max-width:100%;max-height:440px;margin-inline:auto;object-fit:contain}
@media(max-width:520px){.rail-game__city-figure img[data-station-image-size]{max-height:48vh}}

.rail-game__city-text{white-space:pre-line}
