.story-campaign-picker{flex-wrap:wrap}.story-campaign-train{--accent:#d9b66f}.story-campaign-train .story-book{border-color:#8d70454d}.story-campaign-train .story-scene-tag{color:#f4dba7}.story-campaign-train .story-book-art img{object-position:center}.story-campaign-train .story-stage{background:linear-gradient(135deg,#1d2638d9,#17101ae6)}.story-campaign-train.train-dawn .story-stage{background:linear-gradient(140deg,#354754,#4b3635)}
.train-match .table{box-shadow:0 0 50px #b18b3620}.train-match .match-portrait{max-height:48vh}.train-match .mobile-dialogue{align-items:stretch;flex-wrap:wrap}.train-match .mobile-dialogue>p{flex:1}.train-match .mobile-dialogue .train-lamps{width:100%}.train-lamps{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:.3rem;margin:.65rem 0}.train-lamp{text-align:center;min-width:0}.train-lamp i{display:block;width:.65rem;height:.65rem;margin:auto;border:1px solid #685a43;border-radius:50%;background:#18191e;transition:background .3s,box-shadow .3s}.train-lamp.lit i{background:#ffe0a4;box-shadow:0 0 10px #f0ad5380}.train-lamp>span{display:none}.train-supports{padding:1rem;border-top:1px solid #d9b66f44;background:#101725}.train-supports>p{font-size:1rem;color:#f4dba7;margin:0 0 .65rem}.train-supports>p small{float:right}.train-supports>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.train-supports>div>span{opacity:.4;min-width:0;text-align:center}.train-supports>div>span.supported{opacity:1}.train-supports img{width:100%;aspect-ratio:1;object-fit:cover;object-position:50% 17%;border:1px solid #b39459;border-radius:.4rem}.train-supports b{display:block;font-size:.75rem;overflow-wrap:anywhere;font-weight:500}.train-danger{outline:2px solid #e6a26a;outline-offset:2px}.train-safe{box-shadow:0 0 12px #9fdfd4}
/* A stable reading frame: only the dialogue body scrolls. */
.train-talk{box-sizing:border-box;width:min(920px,calc(100vw - 24px));height:min(620px,90dvh);max-height:90dvh;display:grid;grid-template-columns:minmax(170px,.8fr) minmax(0,1.5fr);grid-template-rows:auto minmax(0,1fr) auto;gap:1rem 1.5rem;padding:1.5rem;background:linear-gradient(130deg,#182233,#17121e);border:1px solid #ba9b65;border-radius:1rem;overflow:hidden}
.train-talk-text-only .train-talk-heading,.train-talk-text-only .train-talk-text{grid-column:1 / -1}
.train-talk-art{grid-column:1;grid-row:1 / 3;min-height:0;min-width:0;height:100%;position:relative;overflow:hidden;align-self:end}
.train-talk-art .portrait,.train-talk-art img{width:100%;height:100%;max-height:100%;object-fit:contain;object-position:center bottom}
.train-talk-copy{display:contents}
.train-talk-heading{grid-column:2;grid-row:1;min-width:0}
.train-talk-meta{display:flex;justify-content:space-between;gap:1rem;color:#c6b891;font-size:.875rem}
.train-talk-heading h2{font-size:1.35rem;margin:.75rem 0 0;line-height:1.5}
.train-talk-text{grid-column:2;grid-row:2;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;font-size:1.125rem;line-height:1.95;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:.25rem .4rem .5rem 0}
.train-talk .confirm-actions{grid-column:1 / -1;grid-row:3;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:0;align-self:end}
.train-talk .confirm-actions button{min-width:0;min-height:48px;padding:.75rem .5rem;font-size:1rem}
.train-link-modal{width:min(720px,calc(100vw - 24px));max-height:94dvh;overflow:auto;border:1px solid #ebce90;background:radial-gradient(ellipse at top,#3d304d,#0d1829 65%);padding:1.5rem;text-align:center}.train-link-heading p{font-size:1rem;color:#e3d8c1}.train-link-heading h2{font-size:clamp(2rem,8vw,3.5rem);letter-spacing:.12em;color:#fbe2a8;margin:.6rem 0}.train-link-heading>span{font-size:clamp(.875rem,3.3vw,1.125rem);color:#f1e7d3;white-space:nowrap}.train-link-allies{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;margin:1.5rem 0}.train-link-allies figure{margin:0;border-bottom:2px solid var(--ally,#e6c175);background:#0c1223a6;border-radius:.35rem;overflow:hidden}.train-link-allies img{width:100%;height:clamp(70px,15vh,120px);object-fit:cover;object-position:center 18%;display:block}.train-link-allies figcaption{font-size:.875rem;padding:.4rem}.train-player-seat{display:flex;flex-direction:column;justify-content:center;align-items:center}.train-player-seat>b{font-size:1.35rem;color:#f7dfaa;padding:1rem}.train-wish-names{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0}.train-wish-names span{border:1px solid #b79a63;padding:.35rem .6rem;border-radius:.3rem;font-size:.875rem}
@media(max-width:640px){.train-link-modal{padding:1rem}.train-match .round-header i{font-size:.875rem}}
@media(max-height:520px) and (orientation:landscape){.train-link-allies{grid-template-columns:repeat(9,minmax(0,1fr));gap:.25rem;margin:.7rem 0}.train-link-allies img{height:75px}.train-link-allies figcaption{font-size:.75rem;overflow-wrap:anywhere}.train-player-seat>b{font-size:.875rem;padding:.25rem}.train-link-heading h2{font-size:2rem}.train-link-heading p{margin:.3rem}}
@media(prefers-reduced-motion:reduce){.train-lamp i{transition:none}}
.train-win-voices{position:absolute;top:2.5vh;left:50%;transform:translateX(-50%);z-index:5;width:min(690px,92vw);pointer-events:none}.train-win-voices>p{font-size:clamp(.8rem,2.5vw,1rem);color:#ffe6b5;margin:0 0 .5rem;text-shadow:0 2px 4px #000}.train-win-voices>div{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:.35rem}.train-win-voices figure{margin:0;min-width:0;border:1px solid #dabb79;background:#17212c;animation:train-voice-in .45s ease both;animation-delay:var(--voice-delay)}.train-win-voices img{display:block;width:100%;height:clamp(38px,9vh,76px);object-fit:cover;object-position:center 18%}.train-win-voices figcaption{font-size:clamp(.55rem,1.6vw,.75rem);color:#f8e8cb;padding:.2rem 0;overflow-wrap:anywhere}@keyframes train-voice-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.train-win-voices figure{animation:none}}
/* Keep the portrait substantial and give the spoken line the full phone width. */
.train-link-allies figcaption{padding:.4rem .15rem;white-space:nowrap}
.train-player-seat>b{padding:.65rem .2rem;white-space:nowrap}
@media(max-width:640px) and (orientation:portrait){
  .train-link-allies img{height:clamp(72px,13dvh,112px)}
  .train-link-allies figcaption{font-size:clamp(.75rem,3.5vw,.875rem)}
  .train-win-voices>div{grid-template-columns:repeat(4,minmax(0,1fr))}
  .train-win-voices img{height:clamp(35px,6dvh,60px)}
  .train-win-voices figcaption{font-size:.75rem}
}
@media(max-height:520px) and (orientation:landscape){.train-link-modal{padding:.75rem;max-height:96dvh}.train-link-heading h2{margin:.35rem 0}.train-link-allies figcaption{white-space:normal;font-size:.875rem}.train-player-seat>b{padding:.25rem}.train-player-seat>figcaption{font-size:.75rem}.train-win-voices figcaption{font-size:.75rem}}

@media(max-width:640px) and (orientation:portrait){
  .train-talk{grid-template-columns:100px minmax(0,1fr);grid-template-rows:minmax(150px,max-content) minmax(0,1fr) auto;gap:1rem;padding:1rem}
  .train-talk-copy{display:contents}
  .train-talk-art{grid-column:1;grid-row:1}
  .train-talk-heading{grid-column:2;grid-row:1;align-self:center}
  .train-talk-text-only .train-talk-heading{grid-column:1 / -1}
  .train-talk-meta{display:block;font-size:.875rem;line-height:1.65}
  .train-talk-meta>span{display:block}
  .train-talk-heading h2{font-size:1.125rem;margin:.5rem 0 0}
  .train-talk-text{grid-column:1 / -1;grid-row:2;font-size:1rem;line-height:1.8}
  .train-talk .confirm-actions{grid-column:1 / -1;grid-row:3;gap:.5rem}
  .train-talk .confirm-actions button{font-size:.875rem}
}
@media(max-height:520px) and (orientation:landscape){
  .train-talk{height:94dvh;max-height:94dvh;padding:.75rem;gap:1rem}
  .train-talk-heading h2{margin:.25rem 0 0;font-size:1.125rem}
  .train-talk-heading .train-lamps{margin:.4rem 0}
  .train-talk-text{font-size:1rem;line-height:1.7}
}
.train-threat-pause{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;outline:none;background:transparent;box-shadow:none;color:#e8d8bf;overflow:hidden}
.train-threat-pause::backdrop{background:transparent;backdrop-filter:none}
.train-threat-pause>p{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);margin:0;padding:1rem 2rem;background:#080c14e8;border-block:1px solid #a56e77;letter-spacing:.25em;font-size:1.25rem;white-space:nowrap}
.train-one-way-ticket{padding:.65rem .8rem;border:1px solid #77515d;background:#100d18;color:#d5a4a8;display:grid;gap:.3rem;text-align:center}
.train-one-way-ticket b{font-size:.875rem;letter-spacing:.06em}
.train-one-way-ticket span{font-size:.875rem;line-height:1.5;color:#d4c6c9}
.mobile-dialogue>.train-one-way-ticket{width:100%}
.special-train-one-way .special-ambient{filter:blur(24px) grayscale(.65) brightness(.3)}
.special-train-one-way .special-shade{background:linear-gradient(0deg,#100811 0%,#100811eb 16%,#10081177 45%,transparent 75%)}
.special-train-one-way .special-sweep{background:linear-gradient(110deg,transparent 46%,#ecd4c4 49%,#a0334a 50%,transparent 52%);mix-blend-mode:normal}
.special-train-one-way .special-copy>h2{font-size:clamp(30px,5vw,72px);line-height:1.4;text-shadow:2px 3px #49202b,0 0 28px #a7495560}
.special-train-one-way .special-character>span{white-space:nowrap}

.train-lamps-disconnecting .train-lamp i{animation:train-lamp-off .3s ease var(--lamp-delay) both;transition:none}
@keyframes train-lamp-off{from{background:#ffe0a4;box-shadow:0 0 10px #f0ad5380}to{background:#18191e;box-shadow:none}}
@media(prefers-reduced-motion:reduce){.train-lamps-disconnecting .train-lamp i{animation-duration:.01ms}}
.train-link-allies .train-player-seat{display:block;min-width:0}
.train-link-allies .train-player-seat img{object-position:center 72%}
.train-link-allies .train-player-seat figcaption{white-space:normal;overflow-wrap:anywhere;color:#f7dfaa}
.train-lamps.train-ten-lamps{grid-template-columns:repeat(10,minmax(0,1fr))}
.train-ten-link .train-ten-allies{grid-template-columns:repeat(5,minmax(0,1fr))}
.train-ten-link .train-link-allies figure img{aspect-ratio:1;object-fit:cover;object-position:center 18%}
.runaway-live{box-shadow:0 0 8px #a5e5ce;outline:1px solid #8acbb6}
.runaway-live.train-danger{outline:2px solid #e6a26a}
.runaway-count{color:#f4dba7;font-weight:700}
.runaway-zero .runaway-count{color:#e49a9a}
.runaway-zero .table{box-shadow:0 0 36px #b73e3844}
.runaway-support-note{padding:1rem;color:#cfbf9d;border-top:1px solid #ba9b6544}
.runaway-support-note p{font-size:.875rem;line-height:1.7}
.runaway-routes{font-size:.875rem;line-height:1.7;color:#d9caaa}
.runaway-target{display:flex;align-items:center;gap:.75rem;margin:1rem 0}
.runaway-target select{background:#142031;color:#f2ddb5;border:1px solid #ab936a;padding:.5rem;max-width:60%}
.runaway-target-card,.runaway-guard-card{padding:.85rem 1rem;margin:1rem 0;background:#132032;border:1px solid #ab936a55}
.runaway-target-card .runaway-target{flex-wrap:wrap;margin:0 0 .65rem;font-size:1rem}
.runaway-target-card .runaway-target select{font-size:1rem;max-width:100%}
.runaway-guard-card b{font-size:1rem;color:#f2ddb5}
.runaway-guard-card p{font-size:.875rem;line-height:1.6;margin:.5rem 0 0}
.runaway-exchange .exchange-tip{font-size:.875rem;line-height:1.6}
.story-campaign-picker button:disabled{opacity:.5;cursor:default}
/* Defoko's long support name stays below the face on phones, and left of it on wide screens. */
.cutin.has-expressions.compact-title .cutin-copy>strong{font-size:clamp(24px,3vw,42px);line-height:1.35;letter-spacing:.04em;max-width:52%;text-shadow:1px 2px #883632,0 0 16px #f2694355}
.cutin.has-expressions.compact-title .cutin-copy>p{max-width:48%}
@media(orientation:portrait){
  .cutin.has-expressions.compact-title .cutin-copy{inset:auto 6% 24px}
  .cutin.has-expressions.compact-title .cutin-copy>strong{font-size:clamp(18px,5.4vw,36px);max-width:100%}
  .cutin.has-expressions.compact-title .cutin-copy>span{font-size:10px;letter-spacing:.08em}
  .cutin.has-expressions.compact-title .cutin-copy>p{max-width:100%;margin-top:10px}
}
.compact-landscape .cutin.has-expressions.compact-title .cutin-copy>strong{font-size:clamp(22px,5.5dvh,32px);max-width:48%}
@media(max-width:640px){.train-ten-allies{grid-template-columns:repeat(5,minmax(0,1fr));gap:.35rem}.train-ten-allies figcaption{font-size:.65rem}.train-ten-link{padding:1rem}.train-ten-link .train-link-heading h2{font-size:2rem}.runaway-exchange .exchange-content{padding:1rem}.runaway-exchange .exchange-hand{gap:.15rem}.runaway-target{font-size:.875rem}}
