/* Self-hosted Source Sans 3; license in assets/fonts. */
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url('./fonts/source-sans-3-vietnamese-400-normal-06d1ea08ca0f.woff2') format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url('./fonts/source-sans-3-latin-ext-400-normal-f5706bb05795.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url('./fonts/source-sans-3-latin-400-normal-0f73f35e08cd.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url('./fonts/source-sans-3-vietnamese-600-normal-59f90792ec62.woff2') format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url('./fonts/source-sans-3-latin-ext-600-normal-5727d1da676b.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url('./fonts/source-sans-3-latin-600-normal-14527d193b0e.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url('./fonts/source-sans-3-vietnamese-700-normal-16b08bc821a9.woff2') format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url('./fonts/source-sans-3-latin-ext-700-normal-6a9fd7427518.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url('./fonts/source-sans-3-latin-700-normal-ae35266f2ab0.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
.app-nav{display:flex;align-items:stretch;gap:.3rem;border-block-end:1px solid var(--rule);padding-block:.2rem;width:min(1120px,90%);margin-inline:auto}.app-nav a{position:relative;border:1px solid transparent;display:inline-flex;align-items:center;gap:.48rem;padding:.55rem .82rem;min-height:44px;text-decoration:none;color:var(--muted);font-size:.88rem}.app-nav svg{width:19px;height:19px;flex:none}.app-nav a::before{content:"";position:absolute;inset:5px 4px;border:1px solid transparent;border-radius:999px;pointer-events:none}.app-nav [aria-current]{color:var(--ink)}.app-nav [aria-current]::before{border-color:var(--muted)}.offline-save{padding:1rem 0;margin-top:1rem}.offline-save button{background:var(--panel);color:var(--ink);border:1px solid var(--rule);border-radius:.4rem;font:inherit;padding:.55rem .9rem;min-height:44px;cursor:pointer}.offline-save output{display:block;font-size:.88rem;color:var(--muted)}.station-notes article{border-top:1px solid var(--rule);padding:.7rem 0}.station-notes h3{margin:0;font-size:1.05rem}.station-notes p{margin:.45rem 0;max-width:67ch}.station-notes small{display:block;line-height:1.6}@media(max-width:600px){.app-nav{gap:0;justify-content:space-between}.app-nav a{padding:.48rem .18rem;font-size:.84rem}.mast-inner{flex-wrap:nowrap}.mast-inner>nav{min-width:0}.language-menu summary{overflow-wrap:anywhere}}@media print{.app-nav,.offline-save{display:none}}

.fleet-jump{display:flex;gap:.35rem 1rem;flex-wrap:wrap;border-block:1px solid #89958e66;padding:.55rem 0;margin-bottom:2rem}.fleet-jump a{padding:.45em 0}.fleet-table{width:100%;border-collapse:collapse;table-layout:fixed}.fleet-table caption{text-align:start;font-size:1.35rem;font-weight:650;padding:1.8rem 0 .6rem}.fleet-table tr{border-block-start:1px solid #89958e66}.fleet-table th,.fleet-table td{padding:.7rem .5rem;text-align:start;vertical-align:middle;overflow-wrap:anywhere}.fleet-table th{width:53%;font-weight:550}.fleet-table a{display:flex;align-items:center;gap:1rem;min-height:44px;text-decoration:none}.fleet-table img{width:clamp(126px,18vw,208px);max-width:100%;height:auto}.fleet-table td{font-size:.88rem}.vehicle-spec{margin:1.5rem 0;display:grid;grid-template-columns:auto 1fr;gap:0}.vehicle-spec>*{padding:.45rem .4rem;border-top:1px solid #88968d66}.vehicle-spec dd{margin:0;font-variant-numeric:tabular-nums}@media(max-width:570px){.fleet-table th{width:60%}.fleet-table a{align-items:flex-start;flex-direction:column;gap:.3rem}.fleet-table img{width:150px}.fleet-table th,.fleet-table td{padding:.55rem .2rem}}

.plate-legend{width:100%;border-collapse:collapse;margin:.7rem 0;font-size:.92rem;line-height:1.4}.plate-legend th,.plate-legend td{text-align:start;vertical-align:top;border-top:1px solid var(--rule);padding:.55rem .25rem}.plate-legend th{width:44%;font-weight:500;color:var(--muted)}

.route-plate{width:min(100%,29rem);margin-inline:auto;color:var(--ink)}.route-plate svg{width:100%;display:block;overflow:visible}.route-plate .track,.route-plate .track-core{fill:none;stroke:var(--accent);stroke-width:5.5;stroke-linejoin:round;stroke-linecap:round}.route-plate .track-core{stroke:var(--paper);stroke-width:1}.route-plate .spur{stroke:var(--rule);fill:none}.route-plate circle{fill:var(--paper);stroke:var(--accent);stroke-width:2}.route-plate text{fill:currentColor;font:500 14px system-ui,sans-serif}.route-plate .latin{fill:var(--muted);font:10px system-ui,sans-serif}.route-plate a:hover text,.route-plate a:focus text{fill:var(--accent)}.route-plate figcaption{border-top:1px solid var(--rule);font-size:.79rem;color:var(--muted)}

.mast-inner .app-nav{margin:0 auto 0 0;width:auto;border:0;gap:.3rem}.mast-inner{justify-content:flex-start}.mast-inner .language-menu{margin-inline-start:auto}
@media(max-width:650px){.mast-inner{width:95%;gap:.4rem;min-height:54px}.mast-inner .brand-wordmark{width:clamp(76px,20vw,104px)}.mast-inner .app-nav{gap:0}.mast-inner .app-nav a{flex-direction:column;justify-content:center;gap:.15rem;padding:.2rem .35rem;line-height:1.1;font-size:.72rem;text-align:center}.mast-inner .language-menu summary span{display:none}.mast-inner .language-menu summary{padding-inline:.4rem}}

/* A single accelerating highlight follows the mark; the wordmark stays still. */
.home-brand{position:relative;isolation:isolate}
/* The mark is an abstracted Shinkansen: a roofline lifting into a nose over a straight underframe. Every few seconds a soft light
   in the brand colour glides along it, tail to nose, and ends in a faint glint at the tip, like a headlight. It only paints
   over the mark's own strokes (the mark alone, as a mask), uses colour rather than movement of the shape, and rests between passes. */
@media (prefers-reduced-motion:no-preference){
 .home-brand::before,.home-brand::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;
  -webkit-mask:url("/assets/senroam-mark.svg") center/contain no-repeat;mask:url("/assets/senroam-mark.svg") center/contain no-repeat}
 .home-brand::after{
  background:linear-gradient(100deg,transparent 0,transparent 24%,color-mix(in srgb,var(--accent) 50%,transparent) 40%,color-mix(in srgb,var(--accent) 90%,#fff) 52%,#fff 57%,color-mix(in srgb,var(--accent) 75%,transparent) 65%,transparent 80%) -19% 50%/16% 100% no-repeat;
  animation:brand-glide 12s linear 1.2s infinite both}
 .home-brand::before{
  background:color-mix(in srgb,var(--accent) 45%,#fff);
  -webkit-mask:url("/assets/senroam-mark.svg") center/contain no-repeat,url("/assets/senroam-nose.svg") center/contain no-repeat;-webkit-mask-composite:source-in;
  mask:url("/assets/senroam-mark.svg") center/contain no-repeat,url("/assets/senroam-nose.svg") center/contain no-repeat;mask-composite:intersect;
  animation:brand-glint 12s linear 1.2s infinite both}
 @keyframes brand-glide{
  0%{background-position:-19% 50%;opacity:0;animation-timing-function:cubic-bezier(.45,0,.25,1)}
  2%{opacity:1}
  14%{background-position:31% 50%;opacity:1}
  16%,100%{background-position:31% 50%;opacity:0}}
 @keyframes brand-glint{0%,11%{opacity:0}14.5%{opacity:1}24%,100%{opacity:0}}
 /* pointing at the brand replays the pass at once */
 @media (hover:hover) and (pointer:fine){
  .home-brand:is(:hover,:focus-visible)::after{animation:rail-speed 520ms cubic-bezier(.2,.7,.2,1) 1 both}
  .home-brand:is(:hover,:focus-visible)::before{animation:rail-glint 520ms linear 1 both}
  @keyframes rail-speed{0%{background-position:-19% 50%;opacity:0}12%{opacity:1}80%{opacity:1}100%{background-position:31% 50%;opacity:0}}
  @keyframes rail-glint{0%,60%{opacity:0}80%{opacity:1}100%{opacity:0}}
 }
}
/* Compact controls leave room for the complete, full-size brand on middle widths. */
@media(min-width:480px) and (max-width:1000px){
 .mast-inner .home-brand{flex-shrink:0;min-width:156px}
 .mast-inner .brand-wordmark{width:156px;max-width:none}
 .mast-inner .app-nav a{width:44px;height:44px;padding:0;display:grid;place-items:center}
 .mast-inner .app-nav a span,.mast-inner .language-menu summary span{display:none}
 .mast-inner .app-nav{gap:0}
}
@media(max-width:650px){.app-nav a::before{inset:2px 1px}}

.mast-inner .app-nav a,.language-menu summary{isolation:isolate}
.language-menu summary{position:relative}
.language-menu summary::before{content:"";position:absolute;inset:5px 0;border:1px solid transparent;border-radius:999px;z-index:-1;pointer-events:none}
.app-nav a::before{z-index:-1}
@media(hover:hover) and (pointer:fine){
  .app-nav a:hover::before,.language-menu summary:hover::before{border-color:var(--muted);background:var(--panel)}
  .app-nav a[aria-current]:hover::before{border-color:var(--accent);background:var(--panel)}
  .app-nav a[aria-current]:hover{color:var(--accent)}
  .language-options a.lang:hover{background:var(--panel);border-radius:.35rem}
}
.language-menu[open] summary::before{border-color:var(--muted)}
@media(prefers-reduced-motion:no-preference){
  .app-nav a::before,.language-menu summary::before{transition:none}
}
.route-plate .water{fill:#699da6;opacity:.13}.route-plate .river{fill:none;stroke:#63929c;stroke-width:1.35}.route-plate .relief path{fill:none;stroke:var(--muted);stroke-width:.7;opacity:.2}.route-plate .terrain-name text{font:9px system-ui,sans-serif;fill:var(--muted);paint-order:stroke;stroke:var(--paper);stroke-width:2px}.route-plate a text{paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round}
.national input{display:block;margin:.4rem 0;padding:.65rem;width:100%;border:1px solid var(--rule);color:var(--ink);background:var(--paper);font:inherit}.national ul{list-style:none;padding:0;max-height:21rem;overflow:auto}.national li{padding:.45rem 0;border-bottom:1px solid var(--rule)}.national li small{display:block;color:var(--muted)}.national output{font-variant-numeric:tabular-nums}
.fleet-table thead th{font-size:.75rem;color:var(--muted);font-weight:500}.fleet-table thead th:first-child{width:49%}.fleet-table thead th:nth-child(2){width:32%}.fleet-table thead th:last-child{width:19%;text-align:end}.fleet-table td:last-child{text-align:end;font-variant-numeric:tabular-nums}.fleet-table tbody tr{position:relative}.fleet-table tbody a::after{content:none}.fleet-table tbody tr:focus-within{outline:1px solid var(--accent);outline-offset:-1px}
@media(hover:hover){.fleet-table tbody tr:hover{background:var(--hover,var(--panel))}.fleet-table a:hover span{text-decoration:none}}
@media(prefers-reduced-motion:no-preference){.fleet-table tbody tr{transition:none}}
.theme-picker{position:relative;display:inline-grid;place-items:center;flex:none;width:32px;height:36px;border:1px solid transparent;border-radius:999px;color:var(--muted)}.theme-picker[hidden]{display:none}.theme-picker select{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.mast-inner .theme-picker{margin-inline-start:-.4rem}
.corridor-views{width:min(100%,31rem);margin:auto}.corridor-views>details{border-top:1px solid var(--rule);font-size:.86rem;color:var(--muted)}.corridor-views>details summary{padding:.55rem 0;cursor:pointer}.route-plate figcaption.map-title{display:flex;justify-content:space-between;align-items:baseline;color:var(--ink);font-size:1rem;font-weight:600}.map-title small{font-size:.74rem;color:var(--muted);letter-spacing:.08em}.route-plate .map-key path,.route-plate .map-leader{fill:none;stroke:var(--rule);stroke-width:1}.route-plate .map-key text{font:10px system-ui;fill:var(--muted)}.map-bed,.map-track{fill:none;stroke-linecap:round;stroke-linejoin:round}.map-bed{stroke:var(--panel);stroke-width:8}.map-track{stroke:var(--accent);stroke-width:2.5}
.national input[type=search]{appearance:none;border:1px solid var(--rule);border-radius:.55rem;background:var(--panel);padding:.65rem .85rem;min-height:44px}.national ul{padding-inline:.65rem;scrollbar-color:var(--rule) transparent;scrollbar-width:thin}.national li{display:grid;grid-template-columns:minmax(5em,.65fr) 1fr;gap:.75rem}.national button,.national>p>a,.offline-save button{display:inline-flex;align-items:center;gap:.5em;justify-content:center;min-height:36px;padding:.4rem .85rem;border:1px solid var(--rule);border-radius:999px;color:var(--ink);background:transparent;text-decoration:none;font:500 .86rem/1.35 system-ui;cursor:pointer}.national button[hidden],.offline-save button[hidden]{display:none}.national button::after{content:"+"}.offline-save button::before{content:"↓"}.national button:is(:hover,:focus-visible),.national>p>a:is(:hover,:focus-visible),.offline-save button:is(:hover,:focus-visible){background:var(--panel);border-color:var(--muted)}.national output{color:var(--muted);font-size:.81rem}
body{font-family:"Source Sans 3",system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.65}h1,h2,.gallery-caption h2{font-family:inherit;font-weight:600;letter-spacing:-.025em;text-wrap:balance}h1{font-size:clamp(2.25rem,4.6vw,3.85rem);line-height:1.09}h2{font-size:clamp(1.35rem,2.2vw,1.85rem);line-height:1.23}html:lang(ja) :is(h1,h2){letter-spacing:.015em}.lede{font-size:clamp(1rem,1.3vw,1.12rem);line-height:1.58}footer{flex-wrap:wrap;gap:.45rem 1rem}footer .rights{font-size:.77rem;color:var(--muted)}
.station-now>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.35rem .8rem}.station-now a{display:flex;align-items:center;padding:.55rem .1rem;border-top:1px solid var(--rule);min-height:44px;text-decoration:none}.station-data{margin:1rem 0;color:var(--muted);font-size:.85rem}.station-data summary{cursor:pointer}.year-note{display:block;font-size:.72rem;font-weight:400}
.identify-card{position:relative;isolation:isolate;min-width:0;padding:clamp(.65rem,1.5vw,1rem);border:1px solid transparent;border-radius:.6rem}.identify-card h3{margin:.5rem 0 0;font:inherit;font-weight:600;font-size:1rem;line-height:1.4}.identify-card h3 a,.identify-compare{text-decoration:none}.identify-card h3 a::after{content:"";position:absolute;inset:0;border-radius:.6rem}.identify-card:focus-within{outline:2px solid var(--accent);outline-offset:2px}.identify-card a:focus-visible{outline:0}.identify-compare{display:inline-flex;align-items:center;min-height:44px;padding:.2rem .65rem;margin-top:.35rem;border:1px solid transparent;border-radius:999px}.identify-card:focus-within h3 a{color:var(--accent)}
@media(hover:hover) and (pointer:fine){.identify-card:hover,.identify-compare:hover{background:var(--panel);border-color:var(--rule)}.identify-card:hover h3 a{color:var(--accent)}}
@media(prefers-reduced-motion:no-preference){.identify-card,.identify-compare{transition:none}}


@media(max-width:650px){
 .masthead .mast-inner{display:grid;grid-template-columns:minmax(0,1fr) auto 44px 44px;align-items:center;gap:0;width:calc(100% - 16px);min-height:52px}
 .mast-inner .home-brand{justify-self:start;max-width:100%}.mast-inner .brand-wordmark{width:min(94px,100%);height:auto}
 .mast-inner .app-nav{display:flex;gap:0;margin:0;padding:0;align-items:center}
 .mast-inner .app-nav a,.mast-inner .language-menu summary,.mast-inner .theme-picker{box-sizing:border-box;width:44px;height:44px;margin:0;padding:0;display:grid;place-items:center}
 .mast-inner .theme-picker[hidden]{display:none}.mast-inner .language-menu{margin:0}
 .mast-inner .app-nav a span,.mast-inner .language-menu summary::after{display:none}
 .mast-inner .app-nav svg,.mast-inner .language-menu summary svg,.mast-inner .theme-picker svg{width:19px;height:19px}
 .mast-inner .app-nav a::before,.mast-inner .language-menu summary::before{inset:6px}
 .mast-inner .app-nav [aria-current]::before{background:var(--panel);border-color:var(--rule)}
 .mast-inner .theme-picker{border:0}
}
@media(hover:none){
 .mast-inner .app-nav a:not([aria-current]):hover,.mast-inner .theme-picker:hover{color:var(--muted)}
 .mast-inner .app-nav a:not([aria-current]):hover::before,.mast-inner .language-menu:not([open]) summary:hover::before{border-color:transparent;background:transparent;box-shadow:none}
 .mast-inner .app-nav a:active::before{background:var(--panel)}
}
.home-brand picture{display:block}
@media(max-width:400px){.mast-inner .home-brand{width:44px;justify-content:center}.mast-inner .home-brand .brand-wordmark{width:34px;height:auto}.mast-inner .home-brand::before,.mast-inner .home-brand::after{display:none}}

.theme-picker::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:32px;height:32px;box-sizing:border-box;border:1px solid transparent;border-radius:50%;pointer-events:none}
.theme-picker svg{position:relative;pointer-events:none}
@media(hover:hover) and (pointer:fine){
 .theme-picker:hover{color:var(--ink)}
 .theme-picker:hover::before{background:var(--panel);border-color:var(--muted)}
}
.theme-picker:focus-visible::before{outline:2px solid var(--accent);outline-offset:2px;background:var(--panel)}
.theme-picker:active::before{background:var(--panel);border-color:var(--muted)}
@media(prefers-reduced-motion:no-preference){.theme-picker::before{transition:none}}

.theme-picker{background:transparent;cursor:pointer}
.theme-picker .moon,.theme-picker[aria-checked="true"] .sun{display:none}
.theme-picker[aria-checked="true"] .moon{display:block}
.route-plate .map-terminal{fill:none;stroke:var(--accent);stroke-width:1}
.route-plate .map-grid{fill:none;stroke:var(--rule);stroke-width:.6;opacity:.42}
.route-plate .map-node-bg{fill:transparent;stroke:none}
.route-plate a:is(:hover,:focus-visible) .map-leader{stroke:var(--accent)}
.fleet-table thead th:first-child{width:38%}
.fleet-table thead th:nth-child(2){width:26%}
.fleet-table thead th.fleet-speed{width:19%}
.fleet-table .fleet-speed{text-align:end;font-variant-numeric:tabular-nums}
.drive-kind{display:block;color:var(--muted);font-size:.75rem;font-weight:400}
.seat-rows{border-collapse:collapse;width:min(100%,34rem);font-variant-numeric:tabular-nums}
.seat-rows caption{text-align:start;color:var(--muted);font-size:.82rem;padding-bottom:.5rem}
.seat-rows th,.seat-rows td{text-align:start;border-top:1px solid var(--rule);padding:.65rem .25rem}
.seat-rows th{font-weight:500}.seat-rows td:last-child{white-space:nowrap;text-align:end}
.seat-rows svg{display:block;color:var(--muted);max-width:100%}

.regional-seats dl,.seating-study dl{display:grid;grid-template-columns:minmax(5rem,auto) minmax(0,1fr);gap:0 1rem;max-width:38rem;margin-block:.75rem}
.regional-seats :is(dt,dd),.seating-study :is(dt,dd){margin:0;padding-block:.45rem;border-top:1px solid var(--rule);align-content:center}
.regional-seats dd svg,.seating-study dd svg{vertical-align:middle;margin-inline-end:.3rem;color:var(--muted)}
.cab-ends figure{margin:0}
.cab-ends svg{display:block;width:100%;height:auto}
.cab-ends figcaption{text-align:center;font-size:.86rem}
@media(max-width:380px){.cab-ends .cab-end-grid{gap:.5rem!important}}

.search-dialog{position:fixed;inset:clamp(1rem,9svh,6rem) 1rem auto;margin-inline:auto;width:min(42rem,calc(100% - 2rem));max-height:80svh;box-sizing:border-box;padding:1.4rem;border:1px solid var(--rule);border-radius:1.2rem;background:var(--paper);color:var(--ink);box-shadow:0 18px 70px #0003;overflow:auto}
.search-dialog::backdrop{background:#101c1866;backdrop-filter:blur(7px)}
.search-dialog .search{margin:0}
.search-dialog form{position:absolute;right:.6rem;top:.5rem}
.search-dismiss{width:36px;height:36px;display:grid;place-items:center;background:transparent;border:1px solid transparent;border-radius:50%;color:var(--muted);font:1.5rem/1 inherit;cursor:pointer}
.search-dismiss:hover{background:var(--panel);border-color:var(--rule);color:var(--ink)}
.search-dialog label{padding-right:2rem;display:block}
.search-dialog .search-results{position:static;max-height:50svh;box-shadow:none;border:0;margin-top:.7rem;overflow-y:auto}
.search-dialog .search-results a{border-radius:.45rem;padding:.65rem .7rem}
.search-dialog .search-results a[aria-selected=true]{background:var(--panel);outline:1px solid var(--muted);outline-offset:-1px}
.search-dialog .search-fallback{font-size:.82rem;padding-top:.8rem;color:var(--muted)}
.search-is-open{overflow:hidden}
@media(prefers-reduced-motion:no-preference){
.search-dialog[open]{animation:none}
@keyframes search-reveal{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}
}

.corridor-views{--route-colour:#287f82;--route-end:#ac7849;--route-halo:#287f8215}
.corridor-views .map-bed{stroke:var(--route-halo);stroke-width:9}
.corridor-views .map-track{stroke:var(--route-colour);stroke-width:2.6}
.corridor-views .map-terminal{stroke:var(--route-end);stroke-width:1.3}
.corridor-views .route-plate a circle:not(.map-terminal){stroke:var(--route-colour)}
.corridor-views .map-title small{color:var(--route-colour)}
.corridor-views .map-leader{opacity:.72}
.corridor-views .route-plate a:is(:hover,:focus-visible) .map-leader{stroke:var(--route-colour);opacity:1}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .corridor-views{--route-colour:#7ab8b5;--route-end:#d2ac77;--route-halo:#7ab8b51a}}
:root[data-theme="dark"] .corridor-views{--route-colour:#7ab8b5;--route-end:#d2ac77;--route-halo:#7ab8b51a}

:is(#technical-specifications,#technical-profile,.regional-tech,.engineering-study) table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:.88rem}
:is(#technical-specifications,#technical-profile,.regional-tech,.engineering-study) th{width:35%;font-weight:500;color:var(--muted);text-align:start}
:is(#technical-specifications,#technical-profile,.regional-tech,.engineering-study) :is(td,th){padding:.7rem .45rem;border-block-start:1px solid var(--rule);vertical-align:top;overflow-wrap:anywhere}
:is(#technical-specifications,#technical-profile,.regional-tech,.engineering-study) td{font-variant-numeric:tabular-nums}
:is(#technical-specifications,#technical-profile) details{font-size:.8rem;overflow-wrap:anywhere}
.book-note{padding-block:.7rem;border-top:1px solid var(--rule)}
.book-note h3{margin:.25rem 0;font-size:1rem}
.book-note .citation{color:var(--muted);font-size:.78rem}
@media(max-width:400px){:is(#technical-specifications,#technical-profile,.regional-tech,.engineering-study) :is(td,th){padding-inline:.2rem;font-size:.82rem}}

/* Shared cab silhouette: retain both vehicle identities without repeating the plate. */
.shared-end-view,.cab-ends .shared-end-view{width:100%;max-width:28rem;margin:1rem auto}
.shared-end-view svg,.cab-ends .shared-end-view svg{display:block;width:100%;max-width:18rem;height:auto;margin-inline:auto}
.shared-end-view figcaption{text-align:center}
a.source-arrow,a.source-arrow:hover,a.source-arrow:focus-visible{text-decoration:none}

/* Series-specific engineering: compact facts, readable explanations, exact sources. */
.engineering-details{margin-block:2.5rem;scroll-margin-top:1rem}
.engineering-details>h2{margin-bottom:.45rem}
.engineering-details .engineering-scope{color:var(--muted);font-size:.86rem}
.engineering-facts{width:100%;table-layout:fixed;border-collapse:collapse;font-size:.88rem}
.engineering-facts th{width:36%;text-align:start;font-weight:500;color:var(--muted)}
.engineering-facts :is(th,td){padding:.75rem .45rem;border-block-start:1px solid var(--rule);vertical-align:top;overflow-wrap:anywhere}
.engineering-facts td{font-variant-numeric:tabular-nums}
.engineering-insight{margin-block:1.4rem}
.engineering-insight h3{font-size:1.02rem;font-weight:600;line-height:1.4;margin-bottom:.35rem}
.engineering-insight p{margin-block:.35rem;max-width:68ch}
.engineering-details .source-arrow{display:inline-block;padding-inline:.18em;font-size:.85em;white-space:nowrap}
.engineering-sources{margin-block:1.2rem;font-size:.8rem;color:var(--muted);overflow-wrap:anywhere}
.engineering-sources summary{cursor:pointer;padding-block:.65rem;color:var(--ink)}
.engineering-sources li{margin-block:.8rem;scroll-margin-top:1rem}
@media(max-width:400px){.engineering-facts :is(th,td){padding-inline:.2rem;font-size:.82rem}.engineering-facts th{width:38%}}

/* Citations use small stable numbers; destinations are described by their text. */
a.source-ref{display:inline-grid;place-items:center;min-width:24px;min-height:24px;padding:0 .1em;border-radius:4px;color:var(--muted);font-size:.72rem;line-height:1;text-decoration:none;vertical-align:baseline;font-variant-numeric:tabular-nums}
a.source-ref:is(:hover,:focus-visible){color:var(--accent);background:var(--panel);text-decoration:none}
:is(.engineering-sources,.source-links,.citation) a{text-decoration:none}
:is(.engineering-sources,.source-links,.citation) a:is(:hover,:focus-visible){text-decoration:underline;text-underline-offset:.2em}

/* Quiet numbered circles, following the shared Cha.fyi reference language. */
a.source-ref{width:24px;height:24px;min-width:24px;min-height:24px;border:1px solid var(--rule);border-radius:50%;padding:0;margin-inline:.12rem;background:transparent;font-size:.68rem;font-weight:400;line-height:1;vertical-align:middle}
a.source-ref:is(:hover,:focus-visible){border-color:var(--muted);background:var(--panel);color:var(--ink)}
@media(prefers-reduced-motion:no-preference){a.source-ref{transition:none}}
/* Direct operator booking: readable route choices and quiet evidence. */
.official-booking{max-width:72rem;margin-inline:auto}.booking-reviewed{color:var(--muted);font-size:.8rem;max-width:65ch}.booking-route-nav{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.4rem 0 2rem}.booking-route-nav a{border:1px solid var(--rule);border-radius:2rem;padding:.55rem .9rem;font-size:.85rem;text-decoration:none}.booking-route-nav a:hover,.booking-route-nav a:focus-visible{background:var(--panel)}.booking-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem}.booking-card{border:1px solid var(--rule);border-radius:8px;padding:clamp(1.1rem,3vw,2rem);scroll-margin-top:6rem}.booking-card h3{font-size:1.45rem;margin:.5rem 0}.booking-card p{font-size:.95rem;line-height:1.7}.booking-card .booking-route{font-size:.85rem;color:var(--muted)}.booking-official-link{display:inline-flex;align-items:center;min-height:44px;font-weight:600;text-decoration:none;border-bottom:1px solid var(--rule);margin-right:.6rem}.booking-official-link:hover{border-color:currentColor}.booking-note{border-left:2px solid var(--rule);padding:.25rem 1.25rem;margin:2rem 0;color:var(--muted);max-width:75ch}.booking-guide-section{max-width:75ch;padding-top:1.5rem;scroll-margin-top:6rem}.booking-guide-section p{line-height:1.85}.booking-sources{border-top:1px solid var(--rule);margin-top:3rem;padding-top:1rem;max-width:75ch}.booking-sources ol{font-size:.85rem;line-height:1.9;padding-left:1.5rem}.booking-sources li{padding:.25rem 0;scroll-margin-top:6rem}.booking-sources li:target{background:var(--panel)}.booking-sources a{text-decoration:none}.booking-sources a:hover{text-decoration:underline}@media(max-width:700px){.booking-grid{grid-template-columns:1fr}.booking-route-nav{gap:.4rem}.booking-route-nav a{font-size:.8rem}}

@media(min-width:480px) and (max-width:650px){.mast-inner .home-brand .brand-wordmark{width:156px;max-width:none}.mast-inner .home-brand{min-width:156px}}
.directory-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;margin:1.5rem 0 .8rem}.directory-filters label{font-size:.85rem;color:var(--muted)}.directory-filters select{display:block;width:100%;min-height:44px;margin-top:.35rem;border:1px solid var(--rule);border-radius:.5rem;background:var(--paper);color:var(--ink);font:inherit;padding:.6rem}.directory-scope{max-width:76ch;color:var(--muted);font-size:.9rem;line-height:1.65}.directory-results-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.7rem 0}.national .directory-results-meta button::after{content:none}.national li{display:block;padding:0}.national li details{padding:.75rem .3rem}.national li summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;cursor:pointer;min-height:44px}.national li summary small{font-size:.7rem;border:1px solid var(--rule);border-radius:1rem;padding:.2rem .6rem}.national li details p{font-size:.85rem;line-height:1.6}.directory-record-link,.directory-guide-link{display:inline-flex;margin:.6rem 1rem .2rem 0;min-height:36px;align-items:center;font-size:.85rem}.national ul{max-height:36rem}@media(max-width:550px){.directory-filters{grid-template-columns:1fr}.national li summary{align-items:flex-start;flex-direction:column;gap:.3rem}}

/* Match native glyph forms and leave breathing room for complex scripts. */
html:lang(ja){--native-sans:"Hiragino Sans","Yu Gothic","Noto Sans JP",sans-serif}
html:lang(zh-Hans){--native-sans:"PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif}
html:lang(zh-Hant){--native-sans:"PingFang TC","Microsoft JhengHei","Noto Sans TC",sans-serif}
html:lang(ko){--native-sans:"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif}
html:lang(th){--native-sans:"Thonburi","Leelawadee UI","Noto Sans Thai",sans-serif}
html:lang(ne){--native-sans:"Kohinoor Devanagari","Nirmala UI","Noto Sans Devanagari",sans-serif}
html:lang(my){--native-sans:"Myanmar Sangam MN","Myanmar Text","Noto Sans Myanmar",sans-serif}
html:is(:lang(ja),:lang(zh),:lang(ko),:lang(th),:lang(ne),:lang(my)) body{font-family:"Source Sans 3",var(--native-sans),system-ui,sans-serif;line-height:1.8}
html:is(:lang(ja),:lang(zh),:lang(ko),:lang(th),:lang(ne),:lang(my)) :is(h1,h2,h3){letter-spacing:0;line-height:1.4}
html:lang(ko) :is(h1,h2,h3,p){word-break:keep-all;overflow-wrap:anywhere}
html:is(:lang(th),:lang(ne),:lang(my)) .lede{line-height:1.8}
button,input,select,textarea{font-family:inherit}

/* Shared reading scale: quiet hierarchy without undersized mobile prose. */
:root{--text-caption:.875rem;--text-small:.9375rem;--text-body:1rem;--text-lead:clamp(1.0625rem,1rem + .25vw,1.1875rem)}
.lede{font-size:var(--text-lead);line-height:1.65}
:is(.engineering-sources,.booking-reviewed,.booking-sources ol,.book-note .citation,.station-notes small,figcaption,.breadcrumb){font-size:var(--text-caption);line-height:1.65}
:is(.engineering-facts,.engineering-facts th,.engineering-facts td,#technical-specifications table,#technical-profile table,.regional-tech table,.engineering-study table){font-size:var(--text-small);line-height:1.6}
:is(#technical-specifications,#technical-profile,.regional-tech,.engineering-study) :is(td,th){font-size:var(--text-small);overflow-wrap:anywhere}
:is(.directory-filters label,.national li details p,.booking-route-nav a,.booking-card .booking-route){font-size:var(--text-small)}
.national li summary small{font-size:var(--text-caption)}
@media(max-width:600px){input,select,textarea,.directory-filters select{font-size:1rem}.engineering-facts th{width:42%}.booking-card{padding:1rem}}
@media(prefers-reduced-motion:no-preference){body{transition:none}}

/* Geographic context stays behind the station reading layer. */
/* The track alignment blends into the page like the home map: no filled panel, no hard crop. The land is a quiet tint on its
   own layer that fades out toward every edge; the track, names and scale sit on a crisp layer above it. */
.alignment-stage{position:relative}
.alignment-backdrop{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden;
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 18%,#000 82%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 12%,#000 88%,transparent 100%);-webkit-mask-composite:source-in;
  mask-image:linear-gradient(to right,transparent 0,#000 18%,#000 82%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 12%,#000 88%,transparent 100%);mask-composite:intersect}
.alignment-backdrop .map-land{fill:color-mix(in srgb,var(--ink) 6.5%,transparent);stroke:color-mix(in srgb,var(--muted) 46%,transparent);stroke-width:.7;stroke-linejoin:round}
.alignment-backdrop .map-grid{fill:none;stroke:var(--rule);stroke-width:.6;opacity:.4}
.alignment-map{position:relative;isolation:isolate;overflow:visible!important;border-radius:0}
.alignment-map .map-sea-label text{fill:var(--muted);opacity:.7;font:9px "Source Sans 3",system-ui,sans-serif;letter-spacing:.03em;text-anchor:middle;stroke:none}
.alignment-map .map-grid{opacity:.18}
.alignment-map .map-node-bg{fill:transparent;stroke:none;rx:4}
.alignment-map .map-leader{stroke:var(--muted);stroke-width:.65;opacity:.55}
.alignment-map .map-track{stroke-width:2.3}
.alignment-map .map-bed{stroke-width:7;opacity:.65}
.alignment-map a text{font-weight:500;paint-order:stroke;stroke:var(--paper);stroke-width:2.5px;stroke-linejoin:round}
.alignment-map a .latin{font-size:10.5px;font-weight:400;letter-spacing:.01em}
.alignment-map a:is(:hover,:focus-visible) text{fill:var(--route-colour);text-decoration:none}
.alignment-map a:is(:hover,:focus-visible) circle{fill:var(--route-colour)}

.source-batch{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem;margin:.45rem 0 1rem}.source-batch a.source-ref{margin:0}.source-marker{font-size:.68em;color:var(--muted);margin-inline-start:.3em;line-height:0;vertical-align:super}.source-batch+p{margin-top:.5rem}

/* Anchored chevron: rotation changes neither trigger width nor label alignment. */
.mast-inner .language-menu summary{position:relative;padding-inline-end:1.65rem}
.mast-inner .language-menu summary::after{display:none}
.mast-inner .language-menu summary>.language-chevron{position:absolute;inset-inline-end:.5rem;top:50%;width:12px;height:8px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transform:translateY(-50%);transform-origin:center;pointer-events:none}
.mast-inner .language-menu[open] summary>.language-chevron{transform:translateY(-50%) rotate(180deg)}
@media(prefers-reduced-motion:no-preference){.mast-inner .language-menu summary>.language-chevron{transition:transform 130ms cubic-bezier(.2,.7,.2,1)}}
@media(max-width:650px){.mast-inner .language-menu summary{width:44px;min-width:44px;padding:0 13px 0 0}.mast-inner .language-menu summary>.language-chevron{inset-inline-end:3px;width:10px;height:7px}}

.alignment-map .map-key path{stroke:var(--muted);stroke-width:.8}.alignment-map .map-key text{font-size:9px}.route-plate figcaption.map-title{gap:1rem;flex-wrap:wrap}.route-plate figcaption:not(.map-title){font-size:.75rem;line-height:1.7}

/* One header system: quiet controls, generous group separation, fixed geometry. */
.masthead{--nav-wash:color-mix(in srgb,var(--ink) 5%,var(--paper));--nav-selected:color-mix(in srgb,var(--accent) 8%,var(--paper))}
.masthead .mast-inner{position:relative;gap:clamp(1.5rem,4vw,3rem);justify-content:space-between}
.site-menu-panel{display:flex;align-items:center;justify-content:flex-end;gap:1rem;flex:1;min-width:0}
.masthead .site-menu-panel .app-nav{margin:0;gap:.25rem;flex-wrap:nowrap}
.site-menu-toggle,.site-theme>span,.theme-label{display:none}
.site-theme{display:flex;align-items:center;flex:none}
.masthead .site-menu-panel .language-menu{margin-inline-start:0}
.masthead .mast-inner :is(.app-nav a,.language-menu summary,.theme-picker,.site-menu-toggle,.language-options a.lang){position:relative;isolation:isolate;border:0;background:transparent;box-shadow:none;transform:none;color:var(--muted);transition:color 90ms ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.masthead .mast-inner :is(.app-nav a,.language-menu summary,.theme-picker,.site-menu-toggle)::before{content:"";position:absolute;inset:6px 2px;z-index:-1;border:0;border-radius:6px;background:transparent;box-shadow:none;pointer-events:none;transition:background-color 90ms ease}
.masthead .mast-inner .theme-picker{width:44px;height:44px;margin:0;flex:none}
.masthead .mast-inner .theme-picker::before{inset:6px;width:auto;height:auto;transform:none}
.masthead .mast-inner .theme-picker[hidden]{display:none}
.masthead .mast-inner :is(.app-nav a[aria-current],.language-menu[open] summary,.site-menu-toggle[aria-expanded=true]){color:var(--ink)}
.masthead .mast-inner :is(.app-nav a[aria-current],.language-menu[open] summary,.site-menu-toggle[aria-expanded=true])::before{background:var(--nav-selected)}
@media(hover:hover){
 .masthead .mast-inner :is(.app-nav a,.language-menu summary,.theme-picker,.site-menu-toggle):hover{color:var(--ink)}
 .masthead .mast-inner :is(.app-nav a,.language-menu summary,.theme-picker,.site-menu-toggle):hover::before{background:var(--nav-wash);border:0;box-shadow:none}
 .masthead .mast-inner .language-options a.lang:hover{background:var(--nav-wash);border-radius:6px}
}
.masthead .mast-inner :is(.app-nav a,.language-menu summary,.theme-picker,.site-menu-toggle):active::before{background:var(--nav-selected);transition:none}
.masthead .mast-inner :is(a,button,summary):focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(min-width:1001px){
 .masthead .site-menu-panel .app-nav a{padding:.4rem .65rem;min-height:44px;font-size:.875rem;white-space:nowrap}
}
@media(min-width:1001px) and (max-width:1250px){
 .masthead .site-menu-panel .app-nav a{width:44px;height:44px;padding:0;display:grid;place-items:center}
 .masthead .site-menu-panel .app-nav a span{display:none}
 .masthead .site-menu-panel .app-nav a::before{inset:6px}
 .masthead .site-menu-panel{gap:1.25rem}
}
@media(max-width:1000px){
 .masthead .mast-inner{display:flex;flex-wrap:wrap;width:calc(100% - 2rem);min-height:64px;gap:0 1.5rem;padding-block:.5rem}
 .masthead.menu-ready .mast-inner{flex-wrap:nowrap}
 .masthead .mast-inner .home-brand{width:auto;min-width:0;max-width:60%;justify-content:flex-start}
 .masthead .mast-inner .brand-wordmark{width:clamp(128px,25vw,172px);max-width:100%;height:auto}
 .masthead .site-menu-toggle:not([hidden]){display:flex;align-items:center;gap:.5rem;min-height:44px;padding:0 10px;font:inherit;font-size:.875rem;font-weight:600;line-height:1.3;cursor:pointer;flex:none}
 .site-menu-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;flex:none}
 .masthead .site-menu-panel{display:grid;flex:0 0 100%;grid-template-columns:minmax(0,1fr);gap:8px;padding:8px;margin-top:.5rem}
 .masthead.menu-ready .site-menu-panel{position:absolute;z-index:40;inset-block-start:calc(100% + 6px);inset-inline-end:0;width:min(360px,100%);margin:0;max-height:calc(100dvh - 88px);overflow-y:auto;overscroll-behavior:contain;background:var(--paper);border:1px solid var(--rule);border-radius:12px;box-shadow:0 8px 24px #0000000d}
 .masthead.menu-ready:not(.menu-open) .site-menu-panel{display:none}
 .masthead .site-menu-panel .app-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 8px;width:100%;padding:0;margin:0}
 .masthead .site-menu-panel .app-nav a{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;width:auto;height:auto;min-height:44px;padding:8px 10px;font-size:.9375rem;line-height:1.4;text-align:start;min-width:0}
 .masthead .site-menu-panel .app-nav a span{display:block}
 .masthead .site-menu-panel .language-menu{position:relative;margin:0;width:100%;border-top:1px solid var(--rule);padding-top:4px}
 .masthead .site-menu-panel .language-menu summary{display:flex;width:100%;height:auto;min-height:44px;gap:8px;padding:8px 30px 8px 10px;font-size:.9375rem}
 .masthead .site-menu-panel .language-menu summary span{display:block}
 .masthead .site-menu-panel .language-chevron{inset-inline-end:10px}
 .masthead .site-menu-panel .language-menu:not([open])>.language-options{display:none}
 .masthead .site-menu-panel .language-menu[open]>.language-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));position:static;inset:auto;width:100%;max-width:100%;max-height:none;gap:2px;padding:4px;border:0;box-shadow:none;margin:0}
}
@media(max-width:360px){.masthead .site-menu-panel .app-nav{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.masthead .mast-inner :is(a,button,summary),.masthead .mast-inner :is(a,button,summary)::before{transition:none}}

/* Language choices are controls, not selectable prose. */
.masthead .language-menu summary,
.masthead .language-menu summary *,
.masthead .language-options a.lang{
 -webkit-user-select:none;
 user-select:none;
 -webkit-tap-highlight-color:transparent;
}
.masthead .mast-inner .language-options a.lang[aria-current=true]{background:transparent;color:var(--ink);font-weight:600}

/* Source notes stay one quiet line until needed. */
details.booking-sources{margin-top:1.5rem;padding:0;border-top:1px solid var(--rule);max-width:75ch;color:var(--muted)}
details.booking-sources>summary{cursor:pointer;min-height:44px;padding:.6rem 0;font-size:.875rem;font-weight:500;line-height:1.5}
details.booking-sources>summary::marker{font-size:.7em}
details.booking-sources>p{font-size:.875rem;line-height:1.6;margin:.15rem 0 .65rem}
details.booking-sources>ol{margin:0 0 .75rem;padding-inline-start:1.25rem;font-size:.8125rem;line-height:1.5}
details.booking-sources li{padding:.2rem 0;overflow-wrap:anywhere}
@media print{details.booking-sources::details-content{content-visibility:visible}details.booking-sources>summary{font-weight:600}}

/* Header labels sit on their icons' optical centre.
   Flex centring uses the font's ascent+descent box, which is asymmetric and leaves Latin
   labels about 1px high beside the icon. Trimming the label to cap-height/baseline makes the
   letters themselves centre on the icon, whatever the font or locale. */
.masthead :is(.app-nav a,.language-menu summary)>span{text-box:trim-both cap alphabetic}
/* Ideographs and Hangul are centred on the em box, a little above where Latin caps centre. */
.masthead :is(.app-nav a,.language-menu summary)>span:is(:lang(ja),:lang(ko),:lang(zh)){position:relative;inset-block-start:.05em}
.masthead :is(.app-nav a,.language-menu summary)>span:lang(ko){inset-block-start:.036em}
.masthead :is(.app-nav a,.language-menu summary)>span:lang(zh){inset-block-start:.03em}
@supports not (text-box:trim-both cap alphabetic){
 .masthead :is(.app-nav a,.language-menu summary)>span{position:relative;inset-block-start:.085em}
 .masthead :is(.app-nav a,.language-menu summary)>span:lang(ja){inset-block-start:.135em}
 .masthead :is(.app-nav a,.language-menu summary)>span:lang(ko){inset-block-start:.121em}
 .masthead :is(.app-nav a,.language-menu summary)>span:lang(zh){inset-block-start:.115em}
}
/* Each icon is drawn with different empty space to the right of its stroke. These margins
   (px at the 19px nav icon size, 16.8px language icon) give every icon the same visual gap
   to its label. The span is display:none in icon-only layouts, so they only act in rows. */
.masthead .app-nav a[data-search-open]>span{margin-inline-start:-.8px}
.masthead .app-nav a[href$="/trains/"]>span{margin-inline-start:-1.6px}
.masthead .language-menu summary>span{margin-inline-start:1.3px}

/* Trains table. The series designation is the row's name and leads; where it runs sits beneath it;
   the picture is its own element beside them, and drops below on phones. Speed and year are quiet,
   right-aligned tabular figures. The header is hidden on phones (kept for screen readers) because the
   unit travels with each speed instead of wrapping into a narrow column. */
.fleet-table{width:100%;table-layout:auto;border-collapse:collapse}
.fleet-table :is(th,td){padding:.8rem .5rem;vertical-align:middle}
.fleet-table thead th{padding-block:.6rem;font-size:.75rem;font-weight:500;line-height:1.3;color:var(--muted);vertical-align:bottom}
.fleet-table :is(thead th:first-child,tbody th){width:auto}
.fleet-table :is(.fleet-speed,.fleet-year){text-align:end;font-variant-numeric:tabular-nums}
.fleet-table :is(td.fleet-speed,td.fleet-year) small:not(.fleet-unit){display:block;font-size:.6875rem;line-height:1.35;color:var(--muted);overflow-wrap:anywhere}
/* Headers are one line in every language: the unit sits inline after its label, and the speed and year columns
   size to their header text, so a long German or Thai label widens its column instead of wrapping. */
.fleet-table thead th{white-space:nowrap}
.fleet-table thead .drive-kind{display:inline;margin-inline-start:.35em;font-size:inherit}
table.fleet-table thead th.fleet-speed{width:1%;padding-inline:1.5rem .5rem}
table.fleet-table thead th.fleet-year{width:1%;padding-inline:1.5rem .5rem}
.fleet-table :is(td.fleet-speed,td.fleet-year){font-size:.9375rem;color:var(--ink)}
.fleet-table .fleet-unit{display:none}
.fleet-table tbody th{font-weight:400}
.fleet-table .fleet-link{display:grid;grid-template-columns:minmax(7.5rem,13rem) minmax(0,1fr);grid-template-areas:"series pic" "context pic";align-items:center;column-gap:clamp(1rem,3vw,2rem);row-gap:.1rem;min-height:44px;flex-direction:initial;text-decoration:none;color:var(--ink)}
.fleet-series{grid-area:series;align-self:end;font-size:1.0625rem;font-weight:650;line-height:1.25;overflow-wrap:anywhere}
.fleet-context{grid-area:context;align-self:start;font-size:.8125rem;font-weight:400;line-height:1.4;color:var(--muted)}
.fleet-link:not(:has(.fleet-context)) .fleet-series{grid-row:1/3;align-self:center}
.fleet-table .fleet-link img{grid-area:pic;justify-self:start;width:clamp(150px,22vw,230px);max-width:100%;height:auto}
/* Stacked layout (picture under the name, header hidden) up to 900px: the side-by-side layout needs room for the
   longest single-line header (German, French, Filipino) and still leave the picture a useful size. */
@media(max-width:900px){
 .fleet-table{table-layout:fixed}
 .fleet-table thead th{padding:0;border:0;line-height:0;white-space:normal}
 .fleet-table .fleet-head{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 .fleet-table :is(th,td){padding:.85rem .25rem}
 .fleet-table :is(td.fleet-speed,td.fleet-year){vertical-align:top;padding-top:1rem}
 table.fleet-table thead th.fleet-speed{width:4.4rem}
 table.fleet-table thead th.fleet-year{width:3.6rem}
 .fleet-table :is(td.fleet-speed,td.fleet-year){overflow-wrap:anywhere}
 .fleet-table .fleet-unit{display:block;white-space:nowrap;font-size:.6875rem;line-height:1.35;color:var(--muted)}
 .fleet-table .fleet-link{grid-template-columns:minmax(0,1fr);grid-template-areas:"series" "context" "pic";justify-items:start;row-gap:.15rem}
 .fleet-table .fleet-link img{width:min(100%,210px);margin-top:.5rem}
}

/* Buttons: one lean standard. 32px pills with small type and a hairline border (the gallery launch and
   filter chips follow the same numbers in gallery.css). On touch screens an invisible hit area restores a
   44px target without adding visual height. */
.national button,.national>p>a,.offline-save button,.identify-compare{position:relative;min-height:32px;padding:.3rem .85rem;font-size:.8125rem;line-height:1.3}
.identify-compare{border-radius:999px}
@media(pointer:coarse){
 :is(.gallery-launch,.gallery-exit,.gallery-filters button,.national button,.national>p>a,.offline-save button,.identify-compare)::after{content:"";position:absolute;inset:-6px -2px}
 div.gallery-filters{padding-block:.4rem}
}

/* Arrows: one outline set (1.75 stroke, round caps and joins). Drawn as masks over currentColor, so they take
   the surrounding text colour in light and dark themes and stay crisp at small sizes; no fills anywhere. */
:root{
 --arw-e:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h16M14 6l6 6-6 6'/%3E%3C/svg%3E");
 --arw-w:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 12H4M10 6l-6 6 6 6'/%3E%3C/svg%3E");
 --arw-s:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v16M6 14l6 6 6-6'/%3E%3C/svg%3E");
 --arw-n:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20V4M6 10l6-6 6 6'/%3E%3C/svg%3E");
 --arw-ne:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 18L18 6M8 6h10v10'/%3E%3C/svg%3E");
 --arw-se:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 8v10H8'/%3E%3C/svg%3E");
 --arw-nw:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 18L6 6M6 16V6h10'/%3E%3C/svg%3E");
 --arw-sw:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6L6 18M16 18H6V8'/%3E%3C/svg%3E");
 --arw-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");
}
.arrow,.offline-save button::before,:is(details.engineering-sources,details.sources,details.station-data,details.booking-sources,details:not([class]))>summary::before{
 content:"";display:inline-block;flex:none;width:1.05em;height:1.05em;background:currentColor;
 -webkit-mask:var(--a) center/contain no-repeat;mask:var(--a) center/contain no-repeat}
.arrow{margin-inline:.1em;vertical-align:-.17em;transition:transform 90ms cubic-bezier(.2,.7,.3,1)}
.arrow-e{--a:var(--arw-e)}.arrow-w{--a:var(--arw-w)}.arrow-s{--a:var(--arw-s)}.arrow-n{--a:var(--arw-n)}
.arrow-ne{--a:var(--arw-ne)}.arrow-se{--a:var(--arw-se)}.arrow-nw{--a:var(--arw-nw)}.arrow-sw{--a:var(--arw-sw)}
.offline-save button::before{--a:var(--arw-s);margin-inline-end:.35em;vertical-align:-.17em}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 :is(a,button):hover>.arrow-e{transform:translateX(2px)}
 :is(a,button):hover>.arrow-w{transform:translateX(-2px)}
 :is(a,button):hover>.arrow-s{transform:translateY(2px)}
 :is(a,button):hover>.arrow-ne{transform:translate(1.5px,-1.5px)}
}
/* Disclosure markers: the native filled triangle becomes the same outline chevron, turning to point down when open. */
:is(details.engineering-sources,details.sources,details.station-data,details.booking-sources,details:not([class]))>summary{list-style:none;cursor:pointer}
:is(details.engineering-sources,details.sources,details.station-data,details.booking-sources,details:not([class]))>summary::-webkit-details-marker{display:none}
:is(details.engineering-sources,details.sources,details.station-data,details.booking-sources,details:not([class]))>summary::before{--a:var(--arw-chevron);margin-inline-end:.4em;vertical-align:-.2em;opacity:.8;transition:transform 110ms cubic-bezier(.2,.7,.3,1)}
:is(details.engineering-sources,details.sources,details.station-data,details.booking-sources,details:not([class]))[open]>summary::before{transform:rotate(90deg)}
[dir=rtl] :is(details.engineering-sources,details.sources,details.station-data,details.booking-sources,details:not([class])):not([open])>summary::before{transform:scaleX(-1)}
@media(prefers-reduced-motion:reduce){.arrow,:is(details.engineering-sources,details.sources,details.station-data,details.booking-sources,details:not([class]))>summary::before{transition:none}}

/* Interaction system: one hover language and one speed. Cards and rows tint their surface and shift their edge;
   nothing underlines, lifts or casts a shadow. Taps answer instantly: no double-tap delay, an immediate press tint. */
:root{--hover:color-mix(in srgb,var(--ink) 5%,transparent);--hover-edge:color-mix(in srgb,var(--ink) 26%,var(--rule));--press:color-mix(in srgb,var(--ink) 9%,transparent)}
a,button,summary,label,select,[role=button]{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
:is(.identify-card,a.region-card,a.fleet-card,a.door-card){transition:background-color 90ms ease-out,border-color 90ms ease-out}
.station-list a,.neighbors a,.station-now a,.booking-route-nav a{border-radius:8px;transition:background-color 90ms ease-out}
.station-list a,.neighbors a{padding-inline:.5rem;margin-inline:-.5rem}
@media(hover:hover) and (pointer:fine){
 :is(.identify-card,a.region-card,a.fleet-card,a.door-card):hover{background-color:var(--hover);border-color:var(--hover-edge)}
 :is(.station-list a,.neighbors a,.station-now a,.booking-route-nav a):hover{background-color:var(--hover);color:inherit}
}
:is(.identify-card,a.region-card,a.fleet-card,a.door-card):active{background-color:var(--press);transition:none}
:is(.station-list a,.neighbors a,.station-now a,.booking-route-nav a):active{background-color:var(--press);transition:none}

/* Menu panel: a 2x2 grid read in this order, Search and Trains on the first row, Stations and Book tickets below.
   The links keep their DOM order (Search, Stations, Trains, Book), flowing down each column. */
@media(max-width:1000px){.masthead .site-menu-panel .app-nav{grid-template-rows:repeat(2,auto);grid-auto-flow:column}}
@media(max-width:360px){.masthead .site-menu-panel .app-nav{grid-template-rows:none;grid-auto-flow:row}}

/* Japanese interface text: proportional kana spacing (palt) so katakana such as メニュー do not look gappy at
   small sizes. Applied to controls, labels and headings, not to running paragraphs. */
html:lang(ja) :is(button,summary,.app-nav a,.chip,small,h1,h2,h3,legend,label,th,.region-name,.door-name,.fc-series,.fleet-series,.gallery-filters button,.gallery-launch,.gallery-exit,.site-menu-toggle,.language-options a){font-feature-settings:"palt";font-kerning:normal}
/* The header's menus (language list, mobile panel) must paint above the floating contents bar and other sticky page chrome. */
.masthead{position:relative;z-index:30}
/* The header controls reset `font` with a shorthand at higher specificity, which drops the Japanese kana spacing above. */
html:lang(ja) .masthead :is(.site-menu-toggle,.app-nav a,.language-menu summary,.language-options a){font-feature-settings:"palt";font-kerning:normal}

/* Rail-pass validity on onward non-JR connections: a quiet ruled note with a state chip and the reasons one tap away */
.pass-note{margin:1.5rem 0;padding:.9rem 0 .8rem;border-block:1px solid var(--rule);display:grid;gap:.55rem;max-width:44rem}
.pass-note h2{margin:0;font-size:.8125rem;font-weight:600;color:var(--muted);letter-spacing:.01em}
.pass-row{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .8rem}
.pass-row strong{font-weight:600}
.pass-state{display:inline-flex;align-items:center;gap:.45rem;min-height:24px;padding:0 .65rem;border:1px solid var(--rule);border-radius:999px;font-size:.75rem;color:var(--muted)}
.pass-state::before{content:"";width:7px;height:7px;border-radius:50%;border:1.5px solid currentColor;box-sizing:border-box}
.pass-note details{font-size:.8125rem;color:var(--muted)}
.pass-note ul{margin:.4rem 0 0;padding-inline-start:1.1rem}
.pass-note li{margin:.15rem 0}
.pass-note small{display:block;color:var(--muted);line-height:1.55}
.pass-note small a{color:inherit}

/* Identify a train: the name leads, then the plate, then two quiet key/value rows on the same left edge as the name */
.identify-card{padding:clamp(.75rem,1.6vw,1.1rem);border-radius:8px}
.identify-card h3{margin:0 0 .6rem}
.identify-card h3 a{display:flex;align-items:center;justify-content:space-between;gap:.6rem}
.identify-card h3 a::after{border-radius:8px}
.identify-card img{display:block;width:100%;height:auto}
.identify-card .plate-legend{margin:.75rem 0 0;font-size:.8125rem}
.identify-card .plate-legend :is(th,td){padding:.5rem 0}
.identify-card .plate-legend td{color:var(--ink);font-weight:600}

/* In-page jumps. One rule places every anchor target (the "On this page" bar, search results, question links, any #hash) clear of the
   floating bar, so a heading always lands fully visible with a little air above it. Pages without the bar need only a small margin.
   No tap flash on iOS (the site draws its own pressed state), and a heading focused by a jump shows no focus ring unless the
   keyboard put it there. */
html{scroll-padding-top:1rem;-webkit-tap-highlight-color:transparent}
html:has(.reading-sections){scroll-padding-top:5.5rem}
:target{outline:none}
[tabindex="-1"]:focus:not(:focus-visible){outline:none}

/* Track alignment hover: the name takes the route colour and the dot grows a little. The hit area stays invisible (no filled box), and
   keyboard focus is shown on the dot and name, not as a large rectangle. */
.alignment-map a{outline:none;cursor:pointer}
.alignment-map a .map-node-bg{fill:transparent;stroke:none}
.alignment-map a circle:not(.map-terminal){transition:transform 110ms;transform-box:fill-box;transform-origin:center}
.alignment-map a:is(:hover,:focus-visible) circle:not(.map-terminal){transform:scale(1.4)}
.alignment-map a:focus-visible text:not(.latin){text-decoration:underline;text-underline-offset:2px}

/* Phone menu: the language selector and the theme control share one row, built exactly like the navigation items above them
   (borderless, muted, a quiet wash on hover, the same tint when selected). The language list opens beneath the row. */
.site-tools{display:contents}
@media(max-width:1000px){
 .masthead .site-menu-panel .site-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 8px;align-items:start;margin-top:4px;padding-top:8px;border-top:1px solid var(--rule)}
 .masthead .site-menu-panel .language-menu{grid-area:1/1/2/-1;width:100%;margin:0;padding:0;border:0}
 .masthead .site-menu-panel .language-menu summary{display:flex;align-items:center;gap:8px;width:calc(50% - 4px);min-height:44px;height:auto;padding:6px 10px;border:0;border-radius:0;font-size:.9375rem;line-height:1.4}
 .masthead .site-menu-panel .language-menu summary::before{display:block}
 .masthead .site-menu-panel .language-menu summary>span{min-width:0;line-height:1.25;overflow-wrap:anywhere}
 .masthead .site-menu-panel .language-menu summary>.language-chevron{position:static;flex:none;margin-inline-start:auto;transform:none;width:11px;height:7px}
 .masthead .site-menu-panel .language-menu[open] summary>.language-chevron{transform:rotate(180deg)}
 .masthead .site-menu-panel .site-theme{grid-area:1/2;position:relative;z-index:1;min-height:0;padding:0;justify-content:stretch}
 .masthead .site-menu-panel .site-theme .theme-picker{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;height:auto;min-height:44px;margin:0;padding:8px 10px;border-radius:0;font:inherit;font-size:.9375rem;line-height:1.4;text-align:start}
 .masthead .site-menu-panel .site-theme .theme-picker[hidden]{display:none}
 .masthead .site-menu-panel .site-theme .theme-picker::before{inset:6px 2px;width:auto;height:auto}
 .masthead .site-menu-panel .site-theme .theme-picker svg{display:block;width:18px;height:18px;flex:none}
 .masthead .site-menu-panel .site-theme .theme-label{display:block;min-width:0}
 .theme-label .is-dark,.theme-picker[aria-checked=true] .theme-label .is-light{display:none}
 .theme-picker[aria-checked=true] .theme-label .is-dark{display:inline}
 .theme-picker[aria-checked=false] .theme-label .is-light{display:inline}
 .masthead .site-menu-panel .language-options{grid-column:1/-1}
}
/* The chosen language is marked by a soft tint and a short accent bar, not a tick. */
.language-options .lang[aria-current="true"]::after{content:none}
.masthead .mast-inner .language-options a.lang{padding-inline-start:.9rem}
.masthead .mast-inner .language-options a.lang[aria-current=true]{background:var(--nav-selected);border-radius:6px;color:var(--ink);font-weight:500}
.masthead .mast-inner .language-options a.lang[aria-current=true]::before{content:"";position:absolute;inset-inline-start:.35rem;top:50%;width:3px;height:14px;border-radius:2px;background:var(--accent);transform:translateY(-50%)}
@media(hover:hover){
 .masthead .mast-inner .language-options a.lang:hover{color:var(--ink)}
 .masthead .mast-inner .language-options a.lang[aria-current=true]:hover{background:color-mix(in srgb,var(--accent) 12%,var(--paper))}
}

/* Track alignment, larger and part of the page: no hairlines, the title sits on the map, the land fades out sooner on every side, and on wide
   screens the map takes more of the row and reaches into the margin (never taller than the window). */
.corridor-views .route-plate figcaption.map-title{border-top:0}
.corridor-views .route-plate figcaption:not(.map-title){border-top:0;padding-top:.2rem;color:var(--muted)}
.corridor-views>details{border-top:0}
.corridor-views>details summary{padding-block:.4rem}
.alignment-backdrop{
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 26%,#000 74%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 18%,#000 82%,transparent 100%);
  mask-image:linear-gradient(to right,transparent 0,#000 26%,#000 74%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 18%,#000 82%,transparent 100%)}
.alignment-backdrop .map-land{fill:color-mix(in srgb,var(--ink) 5.5%,transparent);stroke:color-mix(in srgb,var(--muted) 36%,transparent)}
@media(min-width:1000px){
 .module-flag+.hero{grid-template-columns:minmax(0,.74fr) minmax(0,1.26fr);column-gap:clamp(2rem,4vw,4rem)}
 .corridor-views{width:100%;max-width:min(40rem,calc((100dvh - 8.5rem) * .8))}
 .corridor-views>.route-plate{position:relative;width:100%}
 .corridor-views>.route-plate figcaption.map-title{position:absolute;z-index:3;inset:0 0 auto 0;padding:0;pointer-events:none;border:0}
 .corridor-views>.route-plate .alignment-stage{margin-top:0}
}
@media(min-width:1200px){.corridor-views{margin-inline:auto -3rem;width:calc(100% + 3rem)}}

/* The whole island: land from real elevation, a soft hillshade, faint contours, names that say where you are. Only the cut edge of Honshu fades. */
.alignment-backdrop .map-land path{fill-rule:evenodd}
.alignment-backdrop,.alignment-shade{
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 5%,#000 95%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 11%,#000 94%,transparent 100%);-webkit-mask-composite:source-in;
  mask-image:linear-gradient(to right,transparent 0,#000 5%,#000 95%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 11%,#000 94%,transparent 100%);mask-composite:intersect}
.alignment-shade{position:absolute;inset:0;pointer-events:none;background:var(--ink);opacity:.2;
  -webkit-mask-image:url(/assets/kyushu-shade.png),linear-gradient(to right,transparent 0,#000 5%,#000 95%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 11%,#000 94%,transparent 100%);-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;-webkit-mask-composite:source-in,source-in;
  mask-image:url(/assets/kyushu-shade.png),linear-gradient(to right,transparent 0,#000 5%,#000 95%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 11%,#000 94%,transparent 100%);mask-size:100% 100%;mask-repeat:no-repeat;mask-composite:intersect,intersect}
.alignment-backdrop .map-contours path{fill:none;stroke:color-mix(in srgb,var(--muted) 60%,transparent);stroke-width:.45;stroke-linejoin:round;opacity:.5}
.alignment-backdrop .map-contours path:nth-child(n+3){opacity:.75}
.alignment-map .map-place circle{fill:var(--muted);opacity:.75;stroke:none}
.alignment-map .map-place path{fill:none;stroke:var(--muted);stroke-width:.8;stroke-linejoin:round;opacity:.8}
.alignment-map .map-place text{font:8.5px "Source Sans 3",system-ui,sans-serif;fill:var(--muted);opacity:.92;paint-order:stroke;stroke:var(--paper);stroke-width:2.2px;stroke-linejoin:round}
.alignment-map .map-place .latin{font-size:8px;opacity:.78}
.alignment-map .map-sea-label text{paint-order:stroke;stroke:var(--paper);stroke-width:2px;stroke-linejoin:round;font-style:italic;opacity:.78}
.alignment-map .map-sea-label text[lang]{font-style:normal}
@media(max-width:600px){.alignment-map .map-place text{font-size:9.6px}.alignment-map .map-place .latin{font-size:9px}.alignment-map .map-sea-label text{font-size:9.8px}}
