/* Shared foundations and isolated pocket utilities. Journey layout lives only in atlas.css. */
:root{--paper:#f7f4ed;--paper-2:#eeeadf;--card:#fffdf8;--ink:#20343b;--ink-2:#46585d;--ink-3:#657277;--line:#d6d9d0;--line-2:#e5e5dc;--maple:#964c36;--maple-2:#733c2d;--moss:#46614a;--gold:#aa793b;--night:#18343c;--accent:#964c36;--accent-soft:#f0e6db;--accent-ink:#753f2e;--ff-display:"Yu Mincho","Songti TC","PMingLiU",Georgia,serif;--ff-body:"Yu Gothic","Microsoft JhengHei","PingFang TC",system-ui,sans-serif;--ff-util:system-ui,sans-serif}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-padding-top:var(--nav-clearance,125px)}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.75 var(--ff-body)}
img{display:block;max-width:100%}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.4;cursor:default}a{color:var(--accent-ink)}p{margin:0 0 1em}h1,h2,h3,h4{overflow-wrap:anywhere}button,a{overflow-wrap:anywhere}button{white-space:normal}h1,h2,h3{font-family:var(--ff-display);line-height:1.45;margin:0 0 .5em}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid #b76b24;outline-offset:4px}button,a,input,select,textarea,[tabindex]{scroll-margin-block:var(--nav-clearance,125px) 24px}
.skip{position:absolute;left:-9999px;top:8px;z-index:200;background:var(--night);color:white;padding:12px 18px}.skip:focus{left:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.print-only{display:none}
[data-act=fukuoka]{--accent:#964c36;--accent-soft:#f0e5da;--accent-ink:#753f2e}[data-act=yufuin]{--accent:#47664f;--accent-soft:#e7eddf;--accent-ink:#304b36}[data-act=beppu]{--accent:#566d78;--accent-soft:#e3ecee;--accent-ink:#36545f}[data-act=momochi]{--accent:#316c7d;--accent-soft:#e0ecee;--accent-ink:#245462}
.btn,.linkbtn,.track-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:9px 15px;border:1px solid var(--line);border-radius:4px;background:var(--card);color:var(--ink);font:inherit;font-size:14px;text-decoration:none;text-align:center}.btn:hover,.linkbtn:hover,.track-btn:hover{border-color:var(--accent)}.btn-primary,.track-btn[aria-pressed=true]{background:var(--accent-ink);border-color:var(--accent-ink);color:white}.tag{display:inline-block;padding:2px 7px;border:1px solid var(--line);border-radius:3px;font:600 11px/1.8 var(--ff-util);vertical-align:middle}.tag-ok{background:#e8efdf;color:#34532c}.tag-plan{background:#f6eedb;color:#71571e}.tag-wait{background:#f6e4df;color:#8b392e}.tag-soft{background:#eeeae1;color:#675e50}.tl-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.section-kicker{font:600 11px/1.8 var(--ff-util);letter-spacing:.15em;color:var(--accent-ink)}
/* The utility engine moves these same sections into the drawer; no duplicate IDs/state. */
:where(.drawer,#utilityWarehouse) .wrap{max-width:none;padding:0}
:where(.drawer,#utilityWarehouse) .band{padding:0;border:0}
:where(.drawer,#utilityWarehouse) h2{font-size:clamp(24px,3vw,34px)}
:where(.drawer,#utilityWarehouse) h3{font-size:19px;margin:18px 0 8px}
:where(.drawer,#utilityWarehouse) .panel{padding:20px;border:1px solid var(--line);background:var(--card);margin-bottom:16px;min-width:0}
:where(.drawer,#utilityWarehouse) .panel-note{font-size:13px;color:var(--ink-3)}
:where(.drawer,#utilityWarehouse) .input{min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:3px;background:white;color:var(--ink);width:100%;min-width:0}
:where(.drawer,#utilityWarehouse) .input-num{max-width:135px;text-align:right}
:where(.drawer,#utilityWarehouse) .money-grid,:where(.drawer,#utilityWarehouse) .checkgroups,:where(.drawer,#utilityWarehouse) .staycards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
:where(.drawer,#utilityWarehouse) .mrow,:where(.drawer,#utilityWarehouse) .mtotal{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
:where(.drawer,#utilityWarehouse) .mrow-label{font-size:14px;min-width:0;flex:1 1 150px}
:where(.drawer,#utilityWarehouse) .mrow-sub{display:block;font-size:12px;color:var(--ink-3)}
:where(.drawer,#utilityWarehouse) .mrow-val,:where(.drawer,#utilityWarehouse) .mtotal{font-weight:700;font-variant-numeric:tabular-nums}
:where(.drawer,#utilityWarehouse) .fxrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
:where(.drawer,#utilityWarehouse) .budget-viz{padding:16px;border:1px solid var(--line);margin-bottom:18px}
:where(.drawer,#utilityWarehouse) .budget-viz-h{font-weight:700}
:where(.drawer,#utilityWarehouse) .budget-stack{display:flex;height:28px;background:var(--paper-2);overflow:hidden}
:where(.drawer,#utilityWarehouse) .budget-stack i{min-width:2px}
.seg-flight{background:#964c36}.seg-hotel-hkd{background:#47664f}.seg-hotel-jpy{background:#566d78}.seg-est{background:#aa793b}
:where(.drawer,#utilityWarehouse) .budget-legend{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;font-size:14px}
:where(.drawer,#utilityWarehouse) .budget-legend dd{margin:0;font-weight:700}
:where(.drawer,#utilityWarehouse) .budget-bar-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:10px;align-items:center;margin:12px 0;font-size:13px}
:where(.drawer,#utilityWarehouse) .budget-bar-track{height:12px;background:var(--paper-2)}
:where(.drawer,#utilityWarehouse) .budget-bar-track i{display:block;height:100%}
:where(.drawer,#utilityWarehouse) .prep-overview{display:grid;grid-template-columns:auto minmax(0,1fr);gap:24px;align-items:center;padding:20px;border:1px solid var(--line);margin:20px 0}
:where(.drawer,#utilityWarehouse) .prep-ring{--p:0;position:relative;width:128px;aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--moss) calc(var(--p)*1%),var(--line-2) 0);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
:where(.drawer,#utilityWarehouse) .prep-ring::before{content:"";position:absolute;inset:12px;border-radius:50%;background:var(--paper)}
:where(.drawer,#utilityWarehouse) .prep-ring-num,:where(.drawer,#utilityWarehouse) .prep-ring-label{position:relative;line-height:1.5;text-align:center}
:where(.drawer,#utilityWarehouse) .prep-ring-num{font-size:26px;font-weight:700}
:where(.drawer,#utilityWarehouse) .prep-ring-label{font-size:11px}
:where(.drawer,#utilityWarehouse) .next-actions,:where(.drawer,#utilityWarehouse) .checklist{list-style:none;margin:0;padding:0}
:where(.drawer,#utilityWarehouse) .next-actions li{padding:8px 0;border-top:1px solid var(--line);font-size:14px}
:where(.drawer,#utilityWarehouse) .checkgroup{border:1px solid var(--line);padding:18px;background:var(--card)}
:where(.drawer,#utilityWarehouse) .checklist li{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
:where(.drawer,#utilityWarehouse) .checklist input{flex:0 0 auto;width:22px;height:22px;margin-top:4px;accent-color:var(--accent)}
:where(.drawer,#utilityWarehouse) .check-note{display:block;font-size:13px;color:var(--ink-3)}
:where(.drawer,#utilityWarehouse) .filters{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}
:where(.drawer,#utilityWarehouse) .savedbar{padding:12px;background:var(--paper-2)}
:where(.drawer,#utilityWarehouse) .placegrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
:where(.drawer,#utilityWarehouse) .place{display:flex;flex-direction:column;border:1px solid var(--line);background:var(--card);min-width:0;border-radius:6px;overflow:hidden}
:where(.drawer,#utilityWarehouse) .place.is-saved{outline:2px solid var(--gold)}
:where(.drawer,#utilityWarehouse) .place-photo{display:block;padding:0;border:0;width:100%;background:var(--paper-2)}
:where(.drawer,#utilityWarehouse) .place-photo img{width:100%;aspect-ratio:4/3;object-fit:cover}
:where(.drawer,#utilityWarehouse) .place-body{padding:18px;flex:1;display:flex;flex-direction:column}
:where(.drawer,#utilityWarehouse) .place-name{font-size:20px}
:where(.drawer,#utilityWarehouse) .place-meta,:where(.drawer,#utilityWarehouse) .place-when{font-size:12px;color:var(--ink-3)}
:where(.drawer,#utilityWarehouse) .place-blurb{font-size:14px;flex:1}
:where(.drawer,#utilityWarehouse) .place-acts,:where(.drawer,#utilityWarehouse) .staycard-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
:where(.drawer,#utilityWarehouse) .ribbon{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0}
:where(.drawer,#utilityWarehouse) .ribbon-group{padding:12px;border:1px solid var(--line);background:var(--card)}
:where(.drawer,#utilityWarehouse) .ribbon-head{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
:where(.drawer,#utilityWarehouse) .ribbon-span{font-size:12px}
:where(.drawer,#utilityWarehouse) .ribbon-cells{display:flex;gap:6px}
:where(.drawer,#utilityWarehouse) .night{flex:1;min-width:0;min-height:60px;display:flex;flex-direction:column;padding:8px;border:1px solid var(--line);background:var(--paper)}
:where(.drawer,#utilityWarehouse) .night.is-active{border:2px solid var(--accent)}
:where(.drawer,#utilityWarehouse) .night-date,:where(.drawer,#utilityWarehouse) .night-first{font-size:11px}
:where(.drawer,#utilityWarehouse) .night-n{font-size:22px}
:where(.drawer,#utilityWarehouse) .staycard{border:1px solid var(--line);border-radius:5px;overflow:hidden;min-width:0;background:var(--card)}
:where(.drawer,#utilityWarehouse) .staycard-plate{display:flex;flex-direction:column;gap:6px;padding:20px;background:var(--accent-soft);border-top:3px solid var(--accent)}
:where(.drawer,#utilityWarehouse) .staycard-plate-ordinal,:where(.drawer,#utilityWarehouse) .staycard-plate-latin{font-size:11px;letter-spacing:.12em}
:where(.drawer,#utilityWarehouse) .staycard-plate-zh{font:700 26px/1.5 var(--ff-display)}
:where(.drawer,#utilityWarehouse) .staycard-plate-note{font-size:12px}
:where(.drawer,#utilityWarehouse) .staycard-body{padding:20px}
:where(.drawer,#utilityWarehouse) .staycard-stamp{display:flex;gap:8px;flex-wrap:wrap;font-size:12px;margin-bottom:10px}
:where(.drawer,#utilityWarehouse) .staycard-name{font-size:21px}
:where(.drawer,#utilityWarehouse) .staycard-en{overflow-wrap:anywhere;font-size:13px;color:var(--ink-3)}
:where(.drawer,#utilityWarehouse) .staycard-area{font-size:14px}
:where(.drawer,#utilityWarehouse) .staycard-amt{font-weight:700}
:where(.drawer,#utilityWarehouse) .routemap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;margin-top:22px;align-items:start}
:where(.drawer,#utilityWarehouse) .routemap-fig{padding:12px;background:#e6eeea;border:1px solid var(--line)}
.routesvg{display:block;width:100%;height:auto}.route-land{fill:#f7f3e6;stroke:#c9c4af;stroke-width:1.5}.route-sea{fill:#637d83;font-size:13px;text-anchor:middle}.route-legs{fill:none;stroke:#964c36;stroke-width:2.5;stroke-dasharray:7 7}.route-city{fill:none;stroke:#bfac88;stroke-dasharray:4 4}.route-city-t{fill:#9a8867;font-size:11px;text-anchor:middle}.route-lead{fill:none;stroke:#ae9770}.route-halo{fill:var(--accent-soft);opacity:0}.route-dot{fill:var(--paper);stroke:var(--accent);stroke-width:3}.route-label{font:700 25px var(--ff-display);fill:var(--ink);paint-order:stroke;stroke:var(--paper);stroke-width:7px;stroke-linejoin:round}.route-pin{cursor:pointer}.route-hit{fill:transparent;stroke:transparent;stroke-width:3}.route-pin:focus-visible .route-hit{stroke:var(--accent)}.route-pin[data-on="1"] .route-halo{opacity:1}.route-pin[data-on="1"] .route-dot{fill:var(--accent)}
:where(.drawer,#utilityWarehouse) .route-map-tools{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:10px}
:where(.drawer,#utilityWarehouse) .route-map-tools button{min-width:44px;min-height:44px;border:1px solid var(--line);background:var(--card);padding:8px}
:where(.drawer,#utilityWarehouse) .routemap-note{font-size:12px;margin-top:12px}
:where(.drawer,#utilityWarehouse) .routestops{list-style:none;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
:where(.drawer,#utilityWarehouse) .stop{display:flex;flex-direction:column;gap:4px;width:100%;padding:12px;text-align:left;border:1px solid var(--line);background:var(--card);min-height:44px}
:where(.drawer,#utilityWarehouse) .stop[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent)}
:where(.drawer,#utilityWarehouse) .stop-ord,:where(.drawer,#utilityWarehouse) .stop-when{font-size:11px}
:where(.drawer,#utilityWarehouse) .stop-zh{font-size:18px;font-weight:700}
:where(.drawer,#utilityWarehouse) .stop-lede{display:none}
:where(.drawer,#utilityWarehouse) .route-detail{border:1px solid var(--line);background:var(--card)}
:where(.drawer,#utilityWarehouse) .route-detail-photo{margin:0}
:where(.drawer,#utilityWarehouse) .route-detail-photo img{width:100%;height:180px;object-fit:cover}
:where(.drawer,#utilityWarehouse) figcaption{position:static;padding:8px 12px;font-size:12px;line-height:1.6;background:var(--paper-2);color:var(--ink-2)}
:where(.drawer,#utilityWarehouse) .route-detail-content{padding:20px}
:where(.drawer,#utilityWarehouse) .route-detail-kicker,:where(.drawer,#utilityWarehouse) .route-detail-dates{font-size:12px}
:where(.drawer,#utilityWarehouse) .route-day-link{display:grid;grid-template-columns:54px minmax(0,1fr) 18px;gap:8px;align-items:center;padding:12px 0;border-top:1px solid var(--line);text-decoration:none;font-size:14px}
:where(.drawer,#utilityWarehouse) .route-day-number{font-size:11px}
:where(.drawer,#utilityWarehouse) .foot{padding:20px;background:var(--paper-2);margin:20px 0}
:where(.drawer,#utilityWarehouse) .foot .btn{margin:6px 4px 6px 0}
:where(.drawer,#utilityWarehouse) .archive{padding:16px;border:1px solid var(--line);overflow-wrap:anywhere}
:where(.drawer,#utilityWarehouse) summary{cursor:pointer;min-height:44px}
:where(.drawer,#utilityWarehouse) table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px}
:where(.drawer,#utilityWarehouse) th,:where(.drawer,#utilityWarehouse) td{padding:8px;vertical-align:top;text-align:left;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.scrim{position:fixed;inset:0;z-index:90;background:#09222bb8}.drawer{position:fixed;inset:4vh 24px 4vh auto;z-index:100;display:flex;flex-direction:column;width:min(640px,calc(100% - 48px));background:var(--paper);border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 80px #0004}.drawer-tools{width:min(1120px,calc(100% - 48px))}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;border-bottom:1px solid var(--line);flex-shrink:0}.drawer-head h2{font-size:22px;margin:0;min-width:0}.drawer-close{min-width:44px;min-height:44px;border:1px solid var(--line);background:var(--card)}.drawer-body{min-height:0;overflow-y:auto;padding:24px;overscroll-behavior:contain;overflow-wrap:anywhere}.drawer-body figure{margin:0 0 20px}.drawer-body figure img{width:100%;max-height:350px;object-fit:cover}.drawer-body dt{font-size:12px;color:var(--ink-3);margin-top:14px}.drawer-body dd{margin:4px 0 12px}.drawer-sec{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}.drawer-list{list-style:none;padding:0}.drawer-list li{padding:10px 0;border-bottom:1px solid var(--line)}.pending-list{padding-left:22px}.copy-fallback{width:100%;margin-top:12px}.pocket-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.pocket-tabs button{min-height:44px;padding:8px 16px;border:1px solid var(--line);border-radius:24px;background:var(--card);color:var(--ink)}.pocket-tabs button[aria-pressed=true]{background:var(--night);color:white}
@media(max-width:760px){.drawer,.drawer-tools{inset:10px;width:auto;border-radius:5px}.drawer-head{padding:12px 16px}.drawer-head h2{font-size:19px}.drawer-body{padding:18px 16px}:where(.drawer,#utilityWarehouse) .money-grid,:where(.drawer,#utilityWarehouse) .checkgroups,:where(.drawer,#utilityWarehouse) .staycards,:where(.drawer,#utilityWarehouse) .routemap{grid-template-columns:1fr}:where(.drawer,#utilityWarehouse) .placegrid,:where(.drawer,#utilityWarehouse) .ribbon{grid-template-columns:repeat(2,minmax(0,1fr))}:where(.drawer,#utilityWarehouse) .budget-bar-row{grid-template-columns:1fr;gap:5px}}
@media(max-width:440px){:where(.drawer,#utilityWarehouse) .placegrid,:where(.drawer,#utilityWarehouse) .ribbon,:where(.drawer,#utilityWarehouse) .prep-overview{grid-template-columns:1fr}:where(.drawer,#utilityWarehouse) .budget-legend{grid-template-columns:1fr;gap:4px}:where(.drawer,#utilityWarehouse) .panel{padding:14px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
