/* ═══ v7.10.340 — SKIN LAYER. Consumes TOKENS ONLY.
   Colour is decided in core/ThemeTokens.php and delivered via asos-tokens.css.
   Adding a hardcoded colour here is a defect: add a contract token instead. ═══ */
/* ASOS — app.css — v3.4.6 Glass Theme */

/* ── Google Fonts (loaded in layout.php) ────────────────────────────── */

:root {/* Base depths — layered transparency over deep blue-black */;/* Glass effect values */
  --glass-blur:16px;--glass-border:rgba(120, 160, 255, 0.12);--glass-shine:rgba(180, 210, 255, 0.06);--glass-deep:rgba(6, 12, 28, 0.82);/* Borders */;--border-focus:rgba(99, 179, 237, 0.6);/* Accent — Windows 11-style blue */;--accent-glow:rgba(37, 99, 235, 0.35);--menu-accent:var(--t-info);/* v7.9.67 default:Azure Crystal — drives menu glow + emblem wave + Ask Neo line */
  --menu-accent-light: #86dcff;/* Text — black system-wide (was bright #e8f0ff; locked black per requirement).
     The theme picker cannot override these because text-black.css reasserts them
     after themes.css. --text-muted kept a dark grey for secondary text legibility. */;/* Status */;--purple:var(--t-rail);/* Layout */
  --sidebar-w:240px;--topbar-h:52px;--radius-sm:8px;}

*, *::before, *::after {box-sizing:border-box;margin:0;padding:0;}

html {font-size:15px;}

/* ── Body — deep space background with subtle gradient ───────────── */
body {font-family:-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Helvetica Neue', Helvetica, Arial, sans-serif;background:var(--bg-app);background-image:radial-gradient(ellipse 80% 50% at 20% 0%, rgba(var(--accent-rgb), 0.12) 0%, transparent 60%),
    radial-gradient(ellipse 60% 40% at 80% 100%, rgba(var(--accent-rgb), 0.08) 0%, transparent 55%),
    radial-gradient(ellipse 100% 80% at 50% 50%, var(--accent) 0%, transparent 100%);color:var(--text-primary);min-height:100vh;display:flex;}

a {color:var(--accent-light);text-decoration:none;}
a:hover {color:var(--text-primary);}

/* ── Sidebar — frosted glass panel ──────────────────────────────── */
.sidebar {width:var(--sidebar-w);min-height:100vh;background:var(--sidebar-bg);/* v7.9.67 — solid navy, no warm cast */
  -webkit-font-smoothing:antialiased;border-right:1px solid var(--glass-border);display:flex;flex-direction:column;flex-shrink:0;position:fixed;top:0;left:0;bottom:0;z-index:100;transition:transform .25s ease, width .2s ease;box-shadow:2px 0 32px rgba(0, 0, 0, 0.4);overflow:hidden;}
/* Hover: expand to show full labels clearly */
.sidebar:hover {overflow:visible;}

.sidebar-logo {display:flex;align-items:center;gap:.7rem;padding:1.1rem 1.1rem .9rem;border-bottom:1px solid var(--glass-border);background:var(--glass-shine);}
.logo-mark {width:34px;height:34px;background:linear-gradient(135deg, var(--t-rail), var(--t-rail));border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:800;color:var(--t-surface);flex-shrink:0;box-shadow:0 2px 12px rgba(37, 99, 235, 0.45);}
.logo-name {font-size:.95rem;font-weight:700;display:block;}
.logo-sub  {font-size:.65rem;color:var(--text-muted);display:block;font-family:'SF Mono', SFMono-Regular, ui-monospace, Consolas, 'Courier New', monospace;}

.sidebar-nav {flex:1;padding:.6rem .5rem;overflow-y:auto;scroll-behavior:smooth;}
.sidebar-nav::-webkit-scrollbar {width:3px;}
.sidebar-nav::-webkit-scrollbar-thumb {background:var(--rail-hover);border-radius:4px;}

.nav-section-label {font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);padding:.5rem .5rem .3rem;}

.nav-item {display:flex;align-items:center;gap:.4rem;position:relative;/* v7.9.65 — anchor for the Glow Underbar hover::after */
  padding: .3rem .5rem;border-radius:6px;font-size:.8rem;color:var(--text-muted);text-decoration:none;transition:background .12s, color .12s;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* v7.9.67 (LL-170) — side-menu hover = thin 3D glass + accent glow, driven by --menu-accent
   (theme-coordinated: same accent feeds the BAYS emblem wave and the Ask Neo running line). */
.nav-item:hover {color:var(--t-surface);background:linear-gradient(180deg, rgba(var(--accent-rgb), 0.12), transparent);border:1px solid color-mix(in srgb, var(--menu-accent) 55%, transparent);box-shadow:0 0 15px color-mix(in srgb, var(--menu-accent) 55%, transparent),
              inset 0 1px 0 rgba(255,255,255,.22), inset 0 -1px 0 rgba(0,0,0,.25);}
.nav-item.active {background:var(--rail-hover);color:var(--t-surface);box-shadow:inset 0 0 0 1px rgba(99,160,255,.18),
              0 2px 12px rgba(37,99,235,.18);}
.nav-item.active .nav-icon {opacity:1;}
.nav-icon {font-size:1rem;opacity:.65;}
.nav-item-disabled {opacity:.3;cursor:default;pointer-events:none;}

.sidebar-user {padding:.9rem;border-top:1px solid var(--glass-border);background:var(--glass-shine);}
.user-info {display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem;}
.user-avatar {width:30px;height:30px;background:linear-gradient(135deg, var(--t-rail), var(--t-rail));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;color:var(--t-surface);flex-shrink:0;box-shadow:0 2px 8px rgba(37,99,235,.35);}
.user-name {font-size:.82rem;font-weight:600;}
.user-role {font-size:.7rem;color:var(--text-muted);text-transform:capitalize;}
.btn-logout {display:block;text-align:center;padding:.35rem;background:transparent;border:1px solid var(--glass-border);border-radius:6px;font-size:.75rem;color:var(--text-muted);transition:all .15s;}
.btn-logout:hover {border-color:var(--danger);color:var(--danger);}

/* ── Main wrap ───────────────────────────────────────────────────── */
.main-wrap {margin-left:var(--sidebar-w);flex:1;display:flex;flex-direction:column;min-height:100vh;min-width:0;}

/* ── Topbar — glass bar ──────────────────────────────────────────── */
.topbar {height:var(--topbar-h);background:var(--chrome-bg);/* v7.9.65 — light top bar carries the prominent navy BAYS logo */
  border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 1.25rem;position:sticky;top:0;z-index:90;flex-shrink:0;box-shadow:0 1px 24px rgba(0,0,0,.3);}
.topbar-left {display:flex;align-items:center;gap:.8rem;}
.topbar-logo {height:30px;width:auto;display:block;flex-shrink:0;} /* v7.9.65 — navy BAYS on light bar */
.topbar-title {font-size:.9rem;font-weight:600;color:var(--on-chrome);}
.sidebar-toggle {display:none;background:none;border:none;color:var(--text-muted);font-size:1.2rem;cursor:pointer;}

.claude-toggle-btn {display:inline-flex;align-items:center;gap:.4rem;background:rgba(var(--accent-rgb), 0.12);border:1px solid var(--border);color:var(--text-primary);border-radius:20px;padding:.35rem .9rem;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .15s;}
.claude-toggle-btn:hover {background:rgba(var(--accent-rgb), 0.2);color:var(--text-primary);box-shadow:0 0 12px rgba(37,99,235,.2);}

/* ── Page content ─────────────────────────────────────────────────── */
.page-content {padding:1.5rem;flex:1;}

/* ── Toolbar ──────────────────────────────────────────────────────── */
.toolbar {display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;flex-wrap:wrap;}
.toolbar-spacer {flex:1;}
.label-inline {font-size:.8rem;font-weight:600;color:var(--text-secondary);}

/* ── Cards — frosted glass panels ────────────────────────────────── */
.card {background:var(--bg-card);backdrop-filter:blur(var(--glass-blur)) saturate(120%);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(120%);border:1px solid var(--glass-border);border-radius:var(--radius);overflow:hidden;box-shadow:0 4px 24px rgba(0, 0, 0, 0.28),
    inset 0 1px 0 rgba(180, 210, 255, 0.06);transition:box-shadow .2s;}
.card:hover {box-shadow:0 6px 32px rgba(0, 0, 0, 0.32),
    inset 0 1px 0 rgba(180, 210, 255, 0.09);}
.card-header {display:flex;align-items:center;gap:1rem;padding:.9rem 1.25rem;border-bottom:1px solid var(--glass-border);background:rgba(var(--accent-rgb), 0.04);}
.card-header h2 {font-size:.95rem;font-weight:600;}
.card-body {padding:1.25rem;}

/* ── Tables ───────────────────────────────────────────────────────── */
.table-wrap {overflow-x:auto;}
.data-table {width:100%;border-collapse:collapse;font-size:.82rem;}
.data-table th {text-align:left;padding:.55rem 1rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);border-bottom:1px solid var(--glass-border);background:rgba(var(--accent-rgb), 0.5);white-space:nowrap;}
.data-table td {padding:.6rem 1rem;border-bottom:1px solid var(--border);vertical-align:top;}
.data-table tbody tr:hover {background:rgba(var(--accent-rgb), 0.04);}
.data-table tfoot td {padding:.55rem 1rem;font-size:.78rem;font-weight:600;background:rgba(var(--accent-rgb), 0.5);border-top:1px solid var(--glass-border);}

/* ── Utility classes ─────────────────────────────────────────────── */
.lot-num {font-weight:700;text-align:center;font-size:.88rem;}
.mono    {font-family:'SF Mono', SFMono-Regular, ui-monospace, Consolas, 'Courier New', monospace;font-size:.78rem;}
.num     {text-align:right;font-family:'SF Mono', SFMono-Regular, ui-monospace, Consolas, 'Courier New', monospace;font-size:.82rem;}
.small   {font-size:.76rem;}
.tiny    {font-size:.68rem;display:block;margin-top:1px;}
.pay-ref {color:var(--t-info);font-size:.78rem;}
.foot-label {font-size:.78rem;}
.text-muted  {color:var(--text-muted);}
.text-ok     {color:var(--ok);}
.text-warn   {color:var(--warn);}
.owner-link  {color:var(--text-primary);font-weight:500;}
.owner-link:hover {color:var(--accent-light);}
.row-overdue {background:rgba(var(--accent-rgb), 0.04);}
.purple      {color:var(--purple);}

/* ── Badges & Status ──────────────────────────────────────────────── */
.badge {display:inline-block;background:rgba(var(--accent-rgb), 0.1);color:var(--text-secondary);border-radius:20px;padding:.2rem .7rem;font-size:.72rem;font-weight:600;border:1px solid var(--border);}
.badge-info {background:rgba(var(--accent-rgb), 0.15);color:var(--t-info);}

.status-badge {display:inline-block;padding:.15rem .55rem;border-radius:10px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;}
.status-received  {background:rgba(var(--accent-rgb), 0.12);color:var(--t-warn);}
.status-validated {background:rgba(var(--accent-rgb), 0.12);color:var(--t-ok);}
.status-complete  {background:rgba(var(--accent-rgb), 0.09);color:var(--text-primary);}
.status-overdue   {background:rgba(var(--accent-rgb), 0.12);color:var(--danger);}
.status-current   {background:rgba(var(--accent-rgb), 0.1);color:var(--t-ok);}

.stat-chip {background:var(--chrome-tint);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--glass-border);border-radius:20px;padding:.3rem .9rem;font-size:.78rem;color:var(--text-secondary);}
.stat-chip strong {color:var(--text-primary);}
.stat-chip-warn {border-color:var(--warn);color:var(--warn);}

/* ── Buttons ──────────────────────────────────────────────────────── */
.btn {display:inline-flex;align-items:center;gap:.3rem;padding:.45rem .9rem;border-radius:var(--radius-sm);font-family:inherit;font-size:.82rem;font-weight:600;border:1px solid var(--glass-border);background:var(--bg-secondary);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text-primary);cursor:pointer;transition:all .15s;text-decoration:none;}
.btn:hover {background:rgba(var(--accent-rgb), 0.1);border-color:var(--accent);color:var(--t-surface);box-shadow:0 2px 12px rgba(0,0,0,.2);}
.btn-primary {background:linear-gradient(135deg, var(--t-info), var(--accent));border-color:var(--accent);color:var(--t-surface);box-shadow:0 2px 12px rgba(37,99,235,.3);}
.btn-primary:hover {background:linear-gradient(135deg, var(--t-info), var(--t-info));box-shadow:0 4px 20px rgba(37,99,235,.45);color:var(--t-surface);}
.btn-ghost {background:transparent;border-color:transparent;}
.btn-ghost:hover {background:rgba(var(--accent-rgb), 0.07);border-color:var(--glass-border);}
.btn-xs {padding:.2rem .55rem;font-size:.72rem;border-radius:5px;}

/* ── Forms ────────────────────────────────────────────────────────── */
.form-grid {display:grid;grid-template-columns:1fr 1fr;gap:.9rem;max-width:780px;}
.form-grid .span2 {grid-column:1 / -1;}
.form-inline {display:flex;align-items:flex-end;gap:.75rem;flex-wrap:wrap;}

.form-grid label, .form-inline label {display:block;font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:3px;}
.form-grid input, .form-grid select, .form-grid textarea,
.form-inline input, .form-inline select {display:block;width:100%;padding:.5rem .75rem;background:var(--bg-input);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text-primary);font-family:inherit;font-size:.85rem;margin-top:4px;transition:border-color .15s, box-shadow .15s;}
.form-grid input:focus, .form-grid select:focus, .form-grid textarea:focus,
.form-inline input:focus, .form-inline select:focus {outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(37, 99, 235, 0.12);}
.form-grid textarea {resize:vertical;}
.select-sm {padding:.35rem .6rem;font-size:.82rem;background:var(--bg-input);border:1px solid var(--glass-border);border-radius:6px;color:var(--text-primary);font-family:inherit;}

/* ── Alerts ───────────────────────────────────────────────────────── */
.alert {padding:.7rem 1rem;border-radius:var(--radius-sm);font-size:.85rem;margin-bottom:1.25rem;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);}
.alert-success {background:rgba(var(--accent-rgb), 0.08);border:1px solid var(--ok);color:var(--t-ok);}
.alert-error {background:rgba(var(--accent-rgb), 0.08);border:1px solid var(--danger);color:var(--danger);}

/* ── Help text ────────────────────────────────────────────────────── */
.help-text {font-size:.82rem;color:var(--text-muted);margin-bottom:1rem;line-height:1.6;}

/* ── Claude panel — glass drawer ────────────────────────────────── */
.claude-panel {position:fixed;right:0;bottom:0;width:420px;height:560px;min-width:320px;min-height:360px;max-width:95vw;max-height:95vh;background:var(--bg-card);backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);border:1px solid var(--glass-border);border-radius:14px 14px 0 0;display:flex;flex-direction:column;z-index:500;box-shadow:-4px -4px 40px rgba(0, 0, 0, 0.5),
    inset 0 1px 0 rgba(180,210,255,.08);transform:translateY(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);resize:both;/* drag the corner to resize */
  overflow:hidden;/* keep child panes clipped to the rounded frame */;}
.claude-panel.is-open {transform:translateY(0);}
/* When a document/module is open beside the chat, default to a wider workspace. */
.claude-panel.has-viewer {width:820px;}

.claude-panel-header {display:flex;align-items:center;justify-content:space-between;padding:.8rem 1rem;border-bottom:1px solid var(--glass-border);background:rgba(var(--accent-rgb), 0.04);border-radius:14px 14px 0 0;flex-shrink:0;cursor:move;/* drag the header to move the panel */
  user-select:none;}
.claude-header-actions {display:flex;align-items:center;gap:.5rem;}
.claude-viewer-close {background:rgba(var(--accent-rgb), 0.12);border:1px solid var(--glass-border);color:var(--text-secondary, var(--text-primary));cursor:pointer;font-size:.72rem;padding:.2rem .5rem;border-radius:6px;white-space:nowrap;}
.claude-viewer-close:hover {color:var(--t-surface);}

/* Body splits horizontally: chat pane + (optional) viewer pane */
.claude-body {flex:1;display:flex;min-height:0;}
.claude-chat-pane {flex:1 1 0;display:flex;flex-direction:column;min-width:0;}
.claude-viewer-pane {flex:1.3 1 0;min-width:0;border-left:1px solid var(--glass-border);background:var(--t-surface);}
.claude-viewer-pane iframe {width:100%;height:100%;border:0;display:block;background:var(--t-surface);}

.claude-panel-title {display:flex;align-items:center;gap:.5rem;font-size:.88rem;font-weight:600;}
.claude-dot {width:8px;height:8px;background:var(--ok);border-radius:50%;animation:pulse 2s infinite;box-shadow:0 0 6px rgba(34,197,94,.6);}
@keyframes pulse { 0%,100%{opacity:1;box-shadow:0 0 6px rgba(34,197,94,.6);} 50%{opacity:.4;box-shadow:none;} }
.claude-close {background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1rem;padding:.2rem;}
.claude-close:hover {color:var(--text-primary);}

.claude-messages {flex:1;overflow-y:auto;padding:.9rem;display:flex;flex-direction:column;gap:.7rem;}
.claude-messages::-webkit-scrollbar {width:3px;}
.claude-messages::-webkit-scrollbar-thumb {background:rgba(var(--accent-rgb), 0.15);border-radius:4px;}

.claude-msg-user .msg-bubble {background:linear-gradient(135deg, var(--t-info), var(--accent));color:var(--t-surface);border-radius:10px 10px 2px 10px;align-self:flex-end;margin-left:auto;max-width:85%;box-shadow:0 2px 10px rgba(37,99,235,.3);}
.claude-msg-assistant .msg-bubble {background:var(--bg-secondary);border:1px solid var(--glass-border);color:var(--text-primary);border-radius:2px 10px 10px 10px;max-width:95%;}
.msg-bubble {padding:.6rem .85rem;font-size:.82rem;line-height:1.6;white-space:pre-wrap;}
.claude-typing .msg-bubble {color:var(--text-muted);font-style:italic;}

.claude-input-row {display:flex;gap:.5rem;padding:.75rem;border-top:1px solid var(--glass-border);flex-shrink:0;}
.claude-input-row textarea {flex:1;background:var(--bg-input);border:1px solid var(--glass-border);border-radius:8px;color:var(--text-primary);font-family:inherit;font-size:.82rem;padding:.5rem .75rem;resize:none;line-height:1.5;backdrop-filter:blur(8px);}
.claude-input-row textarea:focus {outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.1);}
.claude-send-btn {width:36px;height:36px;background:linear-gradient(135deg, var(--t-info), var(--accent));border:none;border-radius:8px;color:var(--t-surface);font-size:1rem;cursor:pointer;flex-shrink:0;align-self:flex-end;box-shadow:0 2px 8px rgba(37,99,235,.35);transition:all .15s;}
.claude-send-btn:hover {background:linear-gradient(135deg, var(--t-info), var(--t-info));box-shadow:0 4px 16px rgba(37,99,235,.5);}

/* ── Mobile ───────────────────────────────────────────────────────── */

/* ── Collapsible nav groups ─────────────────────────────── */
.nav-group {margin-bottom:1px;}

.nav-group-toggle {display:flex;align-items:center;gap:.4rem;width:100%;padding:.35rem .5rem;background:none;border:none;border-radius:6px;cursor:pointer;color:var(--text-muted);font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-family:inherit;transition:background .15s, color .15s;text-align:left;}
.nav-group-toggle:hover {background:var(--glass-shine);color:var(--text-secondary);}
.nav-group-icon {flex-shrink:0;opacity:.55;}
.nav-group-label {flex:1;}
.nav-chevron {flex-shrink:0;opacity:.4;transition:transform .2s ease;}
.nav-group.open .nav-chevron {transform:rotate(180deg);opacity:.7;}
/* v7.10.336 — was --text-secondary (a PAGE token) on a dark rail: invisible until hover */
.nav-group.open .nav-group-toggle {color:var(--rail-fg-dim, var(--text-secondary));}

.nav-group-items {display:none;padding-left:.25rem;border-left:1px solid var(--rail-hover);margin-left:.75rem;margin-bottom:.2rem;}
.nav-group.open .nav-group-items {display:block;}
/* (v6.0.0) Hover-expand removed — it caused the menu to jump up/down as the
   mouse moved over closed groups. Groups now open/close only on explicit click,
   so the menu stays put where you clicked. */

/* ── Nav search ──────────────────────────────────────────── */
.nav-search-wrap {position:relative;margin:.75rem .5rem .45rem;}
.nav-search-wrap input {width:100%;padding:.38rem .65rem .38rem 1.9rem;background:rgba(var(--accent-rgb), 0.04);border:1px solid var(--border);border-radius:7px;color:var(--text-primary);font-size:.78rem;font-family:inherit;outline:none;transition:border-color .15s, background .15s;box-sizing:border-box;}
.nav-search-wrap input::placeholder {color:var(--text-muted);}
.nav-search-wrap.focused input,
.nav-search-wrap input:focus {border-color:var(--accent);background:rgba(var(--accent-rgb), 0.07);}
.nav-search-icon {position:absolute;left:.55rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none;}
.nav-search-results {position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--t-surface);border:1px solid var(--border);border-radius:8px;max-height:240px;overflow-y:auto;z-index:200;box-shadow:0 8px 24px rgba(0,0,0,.5);}
.nav-search-result {display:flex;align-items:center;gap:.5rem;padding:.45rem .7rem;font-size:.8rem;color:var(--text-secondary);cursor:pointer;text-decoration:none;border-bottom:1px solid var(--border);transition:background .1s;}
.nav-search-result:last-child {border-bottom:none;}
/* v7.10.373 — the highlight was rgba(99,160,255,.1): a 10%-opacity hardcoded blue,
   effectively invisible (and completely lost on dark themes), so although the keyboard
   selection logic worked, there was no way to SEE which result Enter would open — it
   read as broken. Now uses the active theme's accent at a visible strength plus a left
   marker bar, so the selected row is unmistakable on every theme. Hover keeps the
   softer treatment so the two states stay distinguishable. */
.nav-search-result:hover {background:rgba(var(--accent-rgb, 99,160,255), .12);color:var(--text-primary);}
.nav-search-result.highlighted {/* !important to match the skin layer it competes with (bays-skin.css sets result
     backgrounds with !important);without it the selected row's background is lost. */
  background:rgba(var(--accent-rgb, 99,160,255), .30) !important;color:var(--text-primary);box-shadow:inset 3px 0 0 var(--accent, #63a0ff);font-weight:600;}
.nav-search-result-group {font-size:.66rem;color:var(--text-muted);margin-left:auto;flex-shrink:0;}

/* ── Building switcher ───────────────────────────────────── */
.nav-building-switcher {margin:.45rem .6rem;padding:.45rem .65rem;background:rgba(var(--accent-rgb), 0.07);border:1px solid var(--border);border-radius:7px;}
.nav-building-label {font-size:.58rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:.2rem;}
.nav-building-select {width:100%;background:transparent;border:none;color:var(--text-primary);font-family:inherit;font-size:.8rem;cursor:pointer;padding:0;outline:none;}
.nav-building-name {font-size:.83rem;font-weight:600;color:var(--text-primary);}
.nav-building-addr {font-size:.68rem;color:var(--text-muted);margin-top:1px;}

@media (max-width: 768px) {
  .sidebar {transform:translateX(-100%);}
  .sidebar.open {transform:translateX(0);}
  .main-wrap {margin-left:0;}
  .sidebar-toggle {display:block;}
  .claude-panel {width:100%;border-radius:14px 14px 0 0;resize:vertical;max-width:100vw;}
  .claude-panel.has-viewer {width:100%;}
  .claude-body {flex-direction:column;}       /* stack chat over viewer on mobile */
  .claude-viewer-pane {border-left:0;border-top:1px solid var(--glass-border);}
  .form-grid {grid-template-columns:1fr;}
  .form-grid .span2 {grid-column:1;}
}

/* ── Print ────────────────────────────────────────────────────────── */
@media print {/* Hide all navigation and chrome — v7.10.91 full-page capture fix */
  .sidebar, .sidebar-wrap, .topbar, .top-bar,
  .claude-panel, .claude-chat, .casos-panel,
  .toolbar .btn, .toolbar .btn-group,
  .page-actions, .action-bar, .btn-primary.no-print,
  .alert-info, nav, .nav-sidebar,
  .print-hide, [data-print-hide],
  button:not([data-print-show]),
  .modal, .modal-overlay,
  .pagination, .search-bar,
  footer { display: none !important;}

  /* Full width content when sidebar is hidden */
  .main-wrap, .content-wrap, .page-content,
  .content, main, [class*="main-content"] {
    margin-left:0 !important;padding-left:8mm !important;width:100% !important;max-width:100% !important;}

  /* Clean background */
  body { background:var(--t-surface) !important;color:var(--text-primary);}
  .card { border:.5pt solid #ccc !important;background:var(--t-surface);box-shadow:none !important;break-inside:avoid;}
  .card-header { background:var(--t-surface-2) !important;}

  /* Tables — compact for print */
  .data-table th, .data-table td {
    border:.5pt solid #ccc !important;font-size:8pt !important;padding:3pt 5pt !important;color:var(--text-primary);}
  .data-table th { background:#efefef !important;font-weight:700;}

  /* Page setup — A4 portrait, 12mm margins */
  @page { margin:12mm 15mm;size:A4 portrait;}

  /* Force colour printing of badges/status */
  .badge, [class*="-badge"], .status-badge {
    -webkit-print-color-adjust:exact !important;print-color-adjust:exact !important;}

  /* WO / quote print views already handle their own print layout */
  .print-full-page { display:block !important;};}

/* ═══════════════════════════════════════════════════════════
   OWNER PORTAL — beautiful, mobile-responsive
   ═══════════════════════════════════════════════════════════ */

.op-hero {position:relative;height:240px;border-radius:14px;overflow:hidden;margin-bottom:1.25rem;background:var(--bg-secondary);}
.op-hero-tall {height:280px;}
.op-hero-img {width:100%;height:100%;object-fit:cover;display:block;}
.op-hero-overlay {position:absolute;inset:0;background:linear-gradient(to top, rgba(var(--accent-rgb), 0.85) 0%, rgba(var(--accent-rgb), 0.35) 50%, transparent 100%);display:flex;flex-direction:column;justify-content:flex-end;padding:1.5rem 1.75rem;color:var(--t-surface);}
.op-hero-greeting {font-size:1.5rem;font-weight:700;margin-bottom:.25rem;text-shadow:0 2px 12px rgba(0,0,0,.5);}
.op-hero-address {font-size:1rem;font-weight:600;opacity:.95;margin-bottom:.15rem;text-shadow:0 2px 8px rgba(0,0,0,.5);}
.op-hero-lot {font-size:.82rem;opacity:.8;text-shadow:0 2px 8px rgba(0,0,0,.5);}

.op-status-grid {display:grid;grid-template-columns:repeat(4, 1fr);gap:.75rem;margin-bottom:1.5rem;}
.op-card {background:rgba(var(--accent-rgb), 0.025);border:1px solid var(--border);border-radius:12px;padding:1rem 1.1rem;display:flex;flex-direction:column;}
.op-card-title {font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:.35rem;}
.op-card-big {font-size:1.75rem;font-weight:700;line-height:1.1;color:var(--text-primary);}
.op-card-sub {font-size:.8rem;color:var(--text-muted);margin-top:.15rem;}
.op-card-meta {font-size:.75rem;color:var(--text-secondary);margin-top:.55rem;padding-top:.5rem;border-top:1px solid var(--border);}
.op-card-link {font-size:.78rem;color:var(--accent-light);text-decoration:none;margin-top:auto;padding-top:.65rem;font-weight:500;}
.op-card-link:hover {text-decoration:underline;}

.op-card-levy {border-left:3px solid var(--t-rail);}
.op-card-agm {border-left:3px solid var(--t-rail);}
.op-card-requests {border-left:3px solid var(--t-warn);}
.op-card-value {border-left:3px solid var(--t-ok);}

.op-section {margin-bottom:1.5rem;}
.op-section-title {font-size:.95rem;font-weight:700;margin:0 0 .65rem;color:var(--text-primary);}

.op-actions-grid {display:grid;grid-template-columns:repeat(6, 1fr);gap:.55rem;}
.op-action {background:var(--accent);border:1px solid var(--border);border-radius:10px;padding:.9rem .5rem;text-decoration:none;text-align:center;color:var(--text-secondary);transition:background .15s, transform .12s, border-color .15s;display:flex;flex-direction:column;align-items:center;gap:.35rem;}
.op-action:hover {background:var(--accent);border-color:var(--accent);transform:translateY(-1px);color:var(--text-primary);}
.op-action-icon {font-size:1.6rem;}
.op-action-label {font-size:.76rem;font-weight:500;line-height:1.25;}

.op-activity-row {display:flex;justify-content:space-between;align-items:center;padding:.55rem 1.1rem;border-bottom:1px solid var(--border);}
.op-activity-row:last-child {border-bottom:none;}
.op-activity-title {font-size:.85rem;font-weight:500;}
.op-activity-date {font-size:.72rem;color:var(--text-muted);margin-top:.1rem;}
.op-activity-amount {font-family:'SF Mono', SFMono-Regular, ui-monospace, Consolas, 'Courier New', monospace;font-size:.9rem;font-weight:600;}

/* Building info specifics */
.op-info-grid {display:grid;grid-template-columns:repeat(3, 1fr);gap:.65rem;}
.op-info-item {background:rgba(var(--accent-rgb), 0.025);border:1px solid var(--border);border-radius:8px;padding:.65rem .8rem;}
.op-info-label {font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:.2rem;}
.op-info-value {font-size:.88rem;color:var(--text-primary);font-weight:500;}

.op-prose {padding:1.1rem 1.35rem;font-size:.9rem;line-height:1.7;color:var(--text-secondary);}
.op-prose p {margin:0;}

.op-feed-grid {display:grid;grid-template-columns:repeat(3, 1fr);gap:.65rem;}
.op-feed-card {background:rgba(var(--accent-rgb), 0.03);border:1px solid var(--border);border-radius:10px;padding:1rem 1.15rem;text-decoration:none;color:var(--text-secondary);transition:background .15s, border-color .15s;display:block;}
.op-feed-card:hover {background:rgba(var(--accent-rgb), 0.06);border-color:var(--accent);}
.op-feed-icon {font-size:1.7rem;margin-bottom:.35rem;}
.op-feed-title {font-size:.92rem;font-weight:600;color:var(--text-primary);margin-bottom:.15rem;}
.op-feed-sub {font-size:.75rem;color:var(--text-muted);margin-bottom:.4rem;}
.op-feed-link {font-size:.76rem;color:var(--accent-light);font-weight:500;}

.op-market-bar {display:grid;grid-template-columns:repeat(4, 1fr);gap:.65rem;background:linear-gradient(135deg, rgba(var(--accent-rgb), 0.06), var(--t-accent-wash));border:1px solid var(--border);border-radius:10px;padding:.9rem 1.1rem;margin-top:.65rem;}
.op-market-label {font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:.15rem;}
.op-market-value {font-size:1.05rem;font-weight:700;color:var(--t-ok);font-family:'SF Mono', SFMono-Regular, ui-monospace, Consolas, 'Courier New', monospace;}

.op-features-grid {display:grid;grid-template-columns:repeat(3, 1fr);gap:.55rem;}
.op-feature {background:rgba(var(--accent-rgb), 0.025);border:1px solid var(--border);border-radius:10px;padding:.8rem 1rem;}
.op-feature-na {opacity:.55;}
.op-feature-head {display:flex;align-items:center;gap:.45rem;margin-bottom:.35rem;}
.op-feature-icon {font-size:1.25rem;}
.op-feature-name {font-size:.88rem;font-weight:600;color:var(--text-primary);}
.op-feature-badge {margin-left:auto;font-size:.62rem;background:rgba(var(--accent-rgb), 0.08);color:var(--text-muted);padding:2px 7px;border-radius:4px;text-transform:uppercase;font-weight:700;letter-spacing:.06em;}
.op-feature-desc {font-size:.78rem;color:var(--text-secondary);line-height:1.45;margin-bottom:.25rem;}
.op-feature-hours {font-size:.72rem;color:var(--text-muted);}

.op-ops-grid {display:grid;grid-template-columns:repeat(2, 1fr);gap:.65rem;}
.op-ops-head {font-size:.82rem;font-weight:700;margin-bottom:.35rem;color:var(--text-primary);}
.op-ops-body {font-size:.8rem;color:var(--text-secondary);line-height:1.55;}
.op-empty-inline {font-style:italic;color:var(--text-muted);font-size:.78rem;}
.op-empty {text-align:center;padding:1.5rem;color:var(--text-muted);font-style:italic;}

.op-resources-grid {display:grid;grid-template-columns:repeat(4, 1fr);gap:.5rem;}
.op-resource {background:rgba(var(--accent-rgb), 0.025);border:1px solid var(--border);border-radius:8px;padding:.7rem .85rem;text-decoration:none;color:var(--text-secondary);font-size:.8rem;display:flex;align-items:center;gap:.5rem;transition:background .15s, border-color .15s;}
.op-resource:hover {background:rgba(var(--accent-rgb), 0.07);border-color:var(--accent);color:var(--text-primary);}
.op-resource-icon {font-size:1.1rem;flex-shrink:0;}
.op-resource-name {font-weight:500;line-height:1.3;}

/* ═══════════════════════════════════════════════════════════
   MOBILE RESPONSIVE — Owner Portal
   ═══════════════════════════════════════════════════════════ */

@media (max-width: 900px) {.op-status-grid { grid-template-columns:repeat(2, 1fr);}
  .op-actions-grid { grid-template-columns:repeat(3, 1fr);}
  .op-info-grid { grid-template-columns:repeat(2, 1fr);}
  .op-feed-grid { grid-template-columns:1fr;}
  .op-market-bar { grid-template-columns:repeat(2, 1fr);}
  .op-features-grid { grid-template-columns:repeat(2, 1fr);}
  .op-ops-grid { grid-template-columns:1fr;}
  .op-resources-grid { grid-template-columns:repeat(2, 1fr);};}

@media (max-width: 600px) {
  .op-hero {height:200px;border-radius:10px;margin-bottom:1rem;}
  .op-hero-tall {height:220px;}
  .op-hero-overlay {padding:1rem 1.1rem;}
  .op-hero-greeting {font-size:1.2rem;}
  .op-hero-address {font-size:.88rem;}
  .op-hero-lot {font-size:.75rem;}

  .op-status-grid {grid-template-columns:1fr;gap:.55rem;}
  .op-card {padding:.85rem 1rem;}
  .op-card-big {font-size:1.5rem;}

  .op-actions-grid {grid-template-columns:repeat(2, 1fr);gap:.5rem;}
  .op-action {padding:.8rem .4rem;}
  .op-action-icon {font-size:1.4rem;}
  .op-action-label {font-size:.72rem;}

  .op-info-grid {grid-template-columns:1fr;}
  .op-features-grid {grid-template-columns:1fr;}
  .op-resources-grid {grid-template-columns:1fr;}
  .op-market-bar {grid-template-columns:1fr 1fr;}

  .op-section-title {font-size:.88rem;}

  /* Sidebar slides off on small screens */
  .sidebar {transform:translateX(-100%);}
  .sidebar.open {transform:translateX(0);}
  .main-content {margin-left:0;padding:1rem;}
}


/* ── Topbar building indicator ───────────────────────────── */
.topbar-building {display:flex;flex-direction:column;align-items:flex-start;padding:.15rem .7rem;border-right:1px solid var(--border);margin-right:.85rem;line-height:1.1;}
.topbar-building-sp {font-size:.82rem;font-weight:700;color:var(--accent-light);letter-spacing:.02em;}
.topbar-building-addr {font-size:.68rem;color:var(--text-muted);margin-top:.1rem;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
@media (max-width: 700px) {
  .topbar-building-addr {display:none;}
  .topbar-building {padding:.15rem .5rem;margin-right:.5rem;}
}

/* ── Command Tower workflow cards ─────────────────────────── */
.ct-stage-grid {display:grid;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));gap:.75rem;margin-bottom:1.25rem;}
.ct-stage {background:rgba(var(--accent-rgb), 0.025);border:1px solid var(--border);border-radius:11px;padding:.85rem 1rem;cursor:pointer;text-decoration:none;color:var(--text-secondary);transition:background .15s, border-color .15s, transform .12s;display:block;position:relative;}
.ct-stage:hover {background:rgba(var(--accent-rgb), 0.06);border-color:var(--accent);transform:translateY(-1px);}
.ct-stage-head {display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.35rem;}
.ct-stage-title {font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);}
.ct-stage-count {font-size:1.75rem;font-weight:700;line-height:1;color:var(--text-primary);}
.ct-stage-sub {font-size:.78rem;color:var(--text-secondary);margin-top:.25rem;}
.ct-stage-meta {margin-top:.55rem;padding-top:.55rem;border-top:1px solid var(--border);font-size:.72rem;color:var(--text-muted);display:flex;justify-content:space-between;}
.ct-stage-dot {width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:.35rem;}
/* risk tiers */
.ct-stage.risk-ok        {border-left:3px solid var(--t-ok);}
.ct-stage.risk-watch     {border-left:3px solid var(--t-warn);}
.ct-stage.risk-urgent    {border-left:3px solid var(--border);}
.ct-stage.risk-critical  {border-left:3px solid var(--t-bad);background:rgba(var(--accent-rgb), 0.04);}
.ct-stage.risk-info      {border-left:3px solid var(--t-rail);}

.ct-stage-flag {display:inline-block;font-size:.62rem;padding:2px 8px;border-radius:9999px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;}
.ct-flag-ok       {background:rgba(var(--accent-rgb), 0.15);color:var(--t-ok);}
.ct-flag-watch    {background:rgba(var(--accent-rgb), 0.15);color:var(--t-warn);}
.ct-flag-urgent   {background:rgba(var(--accent-rgb), 0.15);color:var(--text-primary);}
.ct-flag-critical {background:rgba(var(--accent-rgb), 0.18);color:var(--text-primary);}
.ct-flag-info     {background:var(--t-accent-wash);color:var(--t-rail);}

/* Command Tower section heading row */
.ct-section-head {display:flex;align-items:center;gap:.55rem;margin-bottom:.65rem;padding-top:.25rem;}
.ct-section-head h2 {margin:0;font-size:.95rem;font-weight:700;color:var(--text-primary);}
.ct-section-head .ct-section-pill {font-size:.68rem;font-weight:600;color:var(--text-muted);background:rgba(var(--accent-rgb), 0.05);padding:2px 9px;border-radius:9999px;}

/* ── Sidebar SP indicator (under logo) ─────────────────── */
.sidebar-logo {display:flex;flex-direction:column;gap:.6rem;padding:1rem .9rem 1.1rem;border-bottom:1px solid var(--glass-border);}
.sidebar-sp {display:flex;flex-direction:column;padding:.15rem .15rem 0;line-height:1.15;}
.sidebar-sp-num {font-size:.85rem;font-weight:700;color:var(--accent-light);letter-spacing:.02em;}
.sidebar-sp-addr {font-size:.68rem;color:var(--text-muted);margin-top:.15rem;white-space:normal;word-wrap:break-word;}

/* ── Intake item — 3-column workflow layout ────────────── */
.intake-grid {display:grid;grid-template-columns:200px 1fr 320px;gap:.9rem;align-items:start;}
.intake-nav {background:rgba(var(--accent-rgb), 0.025);border:1px solid var(--border);border-radius:10px;padding:.5rem;position:sticky;top:1rem;}
.intake-nav-item {display:flex;align-items:center;gap:.45rem;padding:.4rem .55rem;font-size:.8rem;color:var(--text-secondary);border-radius:6px;text-decoration:none;margin-bottom:2px;cursor:pointer;border:none;background:none;width:100%;text-align:left;font-family:inherit;}
.intake-nav-item:hover {background:var(--rail-hover);color:var(--text-primary);}
.intake-nav-item.active {background:var(--t-accent-wash);color:var(--text-primary);font-weight:600;}
.intake-nav-section {font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding:.55rem .55rem .25rem;margin-top:.3rem;}
.intake-nav-icon {font-size:.95rem;width:18px;text-align:center;flex-shrink:0;}

.intake-preview {background:rgba(var(--accent-rgb), 0.025);border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.intake-preview-head {padding:.65rem 1rem;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:.55rem;}
.intake-preview-title {flex:1;font-size:.9rem;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.intake-preview-body {background:var(--bg-secondary);min-height:600px;}
.intake-preview-body iframe,
.intake-preview-body img {width:100%;display:block;}
.intake-preview-body iframe {height:700px;border:none;}
.intake-preview-body img {max-height:700px;object-fit:contain;}

.intake-decision {display:flex;flex-direction:column;gap:.65rem;}
.intake-decision-card {background:rgba(var(--accent-rgb), 0.025);border:1px solid var(--border);border-radius:10px;padding:.85rem 1rem;}
.intake-decision-card h3 {margin:0 0 .5rem;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);}
.intake-decision-status {padding:.65rem .85rem;border-radius:8px;border-left:3px solid var(--accent-light);background:rgba(var(--accent-rgb), 0.05);font-size:.85rem;}
.intake-status-approved  {border-color:var(--t-ok);background:rgba(var(--accent-rgb), 0.06);}
.intake-status-pending   {border-color:var(--t-warn);background:rgba(var(--accent-rgb), 0.06);}
.intake-status-rejected  {border-color:var(--t-bad);background:rgba(var(--accent-rgb), 0.06);}
.intake-status-escalated {border-color:var(--t-rail);background:var(--t-accent-wash);}

.intake-confidence-bar {position:relative;height:8px;background:rgba(var(--accent-rgb), 0.06);border-radius:4px;overflow:hidden;margin:.4rem 0 .3rem;}
.intake-confidence-fill {position:absolute;top:0;left:0;bottom:0;border-radius:4px;transition:width .3s ease;}
.intake-confidence-high   {background:linear-gradient(90deg, var(--t-ok), var(--t-rail));}
.intake-confidence-medium {background:linear-gradient(90deg, var(--t-warn), var(--accent));}
.intake-confidence-low    {background:linear-gradient(90deg, var(--t-bad), var(--accent));}

.intake-tier-pill {display:inline-block;font-size:.65rem;padding:2px 7px;border-radius:9999px;font-weight:700;letter-spacing:.04em;}
.intake-tier-rule   {background:var(--t-accent-wash);color:var(--t-rail);}
.intake-tier-haiku  {background:rgba(var(--accent-rgb), 0.15);color:var(--t-ok);}
.intake-tier-sonnet {background:rgba(var(--accent-rgb), 0.15);color:var(--t-warn);}
.intake-tier-opus   {background:var(--t-accent-wash);color:var(--t-rail);}

.intake-field-row {display:flex;justify-content:space-between;align-items:flex-start;padding:.35rem 0;border-bottom:1px solid var(--border);font-size:.8rem;gap:.5rem;}
.intake-field-row:last-child {border-bottom:none;}
.intake-field-label {color:var(--text-muted);text-transform:uppercase;font-size:.65rem;letter-spacing:.06em;font-weight:700;flex-shrink:0;padding-top:.15rem;}
.intake-field-value {color:var(--text-primary);text-align:right;word-break:break-word;}
.intake-field-missing {color:var(--text-primary);font-style:italic;}

.intake-help-step {display:flex;gap:.55rem;padding:.45rem 0;align-items:flex-start;font-size:.82rem;border-bottom:1px solid var(--border);}
.intake-help-step:last-child {border-bottom:none;}
.intake-help-num {width:22px;height:22px;background:rgba(var(--accent-rgb), 0.15);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;color:var(--accent-light);flex-shrink:0;}
.intake-help-text {color:var(--text-secondary);line-height:1.45;}

/* mobile */
@media (max-width: 1100px) {.intake-grid { grid-template-columns:1fr;}
  .intake-nav { position:relative;top:0;}
  .intake-preview-body iframe { height:500px;};}

/* ── Enhanced active sidebar highlight ──────────────────────── */
.sidebar-nav .nav-item.active {background:linear-gradient(90deg, rgba(var(--accent-rgb), 0.22), var(--t-accent-wash));color:var(--text-primary);font-weight:600;position:relative;box-shadow:inset 0 0 0 1px var(--t-accent-wash);}
.sidebar-nav .nav-item.active::before {content:'';position:absolute;left:0;top:4px;bottom:4px;width:3px;background:linear-gradient(to bottom, var(--t-rail), var(--t-rail));border-radius:0 3px 3px 0;box-shadow:0 0 8px rgba(26,43,68,.45);}
.sidebar-nav .nav-group.active-group > .nav-group-toggle {/* v7.10.336 — v333 sent this to --text-primary, which is the LIGHT-PAGE colour;on all 25 dark rails that is dark-on-dark. Rail token instead. */
  color:var(--rail-fg, #f4f5f7);background:rgba(var(--accent-rgb, 26,43,68), .10);}


/* ── BuildingAccess: claim/blink visuals ───────────────────────
   .card-blink — unclaimed item in this manager's assigned buildings
   .card-claimed — claimed by someone (not necessarily current user)
   .card-mine — claimed by current user
*/
@keyframes card-blink-pulse {0%, 100% {
    box-shadow:inset 3px 0 0 rgba(26,43,68, .25),
                0 0 0 0 rgba(26,43,68, 0);border-color:var(--border);}
  50% {
    box-shadow:inset 3px 0 0 rgba(26,43,68, .9),
                0 0 0 3px var(--t-accent-wash);border-color:var(--border);};}
.card-blink {animation:card-blink-pulse 1.4s ease-in-out infinite;position:relative;}
.card-blink::after {content:"● your building";position:absolute;top:.35rem;right:.55rem;font-size:.55rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--t-rail);background:rgba(var(--accent-rgb), 0.12);padding:2px 7px;border-radius:8px;pointer-events:none;}
tr.card-blink::after {/* Position differently inside a table row */
  position:static;display:inline-block;margin-left:.4rem;vertical-align:middle;}

.card-claimed:not(.card-mine) {opacity:.65;filter:saturate(.7);}
.card-claimed-badge {display:inline-block;font-size:.6rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;background:rgba(var(--accent-rgb), 0.15);color:var(--text-primary);padding:2px 8px;border-radius:8px;margin-left:.3rem;}
.card-mine .card-claimed-badge,
.card-mine-badge {background:rgba(var(--accent-rgb), 0.15);color:var(--t-ok);}

/* Claim banner shown at top of card detail view when claimed by someone */
.claim-banner {display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.55rem .85rem;margin-bottom:.85rem;border-radius:8px;font-size:.82rem;line-height:1.4;}
.claim-banner.mine {background:rgba(var(--accent-rgb), 0.08);border:1px solid var(--border);color:var(--text-primary);}
.claim-banner.theirs {background:rgba(var(--accent-rgb), 0.07);border:1px solid var(--border);color:var(--text-primary);}
.claim-banner-actions {display:flex;gap:.35rem;flex-shrink:0;}

/* ════════════════════════════════════════════════════════════════
   BLACK & WHITE BASE THEME (v5.2.38)
   Requested by Fred: make the system background black & white so all
   other features WITH colour (buttons, badges, status pills, alert
   cards, the building-id chips) stand out, making issues easy to see.
   Strategy: neutralise the coloured background gradients + sidebar
   tint to greyscale; leave all foreground/feature colour intact.
   ════════════════════════════════════════════════════════════════ */
body {/* BAYS skin (bays-skin.css) now sets the page background. The old B&W
     dark-force is retired so the warm-light palette can take over. */;}
/* Structural chrome handled by bays-skin.css (sidebar navy, surfaces light). */
:root {/* (old dark token overrides removed — bays-skin.css defines the palette) */;}
a:not(.btn):not(.badge):not(.pill) {color:var(--accent-text);}
a:not(.btn):not(.badge):not(.pill):hover {color:var(--t-surface);}
/* Building switcher chip — force high contrast so the building id is readable
   (Fred: the building tab background made the id hard to see). */
.building-chip, .building-id, .bid-chip, .current-building {background:var(--t-surface);color:var(--text-primary);font-weight:700 !important;border:1px solid var(--border);}

/* ── Active building selector under the BAYS logo (v5.2.48) ────────── */
.sidebar-building {margin-top:.6rem;padding:0 .15rem;}
.sidebar-building-label {font-size:.58rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted, var(--t-text-dim));margin-bottom:.25rem;}
.sidebar-building-select {width:100%;padding:.4rem .5rem;font-family:inherit;font-size:.82rem;font-weight:600;background:var(--bg-input, var(--sidebar-bg));color:var(--text-primary, var(--t-line));border:1px solid var(--border, var(--rail-hover));border-radius:6px;cursor:pointer;}
.sidebar-building-select:focus {outline:none;border-color:var(--t-info);}
.sidebar-building .sidebar-sp-addr {font-size:.68rem;color:var(--text-muted, var(--t-text-dim));margin-top:.25rem;line-height:1.3;}

/* ═══ v7.9.67 — BAYS emblem wave, Ask Neo running glow line, full-width logo ═══ */
.sidebar-logo {position:relative;display:block;padding:4px 6px 10px;text-align:center;}
.sidebar-logo .logo-link {position:relative;display:block;width:80%;margin:0 auto;}
.sidebar-logo .bays-full {width:100%;height:auto;display:block;}
.sidebar-logo .emblem-wave {position:absolute;left:0;top:0;width:30.4%;height:100%;-webkit-mask:url(../img/brand/bays-mark.png) center/contain no-repeat;mask:url(../img/brand/bays-mark.png) center/contain no-repeat;/* v7.10.332 — the wave band follows the theme accent AND always has contrast.
     ROOT CAUSE of the "stuck one colour, no movement" bug:24 of 25 themes define
     --accent-light identical to --accent, so a (accent → accent-light → accent)
     gradient rendered FLAT — the animation ran but was invisible. The highlight
     stop is now derived (mixed toward white) so it can never collapse. */
  --wave-base: var(--accent, var(--menu-accent, #c07a5b));--wave-hi:color-mix(in srgb, var(--wave-base) 45%, var(--t-surface));background:linear-gradient(90deg, var(--wave-base) 0%, var(--wave-hi) 25%, var(--wave-base) 50%, var(--wave-hi) 75%, var(--wave-base) 100%);background-size:220% 100%;animation:baysWave 2.6s linear infinite;pointer-events:none;}
@keyframes baysWave { to {background-position:220% 0;} }

/* Ask ASOS entry button (running-light reverted v7.9.68) */
.claude-toggle-btn {position:relative;overflow:visible;}

/* KITT scanner as a minimised line below Sign out; expands only on voice (.kitt-voice) */
.kitt-rail {height:3px;margin:8px 12px 4px;border-radius:3px;background:var(--sidebar-bg);overflow:hidden;position:relative;transition:height .25s ease;}
.kitt-rail.kitt-voice {height:12px;}
.kitt-rail .kitt-scan {position:absolute;top:0;bottom:0;left:-40%;width:40%;border-radius:3px;background:linear-gradient(90deg, transparent, var(--menu-accent), var(--menu-accent-light), var(--menu-accent), transparent);box-shadow:0 0 10px var(--menu-accent);opacity:0;}
.kitt-rail.kitt-voice .kitt-scan {opacity:1;animation:kittRailSweep 1.1s ease-in-out infinite alternate;}
@keyframes kittRailSweep { from {left:-40%;} to {left:100%;} }

/* v7.9.70 — side menu: remove coloured overlay (neutral hover + active). Emblem wave kept (brand). */
.nav-item:hover{background:var(--rail-hover);border:1px solid var(--accent);box-shadow:inset 0 1px 0 rgba(255,255,255,.10), inset 0 -1px 0 rgba(0,0,0,.18);color:var(--t-surface);}
.nav-item.active,
.sidebar-nav .nav-item.active{background:var(--rail-hover);color:var(--t-surface);box-shadow:inset 0 0 0 1px rgba(255,255,255,.10);}
.sidebar-nav .nav-item.active::before{background:var(--rail-hover);box-shadow:none;}
.sidebar-logo,
.sidebar-user{background:transparent;}

/* v7.9.72 — sidebar profile photo fills the avatar circle (fallback = initial) */
.user-avatar{overflow:hidden;}
.user-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;}

/* v7.10.203 — month-end manual control button sizes */
.btn-sm {padding:.32rem .7rem;font-size:.78rem;border-radius:5px;}
.btn-warn {background:rgba(var(--accent-rgb), 0.12);border-color:var(--warn);color:var(--warn);}
.btn-warn:hover {background:rgba(var(--accent-rgb), 0.2);color:var(--t-surface);}
