/* Rail-pass hub (/passes) and pass pages (/passes/*). Sits on redesign-tokens.css + redesign.css; no new tokens. */
.ps-wrap :is(p,li,dd) a:not([class]){color:var(--accent-ink);text-decoration:underline;text-underline-offset:2px}
.ps-wrap :is(p,li,dd) a:not([class]):hover{color:var(--accent)}
.ps-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ps-wrap{max-width:var(--site-w);margin:0 auto;padding:0 var(--gutter)}
.ps-sec{padding:var(--section-pad-md) 0;border-top:1px solid var(--rule)}
.ps-sec--band{background:var(--paper-2)}
.ps-kicker{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3)}
.ps-h2{font-size:36px;font-weight:500;letter-spacing:-.02em;line-height:1.08;margin:12px 0 0;text-wrap:balance}
.ps-lede{font-size:16px;color:var(--ink-2);margin:12px 0 0;max-width:620px;text-wrap:pretty}
.ps-head{margin-bottom:32px;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
.mono{font-family:var(--mono);font-feature-settings:'tnum'}
.ps-jp{font-family:var(--jp);font-weight:400}


/* hero (hub) */
.ps-hero{padding:48px 0 36px;position:relative;overflow:hidden}
.ps-hero__kanji{position:absolute;right:max(var(--gutter),calc(50% - 600px));top:8px;font-family:var(--jp);font-size:220px;line-height:1;color:var(--paper-3);pointer-events:none;user-select:none}
.ps-hero__crumbs{font-size:13px;color:var(--ink-3);display:flex;gap:8px;margin-bottom:22px}
.ps-hero__crumbs a{color:var(--ink-3);text-decoration:none}
.ps-hero h1{position:relative;font-size:clamp(40px,5.4vw,64px);font-weight:500;letter-spacing:-.025em;line-height:1;margin:0;max-width:860px;text-wrap:balance}
.ps-hero h1 em{font-style:normal;color:var(--ink-3)}
.ps-hero__lede{position:relative;font-size:18px;color:var(--ink-2);max-width:640px;margin:18px 0 0;text-wrap:pretty}
.ps-hero__meta{position:relative;display:flex;gap:14px;flex-wrap:wrap;margin-top:18px;font-size:13px;color:var(--ink-3)}
.ps-hero__meta span+span::before{content:'';display:inline-block;width:3px;height:3px;border-radius:9px;background:var(--ink-4);vertical-align:middle;margin-right:14px}

.ps-hero--strip{padding-top:0}
.ps-hero__strip{height:132px;background:var(--paper-3) center 80%/cover no-repeat;position:relative;margin-bottom:-28px}
.ps-hero__strip::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(251,251,248,0) 55%,var(--paper) 100%)}
.ps-hero--strip .ps-hero__kanji{top:-40px;color:color-mix(in oklab,var(--paper-3) 80%,transparent)}
@media (max-width:760px){.ps-hero__strip{height:88px;margin-bottom:-16px;background-position:center 100%}}
/* page nav */
.ps-pagenav{position:sticky;top:var(--hdr-h,63px);z-index:30;background:color-mix(in oklab,var(--paper) 92%,transparent);backdrop-filter:blur(8px);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.ps-pagenav__in{max-width:var(--site-w);margin:0 auto;padding:8px var(--gutter);display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
.ps-pagenav__in>a{font-size:13px;font-weight:500;color:var(--ink-2);text-decoration:none;padding:7px 12px;border-radius:999px;white-space:nowrap}
.ps-pagenav__in>a:hover{background:var(--paper-3);color:var(--ink)}
.ps-pagenav__in>a.is-on{background:var(--ink);color:var(--paper)}
.ps-pagenav__buy{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:13px;white-space:nowrap;padding-left:12px}

/* FINDER */
.ps-finder{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:28px;align-items:start}
.ps-finder__q{font-size:13px;font-weight:600;margin:0 0 12px;display:flex;align-items:center;gap:10px}
.ps-finder__q .n{width:22px;height:22px;border-radius:999px;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-family:var(--mono);font-size:11px}
.ps-scn{display:grid;gap:6px}
.ps-scn__btn{all:unset;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 16px;align-items:center;padding:13px 16px;border:1px solid var(--rule);border-radius:12px;background:var(--surface);transition:border-color .15s,background .15s}
.ps-scn__btn:hover{border-color:var(--rule-2);background:var(--paper)}
.ps-scn__btn[aria-pressed="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.ps-scn__name{font-size:14.5px;font-weight:550;letter-spacing:-.005em}
.ps-scn__line{grid-column:1;display:flex;align-items:center;gap:0;margin-top:2px;min-width:0;overflow:hidden}
.ps-scn__stop{font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.ps-scn__seg{flex:1 1 14px;min-width:10px;max-width:40px;height:1.5px;background:var(--rule-2);margin:0 6px}
.ps-scn__seg--bus{background:repeating-linear-gradient(90deg,var(--ink-4) 0 4px,transparent 4px 7px)}
.ps-scn__seg--alp{background:repeating-linear-gradient(90deg,var(--ink-4) 0 2px,transparent 2px 5px)}
.ps-scn__pick{grid-row:1/3;grid-column:2;text-align:right;font-size:12px;color:var(--ink-3);line-height:1.3}
.ps-scn__pick b{display:block;font-size:13px;color:var(--ink);font-weight:600}
.ps-scn__pick b.is-none{color:var(--ink-2)}
.ps-dt{margin-top:18px;display:flex;align-items:center;gap:16px;padding:14px 16px;border:1px dashed var(--rule-2);border-radius:12px;flex-wrap:wrap}
.ps-dt__label{flex:1;min-width:200px;font-size:13.5px}
.ps-dt__label small{display:block;color:var(--ink-3);font-size:12px}
.ps-step{display:inline-flex;align-items:center;border:1px solid var(--rule-2);border-radius:10px;overflow:hidden;background:var(--surface)}
.ps-step button{all:unset;cursor:pointer;width:40px;height:40px;display:grid;place-items:center;font-size:18px;color:var(--ink)}
.ps-step button:hover{background:var(--paper-3)}
.ps-step button:disabled{color:var(--ink-4);cursor:default;background:none}
.ps-step output{min-width:34px;text-align:center;font-family:var(--mono);font-size:15px;font-weight:500}

/* result card */
.ps-res{position:sticky;top:124px;border:1px solid var(--rule-2);border-radius:var(--r-feature);background:var(--surface);overflow:hidden}
.ps-res__top{padding:22px 24px 18px;display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;border-bottom:1px solid var(--rule)}
.ps-res__kanji{width:52px;height:52px;border-radius:12px;background:var(--accent-soft);color:var(--accent-ink);display:grid;place-items:center;font-family:var(--jp);font-size:26px}
.ps-res__kanji.is-none{background:var(--paper-3);color:var(--ink-2)}
.ps-res__name{font-size:20px;font-weight:600;letter-spacing:-.015em;line-height:1.15}
.ps-res__sub{font-size:12.5px;color:var(--ink-3);margin-top:3px}
.ps-res__price{text-align:right}
.ps-res__price .mono{font-size:24px;font-weight:600;letter-spacing:-.01em;display:block;line-height:1}
.ps-res__price small{font-size:11.5px;color:var(--ink-3)}
.ps-res__body{padding:18px 24px 22px}
.ps-bars{display:grid;gap:10px;margin:2px 0 16px}
.ps-bar{display:grid;grid-template-columns:118px minmax(0,1fr) 78px;gap:12px;align-items:center;font-size:12.5px}
.ps-bar__lab{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ps-bar__track{height:12px;background:var(--paper-2);border-radius:3px;position:relative;overflow:hidden}
.ps-bar__fill{position:absolute;inset:0 auto 0 0;border-radius:3px;background:var(--ink-4);transition:width .35s cubic-bezier(.2,.8,.2,1)}
.ps-bar--win .ps-bar__fill{background:var(--accent)}
.ps-bar--win .ps-bar__lab{color:var(--ink);font-weight:600}
.ps-bar__val{font-family:var(--mono);text-align:right;color:var(--ink-2)}
.ps-bar--win .ps-bar__val{color:var(--ink);font-weight:600}
.ps-verdict{font-size:15px;line-height:1.5;margin:0 0 18px;padding:12px 14px;border-radius:10px;background:var(--paper-2)}
.ps-verdict[data-state="pass"]{background:var(--accent-soft);color:var(--accent-ink)}
.ps-verdict strong{font-weight:650}
.ps-ctas{display:grid;gap:8px}
.ps-buy{display:flex;align-items:center;justify-content:center;gap:10px;background:var(--ink);color:var(--paper)!important;text-decoration:none;font-weight:600;font-size:15px;padding:15px 18px;border-radius:12px;transition:background .15s}
.ps-buy:hover{background:var(--accent-ink)}
.ps-buy .mono{font-weight:500;opacity:.8;font-size:13px}
.ps-sec-cta{display:flex;align-items:center;justify-content:center;gap:8px;font-size:13.5px;font-weight:500;padding:11px;border:1px solid var(--rule-2);border-radius:10px;color:var(--ink)!important;text-decoration:none}
.ps-sec-cta:hover{background:var(--paper-2)}
.ps-res__fine{font-size:11.5px;color:var(--ink-3);margin:12px 0 0;text-wrap:pretty}
.ps-howto{margin:28px 0 0;max-width:760px;font-size:13.5px;color:var(--ink-2)}
.ps-howto h3{font-size:13px;font-weight:600;color:var(--ink);margin:0 0 6px}
.ps-howto p{margin:0 0 8px;text-wrap:pretty}
.ps-res__why{font-size:13px;color:var(--ink-2);margin:-6px 0 16px;text-wrap:pretty}
.ps-nudge{margin:0 0 14px;font-size:13px;color:var(--ink-2);display:flex;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--rule);border-radius:10px}
.ps-nudge button{all:unset;cursor:pointer;font-weight:600;color:var(--accent-ink);white-space:nowrap;margin-left:auto}

/* MATRIX */
.ps-filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.ps-filters__lab{font-size:12px;color:var(--ink-3);margin-right:4px}
.ps-chip{all:unset;cursor:pointer;font-size:12.5px;font-weight:500;padding:7px 12px;border:1px solid var(--rule-2);border-radius:999px;color:var(--ink-2);background:var(--surface)}
.ps-chip:hover{border-color:var(--ink-3)}
.ps-chip[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.ps-mx-wrap{position:relative;border:1px solid var(--rule);border-radius:var(--r-card);background:var(--surface);overflow-x:auto}
@media (min-width:1000px){.ps-mx-wrap{width:min(1344px,100vw - 48px);left:50%;transform:translateX(-50%)}}
.ps-mx{width:100%;border-collapse:collapse;min-width:1120px;font-size:13px}
.ps-mx th,.ps-mx td{padding:12px 10px;border-bottom:1px solid var(--rule);text-align:center;vertical-align:middle}
.ps-mx tbody tr:last-child>*{border-bottom:0}
.ps-mx thead th{font-weight:500;font-size:11px;color:var(--ink-3);letter-spacing:.02em;line-height:1.25;vertical-align:bottom;background:var(--paper)}
.ps-mx__sort{all:unset;cursor:pointer;display:inline-flex;gap:3px;align-items:center;user-select:none}
.ps-mx__sort:hover{color:var(--ink)}
.ps-mx__sort:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
.ps-mx thead th[aria-sort] .arr{opacity:.35}
.ps-mx thead th[aria-sort="ascending"] .arr,.ps-mx thead th[aria-sort="descending"] .arr{opacity:1;color:var(--ink)}
.ps-mx .ps-mx__pass{text-align:left;padding-left:18px;min-width:200px}
.ps-mx__name{font-weight:600;font-size:14px;color:var(--ink);text-decoration:none;display:block;letter-spacing:-.005em}
.ps-mx__name:hover{text-decoration:underline}
.ps-mx__for{font-size:12px;color:var(--ink-3);margin-top:2px}
.ps-mx__price{font-family:var(--mono);font-weight:600;font-size:14px;white-space:nowrap}
.ps-mx__perday{min-width:96px}
.ps-mx__pd{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11.5px;color:var(--ink-3)}
.ps-mx__pd i{display:block;height:6px;border-radius:2px;background:var(--ink-4)}
.ps-mx .cov{width:42px;padding-left:2px;padding-right:2px}
.ps-mx tbody th{font-weight:400}
.ps-mx__issuer{font-size:11.5px;color:var(--ink-3);margin-top:2px}
.ps-dot{display:inline-block;width:12px;height:12px;border-radius:999px;vertical-align:middle}
.ps-dot--y{background:var(--accent)}
.ps-dot--p{background:linear-gradient(90deg,var(--accent) 50%,var(--rule-2) 50%)}
.ps-dot--n{width:12px;height:2px;border-radius:0;background:var(--rule-2)}
.ps-mx th.cov.is-filter,.ps-mx td.cov.is-filter{background:var(--accent-soft)}
.ps-mx tr.is-dim>*{opacity:.32}
.ps-mx tr.is-dim>td:last-child{opacity:.5}
.ps-mx tbody tr{cursor:pointer;transition:background .12s}
.ps-mx tbody tr:hover{background:var(--paper)}
.ps-mx tbody tr.is-sel{background:var(--paper-2)}
.ps-mx__act{white-space:nowrap;text-align:right!important;padding-right:16px!important}
/* keep the Buy column visible when the table scrolls sideways */
@media (min-width:761px){.ps-mx th:last-child,.ps-mx td.ps-mx__act{position:sticky;right:0;background:var(--surface);box-shadow:-8px 0 8px -8px rgba(0,0,0,.14)}.ps-mx thead th:last-child{background:var(--paper)}.ps-mx tbody tr:hover td.ps-mx__act{background:var(--paper)}.ps-mx tbody tr.is-sel td.ps-mx__act{background:var(--paper-2)}}
.ps-mx__buy{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;padding:8px 12px;border-radius:8px;background:var(--ink);color:var(--paper)!important;text-decoration:none}
.ps-mx__buy:hover{background:var(--accent-ink)}
.ps-mx__buy--ghost{background:transparent;color:var(--ink)!important;border:1px solid var(--rule-2)}
.ps-mx__buy--ghost:hover{background:var(--paper-2)}
.ps-mx__res{font-size:11.5px;color:var(--ink-3);max-width:110px;margin:0 auto;line-height:1.3}
.ps-mx td.ps-mx__seats{min-width:90px}
.ps-mx-note{font-size:12px;color:var(--ink-3);margin:12px 0 0;display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.ps-mx-note span{display:inline-flex;gap:6px;align-items:center}

/* MAP */
.ps-mapgrid{display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px;align-items:start}
.ps-passlist{display:grid;gap:4px}
.ps-passlist button{all:unset;box-sizing:border-box;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;font-size:13.5px;font-weight:500;color:var(--ink-2)}
.ps-passlist button:hover{background:var(--paper-3)}
.ps-passlist button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.ps-passlist button .mono{font-size:11.5px;opacity:.7}
.ps-mapcard{border:1px solid var(--rule);border-radius:var(--r-feature);background:var(--surface);padding:18px 18px 14px}
.ps-mapcard__foot{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;border-top:1px solid var(--rule);padding-top:14px;margin-top:6px}
.ps-mapcard__sum{font-size:13.5px;color:var(--ink-2);max-width:520px}
.ps-mapcard__sum b{color:var(--ink)}
.ps-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-3);margin-top:8px}
.ps-legend span{display:inline-flex;align-items:center;gap:7px}
.ps-legend i{display:inline-block;width:22px;height:0;border-top:3px solid var(--accent)}
.ps-legend i.bus{border-top-style:dashed}
.ps-legend i.alp{border-top-style:dotted}
.ps-legend i.off{border-top:2px solid var(--rule-2)}
svg.ps-map{width:100%;height:auto;display:block}
.ps-map .seg{fill:none;stroke:var(--rule-2);stroke-width:2.5;stroke-linecap:round;transition:stroke .25s,stroke-width .25s}
.ps-map .seg.bus{stroke-dasharray:7 6}
.ps-map .seg.alp{stroke-dasharray:1.5 6}
.ps-map .seg.tokaido{stroke:var(--paper-3);stroke-width:5}
.ps-map .seg.on{stroke:var(--accent);stroke-width:5}
.ps-map .seg.tokaido.on{stroke:var(--accent);stroke-width:5}
.ps-map .st circle{fill:var(--surface);stroke:var(--ink-3);stroke-width:1.5;transition:stroke .2s}
.ps-map .st.on circle{stroke:var(--accent-ink);stroke-width:2.5}
.ps-map .st.major circle{r:6}
.ps-map .st text{font-family:var(--sans);font-size:13px;fill:var(--ink-3);font-weight:500}
.ps-map .st.on text{fill:var(--ink);font-weight:600}
.ps-map .st text{paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}
.ps-map .st .jp{font-family:var(--jp);font-size:10px;fill:var(--ink-4);font-weight:400}
.ps-map .lbl{font-family:var(--mono);font-size:10px;fill:var(--ink-4);letter-spacing:.06em;text-transform:uppercase}
.ps-map .sea{font-family:var(--serif);font-style:italic;font-size:15px;fill:var(--ink-4)}

/* plain tables on pass pages (worked fares) */
.ps-tbl-wrap{border:1px solid var(--rule);border-radius:var(--r-card);background:var(--surface);overflow-x:auto}
.ps-tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.ps-tbl th,.ps-tbl td{padding:12px 16px;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}
.ps-tbl tbody tr:last-child>*{border-bottom:0}
.ps-tbl thead th{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);background:var(--paper)}
.ps-tbl tbody th{font-weight:600;color:var(--ink)}
.ps-tbl td{color:var(--ink-2)}
.ps-tbl-note{font-size:12.5px;color:var(--ink-3);margin:12px 0 0;max-width:820px;text-wrap:pretty}
.ps-lines{margin:24px 0 0;border:1px solid var(--rule);border-radius:var(--r-card);background:var(--surface);padding:0 20px}
.ps-lines summary{cursor:pointer;font-size:14.5px;font-weight:600;padding:16px 0;list-style:none;display:flex;justify-content:space-between;gap:16px}
.ps-lines summary::-webkit-details-marker{display:none}
.ps-lines summary::after{content:'+';font-family:var(--mono);color:var(--ink-3)}
.ps-lines[open] summary::after{content:'−'}
.ps-lines dl{margin:0 0 8px}
.ps-lines dt{font-weight:600;font-size:14px;margin:14px 0 4px;padding-top:14px;border-top:1px solid var(--rule)}
.ps-lines dd{margin:0 0 4px;font-size:13.5px;color:var(--ink-2);text-wrap:pretty}
.ps-lines dd b{color:var(--ink);font-weight:600}
.ps-mx__season{color:var(--autumn);font-weight:600}

/* RULES */
.ps-rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px;counter-reset:r}
/* no orphan cell: 5 rules sit 3 + 2, 4 sit 2 + 2 */
@media (min-width:980px){.ps-rules:has(>:nth-child(5):last-child){grid-template-columns:repeat(6,minmax(0,1fr))}.ps-rules:has(>:nth-child(5):last-child)>*{grid-column:span 2}.ps-rules:has(>:nth-child(5):last-child)>:nth-child(n+4){grid-column:span 3}.ps-rules:has(>:nth-child(4):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:660px) and (max-width:979px){.ps-rules>:last-child:nth-child(odd){grid-column:1/-1}}
.ps-rule{border:1px solid var(--rule);border-radius:var(--r-card);padding:18px 20px;background:var(--surface)}
.ps-rule__n{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.ps-rule h3{font-size:16px;font-weight:600;letter-spacing:-.01em;margin:8px 0 6px;line-height:1.3}
.ps-rule p{margin:0;font-size:13.5px;color:var(--ink-2);text-wrap:pretty}

/* FAQ local spacing */
.ps-faq details{border-bottom:1px solid var(--rule);padding:16px 0}
.ps-faq summary{cursor:pointer;font-size:16.5px;font-weight:550;list-style:none;display:flex;justify-content:space-between;gap:16px}
.ps-faq summary::-webkit-details-marker{display:none}
.ps-faq summary::after{content:'+';font-family:var(--mono);color:var(--ink-3)}
.ps-faq details[open] summary::after{content:'−'}
.ps-faq p{margin:10px 0 0;color:var(--ink-2);max-width:760px;font-size:14.5px}

/* siblings */
.ps-sibs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:10px}
.ps-sib{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;border:1px solid var(--rule);border-radius:var(--r-card);text-decoration:none;color:var(--ink)!important;background:var(--surface)}
.ps-sib:hover{border-color:var(--ink-3)}
.ps-sib small{display:block;font-size:11.5px;color:var(--ink-3);font-family:var(--mono)}
.ps-sib b{font-weight:600;font-size:14.5px}

/* sticky buy bar */
.ps-sticky{position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--ink);color:var(--paper);transform:translateY(110%);visibility:hidden;transition:transform var(--t-drawer),visibility 0s linear .3s}
.ps-sticky.is-shown{transform:none;visibility:visible;transition-delay:0s}
.ps-sticky__in{max-width:var(--site-w);margin:0 auto;padding:12px var(--gutter);display:flex;align-items:center;gap:16px}
.ps-sticky__txt{flex:1;min-width:0;font-size:13px;line-height:1.3}
.ps-sticky__txt small{display:block;color:rgba(255,255,255,.62);font-size:11.5px}
.ps-sticky__txt b{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.ps-sticky a{background:var(--paper);color:var(--ink)!important;text-decoration:none;font-weight:600;font-size:14px;padding:12px 18px;border-radius:10px;white-space:nowrap}

/* ========== DETAIL PAGE ========== */
.pd-hero{padding:40px 0 48px}
.pd-hero__grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:48px;align-items:start}
.pd-hero h1{font-size:clamp(38px,4.8vw,58px);font-weight:500;letter-spacing:-.025em;line-height:1.02;margin:14px 0 0;text-wrap:balance}
.pd-hero h1 .ps-jp{display:block;font-size:20px;color:var(--ink-3);margin-top:12px;letter-spacing:.04em}
.pd-hero__lede{font-size:17.5px;color:var(--ink-2);margin:20px 0 0;max-width:600px;text-wrap:pretty}
.pd-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:28px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.pd-fact{padding:14px 14px 14px 0}
.pd-fact+.pd-fact{border-left:1px solid var(--rule);padding-left:14px}
.pd-fact small{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.pd-fact b{display:block;font-size:15px;font-weight:600;margin-top:4px;letter-spacing:-.01em}
.pd-price{border:1px solid var(--rule-2);border-radius:var(--r-feature);background:var(--surface);padding:24px}
.pd-price__row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.pd-price__big{font-family:var(--mono);font-size:38px;font-weight:600;letter-spacing:-.02em;line-height:1}
.pd-price__child{font-size:13px;color:var(--ink-3)}
.pd-price__per{font-size:13px;color:var(--ink-2);margin:8px 0 18px}
.pd-price__list{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:8px;font-size:13px;color:var(--ink-2)}
.pd-price__list li{display:flex;gap:10px}
.pd-price__list li::before{content:'';flex:none;width:6px;height:6px;border-radius:99px;background:var(--jr);margin-top:7px}
.pd-elig{margin-top:16px;padding-top:14px;border-top:1px solid var(--rule);font-size:12px;color:var(--ink-3)}
.pd-verdict{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pd-vcol{border:1px solid var(--rule);border-radius:var(--r-card);padding:22px 24px;background:var(--surface)}
.pd-vcol--yes{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.pd-vcol h3{font-size:17px;margin:0 0 12px;font-weight:600;display:flex;align-items:center;gap:10px}
.pd-vcol h3 span{font-family:var(--mono);font-size:11px;padding:3px 8px;border-radius:5px;background:var(--accent-soft);color:var(--accent-ink)}
.pd-vcol--no h3 span{background:var(--paper-3);color:var(--ink-2)}
.pd-vcol ul{margin:0;padding:0;list-style:none;display:grid;gap:10px}
.pd-vcol li{font-size:14px;color:var(--ink-2);padding-left:22px;position:relative;text-wrap:pretty}
.pd-vcol li::before{position:absolute;left:0;top:0;font-family:var(--mono);color:var(--accent)}
.pd-vcol--yes li::before{content:'✓'}
.pd-vcol--no li::before{content:'×';color:var(--ink-3)}
.pd-vcol li a{font-weight:500}
.pd-cov{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:28px;align-items:start}
.pd-covlist h3{font-size:12px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:500;margin:0 0 10px}
.pd-covlist ul{list-style:none;padding:0;margin:0 0 22px;display:grid;gap:0}
.pd-covlist li{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:11px 0;border-bottom:1px solid var(--rule);font-size:13.5px;color:var(--ink-2)}
.pd-covlist li b{color:var(--ink);font-weight:600;display:block}
.pd-covlist .ic{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:11px;font-family:var(--mono);background:var(--accent-soft);color:var(--accent-ink)}
.pd-covlist .ic.no{background:var(--paper-3);color:var(--ink-3)}
/* calculator */
.pd-calc{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;align-items:start}
.pd-presets{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px;align-items:center}
.pd-legs{overflow:hidden;border:1px solid var(--rule);border-radius:var(--r-card);background:var(--surface)}
.pd-leg{display:grid;grid-template-columns:minmax(0,1fr) 82px auto;gap:14px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--rule)}
.pd-leg:last-child{border-bottom:0}
.pd-leg.is-on{background:var(--paper)}
.pd-leg__name{font-size:14px;font-weight:550}
.pd-leg__note{font-size:12px;color:var(--ink-3);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pd-leg__fare{font-family:var(--mono);text-align:right;font-size:13.5px;color:var(--ink-2)}
.pd-res-pips{display:flex;gap:4px;margin-top:6px}
.pd-res-pips i{width:18px;height:6px;border-radius:2px;background:var(--rule-2)}
.pd-res-pips i.on{background:var(--jr)}
.pd-res-pips i.over{background:var(--thunder)}
.pd-tag{font-family:var(--mono);font-size:10px;letter-spacing:.04em;padding:2px 6px;border-radius:4px;background:var(--paper-3);color:var(--ink-2)}
.pd-tag--bus{background:#FBEFE6;color:#8A4A1C}
/* itinerary */
.pd-days{display:grid;gap:0;border-left:2px solid var(--rule);margin-left:10px}
.pd-day{position:relative;padding:0 0 26px 28px;display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:18px;align-items:start}
.pd-day::before{content:'';position:absolute;left:-7px;top:4px;width:12px;height:12px;border-radius:99px;background:var(--surface);border:2px solid var(--ink)}
.pd-day__n{font-family:var(--mono);font-size:12px;color:var(--ink-3);padding-top:2px}
.pd-day__n b{display:block;color:var(--ink);font-size:15px;font-family:var(--sans);font-weight:600}
.pd-day h4{margin:0;font-size:16px;font-weight:600;letter-spacing:-.01em}
.pd-day p{margin:4px 0 0;font-size:13.5px;color:var(--ink-2);text-wrap:pretty}
.pd-day__legs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.pd-day__res{text-align:right;font-size:11.5px;color:var(--ink-3);white-space:nowrap}
/* alternatives + buy methods */
.pd-alts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.pd-alt{border:1px solid var(--rule);border-radius:var(--r-card);padding:20px;background:var(--surface);display:flex;flex-direction:column;gap:8px;text-decoration:none;color:var(--ink)!important}
.pd-alt:hover{border-color:var(--ink-3)}
.pd-alt__top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.pd-alt b{font-size:15.5px;font-weight:600}
.pd-alt .mono{font-size:13px;color:var(--ink-2)}
.pd-alt p{margin:0;font-size:13.5px;color:var(--ink-2);flex:1}
.pd-alt__go{font-size:13px;font-weight:600;color:var(--accent-ink)}
.pd-buy{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.pd-bm{border:1px solid var(--rule);border-radius:var(--r-card);padding:22px;background:var(--surface);display:flex;flex-direction:column;gap:10px;position:relative}
.pd-bm--rec{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.pd-bm__tag{position:absolute;top:-10px;left:18px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;background:var(--ink);color:var(--paper);padding:3px 8px;border-radius:5px}
.pd-bm h3{margin:0;font-size:16px;font-weight:600}
.pd-bm p{margin:0;font-size:13.5px;color:var(--ink-2);flex:1;text-wrap:pretty}
.pd-bonus{display:flex;gap:18px;align-items:center;border:1px dashed var(--rule-2);border-radius:var(--r-card);padding:18px 22px;margin-top:16px;flex-wrap:wrap}
.pd-bonus__k{font-family:var(--jp);font-size:28px;color:var(--ink-3)}
.pd-bonus p{margin:0;flex:1;min-width:240px;font-size:14px;color:var(--ink-2)}

/* detail hero photo */
.pd-hero--photo{padding-top:0}
.pd-hero__photo{position:relative;height:400px;background:var(--paper-3) center/cover no-repeat;overflow:hidden}
.pd-hero__photo::before{content:attr(data-kanji);position:absolute;right:6%;top:-10px;font-family:var(--jp);font-size:280px;line-height:1;color:rgba(255,255,255,.08);pointer-events:none}
.pd-photo__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.28) 0%,rgba(0,0,0,.18) 30%,rgba(0,0,0,.5) 55%,rgba(0,0,0,.78) 100%)}
.pd-photo__badge{position:absolute;top:24px;left:50%;transform:translateX(-50%);display:inline-flex;align-items:center;gap:9px;padding:7px 14px;background:rgba(255,255,255,.95);border-radius:999px;font-size:11.5px;font-weight:600;color:var(--ink);white-space:nowrap}
.pd-photo__badge i{width:6px;height:6px;border-radius:9px;background:var(--jr)}
.pd-photo__title{position:absolute;left:0;right:0;bottom:36px;color:#fff}
.pd-photo__title>*{max-width:calc((100% - 48px) * 1.35 / 2.35)}
.pd-photo__title .ps-hero__crumbs,.pd-photo__title .ps-hero__crumbs a{color:rgba(255,255,255,.92)}
.pd-photo__title .ps-kicker{color:rgba(255,255,255,.9)}
.pd-photo__title .ps-hero__crumbs,.pd-photo__title .ps-kicker,.pd-photo__title h1{text-shadow:0 1px 3px rgba(0,0,0,.55)}
.pd-photo__title h1{color:#fff;margin-top:10px}
.pd-photo__title h1 .ps-jp{color:rgba(255,255,255,.7)}
.pd-hero--photo .pd-hero__grid{padding-top:28px}
.pd-hero--photo .pd-hero__lede{margin-top:0}
.pd-hero--photo .pd-price{margin-top:-260px;position:relative;z-index:2;box-shadow:0 24px 60px -24px rgba(0,0,0,.35)}

/* responsive */
@media (max-width:980px){
  .ps-finder,.ps-mapgrid,.pd-hero__grid,.pd-cov,.pd-calc{grid-template-columns:minmax(0,1fr)}
  .ps-res{position:static}
  .ps-passlist{display:flex;overflow-x:auto;gap:6px;scrollbar-width:none}
  .ps-passlist button{white-space:nowrap;border:1px solid var(--rule-2)}
  .ps-passlist button .mono{display:none}
  .pd-alts,.pd-buy{grid-template-columns:minmax(0,1fr)}
  .pd-photo__title>*{max-width:none}
  .pd-hero--photo .pd-price{margin-top:0;box-shadow:none}
}
@media (max-width:760px){.pd-hero__photo{height:340px}.pd-photo__badge{top:16px;font-size:11px}.pd-photo__title{bottom:22px}.pd-hero__photo::before{font-size:180px}}
@media (max-width:900px){.ps-pagenav__buy{display:none}}
@media (max-width:760px){
  .ps-sec{padding:44px 0}
  .ps-h2{font-size:28px}
  .ps-hero{padding:28px 0 24px}
  .ps-hero__kanji{font-size:140px;top:0;right:-10px}
  .ps-hero__lede{font-size:16px}
  /* coverage map: bigger strokes, dots and labels so it reads at 390px; minor station names drop out */
  .ps-mapcard{padding:12px 10px 10px}
  .ps-map .seg{stroke-width:5}
  .ps-map .seg.on,.ps-map .seg.tokaido.on{stroke-width:9}
  .ps-map .seg.tokaido{stroke-width:8}
  .ps-map .st circle{r:9;stroke-width:3}
  .ps-map .st.major circle{r:12}
  .ps-map .st text{font-size:30px}
  .ps-map .st .jp,.ps-map .lbl,.ps-map .sea{display:none}
  .ps-map .st:not(.major):not(.key) text{display:none}
  /* keep the selected pass's end stations named; Shirakawa-go only when the pass reaches it */
  .ps-map .st.end:not(.major) text:not(.jp){display:inline}
  .ps-map .st[data-st="shirakawa"]:not(.on) text{display:none}
  .ps-map .st[data-st="kanazawa"] text{text-anchor:end}
  .ps-map .st text{stroke-width:8px}
  .ps-map .st[data-st="kurobe"] text{transform:translateX(-18px)}
  .ps-map .st[data-st="itoigawa"] text{transform:translateX(34px)}
  .ps-map .st[data-st="shirakawa"] text{text-anchor:start;transform:translate(8px,-34px)}
  .ps-hero__crumbs{flex-wrap:wrap;row-gap:2px}
  .ps-hero__crumbs a{white-space:nowrap}
  /* comparison table becomes one card per pass; same markup, no second copy of the content */
  .ps-mx-wrap{overflow:visible;border:0;border-radius:0;background:none}
  .ps-mx{display:block;min-width:0}
  .ps-mx thead,.ps-mx caption{display:none}
  .ps-mx tbody{display:grid;gap:10px}
  .ps-mx tbody tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;border:1px solid var(--rule);border-radius:var(--r-card);background:var(--surface);padding:16px;cursor:default}
  .ps-mx tbody tr:hover,.ps-mx tbody tr.is-sel{background:var(--surface)}
  .ps-mx tbody tr.is-dim{opacity:.4}
  .ps-mx tr.is-dim>*,.ps-mx tr.is-dim>td:last-child{opacity:1}
  .ps-mx th,.ps-mx td{display:block;border:0!important;padding:0!important;text-align:left}
  .ps-mx .ps-mx__pass{flex:1 1 180px;min-width:0}
  .ps-mx td[data-label]{flex:0 0 auto;font-size:12.5px;color:var(--ink-3)}
  .ps-mx td[data-label]::before{content:attr(data-label) ': '}
  .ps-mx td.ps-mx__price-cell{order:0;text-align:right;font-size:15px;color:var(--ink)}
  .ps-mx td.ps-mx__price-cell::before{content:none}
  .ps-mx__pd{display:inline-flex}
  .ps-mx__pd i{display:none}
  .ps-mx td.ps-mx__seats .ps-mx__res{display:inline}
  .ps-mx__res{max-width:none;margin:0;font-size:12.5px}
  .ps-mx td.ps-mx__seats{flex:1 1 100%;min-width:0}
  .ps-mx td.cov{width:auto}
  .ps-mx td.cov--n{display:none}
  .ps-mx td.cov--y{display:inline-flex;font-size:11px;padding:3px 7px!important;border-radius:5px;background:var(--accent-soft);color:var(--accent-ink)}
  .ps-mx td.cov--y::before{content:attr(data-label)}
  .ps-mx td.cov .ps-dot{display:none}
  .ps-mx td.ps-mx__act{flex:1 1 100%;margin-top:6px}
  .ps-mx td.ps-mx__act .ps-mx__buy{width:100%;justify-content:center;min-height:44px}
  .ps-tbl-wrap{border:0;background:none;overflow:visible}
  .ps-tbl,.ps-tbl tbody{display:block}
  .ps-tbl thead{display:none}
  .ps-tbl tbody tr{display:grid;gap:4px;border:1px solid var(--rule);border-radius:var(--r-card);background:var(--surface);padding:14px 16px;margin-bottom:10px}
  .ps-tbl th,.ps-tbl td{display:block;border:0;padding:0}
  .ps-tbl td[data-label]::before{content:attr(data-label) ': ';font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
  .ps-lines{padding:0 16px}
  .ps-scn__btn{grid-template-columns:minmax(0,1fr)}
  .ps-scn__pick{grid-row:auto;grid-column:1;text-align:left}
  .ps-scn__pick b{display:inline;margin-right:6px}
  .ps-scn__line{grid-column:1;overflow-x:auto;scrollbar-width:none}
  .ps-scn__stop{font-size:10.5px}
  .ps-scn__seg{flex-basis:8px;min-width:6px;margin:0 4px}
  .ps-chip,.ps-passlist button{min-height:44px;display:inline-flex;align-items:center}
  .ps-pagenav__in>a{min-height:44px;display:inline-flex;align-items:center}
  .ps-step button{width:44px;height:44px}
  .ps-sticky a{min-height:44px;display:inline-flex;align-items:center}
  .ps-bar{grid-template-columns:96px minmax(0,1fr) 70px}
  .ps-res__top{grid-template-columns:auto 1fr;padding:18px}
  .ps-res__price{grid-column:1/-1;text-align:left;display:flex;align-items:baseline;gap:8px}
  .ps-res__body{padding:16px 18px 18px}
  .pd-facts{grid-template-columns:1fr 1fr}
  .pd-fact:nth-child(3){border-left:0;padding-left:0;border-top:1px solid var(--rule)}
  .pd-fact:nth-child(4){border-top:1px solid var(--rule)}
  .pd-verdict{grid-template-columns:minmax(0,1fr)}
  .pd-day{grid-template-columns:minmax(0,1fr);gap:6px}
  .pd-day__res{text-align:left}
  .pd-leg{grid-template-columns:minmax(0,1fr) auto;row-gap:6px}
  .pd-leg__fare{grid-row:2;text-align:left}
  .ps-sticky__in{padding:10px 16px}
  body.has-sticky{padding-bottom:70px}
}
.ps-h3{font-size:18px;font-weight:600;letter-spacing:-.01em;margin:44px 0 14px}
.ps-filters[hidden]{display:none}
.ps-mx tbody tr:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
body:has(.tb-drawer[data-open]) .ps-sticky{transform:translateY(110%);visibility:hidden}
