/* Patchwork v2 — Slate design system (tokens extracted from st-atlas-crm / slatemeet, Jul 3 2026) */
:root{
  --paper:#FAF9F7; --surface:#FFFFFF; --surface-sunk:#F2F0EC;
  --ink:#1C1C1C; --ink-muted:#5C5853;
  --slate-50:#F2F0EC; --slate-100:#E8E4DF; --slate-200:#D9D3CB;
  --slate-400:#A8A29A; --slate-600:#6B6660; --slate-800:#1C1C1C;
  --border:#ECE8E2; --border-strong:#DDD7CE;
  --accent:#5B5BD6; --accent-soft:#8A8AE6; --accent-wash:#ECECFB;
  --positive:#2F9E83; --caution:#C2922E; --negative:#D2645F; --info:#5B5BD6;
  --r-sm:8px; --r-md:12px; --r-lg:20px; --r-xl:28px; --r-pill:100px;
  --shadow-sm:0 1px 2px rgba(28,28,28,.04),0 1px 3px rgba(28,28,28,.04);
  --shadow-md:0 6px 18px rgba(28,28,28,.06),0 2px 5px rgba(28,28,28,.05);
  --shadow-lg:0 16px 40px rgba(28,28,28,.1);
  --font-body:"DM Sans",system-ui,-apple-system,sans-serif;
  --text-hero:clamp(2.25rem,4.5vw,3.75rem); --text-h1:clamp(1.5rem,2.6vw,2.1rem);
  --text-h2:1.375rem; --text-h3:1.125rem; --text-body:.9375rem; --text-sm:.8125rem; --text-micro:.6875rem;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--text-body);line-height:1.5;-webkit-font-smoothing:antialiased}
button{font-family:inherit;cursor:pointer}
input,select{font-family:inherit;font-size:var(--text-sm)}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

.micro{font-size:var(--text-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);font-weight:600}

/* ---------- gate ---------- */
.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.gate-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);padding:40px 36px;max-width:400px;width:100%}
.gate-card h1{font-size:var(--text-h2);margin:0 0 4px}
.gate-card p{color:var(--ink-muted);font-size:var(--text-sm);margin:0 0 20px}
.gate-card input{width:100%;padding:11px 14px;border:1px solid var(--border-strong);border-radius:var(--r-md);font-size:var(--text-body);margin-bottom:10px;background:var(--paper)}
.gate-card input:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}
.gate-err{color:var(--negative);font-size:var(--text-sm);margin:2px 0 10px}
.gate-divider{display:flex;align-items:center;gap:10px;margin:18px 0;color:var(--slate-400);font-size:var(--text-micro);text-transform:uppercase;letter-spacing:.08em}
.gate-divider::before,.gate-divider::after{content:"";flex:1;height:1px;background:var(--border)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--r-pill);padding:11px 22px;font-size:var(--text-sm);font-weight:600;transition:all .15s}
.btn-ink{background:var(--ink);color:#fff;width:100%}
.btn-ink:hover{background:#000}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--border-strong)}
.btn-ghost:hover{background:var(--surface-sunk)}
.btn:disabled{opacity:.5;cursor:default}

/* ---------- header ---------- */
.hdr{position:sticky;top:0;z-index:40;background:rgba(250,249,247,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}
.hdr-inner{max-width:1440px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.wordmark{font-weight:700;font-size:1.05rem;letter-spacing:-.01em;white-space:nowrap}
.wordmark .amp{color:var(--accent)}
.wordmark small{display:block;font-size:var(--text-micro);font-weight:600;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.12em}
.pills{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:0}
.pill{display:inline-flex;align-items:center;gap:5px;border-radius:var(--r-pill);padding:3px 10px;font-size:var(--text-micro);font-weight:600;letter-spacing:.02em;white-space:nowrap}
.pill .dot{width:6px;height:6px;border-radius:50%}
.pill-ok{background:#E7F4EF;color:var(--positive)}.pill-ok .dot{background:var(--positive)}
.pill-warn{background:#F8F0DE;color:var(--caution)}.pill-warn .dot{background:var(--caution)}
.pill-bad{background:#FBEAE8;color:var(--negative)}.pill-bad .dot{background:var(--negative)}
.hdr-actions{display:flex;align-items:center;gap:10px;margin-left:auto}
.toggle{display:inline-flex;align-items:center;gap:7px;font-size:var(--text-sm);color:var(--ink-muted);cursor:pointer;user-select:none;white-space:nowrap}
.switch{width:34px;height:20px;border-radius:var(--r-pill);background:var(--slate-200);position:relative;transition:background .15s;flex:none}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:left .15s}
.toggle.on .switch{background:var(--positive)}
.toggle.on .switch::after{left:16px}
.count{font-size:var(--text-sm);color:var(--ink-muted);white-space:nowrap}

/* ---------- compliance ribbon ---------- */
.ribbon{background:#FDF6E7;border-bottom:1px solid #F0E3C4;padding:8px 20px;font-size:var(--text-sm);color:#7A5D1E;display:flex;gap:12px;align-items:flex-start;justify-content:center}
.ribbon b{font-weight:700}
.ribbon button{background:none;border:none;color:#7A5D1E;font-size:1rem;line-height:1;padding:0 2px;flex:none}

/* ---------- layout ---------- */
.layout{max-width:1440px;margin:0 auto;padding:20px;display:grid;grid-template-columns:280px 1fr;gap:22px;align-items:start}
/* a grid track sizes to its widest child by default; the swipeable quickbar
   would stretch it past the phone and Safari zooms the page out to fit */
.layout > main{min-width:0}
@media (max-width:900px){.layout{grid-template-columns:1fr;padding:14px}}

/* ---------- filter rail ---------- */
.rail{position:sticky;top:64px;max-height:calc(100vh - 80px);overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow-sm)}
@media (max-width:900px){
  .rail{position:fixed;inset:auto 0 0 0;top:auto;max-height:82vh;z-index:60;border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow-lg);transform:translateY(105%);transition:transform .25s}
  .rail.open{transform:translateY(0)}
  .rail-scrim{position:fixed;inset:0;background:rgba(28,28,28,.35);z-index:55}
}
.rail h3{font-size:var(--text-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);margin:18px 0 8px;font-weight:700}
.rail h3:first-child{margin-top:0}
.rail-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}
.rail-head h3{margin:0}
.rail-reset{border:0;background:none;padding:0;font-size:var(--text-micro);font-weight:700;color:var(--accent);cursor:pointer}
.rail-reset:hover{text-decoration:underline}
.search-box{width:100%;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--paper);font-size:var(--text-sm)}
.search-box:focus{outline:2px solid var(--accent-soft)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--r-pill);padding:4px 11px;font-size:var(--text-micro);font-weight:600;color:var(--ink-muted);transition:all .12s}
.chip:hover{border-color:var(--slate-400)}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.chip.dim{opacity:.38;pointer-events:none}
.chip.on.dim{opacity:1;pointer-events:auto}
.range-row{display:flex;gap:8px;align-items:center}
.range-row input{width:100%;padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--paper)}
.range-row span{color:var(--slate-400)}
select.sel{width:100%;padding:9px 10px;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--paper)}
.slider-row{display:flex;align-items:center;gap:10px}
.slider-row input[type=range]{flex:1;accent-color:var(--accent)}
.slider-val{font-size:var(--text-sm);font-weight:600;min-width:44px;text-align:right}
.check-row{display:flex;align-items:center;gap:8px;font-size:var(--text-sm);color:var(--ink-muted);margin:6px 0;cursor:pointer}
.check-row input{accent-color:var(--accent)}
.rail-clear{width:100%;margin-top:16px}
.year-rule{display:flex;align-items:center;gap:8px;margin:10px 0 7px;color:var(--slate-400);font-size:var(--text-micro);font-weight:700;letter-spacing:.08em}
.year-rule::after{content:"";flex:1;height:1px;background:var(--border-strong)}
.filter-fab{display:none}
@media (max-width:900px){
  .filter-fab{display:flex;position:fixed;bottom:18px;right:18px;z-index:50;background:var(--ink);color:#fff;border:none;border-radius:var(--r-pill);padding:13px 22px;font-weight:700;font-size:var(--text-sm);box-shadow:var(--shadow-lg);align-items:center;gap:8px}
  .filter-fab .badge{background:var(--accent);border-radius:var(--r-pill);padding:1px 8px;font-size:var(--text-micro)}
}

/* ---------- results ---------- */
.results-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.results-head .n{font-weight:700;font-size:var(--text-h3)}
.sort-wrap{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:var(--text-sm);color:var(--ink-muted)}
.sort-wrap select{padding:7px 10px;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface)}
.dl-all{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin:10px 0 4px;background:var(--accent);border:1px solid var(--accent);color:#fff;border-radius:var(--r-md);padding:10px 12px;font-size:var(--text-sm);font-weight:700;cursor:pointer;white-space:nowrap}
.dl-all:hover{background:var(--accent-soft);border-color:var(--accent-soft)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
@media (max-width:640px){.grid{grid-template-columns:1fr}}

/* ---------- card ---------- */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:16px;display:flex;flex-direction:column;gap:10px;transition:box-shadow .15s,transform .15s;cursor:pointer;position:relative}
.card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.card.multi-src{border-left:3px solid var(--caution)}
.card-top{display:flex;align-items:flex-start;gap:8px}
.card-brand{font-weight:700;font-size:var(--text-sm)}
.card-ship{color:var(--ink-muted);font-size:var(--text-sm)}
.src-chips{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.src-chip{border-radius:var(--r-sm);padding:2px 7px;font-size:.625rem;font-weight:700;letter-spacing:.04em;background:var(--surface-sunk);color:var(--slate-600);white-space:nowrap}
.card-name{font-size:var(--text-h3);font-weight:600;line-height:1.3;letter-spacing:-.01em}
.card-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:var(--text-sm);color:var(--ink-muted)}
.card-meta .sep{color:var(--slate-200)}
.card-ports{font-size:var(--text-sm);color:var(--ink-muted)}
.card-ports .more{color:var(--accent);font-weight:600}
.price-block{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-top:auto}
.price{font-size:1.35rem;font-weight:700;letter-spacing:-.02em}
.price small{font-size:var(--text-micro);font-weight:600;color:var(--ink-muted);letter-spacing:0;text-transform:none}
.price-cat{font-size:var(--text-micro);color:var(--ink-muted)}
.retail-strike{color:var(--slate-400);text-decoration:line-through;font-size:var(--text-sm)}
.disc-pill{background:var(--accent-wash);color:var(--accent);border-radius:var(--r-pill);padding:2px 9px;font-size:var(--text-micro);font-weight:700}
.ror{color:var(--ink-muted);font-size:var(--text-sm);font-style:italic}
.comm-line{display:flex;align-items:center;gap:7px;font-size:var(--text-sm);font-weight:600;color:var(--positive)}
.comm-line.unset{color:var(--slate-400);font-weight:500;font-style:italic}
.solo-line{font-size:var(--text-sm);font-weight:600;color:var(--accent)}
.solo-combo{color:var(--ink-muted);font-weight:500}
.ncf-tag{background:var(--negative);color:#fff;border-radius:4px;padding:1px 6px;font-size:.625rem;font-weight:800;letter-spacing:.06em}
.amenity-chips{display:flex;gap:5px;flex-wrap:wrap}
.amenity-chip{background:#E7F4EF;color:var(--positive);border-radius:var(--r-pill);padding:2px 9px;font-size:var(--text-micro);font-weight:600}
.badge-flag{background:var(--surface-sunk);color:var(--slate-600);border-radius:4px;padding:1px 6px;font-size:.625rem;font-weight:700;letter-spacing:.04em}
.card-foot{display:flex;align-items:center;gap:8px;border-top:1px solid var(--border);padding-top:10px;font-size:var(--text-micro);color:var(--slate-400)}
.card-actions{margin-left:auto;display:flex;align-items:center;gap:6px}
.card-foot .book{margin-left:auto;background:var(--ink);color:#fff;border:none;border-radius:var(--r-pill);padding:6px 14px;font-size:var(--text-micro);font-weight:700}
.card-actions .book{margin-left:0;text-decoration:none;line-height:1.2}
.card-foot .book:hover{background:#000}
.card-foot .book.ghost{background:transparent;color:var(--ink);border:1px solid var(--border-strong)}

/* ---------- pagination ---------- */
.pager{display:flex;align-items:center;justify-content:center;gap:6px;margin:22px 0}
.pager button{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--r-md);padding:7px 13px;font-size:var(--text-sm);font-weight:600;color:var(--ink-muted)}
.pager button.cur{background:var(--ink);color:#fff;border-color:var(--ink)}
.pager button:disabled{opacity:.4}

/* ---------- drawer ---------- */
.drawer-scrim{position:fixed;inset:0;background:rgba(28,28,28,.4);z-index:70;animation:fadeIn .15s}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:var(--surface);z-index:75;box-shadow:var(--shadow-lg);overflow-y:auto;animation:slideIn .2s ease-out}
@keyframes slideIn{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.drawer-inner{padding:26px 28px 40px}
.drawer-close{position:sticky;top:14px;float:right;background:var(--surface-sunk);border:none;border-radius:50%;width:34px;height:34px;font-size:1rem;color:var(--ink-muted);z-index:2}
.drawer h2{font-size:var(--text-h2);margin:4px 0 2px;letter-spacing:-.01em}
.drawer .sub{color:var(--ink-muted);font-size:var(--text-sm);margin-bottom:16px}
.drawer h4{font-size:var(--text-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);margin:22px 0 8px}
.rate-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
.rate-table th{text-align:left;font-size:var(--text-micro);text-transform:uppercase;letter-spacing:.06em;color:var(--slate-400);padding:6px 8px;border-bottom:1px solid var(--border)}
.rate-table td{padding:7px 8px;border-bottom:1px solid var(--border)}
.rate-table td:last-child,.rate-table th:last-child{text-align:right}
.port-list{list-style:none;margin:0;padding:0}
.port-list li{padding:5px 0 5px 18px;position:relative;font-size:var(--text-sm)}
.port-list li::before{content:"";position:absolute;left:4px;top:12px;width:7px;height:7px;border-radius:50%;background:var(--accent-soft)}
.port-list li::after{content:"";position:absolute;left:7px;top:19px;bottom:-7px;width:1px;background:var(--slate-200)}
.port-list li:last-child::after{display:none}
.compliance-note{background:#FDF6E7;border:1px solid #F0E3C4;border-radius:var(--r-md);padding:10px 13px;font-size:var(--text-sm);color:#7A5D1E;margin:6px 0}
.copy-box{background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--r-md);padding:12px;font-size:var(--text-sm);white-space:pre-wrap;color:var(--ink-muted);max-height:200px;overflow-y:auto}
.drawer-actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}

/* ---------- states / footer ---------- */
.state{padding:70px 20px;text-align:center;color:var(--ink-muted)}
.state h2{color:var(--ink);font-size:var(--text-h2);margin-bottom:6px}
.spin{width:28px;height:28px;border:3px solid var(--slate-200);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 16px}
@keyframes spin{to{transform:rotate(360deg)}}
.foot{max-width:1440px;margin:0 auto;padding:18px 20px 34px;border-top:1px solid var(--border);font-size:var(--text-micro);color:var(--slate-400);display:flex;gap:14px;flex-wrap:wrap}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;border-radius:var(--r-pill);padding:10px 20px;font-size:var(--text-sm);font-weight:600;z-index:90;box-shadow:var(--shadow-lg);animation:fadeIn .15s}

/* ---------- importer ---------- */
.import-btn{background:transparent;border:1px solid var(--border-strong);border-radius:var(--r-pill);padding:6px 14px;font-size:var(--text-micro);font-weight:700;color:var(--ink);cursor:pointer}
.import-btn:hover{background:var(--surface-sunk)}
.import-steps{display:flex;gap:6px;margin:6px 0 16px;flex-wrap:wrap}
.import-step{font-size:var(--text-micro);font-weight:600;color:var(--slate-400);border:1px solid var(--border);border-radius:var(--r-pill);padding:3px 10px}
.import-step.on{color:#fff;background:var(--ink);border-color:var(--ink)}
.import-auth form{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.import-auth input{padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--r-md);font-size:var(--text-sm)}
.import-err{background:#FBEBEB;border:1px solid #EFC9C9;border-radius:var(--r-md);padding:9px 12px;font-size:var(--text-sm);color:#8A2E2E;margin:8px 0}
.import-explain{border:1px solid var(--border);border-radius:var(--r-md);padding:9px 12px;margin:8px 0;font-size:var(--text-sm)}
.import-explain>summary{cursor:pointer;font-weight:600}
.import-explain-text{width:100%;box-sizing:border-box;font:inherit;padding:8px;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);border-radius:var(--r-md);resize:vertical}
.import-note{background:#E9F0FB;border:1px solid #CBDCF5;border-radius:var(--r-md);padding:9px 12px;font-size:var(--text-sm);color:#2E4E8A;margin:8px 0}
.import-radio{display:flex;gap:9px;align-items:flex-start;padding:8px 4px;font-size:var(--text-sm);cursor:pointer}
.import-radio input{margin-top:3px}
.import-radio small{color:var(--ink-muted)}
.import-drop{margin-top:16px;border:2px dashed var(--border-strong);border-radius:var(--r-lg);padding:38px 20px;text-align:center;font-size:var(--text-sm);font-weight:600;color:var(--ink-muted);cursor:pointer;transition:all .15s}
.import-drop small{font-weight:400;color:var(--slate-400)}
.import-drop.drag,.import-drop:hover{border-color:var(--accent);background:#F4F4FD;color:var(--ink)}
.import-block{background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--r-md);padding:11px 13px;font-size:var(--text-sm)}
.import-block small{display:block;margin-top:7px;color:var(--ink-muted)}
.import-cats{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}
.import-cat{background:#fff;border:1px solid var(--border-strong);border-radius:4px;padding:1px 7px;font-size:.6875rem;font-weight:700;font-variant-numeric:tabular-nums}
.import-mapping{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto;padding-right:4px}
.import-map-row{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:8px;align-items:center}
.import-map-col{font-size:var(--text-sm);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.import-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-md);margin-top:8px}
.import-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
.import-table th{text-align:left;font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);padding:7px 10px;border-bottom:1px solid var(--border);background:var(--surface-sunk)}
.import-table td{padding:6px 10px;border-bottom:1px solid var(--border)}
.import-table tr:last-child td{border-bottom:none}
.import-counts{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.import-count{border-radius:var(--r-pill);padding:5px 13px;font-size:var(--text-sm);font-weight:700;background:var(--surface-sunk);color:var(--ink-muted)}
.import-count.add{background:#E7F4EF;color:var(--positive)}
.import-count.upd{background:#E9F0FB;color:#2E4E8A}
.import-count.stale{background:#FBEBEB;color:#8A2E2E}
.import-flags{background:#FBEBEB;border:1px solid #EFC9C9;border-radius:var(--r-md);padding:11px 13px;font-size:var(--text-sm);color:#8A2E2E;margin:10px 0}
.import-stales{margin:10px 0;font-size:var(--text-sm)}
.import-stales summary{font-weight:600;cursor:pointer}
.import-stales ul{margin:8px 0 0 18px;color:var(--ink-muted);max-height:180px;overflow-y:auto}

/* ---------- reimagined import: drop-first + "here's what I found" ---------- */
.import-drop-lg{padding:52px 24px;display:flex;flex-direction:column;align-items:center;gap:6px}
.import-drop-glyph{font-size:34px;line-height:1;width:60px;height:60px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--accent-wash);color:var(--accent);margin-bottom:6px}
.import-drop-lg b{font-size:var(--text-body);color:var(--ink)}
.import-advanced{margin-top:16px;font-size:var(--text-sm)}
.import-advanced summary{cursor:pointer;color:var(--ink-muted);font-weight:600;padding:6px 0}
.import-advanced summary:hover{color:var(--ink)}
.import-advanced .sel{margin-top:8px}

/* the identification card */
.import-read{border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm);padding:16px 18px;margin-bottom:14px}
.import-read.conf-high{border-left-color:var(--positive)}
.import-read.conf-med{border-left-color:var(--caution)}
.import-read.conf-low{border-left-color:var(--negative)}
.import-read-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.import-read-title{font-size:var(--text-h3);margin:2px 0 0;color:var(--ink);line-height:1.25}
.import-conf{flex:none;border-radius:var(--r-pill);padding:4px 11px;font-size:var(--text-micro);font-weight:700;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.import-conf.conf-high{background:#E7F4EF;color:var(--positive)}
.import-conf.conf-med{background:#F7EFD9;color:var(--caution)}
.import-conf.conf-low{background:#FBEBEB;color:var(--negative)}
.import-chips{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0 2px}
.import-chip{background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--r-pill);padding:4px 11px;font-size:var(--text-sm);font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.import-chip.warn{background:#F7EFD9;border-color:#E7D6A8;color:var(--caution)}
.import-read-source{margin-top:12px;font-size:var(--text-sm);color:var(--ink)}
.import-read-fit{margin-top:6px}
.import-read-pick{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:8px;align-items:center;margin-top:12px}
.import-read-cols{margin:12px 0}
.import-readmap{display:flex;flex-wrap:wrap;gap:5px 7px;margin-top:6px}
.import-readmap-row{background:var(--surface-sunk);border:1px solid var(--border);border-radius:6px;padding:3px 9px;font-size:var(--text-sm);color:var(--ink-muted)}
.import-readmap-row b{color:var(--ink);font-weight:600}

/* ============================================================================
   Groups Center — group-held sailings. Orange group accent, distinct from the
   gold caution and red alert tokens so "held" never reads as an error.
   ============================================================================ */
:root{
  --group:#C25E00; --group-bright:#E0730B; --group-wash:#FBEAD9; --group-ink:#8A4300;
}

/* header view switch (Search / Groups Center) */
.viewswitch{display:inline-flex;background:var(--surface-sunk);border-radius:var(--r-pill);padding:3px;flex:none}
.viewswitch button{border:none;background:transparent;color:var(--ink-muted);padding:6px 14px;border-radius:var(--r-pill);font-size:var(--text-sm);font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.viewswitch button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}
.viewswitch .vs-dot{width:15px;height:15px;border-radius:5px;background:var(--group);display:inline-grid;place-items:center;color:#fff;font-size:.55rem;font-weight:800}

/* held card + flip */
.flip{background:transparent;border:none;box-shadow:none;padding:0;cursor:pointer;perspective:1400px;text-align:inherit;font:inherit}
.flip:focus-visible{outline:2px solid var(--group);outline-offset:3px;border-radius:var(--r-lg)}
/* faces are absolutely stacked; the container's height is set by JS to the
   FACE currently showing, so the front never inherits the taller back face's
   height (no dead gap) and the back is never clipped. */
.flip-inner{position:relative;transition:transform .55s cubic-bezier(.2,.7,.2,1),height .35s ease;transform-style:preserve-3d}
.flip.flipped .flip-inner{transform:rotateY(180deg)}
.flip .face{position:absolute;top:0;left:0;width:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.flip .face-back{transform:rotateY(180deg)}
.flip .card{height:auto;cursor:pointer}
.held-ring{border-color:var(--group-wash);box-shadow:0 0 0 1px var(--group-wash),var(--shadow-sm)}
/* the veil-over sits in normal flow so it defines the veil's height (never
   clipped); the blurred ghost is an absolute background behind it. */
.veil{position:relative;margin-top:auto;border-radius:var(--r-md);overflow:hidden;border:1px dashed var(--group-wash);background:linear-gradient(0deg,var(--group-wash),transparent)}
.veil .ghost{position:absolute;inset:0;padding:11px 13px;filter:blur(5px);opacity:.5;user-select:none;pointer-events:none;display:flex;align-items:center}
.veil-over{position:relative;display:flex;flex-direction:column;gap:3px;padding:10px 13px;background:linear-gradient(90deg,rgba(255,255,255,.74),rgba(255,255,255,.52))}
.held-tag{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;background:var(--group);color:#fff;font-size:.625rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:var(--r-pill)}
.held-tag::before{content:"";width:6px;height:6px;border-radius:50%;background:#fff}
.opens{font-size:1.02rem;font-weight:800;color:var(--group);letter-spacing:-.01em}
.opens .cd{font-size:.72rem;font-weight:700;color:var(--group-ink);background:var(--group-wash);border-radius:var(--r-pill);padding:2px 8px;margin-left:6px;vertical-align:middle}
.flip-hint{font-size:var(--text-micro);color:var(--group-ink);display:flex;align-items:center;gap:5px}

/* held card back face */
.back-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.back-title{font-size:.95rem;font-weight:700;letter-spacing:-.01em}
.mini-back{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--r-pill);padding:4px 10px;font-size:var(--text-micro);font-weight:700;cursor:pointer}
.owner{display:flex;align-items:center;gap:9px}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:700;font-size:.75rem;flex:none}
.owner .nm{font-weight:700;font-size:.875rem;line-height:1.1}
.owner .atlas{font-size:.6rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);font-weight:700}
.owner .atlas.unlinked{color:var(--caution)}
.dl{display:grid;grid-template-columns:auto 1fr;gap:7px 14px;font-size:var(--text-sm);margin:2px 0 0}
.dl dt{color:var(--slate-400);font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;align-self:center}
.dl dd{margin:0;font-weight:600;text-align:right}
.dl dd.net{color:var(--group)}
.note-box{background:var(--surface-sunk);border-radius:var(--r-md);padding:9px 11px;font-size:.78rem;color:var(--ink-muted)}
.back-foot{display:flex;gap:8px;align-items:center;border-top:1px solid var(--border);padding-top:10px;margin-top:2px}
.link-detail{font-size:var(--text-sm);font-weight:700;color:var(--accent);text-decoration:none;cursor:pointer;background:none;border:none;padding:0}
.editbtn{margin-left:auto;border:none;background:var(--group);color:#fff;border-radius:var(--r-pill);padding:6px 13px;font-size:var(--text-sm);font-weight:700;cursor:pointer}
.enforce{font-size:.625rem;color:var(--slate-400);margin-top:6px}
.standalone{background:var(--group-wash);color:var(--group-ink);border-radius:4px;padding:1px 6px;font-size:.625rem;font-weight:700;letter-spacing:.03em}

/* Groups Center roster */
.groups-wrap{max-width:980px;margin:0 auto;padding:6px 4px 60px}
.roster-top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.roster-stats{display:flex;gap:10px;flex-wrap:wrap}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:11px 15px;min-width:118px}
.stat .n{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat .l{font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--slate-400);font-weight:700}
.newhold{border:none;background:var(--ink);color:#fff;border-radius:var(--r-pill);padding:10px 18px;font-weight:700;font-size:var(--text-sm);cursor:pointer}
.owner-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;margin-bottom:16px}
.owner-group>header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface-sunk)}
.owner-group>header .avatar{width:26px;height:26px;font-size:.68rem}
.owner-group>header .who{font-weight:700;font-size:.875rem}
.owner-group>header .cnt{margin-left:auto;font-size:var(--text-sm);color:var(--slate-400);font-weight:600}
.hold-row{display:grid;grid-template-columns:2.4fr 1.3fr 1.2fr 1.1fr auto;gap:14px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border);font-size:var(--text-sm)}
.hold-row:last-child{border-bottom:none}
.hold-row .s-name{font-weight:700}
.hold-row .s-sub{color:var(--slate-400);font-size:var(--text-micro)}
.hold-row .lbl{font-size:.6rem;text-transform:uppercase;letter-spacing:.05em;color:var(--slate-400);font-weight:700;display:block}
.hold-row .opensval{color:var(--group);font-weight:700}
.hold-row .cd2{font-size:.68rem;color:var(--group-ink);font-weight:700}
.gc-pill{border-radius:var(--r-pill);padding:2px 10px;font-size:.625rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;display:inline-block}
.gc-pill.held{background:var(--group-wash);color:var(--group-ink)}
.gc-pill.soon{background:var(--accent-wash);color:var(--accent)}
.gc-pill.unbound{background:#FBEAE8;color:var(--negative)}
.row-actions{display:flex;gap:6px;justify-content:flex-end}
.row-actions button{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--r-pill);padding:5px 11px;font-size:.7rem;font-weight:700;cursor:pointer}
.row-actions .rel{color:var(--negative);border-color:#F0D6D4}
.attention{border:1px solid #F0D6D4}
.attention>header{background:#FBEDEC;border-bottom-color:#F0D6D4}
.attention .flagtext{color:var(--negative);font-weight:700;font-size:var(--text-sm)}
.gc-empty{background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--r-lg);padding:34px;text-align:center;color:var(--ink-muted)}

/* hold editor (reuses .drawer / .drawer-inner) */
.field{margin-top:14px}
.field>label{display:block;font-size:var(--text-micro);text-transform:uppercase;letter-spacing:.06em;color:var(--slate-400);font-weight:700;margin-bottom:5px}
.field input[type=text],.field input[type=date],.field input[type=number],.field textarea,.field select{width:100%;border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:9px 11px;font:inherit;font-size:var(--text-sm);background:var(--surface);color:var(--ink)}
.field textarea{min-height:66px;resize:vertical}
.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.editor-note{font-size:var(--text-micro);color:var(--slate-400);margin-top:5px}
.editor-err{background:#FBEAE8;color:var(--negative);border-radius:var(--r-sm);padding:9px 11px;font-size:var(--text-sm);font-weight:600;margin-top:14px}

/* ---------- suite switcher (four dots → other S&T apps) ---------- */
.suite{position:relative;flex:none}
.suite-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink-muted);display:grid;place-items:center;cursor:pointer;padding:0}
.suite-btn:hover,.suite-btn[aria-expanded=true]{color:var(--accent);border-color:var(--accent)}
.suite-grid{display:grid;grid-template-columns:repeat(2,5px);gap:3px}
.suite-grid i{display:block;width:5px;height:5px;border-radius:1px;background:currentColor}
.suite-menu{position:absolute;right:0;top:42px;z-index:60;width:210px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:6px;box-shadow:var(--shadow-lg)}
.suite-link{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border-radius:var(--r-sm);color:var(--ink);text-decoration:none}
.suite-link:hover{background:var(--surface-sunk)}
.suite-link b{font-size:13px;font-weight:600}.suite-link small{font-size:10px;color:var(--slate-400)}

/* ---------- data health (one chip in place of a pill per source) ---------- */
.health{position:relative}
.health-chip{border:none;cursor:pointer;font-family:inherit}
.health-pop{position:absolute;top:calc(100% + 8px);left:0;z-index:70;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:12px;width:min(440px,90vw)}
.health-list{display:flex;flex-wrap:wrap;gap:6px}

/* ---------- repositioning ---------- */
.repo-tag{display:inline-flex;align-items:center;gap:4px;background:var(--accent-wash);color:var(--accent);border-radius:var(--r-pill);padding:2px 10px;font-size:var(--text-micro);font-weight:700;letter-spacing:.02em}

/* ---------- compliance ribbon toggle (phones only) ---------- */
.ribbon .ribbon-toggle{display:none}

/* ---------- quick filters + sheet extras (sheet layouts only) ---------- */
.quickbar,.quick-search,.sheet-only,.sheet-foot{display:none}

@media (max-width:900px){
  .quickbar{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin:0 -14px 10px;padding:2px 14px}
  .quickbar::-webkit-scrollbar{display:none}
  .quickbar .chip{flex:none;white-space:nowrap;font-size:var(--text-sm);padding:6px 13px}
  .quickbar .chip.dim{pointer-events:auto}
  .qb-filters{display:inline-flex;align-items:center;gap:6px;background:var(--ink)!important;border-color:var(--ink)!important;color:#fff!important}
  .qb-filters .badge{background:var(--accent);border-radius:var(--r-pill);padding:0 7px;font-size:var(--text-micro)}
  .quick-search{display:block;margin-bottom:14px;font-size:16px}
  .rail .search-box{display:none}
  .sheet-only{display:block}
  .sheet-foot{display:block;position:sticky;bottom:-18px;margin:18px -18px -18px;padding:12px 18px calc(12px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--border)}
  /* iOS zooms the page into any focused field under 16px */
  input,select{font-size:16px}
}

/* ---------- phone header ---------- */
@media (max-width:640px){
  .hdr-inner{display:grid;grid-template-columns:1fr auto;gap:10px 12px;padding:10px 14px}
  .wordmark{grid-column:1;grid-row:1}
  .hdr-actions{grid-column:2;grid-row:1;margin-left:0}
  .viewswitch{grid-column:1/-1;grid-row:2;display:flex}
  .viewswitch button{flex:1;justify-content:center}
  .pills,.count,.import-btn{display:none}
  .ribbon{padding:6px 14px;flex-direction:column;align-items:stretch;gap:6px;position:relative}
  .ribbon .ribbon-toggle{display:flex;align-items:center;gap:6px;font-size:var(--text-sm);font-weight:700;padding:2px 0;text-align:left;color:#7A5D1E}
  .ribbon .ribbon-toggle .chev{transition:transform .15s;display:inline-block}
  .ribbon.open .ribbon-toggle .chev{transform:rotate(90deg)}
  .ribbon .ribbon-full{display:none}
  .ribbon.open .ribbon-full{display:block}
  .ribbon > button:last-child{position:absolute;right:12px;top:6px}
  .results-head .n{font-size:var(--text-body)}
}
