/* FOW Cartographic P2 — Field Sheet pilot styles (WO v0.1.1). Scoped to .fow-p2; loaded only with ?carto=p2.
   Same paper and inks as the accepted P3 plate: OBSERVED ground recedes, COMPUTED is ochre, OFFICIAL green,
   EDITORIAL (FOW) red — and red is spent only on what this sheet is reading. */
.fow-p2.fow-p2{container-type:inline-size;margin:28px 0 8px;padding:20px 20px 16px;background:var(--fow-paper-face-2,#E5DCC6);border-top:1px solid var(--fow-rule-on-paper,#C6BCA2)}
.fow-p2 .fow-graphic-k{margin:0 0 6px}
.fow-p2 .fow-p2-q{margin:0 0 4px;font:400 clamp(1.15rem,1.55vw,1.36rem)/1.38 var(--fow-font-editorial-ko);color:var(--fow-paper-ink,#191818);max-width:34em}
:lang(en) .fow-p2 .fow-p2-q{font-family:var(--fow-font-editorial-en)}
.fow-p2 .fow-p2-read{margin:0 0 14px;font:400 14.5px/1.65 var(--fow-font-instrument-ko);color:var(--fow-paper-ink-soft,#46464A);max-width:44em}
:lang(en) .fow-p2 .fow-p2-read{font-family:var(--fow-font-instrument-en)}
.fow-p2 .fow-p2-stage{position:relative;margin:0 -4px}
.fow-p2 .fow-p2-stage svg.fow-p2-svg{display:block;width:100%;height:auto;background:#EEE8D8}
.fow-p2 .fow-p2-stage svg.fow-p2-svg--tall{display:none}
@container (max-width:520px){.fow-p2 .fow-p2-stage svg.fow-p2-svg--wide{display:none}.fow-p2 .fow-p2-stage svg.fow-p2-svg--tall{display:block}}
@media (max-width:700px){.fow-p2.fow-p2{padding:16px 14px 14px;margin-left:-14px;margin-right:-14px}.fow-p2 .fow-p2-stage{margin:0 -14px}}
.fow-p2 svg text{paint-order:stroke;stroke:#F1ECDD;stroke-width:3.2px;stroke-linejoin:round;font-family:var(--fow-font-instrument-ko)}
:lang(en) .fow-p2 svg text{font-family:var(--fow-font-instrument-en)}
.fow-p2 .p2-frame{fill:none;stroke:rgba(25,24,24,.18);stroke-width:1}
.fow-p2 .p2-ground{image-rendering:optimizeQuality}

/* COMPUTED — a quarter's extent (from FOW's selection, never a boundary) */
.fow-p2 .p2-wash{fill:#8C7B58;fill-opacity:.11;stroke:#8C7B58;stroke-opacity:0;stroke-width:1.2px;transition:fill-opacity .25s ease,stroke-opacity .25s ease}
.fow-p2 .p2-q--far .p2-wash{fill-opacity:.045}
.fow-p2 .p2-q.p2-hot .p2-wash{fill-opacity:.2;stroke-opacity:.55}
/* EDITORIAL — quarter names */
.fow-p2 .p2-q-name{fill:#2A251C;font-family:var(--fow-font-editorial-ko)!important;font-weight:400}
:lang(en) .fow-p2 .p2-q-name{font-family:var(--fow-font-editorial-en)!important}
.fow-p2 .p2-q-ja,.fow-p2 .p2-ja{fill:#5F5B51;font-family:var(--fow-font-instrument-ko)!important}
.fow-p2 .p2-q-ch{fill:#6E4A2A;font-style:italic}
.fow-p2 .p2-q-ex{fill:#7E2410;font-weight:700}
/* places — one restrained mark, the section carried by shape (no category colours) */
.fow-p2 .p2-pt{fill:#A99F89;stroke:none}
.fow-p2 .p2-pt--on{fill:#2F2A20;stroke:#F3EEE0;stroke-width:1.1px}
.fow-p2 .p2-hit{cursor:pointer}
.fow-p2 .p2-hit.p2-hot .p2-pt--on,.fow-p2 .p2-hit.p2-hot .p2-pt{fill:#B23A1E;stroke:#F7F3E7;stroke-width:1.4px}
/* COMPUTED — walking between quarters */
.fow-p2 .p2-qlink{fill:none;stroke:#8C5A27;stroke-width:1.6px;stroke-dasharray:.01 5.2;stroke-linecap:round}
.fow-p2 .p2-qlink-t{fill:#7E4A1E;font-weight:700}
/* OBSERVED — stations, roads */
.fow-p2 .p2-st rect{fill:#22362F;stroke:#F1ECDD;stroke-width:1.4px}
.fow-p2 .p2-st--sub rect{fill:#F1ECDD;stroke:#22362F;stroke-width:1.6px}
.fow-p2 .p2-st-t{fill:#2B3530;font-weight:600}
.fow-p2 .p2-road-t{fill:#6A665C;font-weight:500;font-style:italic;letter-spacing:.05em}
/* EDITORIAL — lens members */
.fow-p2 .p2-member-halo{fill:rgba(178,58,30,.14);stroke:#B23A1E;stroke-width:1.2px}
.fow-p2 .p2-member-dot{fill:#B23A1E;stroke:#F7F3E7;stroke-width:1.4px}
.fow-p2 .p2-member.p2-hot .p2-member-halo{fill:rgba(178,58,30,.3)}
.fow-p2 .p2-member-t{fill:#1E1A16;font-weight:600}
.fow-p2 .p2-member-tag{fill:#8A2D16;font-family:var(--fow-font-editorial-ko)!important;font-style:italic}
:lang(en) .fow-p2 .p2-member-tag{font-family:var(--fow-font-editorial-en)!important}
.fow-p2 .p2-member-label.p2-hot text{fill:#B23A1E}
.fow-p2 .p2-step-chip{fill:#F7F3E7;stroke:#8C5A27;stroke-width:1.3px}
.fow-p2 .p2-step-chip-t{fill:#7E4A1E;font-size:9.5px;font-weight:700;stroke:none}
.fow-p2 .p2-lens-ring{fill:#F7F3E7;stroke:#B23A1E;stroke-width:1.5px}
.fow-p2 .p2-lens-n{fill:#8A2D16;font-size:10.5px;font-weight:700;stroke:none}
.fow-p2 .p2-lens-m.p2-hot .p2-lens-ring,.fow-p2 [data-lens].p2-hot .p2-lens-ring{fill:#B23A1E}
.fow-p2 .p2-lens-m.p2-hot .p2-lens-n{fill:#FFF}
/* WAY — stops (EDITORIAL), corridors (COMPUTED), links not computed */
.fow-p2 .p2-corr{fill:none;stroke:#B4772F;stroke-opacity:.30;stroke-width:11px;stroke-linecap:round;stroke-linejoin:round}
.fow-p2 .p2-corr-core{fill:none;stroke:#8C5A27;stroke-width:1.8px;stroke-dasharray:.01 4.6;stroke-linecap:round;stroke-linejoin:round}
.fow-p2 .p2-corr--ghost{stroke-opacity:.22;stroke-width:7px}
.fow-p2 .p2-way-ghost.p2-hot .p2-corr--ghost{stroke-opacity:.55}
.fow-p2 .p2-chord{fill:none;stroke:#8C5A27;stroke-opacity:.8;stroke-width:1.5px;stroke-dasharray:6 4.5}
.fow-p2 .p2-stop-c{fill:#B23A1E;stroke:#F7F3E7;stroke-width:1.8px}
.fow-p2 .p2-stop-n{fill:#FFF;font-size:11px;font-weight:700;stroke:none}
.fow-p2 .p2-stop--opt .p2-stop-c{fill:#F7F3E7;stroke:#B23A1E;stroke-width:1.6px;stroke-dasharray:3 2.2}
.fow-p2 .p2-stop--opt .p2-stop-n{fill:#8A2D16}
.fow-p2 .p2-stop.p2-hot .p2-stop-c{stroke:#2A251C;stroke-width:2.6px}
.fow-p2 .p2-stop-off{fill:none;stroke:#A99F89;stroke-width:1.3px;stroke-dasharray:2 2.5}
.fow-p2 .p2-stop-t{fill:#1E1A16;font-weight:600}
.fow-p2 .p2-stop-sub{fill:#7E4A1E;font-weight:500}
.fow-p2 .p2-stop-label.p2-hot text{fill:#B23A1E}
.fow-p2 .p2-leg-t{fill:#7E4A1E}
.fow-p2 .p2-leg-t--x{fill:#6A665C;font-style:italic;font-weight:600}
.fow-p2 .p2-way-badge{fill:#F7F3E7;stroke:#8C5A27;stroke-width:1.5px}
.fow-p2 .p2-way-badge-t{fill:#7E4A1E;font-size:11px;font-weight:700;stroke:none}
.fow-p2 .p2-way-n.p2-hot .p2-way-badge{fill:#8C5A27}.fow-p2 .p2-way-n.p2-hot .p2-way-badge-t{fill:#FFF}
/* frame furniture */
.fow-p2 .p2-scale-bar{stroke:#2B2722;stroke-width:1.4px;fill:none}
.fow-p2 .p2-scale-t,.fow-p2 .p2-north-t{fill:#46464A;font-size:11.5px;letter-spacing:.06em}
.fow-p2 .p2-north-a{fill:#2B2722}
/* motion: a corridor draws once when it first appears; the overprint fades when the family tab changes */
.fow-p2 .p2-draw{animation:p2draw .7s cubic-bezier(.22,1,.36,1) both}
@keyframes p2draw{from{opacity:0}to{opacity:1}}
.fow-p2--district{transition:opacity .2s ease}.fow-p2.p2-enter{opacity:.35}
@media (prefers-reduced-motion:reduce){.fow-p2 .p2-draw{animation:none}.fow-p2--district{transition:none}}
/* legend, key, basis, sources */
.fow-p2 .fow-p2-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:12px 0 4px;font:500 12.5px/1.5 var(--fow-font-instrument-ko);color:#3E3B33}
:lang(en) .fow-p2 .fow-p2-legend{font-family:var(--fow-font-instrument-en)}
.fow-p2 .fow-p2-lg{display:inline-flex;align-items:center;gap:7px}.fow-p2 .fow-p2-lg i{display:inline-block;flex:none}
.fow-p2 .lg-wash{width:24px;height:14px;background:rgba(140,123,88,.2);border-radius:7px}
.fow-p2 .lg-shapes{display:none}
.fow-p2 .lg-qlink{width:26px;height:0;border-top:2px dotted #8C5A27}
.fow-p2 .lg-qlink--x{width:26px;height:0;border-top:1.5px dashed #7A746A}
.fow-p2 .lg-st{width:11px;height:7px;background:#22362F;border-radius:2px}
.fow-p2 .lg-member,.fow-p2 .lg-lens{width:11px;height:11px;border-radius:50%;background:#B23A1E;box-shadow:0 0 0 3px rgba(178,58,30,.18)}
.fow-p2 .lg-lens{background:#F7F3E7;border:1.5px solid #B23A1E;box-shadow:none}
.fow-p2 .lg-step{width:11px;height:11px;border-radius:50%;background:#F7F3E7;border:1.3px solid #8C5A27}
.fow-p2 .lg-stop{width:13px;height:13px;border-radius:50%;background:#B23A1E}
.fow-p2 .lg-opt{width:12px;height:12px;border-radius:50%;border:1.5px dashed #B23A1E;background:#F7F3E7}
.fow-p2 .lg-corr{width:28px;height:9px;border-radius:5px;background:rgba(180,119,47,.32)}
.fow-p2 .lg-chord{width:26px;height:0;border-top:1.6px dashed #8C5A27}
.fow-p2 .fow-p2-key{margin-top:10px;font:400 13px/1.62 var(--fow-font-instrument-ko);color:#3E3B33}
:lang(en) .fow-p2 .fow-p2-key{font-family:var(--fow-font-instrument-en)}
.fow-p2 .fow-p2-key h4{margin:12px 0 4px;font:600 11px/1.6 var(--fow-font-instrument-ko);letter-spacing:.14em;text-transform:uppercase;color:#7F432B}
.fow-p2 .fow-p2-key ul,.fow-p2 .fow-p2-key ol{margin:0;padding:0;list-style:none}
.fow-p2 .fow-p2-key a{color:inherit;text-underline-offset:3px}
.fow-p2 .fow-p2-key small{color:#6B6A66}.fow-p2 .fow-p2-key em{color:#8A2D16;font-style:italic}
.fow-p2 .fow-p2-kq{padding:8px 0;border-top:1px solid rgba(140,123,88,.25)}
.fow-p2 .fow-p2-kq h4{margin:0;font:400 15px/1.4 var(--fow-font-editorial-ko);letter-spacing:0;text-transform:none;color:#2A251C}
:lang(en) .fow-p2 .fow-p2-kq h4{font-family:var(--fow-font-editorial-en)}
.fow-p2 .fow-p2-ja{font:400 12px/1.4 var(--fow-font-instrument-ko);color:#6B6A66;margin-left:4px}
.fow-p2 .fow-p2-kch{margin:2px 0 0;color:#6E4A2A;font-style:italic}
.fow-p2 .fow-p2-kmeta{margin:2px 0 4px;font-size:12px;color:#6B6A66}
.fow-p2 .fow-p2-kl{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:12.5px}
.fow-p2 .fow-p2-kl li{display:inline-flex;align-items:center;gap:5px}
.fow-p2 .fow-p2-glyph{display:inline-block;width:7px;height:7px;background:#2F2A20}
.fow-p2 .fow-p2-glyph--ci{border-radius:50%}.fow-p2 .fow-p2-glyph--di{transform:rotate(45deg) scale(.85)}
.fow-p2 .fow-p2-glyph--tr{width:0;height:0;background:none;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:7px solid #2F2A20}
.fow-p2 .fow-p2-klens li,.fow-p2 .fow-p2-kways li,.fow-p2 .fow-p2-kstops li,.fow-p2 .fow-p2-krel li,.fow-p2 .fow-p2-kmembers li,.fow-p2 .fow-p2-klinks li{padding:2px 0}
.fow-p2 .fow-p2-n{display:inline-block;min-width:1.6em;margin-right:6px;font-weight:700;color:#8A2D16;font-variant-numeric:tabular-nums}
.fow-p2 .fow-p2-kleg{margin:0 0 4px 2.2em;font-size:12.5px;color:#7E4A1E}
.fow-p2 .fow-p2-kalt{margin-left:2.2em;font-size:12.5px;color:#7E4A1E}
.fow-p2 .fow-p2-koff,.fow-p2 .fow-p2-ktotal{margin:6px 0 0;font-size:12.5px;color:#5F5B51}
.fow-p2 .fow-p2-ktotal{font-weight:600;color:#6B3F17}
.fow-p2 .fow-p2-key .p2-hot,.fow-p2 .fow-p2-key [data-subject-ref].p2-hot a{color:#B23A1E}
.fow-p2 .fow-p2-basis{margin:12px 0 2px;font:400 11.5px/1.6 var(--fow-font-instrument-ko);color:#585547;max-width:56em}
.fow-p2 .fow-p2-sources{margin:0;font:400 11px/1.6 var(--fow-font-instrument-ko);color:#6B6A66}
:lang(en) .fow-p2 .fow-p2-basis,:lang(en) .fow-p2 .fow-p2-sources{font-family:var(--fow-font-instrument-en)}
.fow-p2 .fow-p2-sources a{color:inherit}
/* the strip and the plate point at the same stop */
.fow-route-stop.p2-hot{outline:2px solid #B23A1E;outline-offset:2px}
/* a spread mark keeps its true position: a small dot and a hairline */
.fow-p2 .p2-leader{stroke:#5F5B51;stroke-width:1px;fill:none}
.fow-p2 .p2-true{fill:#2F2A20}
/* phone crop: every number on the sheet stays at least 12 units (≥ 11.5 px at 360) */
.fow-p2 .fow-p2-svg--tall .p2-step-chip-t,.fow-p2 .fow-p2-svg--tall .p2-lens-n,.fow-p2 .fow-p2-svg--tall .p2-stop-n,.fow-p2 .fow-p2-svg--tall .p2-way-badge-t,.fow-p2 .fow-p2-svg--tall .p2-scale-t,.fow-p2 .fow-p2-svg--tall .p2-north-t{font-size:12px}
.fow-p2 .fow-p2-svg--wide .p2-step-chip-t{font-size:10.5px}
/* a label set away from its mark keeps a hairline to it */
.fow-p2 .p2-tether{stroke:#6E675A;stroke-width:.9px;fill:none;stroke-opacity:.8}
/* a link between quarters that is not computed (e.g. across Shinjuku Station's levels): grey, and it says so */
.fow-p2 .p2-qlink--x{stroke:#7A746A;stroke-dasharray:5 4;stroke-width:1.3px}
.fow-p2 .p2-qlink-t--x{fill:#5F5B51;font-style:italic;font-weight:600}
.fow-p2 .fow-p2-kleg{display:inline;margin:0 0 0 .7em;font-size:12.5px;color:#7E4A1E}
.fow-p2 .p2-q-door{fill:#22362F;font-weight:600;font-family:var(--fow-font-instrument-ko)}
:lang(en) .fow-p2 .p2-q-door{font-family:var(--fow-font-instrument-en)}
/* ---------------------------------------------------------------- UX v2: a quieter ground, pictograms, a title on the map */
.fow-p2 .p2-veil{fill:#F1ECDD;fill-opacity:.34;pointer-events:none}
.fow-p2 .p2-pm-in{transition:transform .18s cubic-bezier(.2,.8,.2,1)}
.fow-p2 .p2-pm-disc{fill:#2B2924;stroke:#F6F1E4;stroke-width:1.4px}
.fow-p2 .p2-pm-ico{color:#F6F1E4}
.fow-p2 .p2-pm--member .p2-pm-disc{fill:#B23A1E;stroke:#FBF7EC;stroke-width:1.8px}
.fow-p2 .p2-hit.p2-hot .p2-pm-disc,.fow-p2 .p2-hit.p2-active .p2-pm-disc{fill:#B23A1E}
.fow-p2 .p2-hit.p2-hot .p2-pm-in,.fow-p2 .p2-hit.p2-active .p2-pm-in{transform:scale(1.32)}
.fow-p2 .p2-hit.p2-hot .p2-pm--member .p2-pm-disc,.fow-p2 .p2-hit.p2-active .p2-pm--member .p2-pm-disc{fill:#7E2410}
.fow-p2 .p2-cart-bg{fill:#FBF8F0;fill-opacity:.94;stroke:rgba(43,41,36,.22);stroke-width:1}
.fow-p2 .p2-cart-ico{color:#2B2924}
.fow-p2 svg text.p2-cart-t{fill:#2B2924;stroke:none;font-weight:700;letter-spacing:.02em}
.fow-p2 .p2-ico{display:inline-block;flex:none;width:15px;height:15px;color:#F6F1E4;background:#2B2924;border-radius:50%;padding:2px;box-sizing:border-box;vertical-align:-3px}
.fow-p2 .fow-p2-kico{width:16px;height:16px}
.fow-p2 .fow-p2-key [data-subject-ref].p2-hot .p2-ico,.fow-p2 .fow-p2-key [data-subject-ref].p2-active .p2-ico{background:#B23A1E}
.fow-p2 .fow-p2-legend .p2-ico{width:17px;height:17px}
@media (prefers-reduced-motion:reduce){.fow-p2 .p2-pm-in,.fow-p2 .p2-wash{transition:none}}
/* walking between quarters: quiet until a quarter is pointed at */
.fow-p2 .p2-ql{opacity:.42;transition:opacity .25s ease}.fow-p2 .p2-ql-t{opacity:.62;transition:opacity .25s ease}
.fow-p2 .p2-ql.p2-hot,.fow-p2 .p2-ql-t.p2-hot{opacity:1}
.fow-p2 svg.p2-qfocus .p2-q:not(.p2-hot) .p2-wash{fill-opacity:.05}
@media (prefers-reduced-motion:reduce){.fow-p2 .p2-ql,.fow-p2 .p2-ql-t{transition:none}}
/* ---------------------------------------------------------------- UX v2: live emphasis, pulse, callout, district sticky map */
.fow-p2{scroll-margin-top:calc(var(--p2-top,0px) + 12px)}
.fow-p2 .p2-place.p2-dim{opacity:.3}.fow-p2 .p2-place{transition:opacity .25s ease}
.fow-p2 .p2-hit{cursor:pointer;outline:none}
.p2-pulse{fill:none;stroke:#B23A1E;stroke-width:2.2;pointer-events:none;animation:p2pulse 1.9s cubic-bezier(.2,.7,.3,1) infinite}
@keyframes p2pulse{0%{opacity:.85;transform:scale(.62)}100%{opacity:0;transform:scale(1.55)}}
.fow-p2 .p2-stop.p2-active .p2-stop-c,.p2-dock .p2-stop.p2-active .p2-stop-c{stroke:#2A251C;stroke-width:2.6px}
.fow-p2 .p2-stop-label.p2-active text,.fow-p2 .p2-member-label.p2-active text{fill:#B23A1E}
.fow-p2 .p2-callout{position:absolute;z-index:3;transform:translate(-50%,calc(-100% - 12px));max-width:240px;padding:6px 10px 7px;border-radius:10px;background:#FBF8F0;border:1px solid rgba(43,41,36,.18);box-shadow:0 8px 22px rgba(30,24,16,.16);font:600 12.5px/1.35 var(--fow-font-instrument-ko);color:#2B2924;white-space:nowrap;pointer-events:none;animation:p2pop .16s ease-out both}
:lang(en) .fow-p2 .p2-callout{font-family:var(--fow-font-instrument-en)}
.fow-p2 .p2-callout b{display:block;overflow:hidden;text-overflow:ellipsis}
.fow-p2 .p2-callout small{display:block;font-weight:500;font-size:11.5px;color:#6B6A66}
.fow-p2 .p2-callout--below{transform:translate(-50%,12px)}
.fow-p2 .p2-callout--pinned{pointer-events:auto}
.fow-p2 .p2-callout-go{display:inline-block;margin-top:3px;color:#B23A1E;font-weight:700;text-decoration:none}
.fow-p2 .p2-callout-go:hover,.fow-p2 .p2-callout-go:focus-visible{text-decoration:underline}
@keyframes p2pop{from{opacity:0;margin-top:4px}to{opacity:1;margin-top:0}}
.fow-p2 .fow-p2-kq{transition:background-color .25s ease,box-shadow .25s ease}
.fow-p2 .fow-p2-kq.p2-reading{background:rgba(178,58,30,.045);box-shadow:inset 3px 0 0 #B23A1E;padding-left:10px}
.fow-p2 .fow-p2-key [data-subject-ref].p2-active a,.fow-p2 .fow-p2-key [data-subject].p2-active{color:#B23A1E;font-weight:600}
/* the article's own components show the same emphasis (outline / inset shadow only: nothing moves) */
html[data-carto-p2] .fow-route-stop.p2-hot,html[data-carto-p2] .fow-route-stop.p2-active{outline:2px solid #B23A1E;outline-offset:3px;border-radius:3px}
html[data-carto-p2] .fow-sequence button[data-stop].p2-hot{outline:2px solid #B23A1E;outline-offset:2px}
html[data-carto-p2] .fow-sequence button[data-stop].p2-active{box-shadow:inset 0 -3px 0 #B23A1E}
html[data-carto-p2] .fow-board-item.p2-hot,html[data-carto-p2] .fow-board-item.p2-active{outline:2px solid #B23A1E;outline-offset:2px}
html[data-carto-p2] .reader-margin [data-subject].p2-hot{color:#B23A1E}
/* district: on a wide screen the map stays in view while its key is read */
@media (min-width:1024px) and (min-height:640px){.fow-p2--district .fow-p2-stage{position:sticky;top:calc(var(--p2-top,0px) + 10px);z-index:2}}
@media (prefers-reduced-motion:reduce){.p2-pulse{animation:none;opacity:.6;transform:scale(1.1)}.fow-p2 .p2-callout{animation:none}.fow-p2 .p2-place,.fow-p2 .fow-p2-kq{transition:none}}

/* ---------------------------------------------------------------- the reading dock: sidecar (desktop) · preview bar and sheet (phone) */
.p2-dock{position:fixed;z-index:40;box-sizing:border-box;background:#F5F0E3;color:#2B2924;border:1px solid rgba(43,41,36,.16);border-radius:14px;box-shadow:0 12px 32px rgba(30,24,16,.2);
 font:500 13px/1.42 var(--fow-font-instrument-ko);opacity:0;transform:translateY(10px);transition:opacity .24s ease,transform .24s cubic-bezier(.2,.8,.2,1)}
.p2-dock:lang(en){font-family:var(--fow-font-instrument-en)}
.p2-dock.p2-dock--in{opacity:1;transform:none}
.p2-dock[hidden],.p2-dock[data-mode][hidden]{display:none;pointer-events:none}
.p2-dock button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.p2-dock svg{display:block;width:100%;height:auto;border-radius:9px;background:#EEE8D8}
.p2-dock-head{display:flex;flex-direction:column;gap:1px;min-width:0}
.p2-dock-k{font-size:11px;font-weight:700;letter-spacing:.06em;color:#8A2D16;text-transform:uppercase}
.p2-dock-t{font-size:14px;font-weight:700;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.p2-dock-tag{font:italic 400 13px/1.3 var(--fow-font-editorial-ko);color:#8A2D16}
.p2-dock:lang(en) .p2-dock-tag{font-family:var(--fow-font-editorial-en)}
.p2-dock-sub{font-size:12px;color:#6B5A44;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.p2-dock-nav{display:flex;gap:6px;align-items:center;margin-top:8px}
.p2-dock .p2-dock-step{width:34px;height:30px;border-radius:8px;background:#FBF8F0;border:1px solid rgba(43,41,36,.18);font-size:19px;line-height:1}
.p2-dock .p2-dock-step:disabled{opacity:.35;cursor:default}
.p2-dock .p2-dock-back{margin-left:auto;padding:5px 8px;border-radius:8px;font-size:12px;font-weight:700;color:#8A2D16}
.p2-dock button:focus-visible{outline:2px solid #B23A1E;outline-offset:2px}
.p2-dock .p2-dock-open,.p2-dock .p2-dock-close{display:none}
.p2-dock[data-mode=side]{padding:12px 12px 10px}
.p2-dock[data-mode=side] .p2-dock-head{margin-bottom:8px;padding-right:22px}
.p2-dock[data-mode=side] .p2-dock-close{display:block;position:absolute;top:6px;right:6px;width:26px;height:26px;font-size:18px;color:#6B6A66;border-radius:50%}
/* phone: a one-line preview at the bottom; tapping it opens the map as a sheet */
.p2-dock[data-mode=bar]{left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px));display:grid;grid-template-columns:96px minmax(0,1fr) 40px;align-items:center;gap:0 12px;padding:8px}
.p2-dock[data-mode=bar] .p2-dock-map{grid-row:1;grid-column:1;cursor:pointer}
.p2-dock[data-mode=bar] .p2-dock-head{grid-row:1;grid-column:2;cursor:pointer}
.p2-dock[data-mode=bar] .p2-dock-nav{display:none}
.p2-dock[data-mode=bar] .p2-dock-open{display:block;grid-row:1;grid-column:3;width:40px;height:40px;border-radius:50%;background:#2B2924;color:#F6F1E4;font-size:18px}
.p2-dock[data-mode=bar].p2-dock--open{left:0;right:0;bottom:0;border-radius:18px 18px 0 0;display:block;padding:14px 12px calc(14px + env(safe-area-inset-bottom,0px))}
.p2-dock[data-mode=bar].p2-dock--open .p2-dock-head{margin-bottom:10px;padding-right:44px}
.p2-dock[data-mode=bar].p2-dock--open .p2-dock-nav{display:flex}
.p2-dock[data-mode=bar].p2-dock--open .p2-dock-open{display:none}
.p2-dock[data-mode=bar].p2-dock--open .p2-dock-close{display:block;position:absolute;top:10px;right:10px;width:36px;height:36px;font-size:22px;border-radius:50%;background:#FBF8F0;border:1px solid rgba(43,41,36,.16)}
@media (prefers-reduced-motion:reduce){.p2-dock{transition:none}}
/* the focus map inside the dock speaks the plate's own ink */
.p2-dock .p2-veil{fill:#F1ECDD;fill-opacity:.3}
.p2-dock .p2-pm-disc{fill:#2B2924;stroke:#F6F1E4;stroke-width:1.4px}.p2-dock .p2-pm-ico{color:#F6F1E4}
.p2-dock .p2-pm--member .p2-pm-disc{fill:#B23A1E;stroke:#FBF7EC;stroke-width:1.8px}
.p2-dock .p2-pm-in{transition:transform .18s cubic-bezier(.2,.8,.2,1)}
.p2-dock .p2-hit.p2-hot .p2-pm-in,.p2-dock .p2-hit.p2-active .p2-pm-in{transform:scale(1.3)}
.p2-dock .p2-hit.p2-hot .p2-pm--member .p2-pm-disc,.p2-dock .p2-hit.p2-active .p2-pm--member .p2-pm-disc{fill:#7E2410}
.p2-dock .p2-stop-c{fill:#B23A1E;stroke:#F7F3E7;stroke-width:1.8px}
.p2-dock .p2-stop--opt .p2-stop-c{fill:#F7F3E7;stroke:#B23A1E;stroke-width:1.6px;stroke-dasharray:3 2.2}
.p2-dock text.p2-stop-n{fill:#FFF;font-size:11px;font-weight:700;font-family:var(--fow-font-instrument-ko)}
.p2-dock .p2-stop--opt text.p2-stop-n{fill:#8A2D16}
.p2-dock .p2-corr{fill:none;stroke:#B4772F;stroke-opacity:.3;stroke-width:9px;stroke-linecap:round;stroke-linejoin:round}
.p2-dock .p2-corr-core{fill:none;stroke:#8C5A27;stroke-width:1.7px;stroke-dasharray:.01 4.4;stroke-linecap:round;stroke-linejoin:round}
.p2-dock .p2-chord{fill:none;stroke:#8C5A27;stroke-opacity:.8;stroke-width:1.4px;stroke-dasharray:6 4.5}
.p2-dock .p2-hit{cursor:pointer}
.p2-dock .p2-wash{fill:#8C7B58;fill-opacity:.12;stroke:#8C7B58;stroke-opacity:0;stroke-width:1.2px}
.p2-dock .p2-q.p2-hot .p2-wash{fill-opacity:.26;stroke-opacity:.6}
.p2-dock .p2-place{transition:opacity .25s ease}.p2-dock .p2-place.p2-dim{opacity:.28}
/* a wide window whose text column leaves no room beside it: the preview sits at the lower right, not across the page */
@media (min-width:760px){.p2-dock[data-mode=bar]:not(.p2-dock--open){left:auto;right:24px;width:440px}.p2-dock[data-mode=bar].p2-dock--open{left:auto;right:24px;width:min(560px,calc(100vw - 48px));bottom:24px;border-radius:18px}}
.p2-dock .p2-leader{stroke:#5F5B51;stroke-width:1px;fill:none}.p2-dock .p2-true{fill:#2F2A20}
/* motion: the next corridor flows from the chosen stop; a plate's marks arrive once, in order, when it first comes into view */
.fow-p2 .p2-corr-core.p2-leg-live,.p2-dock .p2-corr-core.p2-leg-live{stroke:#B23A1E;stroke-width:2.2px;animation:p2flow 1.1s linear infinite}
@keyframes p2flow{to{stroke-dashoffset:-9.2}}
.fow-p2 .p2-chord.p2-leg-live,.p2-dock .p2-chord.p2-leg-live{stroke:#B23A1E;stroke-opacity:1}
.fow-p2.p2-arrive .p2-pm-in,.fow-p2.p2-arrive .p2-stop-c{animation:p2arrive .5s cubic-bezier(.2,.8,.2,1) both}.fow-p2.p2-arrive .p2-stop-n{animation:p2fade .5s ease both .18s}
@keyframes p2fade{from{opacity:0}to{opacity:1}}
.fow-p2.p2-arrive .p2-hit:nth-child(3n+1) .p2-pm-in,.fow-p2.p2-arrive .p2-stop:nth-child(3n+1) .p2-stop-c{animation-delay:.06s}
.fow-p2.p2-arrive .p2-hit:nth-child(3n+2) .p2-pm-in,.fow-p2.p2-arrive .p2-stop:nth-child(3n+2) .p2-stop-c{animation-delay:.14s}
.fow-p2.p2-arrive .p2-hit:nth-child(3n) .p2-pm-in,.fow-p2.p2-arrive .p2-stop:nth-child(3n) .p2-stop-c{animation-delay:.22s}
@keyframes p2arrive{from{opacity:0;transform:scale(.35)}to{opacity:1;transform:none}}
.fow-p2 .p2-stop-c{transform-box:fill-box;transform-origin:center}
@media (prefers-reduced-motion:reduce){.fow-p2 .p2-corr-core.p2-leg-live,.p2-dock .p2-corr-core.p2-leg-live{animation:none}.fow-p2.p2-arrive .p2-pm-in,.fow-p2.p2-arrive .p2-stop-c,.fow-p2.p2-arrive .p2-stop-n{animation:none}}
/* P2.1 — the side map names what is in view; the phone bar is slim, tucks into a map button while reading down,
   and the page keeps the bar's height free at its end */
.p2-dock .p2-fm-label text{fill:#2B2924;paint-order:stroke;stroke:#F5F0E3;stroke-width:3.2px;stroke-linejoin:round}
.p2-dock .p2-fm-label .p2-fm-t--on{fill:#8A2D16}
.p2-dock .p2-fm-label--st text{fill:#4A463E;font-weight:500}
.p2-dock .p2-fm-stm{fill:#2B2924;stroke:#F5F0E3;stroke-width:1.4px}
.p2-dock[data-mode=side] .p2-dock-t{font-size:15px}
.p2-dock[data-mode=bar]{grid-template-columns:72px minmax(0,1fr) 36px;gap:0 10px;padding:6px 8px;transition:opacity .2s ease,transform .24s cubic-bezier(.2,.8,.2,1),width .24s cubic-bezier(.2,.8,.2,1)}
.p2-dock[data-mode=bar] .p2-dock-t{font-size:13.5px}
.p2-dock[data-mode=bar] .p2-dock-sub{font-size:11.5px}
.p2-dock[data-mode=bar] .p2-dock-open{width:36px;height:36px;font-size:16px}
.p2-dock[data-mode=bar].p2-dock--tuck{left:auto;right:12px;width:60px;height:60px;padding:4px;display:block;border-radius:50%;overflow:hidden;cursor:pointer}
.p2-dock[data-mode=bar].p2-dock--tuck .p2-dock-head,.p2-dock[data-mode=bar].p2-dock--tuck .p2-dock-open{display:none}
.p2-dock[data-mode=bar].p2-dock--tuck .p2-dock-map{width:52px;height:52px;border-radius:50%;overflow:hidden}
.p2-dock[data-mode=bar].p2-dock--tuck .p2-dock-map svg{width:72px;height:54px;margin:-1px 0 0 -10px;border-radius:0}
html.p2-room body{padding-bottom:84px}
@media (prefers-reduced-motion:reduce){.p2-dock[data-mode=bar]{transition:none}}

/* Place uses the same reading companion, with source precision and real links. */
.p2-dock-details{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:10px;font-size:12px;line-height:1.55}
.p2-dock-details a{color:#7e321c;text-decoration:underline;text-underline-offset:3px}
.p2-dock a:focus-visible,.p2-dock-reopen:focus-visible{outline:2px solid #B23A1E;outline-offset:3px}
.p2-dock[data-mode=bar]:not(.p2-dock--open) .p2-dock-details{display:none}
.p2-dock[data-kind=PLACE][data-mode=bar]:not(.p2-dock--open){grid-template-columns:72px minmax(0,1fr) 36px 28px}
.p2-dock[data-kind=PLACE][data-mode=bar]:not(.p2-dock--open) .p2-dock-close{display:block;grid-row:1;grid-column:4;width:28px;height:36px;font-size:20px}
.p2-dock-reopen{position:fixed;z-index:40;right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));min-height:44px;padding:10px 18px;border:1px solid #7b7261;border-radius:12px;background:#F5F0E3;color:#2B2924;font:600 13px/1.5 var(--fow-font-instrument,SUIT,sans-serif);cursor:pointer}
.p2-dock-reopen[hidden]{display:none}
.p2-dock .p2-location-radius{fill:#B23A1E;fill-opacity:.1;stroke:#B23A1E;stroke-width:1;vector-effect:non-scaling-stroke;stroke-dasharray:4 3}
.p2-dock .p2-place-shape{fill:#B23A1E;fill-opacity:.18;stroke:#7e2410;stroke-width:1;vector-effect:non-scaling-stroke}
.p2-dock .p2-reach{opacity:.8}
.p2-dock[data-kind=PLACE] .p2-hit:focus-visible{outline:none;stroke:#7e2410;stroke-width:2px}

/* Shared map detail stays available without competing with the place. */
.fow-carto-method{margin:12px 0;font:12px/1.75 SUIT,sans-serif;color:#5e5646}
.fow-carto-method summary{cursor:pointer;min-height:32px;display:list-item}
.fow-carto-method p{margin:8px 0}
.fow-carto-caution{font:12px/1.75 SUIT,sans-serif;color:#5e5646;margin:12px 0 8px}

.p2-dock[data-kind=PLACE][data-mode=side] .p2-dock-sub{white-space:normal;overflow:visible;text-overflow:clip}

/* Source-bound network reference; never an entrance-to-entrance walk. */
.p2-reference{fill:none;stroke:#6c6757;stroke-width:2.4;stroke-dasharray:6 5;stroke-linecap:round}.lg-corr{border-style:dashed!important}
