:root {
  --ink: #102a3b;
  --ink-2: #405766;
  --muted: #748895;
  --paper: #f7f8f5;
  --panel: #ffffff;
  --line: #dde5e4;
  --soft: #edf2f1;
  --accent: #ff9f1c;
  --accent-dark: #e67f00;
  --navy: #0c2537;
  --teal: #0d6f70;
  --shadow: 0 24px 60px rgba(20, 42, 58, .17);
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
body { font-family: "DM Sans", "Noto Sans SC", sans-serif; background: var(--paper); color: var(--ink); overflow: hidden; }
button, input { font: inherit; }
button { color: inherit; }
button:focus-visible, input:focus-visible { outline: 3px solid rgba(255,159,28,.35); outline-offset: 2px; }

.app-shell { min-height: 100vh; display: flex; flex-direction: column; }
.topbar { height: 74px; flex: 0 0 74px; display: grid; grid-template-columns: 340px 1fr auto; align-items: center; padding: 0 30px; background: var(--navy); color: white; border-bottom: 1px solid rgba(255,255,255,.08); }
.brand { display: inline-flex; align-items: center; gap: 12px; color: white; text-decoration: none; font-size: 20px; letter-spacing: -.02em; }
.brand strong { font-weight: 700; }
.brand-mark { width: 33px; height: 33px; display: flex; gap: 3px; align-items: flex-end; padding: 7px; background: var(--accent); border-radius: 8px 8px 8px 2px; }
.brand-mark i { width: 4px; display: block; background: var(--navy); border-radius: 4px 4px 0 0; }
.brand-mark i:nth-child(1) { height: 10px; }.brand-mark i:nth-child(2) { height: 17px; }.brand-mark i:nth-child(3) { height: 13px; }
.header-copy { justify-self: center; text-align: center; line-height: 1; }
.header-copy .eyebrow { font-size: 9px; letter-spacing: .2em; color: #7fa3ac; font-weight: 700; }
.header-copy p { margin: 7px 0 0; font-size: 14px; font-weight: 600; letter-spacing: .04em; }
.header-meta { display: flex; align-items: center; gap: 9px; font-size: 12px; color: #abc0c7; }
.live-dot { width: 7px; height: 7px; background: #5ed2a0; border-radius: 50%; box-shadow: 0 0 0 4px rgba(94,210,160,.12); }
.info-button { border: 1px solid rgba(255,255,255,.24); background: transparent; color: white; width: 25px; height: 25px; border-radius: 50%; cursor: pointer; }

.workspace { flex: 1; min-height: 0; display: grid; grid-template-columns: 380px 1fr; }
.sidebar { display: flex; min-height: 0; flex-direction: column; padding: 31px 26px 20px; background: #fbfcfa; border-right: 1px solid var(--line); position: relative; z-index: 4; }
.kicker, .map-label { margin: 0 0 10px; color: var(--teal); font-size: 10px; font-weight: 700; letter-spacing: .18em; }
.title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; }
.sidebar h1 { margin: 0; font-size: 30px; line-height: 1.12; letter-spacing: -.04em; }
.sidebar h1 em { color: var(--accent-dark); font-style: normal; }
.count-badge { display: grid; place-items: center; min-width: 36px; height: 36px; padding: 0 8px; border-radius: 50%; background: var(--navy); color: white; font-size: 12px; font-weight: 700; }
.sidebar-intro > p:last-child { margin: 14px 0 22px; color: var(--muted); font-size: 13px; line-height: 1.6; }
.search-wrap { display: flex; align-items: center; height: 46px; padding: 0 12px; background: white; border: 1px solid var(--line); border-radius: 8px; box-shadow: 0 4px 16px rgba(18,48,60,.04); }
.search-wrap svg { width: 18px; fill: none; stroke: var(--muted); stroke-width: 1.7; }
.search-wrap input { width: 100%; min-width: 0; border: 0; outline: 0; padding: 0 10px; background: transparent; color: var(--ink); font-size: 13px; }
.search-wrap input::placeholder { color: #94a3aa; }
.search-wrap kbd { padding: 3px 6px; border: 1px solid var(--line); border-radius: 4px; color: #8b999f; background: var(--paper); font-size: 10px; white-space: nowrap; }
.filter-scroll { display: flex; gap: 7px; overflow-x: auto; padding: 15px 0 14px; scrollbar-width: none; }
.filter-scroll::-webkit-scrollbar { display: none; }
.filter-chip { border: 1px solid var(--line); background: transparent; border-radius: 999px; padding: 6px 11px; font-size: 11px; color: var(--ink-2); cursor: pointer; white-space: nowrap; transition: .2s; }
.filter-chip:hover { border-color: #a8b8ba; }
.filter-chip.active { color: white; background: var(--teal); border-color: var(--teal); }
.warehouse-list { flex: 1; min-height: 120px; overflow-y: auto; margin: 0 -10px 0 0; padding-right: 10px; scrollbar-color: #ccd7d6 transparent; scrollbar-width: thin; }
.warehouse-card { width: 100%; display: grid; grid-template-columns: 42px 1fr auto; gap: 11px; align-items: center; text-align: left; border: 0; border-top: 1px solid var(--line); padding: 14px 7px; background: transparent; cursor: pointer; transition: .2s; }
.warehouse-card:hover, .warehouse-card.selected { background: white; box-shadow: 0 5px 18px rgba(13,45,58,.06); border-radius: 7px; border-color: transparent; transform: translateX(3px); }
.code-box { display: grid; place-items: center; width: 42px; height: 42px; background: var(--soft); color: var(--teal); border-radius: 6px; font-weight: 700; font-size: 11px; }
.selected .code-box { color: var(--navy); background: var(--accent); }
.warehouse-main { min-width: 0; }
.warehouse-main strong { display: block; font-size: 13px; color: var(--ink); }
.warehouse-main span { display: block; margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); font-size: 11px; }
.card-state { color: #829299; font-size: 10px; font-weight: 700; letter-spacing: .08em; }
.empty-state { padding: 30px 12px; text-align: center; color: var(--muted); font-size: 13px; line-height: 1.6; }
.sidebar-note { display: flex; gap: 10px; margin-top: 14px; padding: 11px 12px; border-radius: 6px; background: #fff5e7; color: #795b2c; }
.sidebar-note > span { flex: 0 0 auto; display: grid; place-items: center; width: 19px; height: 19px; background: var(--accent); color: var(--navy); border-radius: 50%; font-size: 11px; font-weight: 700; }
.sidebar-note p { margin: 0; font-size: 10px; line-height: 1.55; }.sidebar-note strong { display: block; color: #5b4320; }

.map-panel { min-width: 0; min-height: 0; display: flex; flex-direction: column; background: #f2f5f3; }
.map-toolbar { height: 82px; flex: 0 0 82px; display: flex; justify-content: space-between; align-items: center; padding: 0 30px; background: rgba(247,249,247,.9); border-bottom: 1px solid var(--line); }
.map-toolbar .map-label { display: block; margin-bottom: 4px; color: #829299; }
.map-toolbar h2 { margin: 0; font-size: 18px; letter-spacing: -.02em; }
.map-actions { display: flex; gap: 8px; }.soft-button, .icon-button { display: inline-flex; align-items: center; gap: 7px; height: 34px; border: 1px solid var(--line); background: white; border-radius: 6px; padding: 0 11px; color: var(--ink-2); font-size: 11px; cursor: pointer; }.soft-button svg, .icon-button svg { width: 14px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.mobile-only { display: none; }
.map-canvas { flex: 1; min-height: 0; overflow: hidden; position: relative; background: #edf2f0; }
.grid-overlay { position: absolute; inset: 0; opacity: .35; background-image: linear-gradient(rgba(28,65,76,.08) 1px, transparent 1px),linear-gradient(90deg, rgba(28,65,76,.08) 1px, transparent 1px); background-size: 42px 42px; mask-image: radial-gradient(circle at center, black, transparent 90%); }
.map-stage { position: absolute; width: min(900px, 86%); aspect-ratio: 1000/610; left: 50%; top: 50%; transform: translate(-50%,-50%) scale(1); transform-origin: center; transition: transform .35s ease; }
.usa-map { width: 100%; height: 100%; overflow: visible; }
.land { fill: url(#land); stroke: #bdcbca; stroke-width: 2; }
.state-lines path { fill: none; stroke: #cbd6d5; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.region-labels { fill: #aebcba; font-size: 17px; font-weight: 700; letter-spacing: .2em; opacity: .55; }
.pins-layer { position: absolute; inset: 0; }
.pin { position: absolute; transform: translate(-50%, -100%); display: grid; place-items: center; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 50% 50% 50% 0; background: var(--navy); box-shadow: 0 5px 12px rgba(10,35,53,.24); rotate: -45deg; cursor: pointer; transition: transform .2s, background .2s; z-index: 2; }
.pin::after { content: ""; width: 7px; height: 7px; background: white; border-radius: 50%; }
.pin:hover { transform: translate(-50%, -100%) scale(1.17); }
.pin.active { background: var(--accent); transform: translate(-50%, -100%) scale(1.3); z-index: 4; }
.pin::before { content: attr(data-code); position: absolute; rotate: 45deg; left: 28px; top: -10px; padding: 3px 5px; background: rgba(255,255,255,.92); color: var(--ink); border: 1px solid var(--line); border-radius: 3px; box-shadow: 0 3px 10px rgba(10,35,53,.08); font-size: 8px; font-weight: 700; letter-spacing: .03em; opacity: 0; pointer-events: none; transition: opacity .2s; }
.pin:hover::before, .pin.active::before { opacity: 1; }
.pin.hidden { display: none; }
.map-legend { position: absolute; left: 24px; bottom: 21px; display: flex; gap: 18px; padding: 9px 12px; border: 1px solid rgba(207,219,217,.9); background: rgba(255,255,255,.82); backdrop-filter: blur(8px); border-radius: 5px; color: var(--muted); font-size: 9px; font-weight: 600; }
.map-legend span { display: flex; align-items: center; gap: 6px; }.legend-pin { width: 8px; height: 8px; border-radius: 50%; background: var(--navy); }.legend-pin.active { background: var(--accent); }
.zoom-control { position: absolute; right: 24px; bottom: 21px; display: flex; flex-direction: column; align-items: center; padding: 5px; background: white; border: 1px solid var(--line); border-radius: 6px; box-shadow: 0 7px 20px rgba(10,35,53,.08); }
.zoom-control button { width: 27px; height: 27px; border: 0; background: white; font-size: 18px; line-height: 1; cursor: pointer; }.zoom-control span { width: 16px; height: 1px; background: var(--line); }
.coordinates { position: absolute; top: 17px; right: 23px; color: #8b9c9f; font-size: 8px; letter-spacing: .12em; }
.map-footer { height: 58px; flex: 0 0 58px; display: flex; align-items: center; padding: 0 30px; background: white; border-top: 1px solid var(--line); }
.metric { display: flex; align-items: baseline; gap: 7px; padding-right: 24px; margin-right: 24px; border-right: 1px solid var(--line); }.metric strong { font-size: 17px; }.metric span { color: var(--muted); font-size: 9px; }.map-footer > p { margin-left: auto; color: #94a2a6; font-size: 9px; }

.drawer-backdrop { position: fixed; inset: 74px 0 0; z-index: 9; background: rgba(8,30,44,.35); backdrop-filter: blur(2px); opacity: 0; pointer-events: none; transition: .3s; }
.drawer-backdrop.open { opacity: 1; pointer-events: auto; }
.detail-drawer { position: fixed; z-index: 10; right: 0; top: 74px; bottom: 0; width: min(460px, 100vw); overflow-y: auto; background: white; box-shadow: -20px 0 50px rgba(10,34,48,.18); transform: translateX(105%); transition: transform .35s cubic-bezier(.22,.75,.22,1); }
.detail-drawer.open { transform: translateX(0); }
.drawer-close { position: absolute; right: 20px; top: 18px; z-index: 2; width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.3); color: white; background: rgba(9,31,46,.26); border-radius: 50%; font-size: 21px; cursor: pointer; }
.detail-hero { position: relative; min-height: 215px; padding: 35px 34px 29px; color: white; background: var(--navy); overflow: hidden; }
.detail-hero::after { content:""; position:absolute; width:270px; height:270px; border:45px solid rgba(255,255,255,.05); border-radius:50%; right:-90px; bottom:-140px; }
.detail-hero .detail-region { color: #83a9ae; font-size: 9px; font-weight: 700; letter-spacing: .18em; }
.detail-code { display: inline-grid; place-items: center; min-width: 58px; height: 29px; margin: 18px 0 12px; padding: 0 11px; color: var(--navy); background: var(--accent); border-radius: 4px; font-size: 12px; font-weight: 700; }
.detail-hero h2 { margin: 0 0 8px; font-size: 27px; letter-spacing: -.04em; }.detail-hero p { max-width: 315px; margin: 0; color: #c4d3d8; font-size: 12px; }
.detail-body { padding: 28px 34px 42px; }
.detail-section { margin-bottom: 28px; }.section-heading { display: flex; align-items: center; gap: 9px; margin: 0 0 13px; font-size: 11px; font-weight: 700; letter-spacing: .08em; }.section-heading::before { content:""; width: 18px; height: 3px; background: var(--accent); }
.address-card { display: flex; gap: 13px; padding: 16px; background: var(--soft); border-radius: 7px; }.address-icon { flex: 0 0 auto; width: 30px; height: 30px; display: grid; place-items: center; color: var(--teal); background: white; border-radius: 50%; }.address-icon svg { width: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; }.address-card strong { display:block; margin-bottom:3px; font-size:13px; }.address-card p { margin:0; color:var(--muted); font-size:11px; line-height:1.55; }
.hours-grid { border: 1px solid var(--line); border-radius: 7px; overflow: hidden; }.hours-row { display:grid; grid-template-columns: 1fr 1.35fr; padding: 11px 14px; border-bottom:1px solid var(--line); font-size:11px; }.hours-row:last-child { border:0; }.hours-row span { color:var(--muted); }.hours-row strong { font-weight:600; }.status-open { color:#167b60; }
.detail-description { margin: 0; color: var(--ink-2); font-size: 12px; line-height: 1.75; }
.feature-grid { display:grid; grid-template-columns:1fr 1fr; gap:9px; }.feature { padding:12px; background:#fafbf9; border:1px solid var(--line); border-radius:6px; }.feature span { display:block; color:var(--teal); font-size:9px; font-weight:700; letter-spacing:.08em; }.feature strong { display:block; margin-top:4px; font-size:11px; }
.detail-caution { padding: 13px 14px; color: #765620; background:#fff5e7; border-left:3px solid var(--accent); font-size:10px; line-height:1.6; }
.directions { display:flex; justify-content:center; align-items:center; width:100%; height:44px; border:0; border-radius:6px; color:white; background:var(--teal); font-size:12px; font-weight:700; text-decoration:none; transition:.2s; }.directions:hover { background:#095b5c; transform:translateY(-1px); }

.info-modal { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 20px; background: rgba(7,25,38,.62); backdrop-filter: blur(4px); }.info-modal[hidden] { display:none; }.info-card { position:relative; width:min(480px,100%); padding:34px; background:white; border-radius:12px; box-shadow:var(--shadow); }.info-card > button:first-child { position:absolute; top:15px; right:15px; border:0; background:transparent; font-size:23px; cursor:pointer; }.modal-icon { display:grid; place-items:center; width:38px; height:38px; margin-bottom:16px; background:var(--accent); border-radius:50%; font-weight:700; }.info-card h2 { margin:0 0 13px; font-size:22px; }.info-card p { color:var(--ink-2); font-size:12px; line-height:1.75; }.primary-button { width:100%; height:42px; margin-top:9px; border:0; border-radius:6px; color:white; background:var(--navy); cursor:pointer; }

@media (max-width: 920px) {
  body { overflow:auto; }.app-shell { min-height:100svh; }.topbar { position:sticky; top:0; z-index:8; height:64px; grid-template-columns:1fr auto; padding:0 18px; }.header-copy { display:none; }.header-meta > span:not(.live-dot) { display:none; }
  .workspace { display:block; }.sidebar { position:fixed; inset:64px auto 0 0; width:min(360px,88vw); transform:translateX(-105%); transition:.3s; box-shadow:var(--shadow); }.sidebar.open { transform:translateX(0); }.map-panel { height:calc(100svh - 64px); }.map-toolbar { height:72px; padding:0 18px; }.map-toolbar h2 { font-size:16px; }.mobile-only { display:inline-flex; }.map-canvas { min-height:400px; }.map-stage { width:108%; }.map-footer { padding:0 16px; }.metric { margin-right:12px; padding-right:12px; }.map-footer > p { display:none; }.detail-drawer { top:64px; }.drawer-backdrop { inset:64px 0 0; }
}
@media (max-width: 560px) {
  .brand { font-size:17px; }.brand-mark { width:29px; height:29px; padding:6px; }.soft-button { display:none; }.map-toolbar { height:67px; }.map-stage { width:125%; top:47%; }.region-labels { display:none; }.map-legend { left:12px; bottom:14px; gap:10px; }.zoom-control { right:12px; bottom:14px; }.coordinates { display:none; }.map-footer { height:54px; }.metric:nth-child(3) { display:none; }.detail-body { padding:25px 22px 38px; }.detail-hero { padding-left:22px; }.feature-grid { grid-template-columns:1fr; }
}
