:root{--ink:var(--theme-ink,#14202B);--line:var(--theme-line,#E2E8EC);--field:var(--theme-paper-dim,#F1F4F6);--air:var(--theme-role-hub,#1C6E92);--train:var(--theme-role-meetup,#2E9C97);--bus:var(--theme-role-car,#EC6240);--accent:var(--theme-accent,#EC6240);--cream:var(--theme-accent-soft,#FCE2D6);--txt:var(--theme-ink,#14202B);--muted:var(--theme-ink-3,#76858F);--surface:var(--theme-surface,#FFFFFF);--paper-dim:var(--theme-paper-dim,#F1F4F6);--ink-2:var(--theme-ink-2,#3B4D5A);--ink-3:var(--theme-ink-3,#76858F)}
*{box-sizing:border-box}
html,body{margin:0;height:100%;font-family:var(--font-body,"Hanken Grotesk",system-ui,sans-serif);background:var(--ink);color:var(--txt);overflow:hidden}
#app{display:grid;grid-template-columns:390px 1fr;height:calc(100vh - 87px);height:calc(100dvh - 87px)}
.hamb,.backdrop{display:none}
@media(max-width:840px){
  #app{display:block;position:relative}
  #map{position:absolute;inset:0;width:100%;height:100%}
  .panel{position:absolute;top:0;left:0;height:100%;width:87%;max-width:350px;z-index:1000;transform:translateX(-100%);transition:transform .28s ease}
  #app.menu .panel{transform:none;box-shadow:0 0 40px #000a}
  .hamb{display:flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;top:12px;left:12px;z-index:1100;width:46px;height:46px;border-radius:12px;background:#111;border:0;cursor:pointer;box-shadow:0 2px 10px #0007;padding:0}
  .hamb span{display:block;width:20px;height:2px;background:#f8daba;border-radius:1px;transition:transform .25s ease,opacity .2s ease;margin:2.5px 0}
  #app.menu .hamb span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  #app.menu .hamb span:nth-child(2){opacity:0}
  #app.menu .hamb span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .backdrop{position:absolute;inset:0;background:#0007;z-index:999}
  #app.menu .backdrop{display:block}
}
.panel{background:linear-gradient(165deg,#173040,#0d1b24);border-right:1px solid var(--line);padding:24px;overflow-y:auto}
.brand{display:flex;gap:14px;align-items:center;margin-bottom:20px}
.logo{width:88px;height:88px;flex:none;background:transparent;filter:drop-shadow(0 3px 10px rgba(0,0,0,.5))}
.kicker{font-family:var(--font-mono,"Space Mono",monospace);font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--cream);opacity:.92;line-height:1.4}
h1{font-family:var(--font-display,"Bricolage Grotesque",serif);font-weight:600;font-size:27px;line-height:1.02;margin:3px 0 0;letter-spacing:-.01em}
.sub{color:var(--muted);font-size:13px;margin-bottom:20px;line-height:1.5}
label{display:block;font-family:var(--font-mono,"Space Mono",monospace);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.searchrow{display:flex;gap:8px}
input#zip{flex:1;background:var(--field);border:1px solid var(--line);color:var(--txt);padding:13px 14px;border-radius:11px;font-family:var(--font-mono,"Space Mono",monospace);font-size:16px;outline:none;transition:.2s}
input#zip:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c3736433}
button{background:var(--accent);color:#1a0f0a;border:0;padding:0 18px;border-radius:11px;font-weight:600;font-size:15px;cursor:pointer;transition:.15s}
button:hover{filter:brightness(1.08);transform:translateY(-1px)}
#go{background:#111;color:#fff}
#go:hover{background:#000;filter:none}
.hint{font-size:11.5px;color:var(--muted);margin-top:8px;font-family:var(--font-mono,"Space Mono",monospace)}
.filter-acc{margin-top:14px;border:1px solid var(--line);border-radius:8px;background:var(--field);overflow:hidden}
.filter-acc summary{cursor:pointer;padding:10px 14px;font-family:var(--font-mono,"Space Mono",monospace);font-size:12.5px;color:var(--cream);list-style:none;display:flex;align-items:center;justify-content:space-between;user-select:none}
.filter-acc summary::-webkit-details-marker{display:none}
.filter-acc summary::after{content:"▾";font-size:12px;color:var(--muted);transition:transform .2s}
.filter-acc[open] summary::after{transform:rotate(180deg)}
.filter-content{padding:10px 14px 14px;border-top:1px solid var(--line)}
.filter-actions{display:flex;gap:6px;margin-bottom:8px;padding-bottom:10px;border-bottom:1px dotted var(--line)}
.filter-actions button{flex:1;background:transparent;border:1px solid var(--line);color:var(--muted);padding:5px 8px;border-radius:6px;font-size:10.5px;font-family:var(--font-mono,"Space Mono",monospace);cursor:pointer;transition:.15s}
.filter-actions button:hover{border-color:var(--accent);color:var(--cream);transform:none;filter:none}
.fcheck{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:12.5px;color:var(--muted);cursor:pointer;font-family:var(--font-mono,"Space Mono",monospace);user-select:none}
.fcheck:hover{color:var(--cream)}
.fcheck span{display:inline-flex;align-items:center;gap:7px}
.fcheck-glyph{width:16px;height:16px;display:inline-block;object-fit:contain}
.fcheck input{appearance:none;width:16px;height:16px;border:1.5px solid var(--line);border-radius:3px;cursor:pointer;flex:none;position:relative;background:var(--field);margin:0}
.fcheck input:checked{background:var(--theme-accent,#EC6240);border-color:var(--theme-accent,#EC6240)}
.fcheck input:checked::after{content:"";position:absolute;left:4px;top:0px;width:4px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.fcheck-img{width:14px;height:14px;border-radius:50%;vertical-align:-3px;display:inline-block}
.rail-subgroup{margin:8px 0 4px;padding:6px 0 0 4px;border-left:2px solid var(--line);margin-left:7px;padding-left:10px}
.rail-subgroup-label{font-family:var(--font-mono,"Space Mono",monospace);font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:2px}
.fcheck.sub{padding:3px 0;font-size:12px}
.search-work-filter,.check-in-filter,.host-filter{margin-bottom:10px;padding-bottom:10px;border-bottom:1px dotted var(--line)}
.contact-language-filter{display:grid;gap:5px;margin:4px 0 0 25px;color:var(--muted)}
.contact-language-filter span{font-family:var(--font-mono,"Space Mono",monospace);font-size:10px;letter-spacing:.12em;text-transform:uppercase}
.contact-language-filter select{width:100%;min-height:34px;border:1px solid var(--line);border-radius:7px;background:var(--field);color:var(--txt);padding:0 9px;font-family:var(--font-body,"Hanken Grotesk",system-ui,sans-serif);font-size:13px;outline:0}
.contact-language-filter select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(236,98,64,.16)}
.check-in-date-filter input[type="range"]{width:100%;accent-color:var(--accent)}
.search-work-pin{width:30px;height:30px;border:2px solid #fff;border-radius:999px;background:var(--contact-language-color,var(--theme-accent,#EC6240));color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 18px rgba(0,0,0,.35)}
.search-work-pin i{font-size:12px}
.search-work-pin.field-captured-contact{background:#111827}
.field-check-in-pin{position:relative;width:34px;height:34px;border:2px solid #fff;border-radius:999px;background:#050505;color:#fff;display:grid;place-items:center;box-shadow:0 10px 24px rgba(0,0,0,.38)}
.field-check-in-pin::before{content:"";position:absolute;inset:-8px;border:2px solid rgba(5,5,5,.28);border-radius:999px;animation:check-in-ring 1.8s ease-out infinite}
.field-check-in-pin i{font-size:13px;position:relative;z-index:1}
.host-pin{position:relative;width:36px;height:36px;border:2px solid #fff;border-radius:999px;background:var(--theme-role-host,#DDA63F);color:#1a1200;display:grid;place-items:center;box-shadow:0 10px 24px rgba(0,0,0,.36)}
.host-pin::before{content:"";position:absolute;inset:-6px;border:2px solid color-mix(in srgb,var(--theme-role-host,#DDA63F),transparent 50%);border-radius:999px}
.host-pin i{font-size:14px;position:relative;z-index:1}
@keyframes check-in-ring{0%{opacity:.75;transform:scale(.72)}100%{opacity:0;transform:scale(1.35)}}
.search-work-contact-popup{max-width:calc(100vw - 40px)}
.search-work-contact-popup .leaflet-popup-content,.field-check-in-popup .leaflet-popup-content,.host-popup .leaflet-popup-content{box-sizing:border-box;margin:0;min-width:0!important;width:min(360px,calc(100vw - 76px))!important;max-width:calc(100vw - 76px)}
.search-work-contact-popup .leaflet-popup-content-wrapper,.field-check-in-popup .leaflet-popup-content-wrapper,.host-popup .leaflet-popup-content-wrapper{box-sizing:border-box;max-width:calc(100vw - 40px);padding:0;border-radius:12px;overflow:hidden}
.search-work-card{box-sizing:border-box;width:100%;max-width:100%;border:0;border-radius:0;box-shadow:none;padding:16px}
.search-work-card .animal-chip{gap:6px}
.field-check-in-card .hub-card-emblem{background:#050505;color:#fff}
.host-card .hub-card-emblem{background:var(--theme-role-host,#DDA63F);color:#1a1200}
.host-card .hub-card-live span{min-width:0;overflow-wrap:anywhere}
.host-assignment-list{display:grid;gap:6px}
.host-assignment-list span{display:grid;gap:1px;padding:6px 0;border-top:1px solid rgba(20,32,43,.1)}
.host-assignment-list span:first-child{border-top:0;padding-top:0}
.host-assignment-list strong{font-size:13px;color:var(--ink)}
.host-assignment-list em{font-style:normal;font-size:11.5px;color:var(--muted)}
.line-dot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:6px;vertical-align:-1px;border:1px solid rgba(0,0,0,.2)}
.line-max-blue{background:#1f78c1}
.line-max-red{background:#e1262d}
.line-max-green{background:#329c5d}
.line-max-yellow{background:#f3b53b}
.line-max-orange{background:#e87e22}
.line-wes{background:#8b6f47}
.line-link-1{background:#00a14b}
.line-link-2{background:#0073cf}
.theme-fab{position:absolute;top:84px;right:10px;z-index:760}
.theme-btn{width:38px;height:38px;background:rgba(15,28,38,.92);border:1px solid rgba(255,255,255,.1);border-radius:6px;cursor:pointer;padding:0;font-size:18px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.35);color:#f8daba}
.theme-btn:hover{background:rgba(15,28,38,1);transform:none;filter:none}
.theme-popover{display:none;position:absolute;top:46px;right:0;background:rgba(15,28,38,.96);padding:8px;border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.45);min-width:280px;gap:5px;border:1px solid rgba(255,255,255,.1);flex-wrap:wrap}
.theme-popover.open{display:flex}
.theme-popover .themechip{min-width:60px;background:transparent}
@media(max-width:840px){.theme-fab{top:64px;right:10px}.theme-popover{min-width:240px;right:0}}
.result{margin-top:22px;opacity:0;transform:translateY(8px);transition:.45s}
.result.show{opacity:1;transform:none}
.loc{font-family:var(--font-display,"Bricolage Grotesque",serif);font-size:22px;font-weight:600}
.locsub{color:var(--muted);font-size:12.5px;font-family:var(--font-mono,"Space Mono",monospace);margin-bottom:16px}
.rec{display:flex;align-items:center;gap:10px;background:var(--field);border:1px solid var(--accent);border-radius:12px;padding:13px 14px;margin-bottom:18px}
.rec b{font-family:var(--font-display,"Bricolage Grotesque",serif)}.star{color:var(--cream);font-size:18px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.card{display:flex;align-items:flex-start;gap:12px;padding:13px 0;border-top:1px solid var(--line)}
.transit-card{position:relative;align-items:center;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:rgba(255,255,255,.045);padding:12px;margin-top:9px;transition:border-color .16s,background .16s,transform .16s}
.transit-card:first-of-type{margin-top:0}
.transit-card:hover{background:rgba(255,255,255,.09);border-color:var(--accent);transform:translateY(-1px)}
.transit-card-main{min-width:0;flex:1}
.transit-card-title{display:flex;align-items:center;gap:8px;min-width:0}
.transit-card-title .cname{min-width:0;overflow:hidden;text-overflow:ellipsis}
.transit-icon{width:34px;height:34px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;flex:none;background:#fff;border:2px solid var(--accent);color:var(--accent);box-shadow:0 8px 18px rgba(0,0,0,.18);font-size:14px}
.transit-icon .fa-solid{display:block;line-height:1}
.theme-glyph{width:22px;height:22px;display:block;object-fit:contain}
.hub-glyph{width:22px;height:22px;display:block;object-fit:contain}
.chip-glyph{width:14px;height:14px;display:block;object-fit:contain}
.transit-icon.air{border-color:var(--air);color:var(--air)}
.transit-icon.train,.transit-icon.rail{border-color:var(--train);color:var(--train)}
.transit-icon.bus{border-color:var(--bus);color:var(--bus)}
.transit-icon.ferry{border-color:var(--cream);color:var(--accent)}
.transit-icon.hall{border-color:var(--cream);color:var(--cream);background:rgba(255,255,255,.08)}
.transit-icon.recommend{background:var(--accent);border-color:var(--accent);color:#fff}
.transit-chip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 8px 3px 4px;font-family:var(--font-mono,"Space Mono",monospace);font-size:9.5px;line-height:1;letter-spacing:.08em;text-transform:uppercase;font-weight:700;background:rgba(255,255,255,.08);color:var(--cream);white-space:nowrap}
.transit-chip .fa-solid{font-size:10px;line-height:1}
.transit-chip.air{background:color-mix(in srgb,var(--air),transparent 78%);color:#fff}
.transit-chip.train,.transit-chip.rail{background:color-mix(in srgb,var(--train),transparent 78%);color:#fff}
.transit-chip.bus{background:color-mix(in srgb,var(--bus),transparent 78%);color:#fff}
.transit-chip.ferry{background:rgba(248,218,186,.16);color:var(--cream)}
.transit-chip.hall{background:rgba(248,218,186,.12);color:var(--cream)}
.transit-rec{align-items:center;border-color:var(--accent);background:rgba(255,255,255,.07)}
.transit-rec b,.transit-rec span{display:block}
.transit-rec b{font-family:var(--font-display,"Bricolage Grotesque",serif);font-size:16px}
.transit-rec span{font-size:13px;color:var(--muted);margin-top:2px}
.dot{width:11px;height:11px;border-radius:50%;margin-top:5px;flex:none;box-shadow:0 0 0 4px #ffffff12}
.cair{background:var(--air)}.ctrain{background:var(--train)}.cbus{background:var(--bus)}
.cname{font-weight:600;font-size:15px}.cmeta{font-family:var(--font-mono,"Space Mono",monospace);font-size:12px;color:var(--muted);margin-top:2px}
.cdist{margin-left:auto;text-align:right;font-family:var(--font-mono,"Space Mono",monospace)}.cdist .mi{font-size:18px;font-weight:500}.cdist .mn{font-size:11px;color:var(--muted)}
.note{font-size:10.5px;color:var(--muted);margin-top:14px;line-height:1.5}
.khh{display:flex;align-items:center;gap:7px;margin-top:20px;margin-bottom:2px;font-family:var(--font-mono,"Space Mono",monospace);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--cream)}
.btnrow{display:flex;gap:8px;margin-top:10px}
.btn2{flex:1;background:transparent;border:1px solid var(--line);color:var(--txt);padding:9px 6px;border-radius:10px;font-size:12.5px;cursor:pointer;font-family:var(--font-mono,"Space Mono",monospace);transition:.15s}
.btn2:hover{border-color:var(--accent);color:var(--cream);transform:none;filter:none}
.dir{color:var(--cream);text-decoration:none;border-bottom:1px dotted var(--cream);white-space:nowrap}
.dir:hover{color:#fff;border-color:#fff}
.hemoji{font-size:16px;line-height:1;margin-top:4px;flex:none;width:14px;text-align:center}
.kh-emoji{background:transparent;border:none;font-size:20px;line-height:26px;text-align:center;cursor:pointer;filter:drop-shadow(0 1px 2px rgba(0,0,0,.55))}
.card.click{cursor:pointer;transition:background .15s}
.card.click:hover{background:#ffffff0f}
.card.click:hover .mn{color:var(--cream)}
.card.click:active{background:#ffffff1a}
.themerow{display:flex;align-items:center;justify-content:space-between;margin-top:14px;gap:10px}
.tlbl{font-family:var(--font-mono,"Space Mono",monospace);font-size:12.5px;color:var(--muted)}
.themes{display:flex;gap:6px;margin-top:8px}
.themechip{flex:1;background:transparent;border:1.5px solid var(--line);border-radius:6px;padding:3px 2px 4px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--muted);font-size:9.5px;font-family:var(--font-mono,"Space Mono",monospace);line-height:1;transition:border-color .15s,color .15s}
.themechip:hover{border-color:var(--accent);color:var(--cream);transform:none;filter:none}
.themechip.active{border-color:var(--theme-accent,#EC6240);color:#fff}
.tchip-img{width:100%;max-width:44px;height:30px;border-radius:4px;display:block;object-fit:cover;background:#dfe5e8}
.themechip[data-theme="minimal"] .tchip-img{filter:grayscale(1) brightness(1.05) contrast(.92)}
.themechip[data-theme="soft"] .tchip-img{filter:saturate(.55) brightness(1.03)}
.themechip[data-theme="classic"] .tchip-img{filter:none}
.themechip[data-theme="dark"] .tchip-img{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.9);background:#0e1d26}
.themechip[data-theme="black"] .tchip-img{filter:grayscale(1) invert(1) brightness(.5) contrast(1.5);background:#000}
.themechip[data-theme="sat"] .tchip-img{filter:none}
#map.t-dark .hub-air,#map.t-black .hub-air{border-color:#ef4444}
#map.t-dark .hub-train,#map.t-black .hub-train{border-color:#3b82f6}
#map.t-dark .hub-bus,#map.t-black .hub-bus{border-color:#10b981}
#map.t-dark .hub-ferry,#map.t-black .hub-ferry{border-color:#06b6d4}
.tour-backdrop{position:fixed;inset:0;background:rgba(8,16,22,.68);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:9000;display:none}
.tour-backdrop.show{display:block}
.tour-card{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);max-width:400px;width:88%;background:#fff;color:#1a1a1a;padding:22px 24px;border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.08);z-index:9200;display:none;font-family:var(--font-body,"Hanken Grotesk",system-ui,sans-serif)}
.tour-card.show{display:block}
.tour-card h3{margin:0 0 8px;font-family:var(--font-display,"Bricolage Grotesque",serif);font-size:19px;color:#1a1a1a;line-height:1.1}
.tour-card p{margin:0 0 14px;font-size:14px;line-height:1.45;color:#333}
.tour-step{font-family:var(--font-mono,"Space Mono",monospace);font-size:11px;color:#888;letter-spacing:.1em;margin-bottom:4px}
.tour-actions{display:flex;justify-content:space-between;align-items:center;gap:10px}
.tour-buttons{display:flex;gap:8px}
.tour-btn{padding:8px 14px;border-radius:8px;border:0;cursor:pointer;font-size:13px;font-weight:600;font-family:inherit;transition:none}
.tour-btn:hover{transform:none;filter:none}
.tour-btn-prim{background:#111;color:#fff}
.tour-btn-prim:hover{background:#000}
.tour-btn-sec{background:transparent;color:#666}
.tour-btn-sec:hover{color:#111}
.tour-highlight{box-shadow:0 0 0 3px var(--theme-accent,#EC6240), 0 0 0 6px rgba(255,255,255,.95), 0 0 36px rgba(236,98,64,.5) !important;border-radius:8px;animation:tour-pulse 1.6s ease-in-out infinite;position:relative;z-index:9100}
@keyframes tour-pulse{0%,100%{box-shadow:0 0 0 3px var(--theme-accent,#EC6240), 0 0 0 6px rgba(255,255,255,.95), 0 0 24px rgba(236,98,64,.35)}50%{box-shadow:0 0 0 3px var(--theme-accent,#EC6240), 0 0 0 6px rgba(255,255,255,1), 0 0 44px rgba(236,98,64,.58)}}
.help-fab{position:fixed;bottom:18px;right:18px;width:48px;height:48px;border-radius:50%;background:var(--theme-accent,#EC6240);color:#fff;font-size:22px;font-weight:700;border:0;cursor:pointer;box-shadow:0 4px 14px rgba(236,98,64,.28);z-index:8000;display:flex;align-items:center;justify-content:center;padding:0}
.help-fab:hover{background:var(--theme-accent-hover,#D8512F);transform:scale(1.05);filter:none}
@media(max-width:840px){
  .help-fab{bottom:14px;right:14px;width:44px;height:44px;font-size:20px}
  .tour-card{bottom:74px}
}
.pp-link{display:block;margin-top:7px;font-size:12px;color:#2563a8;text-decoration:none;font-weight:500}
.pp-link:hover{text-decoration:underline}
.pp-copy{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:8px;background:transparent;color:var(--theme-accent,#EC6240);border:1px solid var(--theme-accent,#EC6240);padding:6px 10px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:600;font-family:inherit;transition:.15s}
.pp-copy svg{flex-shrink:0}
.pp-copy:hover{background:var(--theme-accent,#EC6240);color:#fff;transform:none;filter:none}
.pp-copy.copied{background:#10b981;color:#fff;border-color:#10b981}
.rail-pill{display:inline-block;color:#fff;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;font-family:var(--font-body,"Hanken Grotesk",system-ui,sans-serif);margin-right:4px;margin-bottom:3px;text-shadow:0 1px 1px rgba(0,0,0,.25)}
.arr{display:flex;align-items:center;gap:6px;margin:5px 0;font-size:12.5px;line-height:1.25}
.arr-dest{flex:1;color:#333;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arr-time{font-weight:600;font-family:var(--font-mono,"Space Mono",monospace);color:#222;font-size:12px}
.arr-mins{color:#888;font-size:11px;white-space:nowrap}
.arr-rt{color:#10b981;font-size:9px;line-height:1}
.arr-msg{color:#888;font-size:12px;margin-top:6px;font-style:italic}
.arr-err{color:#c66}
.legend{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:760;display:flex;gap:14px;background:rgba(15,28,38,.92);color:#f8daba;font-family:var(--font-mono,"Space Mono",monospace);font-size:11.5px;padding:8px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.08);box-shadow:0 4px 16px rgba(0,0,0,.35);max-width:calc(100% - 28px);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.legend::-webkit-scrollbar{display:none}
.legend span{display:flex;align-items:center;gap:5px;white-space:nowrap;flex:none}
.legend .transit-icon{width:20px;height:20px;border-width:1.5px;font-size:10px;box-shadow:none}
.legend .theme-glyph{width:13px;height:13px}
.lz{width:9px;height:9px;border-radius:50%}
@media(max-width:840px){.legend{bottom:70px;font-size:11px;gap:12px;padding:7px 12px}}
#map{height:100%;width:100%;background:#e8eef0}
#map .leaflet-popup-pane{z-index:660}
#map.t-minimal .leaflet-tile{filter:grayscale(1) brightness(1.05) contrast(.92)}
#map.t-soft .leaflet-tile{filter:saturate(.55) brightness(1.03)}
#map.t-classic .leaflet-tile{filter:none}
#map.t-dark{background:#0e1d26}
#map.t-dark .leaflet-tile{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.9)}
#map.t-black{background:#000}
#map.t-black .leaflet-tile{filter:grayscale(1) invert(1) brightness(.5) contrast(1.5)}
#map.t-sat{background:#001220}
.kh-jw{background:transparent;border:none}
.kh-jw img{width:26px;height:26px;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,.55);display:block}
.core-campaign-hub{width:48px!important;height:48px!important;border-radius:999px;background:var(--accent);color:#fff;border:4px solid #fff;box-shadow:0 12px 30px rgba(0,0,0,.3);display:flex!important;align-items:center;justify-content:center;font-size:19px}
.core-campaign-hub::after{content:"";position:absolute;inset:-10px;border:2px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:999px}
.hemoji-img{width:20px;height:20px;border-radius:4px;margin-top:3px;flex:none}
.khh-img{width:14px;height:14px;border-radius:3px;vertical-align:-3px;margin-right:3px}
.lzimg{width:13px;height:13px;border-radius:3px;vertical-align:-2px;margin-right:1px}
.hub-icon{background:#fff;border:2.5px solid var(--accent);border-radius:50% 50% 50% 5px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(0,0,0,.45);cursor:pointer;line-height:1;transform:rotate(45deg)}
.hub-icon .hub-glyph,.hub-icon .fa-solid{transform:rotate(-45deg)}
.hub-icon .fa-solid{font-size:14px}
.hub-air{border-color:var(--air)}
.hub-train{border-color:var(--train)}
.hub-bus{border-color:var(--bus)}
.hub-ferry{border-color:var(--cream)}
.rbadge{width:24px;height:24px;background:#fff;border:2px solid var(--theme-accent,#EC6240);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;flex:none;margin-top:3px;line-height:1}
.lbadge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#fff;border:1.5px solid var(--theme-accent,#EC6240);font-size:11px;vertical-align:-5px;margin-right:3px;line-height:1}
.step{display:flex;gap:12px;padding:12px 0;border-top:1px solid var(--line);align-items:flex-start}
.step:first-child{border-top:none}
.step-icon{width:30px;height:30px;background:#fff;border:2px solid var(--theme-accent,#EC6240);border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none;color:var(--theme-accent,#EC6240);font-weight:700;font-size:15px;line-height:1;margin-top:2px}
.step-text{flex:1;font-size:14px;line-height:1.4}
.step-dist{font-family:var(--font-mono,"Space Mono",monospace);font-size:11.5px;color:var(--muted);margin-top:3px}
.steps{margin-top:14px}
.backbtn{display:flex !important;align-items:center;justify-content:center;gap:6px;width:100%;margin-bottom:8px}
.leaflet-popup-content{font-family:var(--font-body,"Hanken Grotesk",system-ui,sans-serif);margin:0;min-width:320px !important;width:auto !important}
.leaflet-popup-content-wrapper{max-width:430px;background:transparent;box-shadow:none;border-radius:16px;padding:0}
.leaflet-popup-tip{background:var(--surface);box-shadow:0 8px 20px rgba(0,0,0,.18)}
.pp-btn{width:100%;margin-top:8px;background:#111;color:#fff;border:0;padding:9px;border-radius:8px;font-weight:600;cursor:pointer;font-family:inherit}
.pp-btn:hover{background:#000}
.pp-sec{margin:8px 0;border-top:1px solid #dcdcdc;padding-top:8px;font-family:var(--font-mono,"Space Mono",monospace);font-size:11.5px;line-height:1.75}
.hub-card{background:var(--surface);color:var(--ink);border:1px solid color-mix(in srgb,var(--line) 72%,white);border-radius:16px;box-shadow:var(--theme-shadow-md,0 18px 45px rgba(17,32,58,.13));padding:18px;width:390px;max-width:calc(100vw - 48px)}
.hub-card.search-work-card{box-sizing:border-box;width:100%;max-width:100%;border:1px solid color-mix(in srgb,var(--line) 72%,white);border-radius:12px;box-shadow:none;padding:16px}
.hub-card-top{display:flex;align-items:center;gap:14px}
.hub-card-emblem{width:54px;height:54px;border-radius:13px;background:var(--theme-accent-soft,#fce2d2);display:grid;place-items:center;flex:none;color:var(--accent);font-size:24px}
.hub-card.air .hub-card-emblem{background:color-mix(in srgb,var(--air) 16%,white);color:var(--air)}
.hub-card.train .hub-card-emblem{background:color-mix(in srgb,var(--train) 16%,white);color:var(--train)}
.hub-card.bus .hub-card-emblem{background:color-mix(in srgb,var(--bus) 16%,white);color:var(--bus)}
.hub-card.ferry .hub-card-emblem{background:color-mix(in srgb,var(--cream) 70%,white);color:var(--accent)}
.hub-card.rail .hub-card-emblem{background:color-mix(in srgb,var(--train) 16%,white);color:var(--train)}
.hub-card.zip .hub-card-emblem{background:color-mix(in srgb,var(--accent) 14%,white);color:var(--accent)}
.hub-card.hall .hub-card-emblem{background:color-mix(in srgb,var(--theme-chip-sage,#6f8a72) 16%,white);color:var(--theme-chip-sage,#6f8a72)}
.hub-card.hall .hub-card-emblem img{width:38px;height:38px;border-radius:9px;display:block;object-fit:cover}
.hub-card-title{min-width:0}
.hub-card-eyebrow{font:700 11px var(--font-mono,"Space Mono",monospace);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hub-card-name{font-family:var(--font-display,"Bricolage Grotesque",serif);font-size:24px;font-weight:700;line-height:1.05;color:var(--ink);letter-spacing:0;margin-top:3px}
.hub-card-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}
.animal-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px 5px 5px;border-radius:999px;background:var(--surface);color:var(--ink-2);box-shadow:inset 0 0 0 1.5px var(--line);font:700 11px var(--font-mono,"Space Mono",monospace);text-transform:uppercase;letter-spacing:.08em}
.animal-chip-glyph{width:20px;height:20px;border-radius:50%;background:var(--paper-dim);padding:3px;display:block;object-fit:contain}
.zip-chip-dot{width:20px;height:20px;border-radius:50%;background:var(--accent);box-shadow:inset 0 0 0 4px color-mix(in srgb,var(--accent) 18%,white);display:inline-block;flex:none}
.hub-card-copy{font-size:14px;line-height:1.5;color:var(--ink-2);margin:14px 0 0}
.hub-card-stat{display:flex;gap:16px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.hub-card-stat div{min-width:0;flex:1}
.hub-card-stat b{display:block;font-family:var(--font-display,"Bricolage Grotesque",serif);font-size:18px;line-height:1.05;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hub-card-stat b .rail-pill{font-family:var(--font-body,"Hanken Grotesk",system-ui,sans-serif);font-size:11px;vertical-align:2px}
.hub-card-stat span{display:block;margin-top:3px;font-size:11px;color:var(--ink-3)}
.hub-card-live{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font-family:var(--font-mono,"Space Mono",monospace);font-size:11.5px;line-height:1.6;color:var(--ink-2)}
.hub-card-live b{display:block;font-family:var(--font-body,"Hanken Grotesk",system-ui,sans-serif);font-size:12px;color:var(--ink);margin-bottom:3px}
.hub-card-live span{display:block}
.hub-card-live .arr{margin-top:8px}
.hub-card-live .arr:first-child{margin-top:0}
.hub-card-link{display:inline-block;margin-top:8px;color:var(--accent);font-weight:700}
.hub-card-schedules{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.hub-card-schedules b{display:block;font-family:var(--font-body,"Hanken Grotesk",system-ui,sans-serif);font-size:12px;color:var(--ink);margin-bottom:8px}
.hub-card-schedules div{display:flex;flex-wrap:wrap;gap:7px}
.hub-card-schedules a{display:inline-flex;align-items:center;border-radius:999px;padding:7px 10px;background:var(--paper-dim);color:var(--ink-2);box-shadow:inset 0 0 0 1.5px var(--line);font:700 11px var(--font-mono,"Space Mono",monospace);text-decoration:none}
.hub-card-schedules a:hover{color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--accent)}
.hub-card-btn{background:var(--accent) !important;color:#fff !important;border-radius:10px;margin-top:16px;padding:10px 12px}
.hub-card-btn:hover{background:var(--theme-accent-hover,var(--accent)) !important}
.zpin{background:var(--theme-accent,#EC6240);width:16px;height:16px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #f6efe2;box-shadow:0 2px 6px #0007}
