:root{--hero-bg:#202c3b;--accent:#1964c4;--accent-hover:#124d9c;--accent-light:#b9dbff;--accent-soft:#eaf3ff;--accent-ink:#174d91;--accent-line:#8eafd7;--accent-bright:#63acff}
:root[data-theme=teal]{--hero-bg:#153b3b;--accent:#096b66;--accent-hover:#07534f;--accent-light:#9de8db;--accent-soft:#e5f5f1;--accent-ink:#075b56;--accent-line:#7aafa6;--accent-bright:#58cdb8;--paper:#f1f7f5}
:root[data-theme=plum]{--hero-bg:#35233f;--accent:#7940a1;--accent-hover:#603180;--accent-light:#e3c3ff;--accent-soft:#f5ebfc;--accent-ink:#67308d;--accent-line:#b29ac3;--accent-bright:#bf8fe8;--paper:#f7f3fa}
:root[data-theme=graphite]{--hero-bg:#11151b;--accent:#485365;--accent-hover:#303b4c;--accent-light:#dce4ef;--accent-soft:#edf0f5;--accent-ink:#354154;--accent-line:#99a3b3;--accent-bright:#aebed3;--paper:#f4f5f7}
:root{--lime:var(--accent-light);--green:var(--hero-bg)}
body,.login-page,.topbar{background:var(--paper)}
.hero,.workspace-hero,.login-intro{background:var(--hero-bg);border-color:var(--hero-bg);border-top-color:var(--accent-bright)}
.hero h1 em,.workspace-hero h1 em,.login-intro h1 em{color:var(--accent-light);text-decoration-color:var(--accent-bright)}
.brandmark{background:var(--hero-bg)}.brandmark span{color:var(--accent-light)}
.search-submit,.primary,.contact-actions a:first-child{background:var(--accent);border-color:var(--accent-ink);box-shadow:0 3px 0 var(--accent-ink),0 6px 14px #172c482b;color:#fff}
.search-submit:hover,.primary:hover,.contact-actions a:first-child:hover{background:var(--accent-hover)}
.nav.active,.nav:hover,.code,.route-slics .directory-slic,.back-route,.address-map-link:hover{background:var(--accent-soft);color:var(--accent-ink)}
.code,.route-slics .directory-slic,.back-route{border-color:var(--accent-line)}
.map-small,.address-map-link small{color:var(--accent-ink)}.back-route:hover{background:var(--accent-light)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,.searchbox:focus-within{outline-color:var(--accent)}
.tab-selector button[aria-pressed=true]{background:var(--hero-bg);border-color:var(--hero-bg);box-shadow:inset 0 -3px 0 var(--accent-bright),0 4px 10px #172c4820}
.topbar{display:flex;flex-wrap:nowrap;justify-content:space-between;min-height:82px;height:88px;gap:20px}.topbar .header-label{margin-left:auto}.menu-toggle{display:flex;align-items:center;gap:10px;min-height:46px;padding:12px 16px;border:1px solid var(--accent-line);border-radius:10px;background:white;color:var(--ink);font-weight:700;box-shadow:0 4px 12px #172c4814}.hamburger{display:grid;gap:4px;width:21px}.hamburger i{display:block;height:2px;background:currentColor;border-radius:2px}
dialog.site-menu{position:fixed;inset:16px 16px 16px auto;margin:0;width:min(390px,calc(100vw - 32px));height:max-content;max-height:calc(100dvh - 32px);padding:24px;border:1px solid var(--line);border-radius:18px;background:#fff;color:var(--ink);box-shadow:0 20px 70px #172c484d}
.menu-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.menu-heading h2{font-size:21px;letter-spacing:-.5px;margin:0}.menu-close{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink);font-size:27px;flex-shrink:0}.site-menu nav{display:flex;flex-direction:column;gap:6px}.site-menu .nav{display:block;width:100%;min-height:46px;text-decoration:none;text-align:left;font-size:15px;padding:14px;border-radius:9px}.site-menu #about{font-size:15px;width:100%;padding:14px}.site-menu #about:after{content:none}.appearance{margin-top:22px;border-top:1px solid var(--line);padding-top:22px}.appearance h3{margin:0;font-size:16px}.appearance p{font-size:12px;color:var(--muted);line-height:1.6;margin:7px 0 16px}.theme-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.theme-choices button{display:flex;align-items:center;gap:8px;min-height:64px;padding:10px;border:1px solid #aab6c5;border-radius:10px;background:#fff;color:#202c3b;font-size:12px;font-weight:700;text-align:left}.theme-swatch{width:19px;height:19px;border-radius:50%;flex-shrink:0}.theme-check{margin-left:auto;visibility:hidden}.theme-choices button[aria-pressed=true]{background:var(--accent-soft);border:2px solid var(--accent);padding:9px}.theme-choices button[aria-pressed=true] .theme-check{visibility:visible;color:var(--accent-ink)}
@media(max-width:680px){.topbar{height:82px;min-height:82px;padding:14px 5%;gap:12px}.topbar .header-label{display:none}.menu-toggle{font-size:12px;padding:11px 12px}.brand .brand-name{font-size:20px}}

.appearance summary{display:flex;align-items:center;justify-content:space-between;min-height:46px;padding:12px 14px;border-radius:9px;cursor:pointer;list-style:none;font-size:15px;font-weight:700;color:var(--ink)}.appearance summary::-webkit-details-marker{display:none}.appearance summary:after{content:'›';font-size:24px;line-height:1}.appearance[open] summary:after{transform:rotate(90deg)}.appearance summary:hover{background:var(--accent-soft)}.appearance summary:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.appearance:not([open])>:not(summary){display:none}.appearance[open] summary{background:var(--accent-soft);margin-bottom:14px}

:root:not([data-theme]),:root[data-theme=brown]{--hero-bg:#351c15;--accent:#64412a;--accent-hover:#492b1d;--accent-light:#ffdb83;--accent-soft:#fff2d5;--accent-ink:#59361f;--accent-line:#b59a72;--accent-bright:#ffb500;--paper:#f8f5ee}
.menu-toggle{width:46px;height:46px;padding:12px;justify-content:center;flex-shrink:0}
@media(max-width:680px){.menu-toggle{padding:12px}}

/* Theme controls stay clean in every interaction state. */
.appearance summary,.theme-choices button,.theme-choices button span{text-decoration:none}

:root[data-theme=pink]{--hero-bg:#482035;--accent:#b32665;--accent-hover:#8f1d50;--accent-light:#ffd0e4;--accent-soft:#fce8f1;--accent-ink:#922052;--accent-line:#c382a0;--accent-bright:#ff85b7;--paper:#fff5fa}

/* Graphite: charcoal page surround with readable light content surfaces. */
:root[data-theme=graphite] body,:root[data-theme=graphite] .login-page,:root[data-theme=graphite] .topbar{background:#1b1f26}
:root[data-theme=graphite] body{color:#edf0f5}
:root[data-theme=graphite] :is(.card,.lookup,.login-panel,dialog,.empty){color:var(--ink)}
:root[data-theme=graphite] .topbar{border-bottom-color:#4b5563;box-shadow:0 4px 18px #0004}
:root[data-theme=graphite] .topbar :is(.brand small,.header-label){color:#bdc7d5}
:root[data-theme=graphite] .results-heading :is(.eyebrow.dark,#resultSummary,#workspaceSummary){color:#bdc7d5}
:root[data-theme=graphite] footer{color:#edf0f5;border-color:#4b5563}
:root[data-theme=graphite] footer :is(p,.fine,span){color:#bdc7d5}
:root[data-theme=graphite] .empty{background:#fff}

:root[data-theme=rwb]{--hero-bg:#112d53;--accent:#bb2539;--accent-hover:#951b2c;--accent-light:#fff;--accent-soft:#eaf1fc;--accent-ink:#153f77;--accent-line:#8da7cd;--accent-bright:#e84b60;--paper:#f4f7fc}
:root[data-theme=rwb] .brandmark{box-shadow:0 4px 10px #112d532a,inset 0 -3px 0 #bb2539}
.theme-choices [data-theme-choice=rwb] .theme-swatch{box-shadow:inset 0 0 0 1px #153f7740}

/* Intro uses the selected theme with white text; tap or Escape dismisses it. */
.welcome-back{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:24px;background:var(--hero-bg,#112d53);color:#fff;pointer-events:auto;animation:welcome-screen 2.8s ease both}
.welcome-back p{margin:0;color:#fff;text-align:center;font-family:system-ui,sans-serif;font-size:clamp(2rem,7vw,4rem);font-weight:750;line-height:1.2;letter-spacing:-.025em;animation:welcome-greeting .65s cubic-bezier(.2,.7,.2,1) both}
@keyframes welcome-screen{0%,85%{opacity:1}100%{opacity:0}}
@keyframes welcome-greeting{from{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(prefers-reduced-motion:reduce){.welcome-back,.welcome-back p{animation:none}}

.menu-account{min-width:0;flex:1}.menu-heading .menu-account h2{overflow-wrap:anywhere;font-size:18px;line-height:1.35}.menu-account p{margin:5px 0 0;font-size:12px;line-height:1.4;color:var(--muted);overflow-wrap:anywhere}.menu-account p:empty{display:none}
