/* ==========================================================================================
   CyberRunner · css/base.css — the EQUA CRM component layer (E:/localcrm/equa-crm-v2/src: styles.css,
   follow-me.css, assistant.css, flows/flow.css, links/links.css, tags/tags.css, account-logo.css),
   ported faithfully from understand/localcrm-components.css. Group headers name each React component
   and its source lines; rule text is verbatim except:
     · CRM-only groups dropped: [25e] contract consumption + contract table, [34] sign-in; CRM-only
       selectors pruned from shared/responsive rules (contracts, signatures, timesheets, planner,
       invoices, cash flow, auth, co-working cursor);
     · [31] the truncated @media(forced-colors:active) block restored (unclosed in the extract, it
       swallowed every later group);
     · every @media(prefers-color-scheme:dark) component rule also applies under
       :root[data-theme="dark"] and yields to :root[data-theme="light"] (the console's theme toggle).
   Generated by work/ui-foundation/tools/build_base.py. The security layer on top is css/app.css.
   ========================================================================================== */

/* ===== [01 BASE, BROWSER SURFACES, TYPOGRAPHY] =====
   used by: global (main.tsx imports styles.css). body::before paints the green "desktop" tint that glass samples.
   source:  styles.css:54-82 */
/* Base and browser surfaces */
*,*::before,*::after{box-sizing:border-box}
html{scrollbar-color:rgb(120 120 128/.42) transparent;scrollbar-width:thin}
body{margin:0;min-height:100vh}
body::before{content:'';position:fixed;inset:0;z-index:-1;background:var(--desktop);pointer-events:none}
*{scrollbar-width:thin;scrollbar-color:rgb(120 120 128/.42) transparent}
button,input,select,textarea{font:inherit;letter-spacing:inherit;color:inherit}
button,a{-webkit-tap-highlight-color:transparent}
button{cursor:pointer;border:0;background:none;padding:0}
button:disabled{cursor:default;opacity:.5}
.button.primary:disabled{opacity:1;background:var(--fill-2);color:var(--label-3);box-shadow:none}
a{color:inherit;text-decoration:none}
a,button,input,select,textarea,summary,[tabindex]{outline-offset:2px}
:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:var(--r-sm)}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:0}
svg{flex-shrink:0}
svg.lucide{stroke-width:1.75}
h1,h2,h3,p{margin:0}
h1{font-size:30px;line-height:1.12;letter-spacing:-.022em;font-weight:700;text-wrap:balance}
h2{font-size:17px;line-height:1.3;letter-spacing:-.012em;font-weight:650;text-wrap:balance}
h3{font-size:15px;line-height:1.35;letter-spacing:-.008em;font-weight:620}
p{text-wrap:pretty}
::selection{background:var(--accent-tint-2);color:inherit}
input,textarea{caret-color:var(--accent-text)}
::placeholder{color:var(--label-2);opacity:1}
kbd{font-family:inherit}
code{font-family:ui-monospace,'SF Mono','Cascadia Code',Menlo,Consolas,monospace;font-size:.92em}
.numeric,td,.stat>strong{font-variant-numeric:tabular-nums}
@supports(corner-shape:superellipse(1.4)){.panel,.modal,.sidebar,.notification-popover,.search-results,.project-card,.stat,.person-card,.opportunity-card{corner-shape:superellipse(1.4)}}

/* ===== [02 MOTION VOCABULARY (keyframes materialize / settle / sheet-in / scrim-in / rise-in / toolbar-title / toolbar-edge / loading / sheet-up)] =====
   used by: everything; settle runs on .page-content>* on every mount
   source:  styles.css:84-92, styles.css:1495
   note:    Other keyframes live with their component: tabs-fade (group 08), assistant-thinking (26), ai-pulse (33), assistant-drawer-in / assistant-launcher-in / cowork-click / entra-waiting (27), flow-* (29), cx-* (30), tag-pop (31), cfp-pulse (33). */
/* Motion vocabulary */
@keyframes materialize{from{opacity:0;transform:scale(.97) translateY(-4px);filter:blur(6px)}}
@keyframes settle{from{opacity:.35;transform:translateY(6px)}}
@keyframes sheet-in{from{opacity:0;transform:translateY(10px) scale(.97)}}
@keyframes scrim-in{from{opacity:0}}
@keyframes rise-in{from{opacity:0;transform:translate(-50%,10px) scale(.97)}}
@keyframes toolbar-title{from{opacity:0}}
@keyframes toolbar-edge{to{box-shadow:0 var(--hairline-w) 0 var(--hairline),0 8px 24px rgb(0 0 0/.045)}}
@keyframes loading{to{transform:translateX(220%)}}
@keyframes sheet-up{from{transform:translateY(24px);opacity:.4}}

/* ===== [03 APP SHELL — FLOATING GLASS SIDEBAR (brand, workspace switch, nav groups, nav links, nav counts, footer cards, status line)] =====
   used by: App.tsx <aside class="sidebar"> (App.tsx:82)
   source:  styles.css:94-132 */
/* Shell: floating vibrancy sidebar */
.app{min-height:100vh}
.sidebar{position:fixed;top:var(--sidebar-inset);left:var(--sidebar-inset);bottom:var(--sidebar-inset);width:var(--sidebar-w);z-index:40;display:flex;flex-direction:column;padding:16px 10px 10px;border-radius:var(--r-xl);background:var(--glass);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-glass);overflow-y:auto;overscroll-behavior:contain}
.brand{display:flex;flex-direction:column;gap:3px;padding:2px 10px 16px}
.brand-word{display:inline-flex;align-items:baseline;font-size:22px;font-weight:760;letter-spacing:-.035em;line-height:1;color:var(--label)}
.brand-word>span{width:6px;height:6px;margin-left:2px;border-radius:50%;background:var(--accent-symbol)}
.brand-tag{font-size:11.5px;font-weight:500;color:var(--label-2);text-transform:lowercase}
.brand-tag::first-letter{text-transform:uppercase}
.workspace-switch{display:flex;align-items:center;gap:10px;width:100%;margin-bottom:18px;padding:7px 10px 7px 7px;text-align:left;border-radius:var(--r-md);background:var(--fill-1);transition:background var(--d-fast) var(--ease-out)}
.workspace-switch:hover{background:var(--fill-2)}
.workspace-switch>span:nth-child(2){flex:1;min-width:0}
.workspace-switch strong{display:block;font-size:13px;font-weight:620;line-height:1.25}
.workspace-switch small{display:block;margin-top:1px;font-size:11.5px;color:var(--label-2)}
.workspace-switch>svg{color:var(--label-3)}
.workspace-symbol{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:linear-gradient(180deg,#2d735c,#173f35);color:#fff;font-size:15px;font-weight:760;letter-spacing:-.02em;box-shadow:inset 0 1px 0 rgb(255 255 255/.18),0 1px 2px rgb(23 63 53/.3)}
.nav-group{margin-bottom:14px}
.nav-group>p{margin:0 10px 4px;font-size:11.5px;font-weight:620;letter-spacing:0;color:var(--label-2);text-transform:lowercase}
.nav-group>p::first-letter{text-transform:uppercase}
.nav-link{display:flex;align-items:center;gap:10px;min-height:32px;margin:1px 0;padding:6px 10px;border-radius:9px;font-size:13.5px;font-weight:500;color:var(--label);transition:background var(--d-fast) var(--ease-out)}
.nav-link>svg{width:17px;height:17px;color:var(--accent-symbol)}
.nav-link:hover{background:var(--fill-1)}
.nav-link.active{background:var(--selection);font-weight:620}
.nav-link:active{background:var(--fill-2)}
.nav-link>span:nth-child(2){flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-count{display:grid;place-items:center;min-width:20px;height:18px;padding:0 6px;border-radius:var(--r-pill);background:var(--fill-2);color:var(--label-2);font-size:11.5px;font-weight:620;font-variant-numeric:tabular-nums}
.nav-link.active .nav-count{background:var(--accent);color:var(--on-accent)}
.sidebar-bottom{margin-top:auto;padding-top:10px}
.ai-nav{display:flex;align-items:center;gap:10px;width:100%;margin-bottom:6px;padding:9px 10px 9px 8px;text-align:left;border-radius:var(--r-md);background:var(--fill-1);transition:background var(--d-fast) var(--ease-out)}
.ai-nav:hover{background:var(--fill-2)}
.ai-nav.active{background:var(--selection)}
.ai-nav>span:nth-child(2){flex:1;min-width:0}
.ai-nav strong{display:block;font-size:13px;font-weight:620;color:var(--label)}
.ai-nav small{display:block;margin-top:1px;font-size:11.5px;color:var(--label-2)}
.ai-nav>svg{color:var(--label-3)}
.ai-symbol{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:linear-gradient(180deg,#2d735c,#173f35);color:#fff;box-shadow:inset 0 1px 0 rgb(255 255 255/.18),0 1px 2px rgb(23 63 53/.3)}
.ai-symbol>svg{width:16px;height:16px}
.sidebar-status{display:flex;align-items:center;gap:7px;margin-top:8px;padding:10px 10px 2px;border-top:var(--hairline-w) solid var(--hairline);font-size:11.5px;color:var(--label-2)}
.sidebar-status>span:last-child{margin-left:auto;font-variant-numeric:tabular-nums}
.online-dot{display:inline-block;flex-shrink:0;width:7px;height:7px;border-radius:50%;background:var(--green-dot);box-shadow:0 0 0 2.5px var(--green-tint);vertical-align:middle}

/* ===== [03b COLLAPSIBLE ICON RAIL (.app.sidebar-railed; toolbar toggle or Cmd/Ctrl+B)] =====
   used by: App.tsx <div class="app sidebar-railed"> + .sidebar-toggle (App.tsx:81 wrapper, :83 toggle)
   source:  styles.css:1523-1539 */
/* Collapsible sidebar: an icon rail on desktop (toolbar toggle or Cmd/Ctrl+B); phones and tablets keep the drawer. */
.sidebar-toggle{display:none}
@media(min-width:1025px){
.sidebar-toggle{display:inline-flex;margin-left:-6px;margin-right:2px;color:var(--label-2)}
.sidebar,.workspace,.toast{transition:width var(--d-settle,420ms) var(--ease-out),margin-left var(--d-settle,420ms) var(--ease-out),left var(--d-settle,420ms) var(--ease-out)}
.sidebar-railed{--sidebar-w:60px;--workspace-offset:calc(var(--sidebar-w) + var(--sidebar-inset)*2)}
.sidebar-railed .sidebar{padding:12px 8px 10px}
.sidebar-railed .brand,.sidebar-railed .nav-group>p,.sidebar-railed .workspace-switch>span:nth-child(2),.sidebar-railed .workspace-switch>svg,.sidebar-railed .ai-nav>span:nth-child(2),.sidebar-railed .ai-nav>svg,.sidebar-railed .sidebar-status,.sidebar-railed .nav-link>span:not(.nav-count){display:none}
.sidebar-railed .workspace-switch{justify-content:center;margin-bottom:14px;padding:4px 0;background:none}
.sidebar-railed .nav-group{margin-bottom:10px;padding-top:10px;box-shadow:inset 0 var(--hairline-w,1px) 0 var(--hairline)}
.sidebar-railed .nav-group:first-child{padding-top:0;box-shadow:none}
.sidebar-railed .nav-link{position:relative;justify-content:center;min-height:36px;padding:0}
.sidebar-railed .nav-link>svg{width:18px;height:18px}
.sidebar-railed .nav-count{position:absolute;top:3px;right:4px;min-width:15px;height:15px;padding:0 4px;font-size:10px}
.sidebar-railed .ai-nav{justify-content:center;padding:8px 0}
}
@media(prefers-reduced-motion:reduce){.sidebar,.workspace,.toast{transition:none}}

/* ===== [03c MOBILE MENU / BACKDROP DEFAULTS (hidden on desktop)] =====
   used by: App.tsx .mobile-menu button, .mobile-backdrop (App.tsx:81 backdrop, :83 menu button). The drawer itself is group 03d (<=1024) and group 16 (<=760).
   source:  styles.css:187-188 */
.mobile-menu{display:none}
.mobile-backdrop{display:none}

/* ===== [04 UNIFIED GLASS TOOLBAR (location/breadcrumb, search capsule + keycap + results popover, Ask-assistant capsule, demo pill, icon buttons, bell + unread dot, divider, profile capsule)] =====
   used by: App.tsx <header class="topbar"> (App.tsx:83)
   source:  styles.css:134-176 */
/* Shell: unified glass toolbar */
.workspace{margin-left:var(--workspace-offset);min-width:0}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:20px;height:var(--toolbar-h);padding:0 28px 0 18px}
.topbar::before{content:'';position:absolute;inset:0;z-index:-1;background:var(--glass-bar);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);pointer-events:none}
@supports(animation-timeline:scroll()){.topbar{animation:toolbar-edge linear both;animation-timeline:scroll(root);animation-range:0 28px}}
@supports not (animation-timeline:scroll()){.topbar{box-shadow:0 var(--hairline-w) 0 var(--hairline)}}
.topbar-location{display:flex;flex:1;align-items:center;gap:8px;min-width:0;font-size:13.5px;white-space:nowrap}
.breadcrumb{color:var(--label-2)}
.breadcrumb-slash{color:var(--label-4)}
.topbar-location>strong{font-size:14px;font-weight:650;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis}
.global-search{position:relative;display:flex;align-items:center;gap:8px;width:300px;height:34px;padding:0 8px 0 12px;border-radius:var(--r-pill);background:var(--fill-1);color:var(--label-2);transition:background var(--d-fast) var(--ease-out),box-shadow var(--d-fast) var(--ease-out)}
.global-search:hover{background:var(--fill-2)}
.global-search:focus-within{background:var(--field-bg);box-shadow:var(--field-ring),0 0 0 3.5px var(--focus-ring)}
.global-search>svg{width:15px;height:15px}
.global-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;font-size:13.5px;color:var(--label)}
.global-search kbd{display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:5px;background:var(--surface);box-shadow:var(--control-ring);color:var(--label-2);font-size:11.5px;font-weight:600}
.search-results{position:absolute;top:calc(100% + 8px);left:0;right:0;min-width:340px;z-index:60;padding:6px;border-radius:var(--r-lg);background:var(--glass-strong);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-pop);transform-origin:top center;animation:materialize var(--d-pop) var(--ease-spring)}
.search-results>button{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border-radius:var(--r-sm);text-align:left;color:var(--label)}
.search-results>button>svg{color:var(--label-3)}
.search-results>button:hover,.search-results>button:focus-visible{background:var(--accent);color:var(--on-accent);outline:0}
.search-results>button:hover svg,.search-results>button:hover small,.search-results>button:focus-visible svg,.search-results>button:focus-visible small{color:rgb(255 255 255/.78)}
.search-results>button>span{flex:1;min-width:0;font-size:13.5px;font-weight:550}
.search-results small{display:block;margin-top:1px;font-size:12px;font-weight:450;color:var(--label-2);text-transform:capitalize}
.search-results>p{padding:12px;font-size:13px;color:var(--label-2)}
.topbar-actions{display:flex;align-items:center;gap:6px}
.toolbar-ai{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px 0 4px;border-radius:var(--r-pill);background:var(--control-bg);box-shadow:var(--control-ring);color:var(--label);font-size:13px;font-weight:600;white-space:nowrap;transition:background var(--d-fast) var(--ease-out),transform 90ms var(--ease-out)}
.toolbar-ai:hover{background:var(--control-bg-hover)}
.toolbar-ai:active{transform:scale(.97)}
.toolbar-ai-icon{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;background:linear-gradient(180deg,#2d735c,#173f35);color:#fff;box-shadow:inset 0 1px 0 rgb(255 255 255/.18),0 1px 2px rgb(23 63 53/.3)}
.toolbar-ai-icon>svg{width:14px;height:14px}
.demo-pill{padding:3px 9px;border-radius:var(--r-pill);background:var(--amber-tint);color:var(--amber-text);font-size:12px;font-weight:600;white-space:nowrap}
.icon-button{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--r-pill);color:var(--label-2);transition:background var(--d-fast) var(--ease-out),color var(--d-fast) var(--ease-out),transform 90ms var(--ease-out)}
.icon-button:hover{background:var(--fill-1);color:var(--label)}
.icon-button:active{background:var(--fill-2);transform:scale(.94)}
.icon-button>svg{width:18px;height:18px}
.notification-button{position:relative}
.notification-button>i{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--rose-dot);box-shadow:0 0 0 2px var(--canvas)}
.topbar-divider{height:20px;margin:0 4px;border-left:var(--hairline-w) solid var(--hairline-strong)}
.profile-button{display:flex;align-items:center;gap:9px;padding:3px 10px 3px 3px;border-radius:var(--r-pill);text-align:left;transition:background var(--d-fast) var(--ease-out)}
.profile-button:hover{background:var(--fill-1)}
.profile-button strong{display:block;font-size:13px;font-weight:620;line-height:1.2}
.profile-button small{display:block;margin-top:1px;font-size:11.5px;color:var(--label-2);text-transform:capitalize}
.profile-button>svg{margin-left:2px;color:var(--label-3)}

/* ===== [04b PRESENCE STACK + POPOVER + FOLLOW PILL] =====
   used by: Presence.tsx (whole component). Responsive rules for presence are inside the Intelligence media blocks of group 26 (styles.css:1417-1444).
   source:  styles.css:1378-1416 */
/* Live workspace presence */
.presence-area{display:flex;align-items:center;gap:8px}
.presence-menu{position:relative}
.presence-menu:hover::after{content:'';position:absolute;top:100%;left:0;right:0;height:10px}
.presence-trigger{display:flex;align-items:center;justify-content:center;gap:6px;min-width:44px;height:32px;padding:0 6px 0 4px;border-radius:var(--r-pill);background:var(--control-bg);box-shadow:var(--control-ring);color:var(--label-2);transition:background var(--d-fast) var(--ease-out),transform 90ms var(--ease-out)}
.presence-trigger:hover,.presence-menu.open .presence-trigger{background:var(--control-bg-hover);color:var(--label)}
.presence-trigger:active{transform:scale(.97)}
.presence-trigger>svg{margin-left:4px}
.presence-trigger:has(>.presence-avatars){padding:0 3px}
.presence-avatars{display:flex;align-items:center}
.presence-avatars>.avatar{width:26px;height:26px;background:linear-gradient(var(--accent-tint-2),var(--accent-tint-2)),var(--surface);font-size:11.5px;letter-spacing:-.03em;box-shadow:0 0 0 1.5px var(--surface)}
.presence-avatars>.avatar.teal{background:linear-gradient(var(--green-tint),var(--green-tint)),var(--surface)}
.presence-avatars>.avatar.rose,.presence-avatars>.avatar.amber,.presence-avatars>.avatar.blue,.presence-avatars>.avatar.neutral{background:linear-gradient(var(--fill-2),var(--fill-2)),var(--surface);color:var(--label-2)}
.presence-avatars>.avatar+.avatar{margin-left:-1px}
.presence-avatars~.presence-count{display:none}
.presence-count{display:grid;place-items:center;min-width:20px;height:18px;padding:0 6px;border-radius:var(--r-pill);background:var(--accent-tint-2);color:var(--accent-text);font-size:11.5px;font-weight:650;line-height:1;font-variant-numeric:tabular-nums}
.presence-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:75;width:340px;max-height:min(520px,75vh);overflow:auto;overscroll-behavior:contain;border-radius:var(--r-lg);background:linear-gradient(var(--glass-strong),var(--glass-strong)),var(--surface);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-pop);transform-origin:top right;opacity:0;visibility:hidden;transform:translateY(-4px) scale(.97);pointer-events:none;transition:opacity var(--d-pop) var(--ease-spring),transform var(--d-pop) var(--ease-spring),visibility 0s linear var(--d-pop)}
.presence-menu.open .presence-popover,.presence-menu:hover .presence-popover,.presence-menu:focus-within .presence-popover{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition-delay:0s}
.presence-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px 12px;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.presence-heading>span:first-child{display:grid;gap:2px}
.presence-heading strong{font-size:14px;font-weight:650;letter-spacing:-.01em;color:var(--label)}
.presence-heading small{font-size:12px;color:var(--label-2)}
.presence-live{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--green-text)}
.presence-live i{width:7px;height:7px;border-radius:50%;background:var(--green-dot);box-shadow:0 0 0 3px var(--green-tint)}
.presence-list{padding:6px}
.presence-person{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 8px 8px 10px;border-radius:var(--r-md);transition:background var(--d-fast) var(--ease-out)}
.presence-person:hover{background:var(--fill-1)}
.presence-person-copy{display:grid;gap:2px;min-width:0}
.presence-person-copy strong{overflow:hidden;font-size:13.5px;font-weight:600;color:var(--label);text-overflow:ellipsis;white-space:nowrap}
.presence-person-copy small{display:block;overflow:hidden;font-size:12px;color:var(--label-2);text-overflow:ellipsis;white-space:nowrap}
.presence-person-copy small>svg{margin-right:4px;vertical-align:-1px;color:var(--label-3)}
.presence-empty{padding:28px 20px;font-size:13px;line-height:1.5;color:var(--label-2);text-align:center}
.presence-privacy{padding:10px 16px 12px;box-shadow:inset 0 var(--hairline-w) 0 var(--hairline);font-size:12px;line-height:1.45;color:var(--label-2)}
.presence-stop{display:flex;align-items:center;gap:8px;height:32px;max-width:240px;padding:0 10px 0 12px;border-radius:var(--r-pill);background:var(--green-tint);color:var(--green-text);font-size:12.5px;font-weight:560;white-space:nowrap;transform-origin:right center;transition:background var(--d-fast) var(--ease-out),transform 90ms var(--ease-out);animation:materialize var(--d-pop) var(--ease-spring)}
.presence-stop>span:nth-child(2){min-width:0;overflow:hidden;text-overflow:ellipsis}
.presence-stop b{font-weight:680}
.presence-stop:hover{background:color-mix(in srgb,var(--green-dot) 20%,transparent)}
.presence-stop:active{transform:scale(.97)}
.presence-stop .online-dot{width:6px;height:6px}

/* ===== [04c AVATARS / MONOGRAMS (person avatars) + AVATAR STACK] =====
   used by: ui.tsx Avatar; ui.tsx ProjectCard .avatar-stack; CRM.tsx Person
   source:  styles.css:177-183, styles.css:508-515 */
.avatar{position:relative;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:32px;height:32px;overflow:hidden;border-radius:50%;background:var(--accent-tint-2);color:var(--accent-text);font-size:12px;font-weight:650;letter-spacing:0;box-shadow:inset 0 0 0 var(--hairline-w) rgb(0 0 0/.06)}
.avatar.small{width:24px;height:24px;font-size:11.5px;letter-spacing:-.03em}
.avatar.large{width:56px;height:56px;font-size:19px}
.avatar.teal{background:var(--green-tint);color:var(--green-text)}
.avatar.rose,.avatar.amber,.avatar.blue{background:var(--fill-2);color:var(--label-2)}
.avatar.neutral{background:var(--fill-2);color:var(--label-2)}
.avatar>img,.avatar img{position:absolute;inset:0;width:100%;height:100%;border-radius:inherit;object-fit:cover;background:var(--fill-1)}
.avatar-stack{display:flex;align-items:center}
.avatar-stack>.avatar{background:linear-gradient(var(--accent-tint-2),var(--accent-tint-2)),var(--surface);font-size:11.5px;box-shadow:0 0 0 2px var(--surface)}
.avatar-stack>.avatar.teal{background:linear-gradient(var(--green-tint),var(--green-tint)),var(--surface)}
.avatar-stack>.avatar.rose{background:linear-gradient(var(--rose-tint),var(--rose-tint)),var(--surface)}
.avatar-stack>.avatar.amber{background:linear-gradient(var(--amber-tint),var(--amber-tint)),var(--surface)}
.avatar-stack>.avatar.blue{background:linear-gradient(var(--blue-tint),var(--blue-tint)),var(--surface)}
.avatar-stack>.avatar.neutral{background:linear-gradient(var(--fill-2),var(--fill-2)),var(--surface)}
.avatar-stack>.avatar+.avatar{margin-left:-2px}

/* ===== [05 PREVIEW BANNER, SKIP LINK, MAIN CONTENT, PAGE CONTENT, PAGE HEADING (large title + subtitle + heading actions)] =====
   used by: App.tsx (skip link, <main id="main-content">), CRM.tsx PageHeading (CRM.tsx:15), Dashboard.tsx:34
   source:  styles.css:184-186, styles.css:189-197, styles.css:1540-1541 */
.preview-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 28px 0 18px;padding:9px 14px;border-radius:var(--r-md);background:var(--accent-tint);color:var(--accent-text);font-size:13px}
.preview-banner>span{display:flex;align-items:center;gap:8px}
.preview-banner>button{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:620;color:var(--accent-text)}
.skip-link{position:fixed;top:-100px;left:14px;z-index:1000;padding:9px 16px;border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);font-weight:620}
.skip-link:focus{top:14px}
.main-content{padding:24px 28px 48px 18px;outline:0}
.page-content{max-width:1520px;margin:0 auto}
.page-content>*{animation:settle var(--d-settle) var(--ease-spring) backwards}
.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:8px 0 24px}
.page-heading p{margin-top:6px;font-size:15px;color:var(--label-2)}
.heading-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.heading-actions:empty{display:none}
/* Room under the last row for the floating @EQUA launcher. */
.page-content{padding-bottom:56px}

/* ===== [06 TOAST + NOTIFICATION POPOVER] =====
   used by: App.tsx toast (App.tsx:87) and notifications popover (App.tsx:93)
   source:  styles.css:212-221 */
.toast{position:fixed;bottom:24px;left:calc(50% + var(--workspace-offset)/2);z-index:100;display:flex;align-items:center;gap:12px;max-width:min(560px,calc(100vw - 32px));padding:10px 10px 10px 16px;transform:translateX(-50%);border-radius:var(--r-lg);background:rgb(29 29 31/.9);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:#f5f5f7;font-size:13.5px;font-weight:550;box-shadow:var(--shadow-pop);animation:rise-in var(--d-pop) var(--ease-spring)}
.toast>.icon-button{width:26px;height:26px;color:rgb(255 255 255/.72)}
.toast>.icon-button:hover{background:rgb(255 255 255/.12);color:#fff}
.notification-popover{position:fixed;top:calc(var(--toolbar-h) + 6px);right:24px;z-index:65;width:400px;max-height:74vh;overflow:auto;padding:6px;border-radius:var(--r-xl);background:var(--glass-strong);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-pop);transform-origin:top right;animation:materialize var(--d-pop) var(--ease-spring)}
.notification-row{display:flex;align-items:center;gap:12px;width:100%;padding:11px 12px;border-radius:var(--r-md);text-align:left}
.notification-row+.notification-row{box-shadow:0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.notification-row:hover{background:var(--fill-1)}
.notification-row>span:nth-child(2){flex:1;min-width:0}
.notification-row strong{display:block;font-size:13.5px;font-weight:600}
.notification-row small{display:block;margin-top:2px;font-size:12.5px;line-height:1.45;color:var(--label-2)}

/* ===== [07 BUTTONS (primary / secondary / danger / small / text / full-width) — press = scale(.97) in 90ms] =====
   used by: ui.tsx + every page; disabled primary rule is in group 01 (styles.css:64); icon-button is in group 04 (styles.css:165-168)
   source:  styles.css:223-237 */
/* Controls */
.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;padding:0 16px;border-radius:var(--r-pill);background:var(--control-bg);box-shadow:var(--control-ring);color:var(--label);font-size:13.5px;font-weight:580;letter-spacing:-.005em;white-space:nowrap;transition:background var(--d-fast) var(--ease-out),box-shadow var(--d-fast) var(--ease-out),transform 90ms var(--ease-out)}
.button>svg{width:16px;height:16px}
.button:hover{background:var(--control-bg-hover)}
.button:active:not(:disabled){transform:scale(.97)}
.button.primary{background:var(--accent);color:var(--on-accent);box-shadow:inset 0 1px 0 rgb(255 255 255/.14),0 1px 2px rgb(15 45 39/.28),0 3px 10px rgb(15 45 39/.14)}
.button.primary:hover{background:var(--accent-hover)}
.button.small{min-height:28px;padding:0 12px;font-size:12.5px}
.button.small>svg{width:14px;height:14px}
.button.danger{background:var(--rose-tint);color:var(--rose-text);box-shadow:none}
.button.danger:hover{background:rgb(255 59 48/.16)}
.full-width{width:100%}
.text-button{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:580;color:var(--accent-text);white-space:nowrap;transition:opacity var(--d-fast) var(--ease-out)}
.text-button>svg{width:15px;height:15px}
.text-button:hover{opacity:.72}

/* ===== [08 TABS TRACK (pill tabs + counts) / SEGMENTED CONTROL / SEARCH BOX / LIST TOOLBAR] =====
   used by: CRM.tsx Tabs (CRM.tsx:16), ui.tsx SearchBox, CRM.tsx list-toolbar record-toolbar
   source:  styles.css:238-258 */
.tabs{display:flex;align-items:center;gap:2px;width:max-content;max-width:100%;margin:18px 0 20px;padding:3px;overflow:auto;border-radius:var(--r-pill);background:var(--fill-1);white-space:nowrap;scrollbar-width:none}
.tabs>button{position:relative;min-height:30px;padding:0 14px;border-radius:var(--r-pill);color:var(--label-2);font-size:13px;font-weight:560;transition:background var(--d-fast) var(--ease-out),color var(--d-fast) var(--ease-out)}
.tabs>button:hover{color:var(--label)}
.tabs>button.active{background:var(--segment-bg);color:var(--label);font-weight:620;box-shadow:var(--shadow-segment)}
.tabs>button.active::after{content:none}
@supports(animation-timeline:scroll()){.tabs,.segmented{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - var(--tabs-fade)),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - var(--tabs-fade)),transparent);animation:tabs-fade linear both;animation-timeline:scroll(self inline)}}
@keyframes tabs-fade{0%,92%{--tabs-fade:28px}100%{--tabs-fade:0px}}
.tabs>button:has(.tab-count){display:inline-flex;align-items:center;gap:7px;padding-right:8px}
.tab-count{display:inline-grid;place-items:center;min-width:20px;height:18px;padding:0 6px;border-radius:var(--r-pill);background:var(--fill-2);color:var(--label-2);font-size:11.5px;font-weight:620;font-variant-numeric:tabular-nums}
.tabs>button.active .tab-count{background:var(--accent-tint-2);color:var(--accent-text)}
.segmented{display:flex;gap:2px;padding:3px;border-radius:var(--r-md);background:var(--fill-1)}
.segmented>button{display:grid;place-items:center;min-width:30px;height:26px;padding:0 7px;border-radius:7px;color:var(--label-2);transition:background var(--d-fast) var(--ease-out),color var(--d-fast) var(--ease-out)}
.segmented>button:hover{color:var(--label)}
.segmented>button.active{background:var(--segment-bg);color:var(--label);box-shadow:var(--shadow-segment)}
.search-box{display:flex;align-items:center;gap:8px;min-width:200px;height:32px;padding:0 12px;border-radius:var(--r-pill);background:var(--fill-1);color:var(--label-2);transition:background var(--d-fast) var(--ease-out),box-shadow var(--d-fast) var(--ease-out)}
.search-box:focus-within{background:var(--field-bg);box-shadow:var(--field-ring),0 0 0 3.5px var(--focus-ring)}
.search-box>svg{width:15px;height:15px}
.search-box input{width:100%;min-width:0;border:0;outline:0;background:transparent;font-size:13.5px;color:var(--label)}
.list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px 12px 20px;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.list-toolbar.standalone{margin:20px 0 16px;padding:0;box-shadow:none}
.list-toolbar .tabs{margin:0}

/* ===== [09 FIELDS / SELECTS / TEXTAREA / CHECKBOX / CHOICE CHIPS / UPLOAD BUTTON] =====
   used by: ui.tsx Field (<label class="field">), filter-select / inline-select everywhere
   source:  styles.css:259-283 */
.field{display:flex;flex-direction:column;gap:7px;min-width:0;text-align:left}
.field>span{font-size:13px;font-weight:580;color:var(--label)}
.field.full{grid-column:1/-1}
.field input,.field select,.field textarea,.inline-select,.filter-select{width:100%;min-height:36px;padding:7px 12px;border:0;border-radius:9px;background:var(--field-bg);box-shadow:var(--field-ring);color:var(--label);font-size:14px;outline:0;transition:box-shadow var(--d-fast) var(--ease-out)}
.field input:focus,.field select:focus,.field textarea:focus,.inline-select:focus,.filter-select:focus{box-shadow:0 0 0 1px var(--accent-symbol),0 0 0 4px var(--focus-ring)}
.field select,.inline-select,.filter-select{appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238e8e93' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 15 5 5 5-5'/%3E%3Cpath d='m7 9 5-5 5 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center}
.field textarea{min-height:92px;line-height:1.5;resize:vertical}
.field input[type=checkbox]{width:16px;min-height:16px;box-shadow:none}
.field small{font-size:12px;line-height:1.5;color:var(--label-2)}
.inline-select,.filter-select{width:auto;max-width:100%;min-height:32px;padding:5px 30px 5px 11px;font-size:13px}
input.filter-select{padding-right:11px;background-image:none}
input.filter-select::-webkit-calendar-picker-indicator{margin-left:6px;opacity:.55;cursor:pointer}
.inline-select{min-height:28px;padding-top:3px;padding-bottom:3px}
.inline-checkbox{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--label)}
input[type=checkbox],input[type=radio]{width:16px;height:16px;accent-color:var(--accent-symbol)}
.checkbox-control{display:flex;align-items:center;gap:9px;min-height:36px;font-size:13.5px}
.multi-choice{display:flex;flex-wrap:wrap;gap:6px}
.choice-chip{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:0 12px;border-radius:var(--r-pill);background:var(--fill-1);color:var(--label);font-size:13px;font-weight:520;transition:background var(--d-fast) var(--ease-out)}
.choice-chip:hover{background:var(--fill-2)}
.choice-chip.selected{background:var(--accent-tint-2);color:var(--accent-text);box-shadow:inset 0 0 0 1px rgb(36 120 94/.28);font-weight:600}
.choice-chip .chip-customer{color:inherit;opacity:.65;font-weight:450;font-size:12px}
.choice-chip .chip-customer::before{content:"· ";}
.upload-button{position:relative;cursor:pointer}
.upload-button input{position:absolute;width:1px;height:1px;opacity:0}
.upload-button:focus-within{outline:3px solid var(--focus-ring);outline-offset:2px}

/* ===== [09b SWITCH (macOS "Tag along" switch) + GUIDED FORM NOTE + CO-WORKING CURSOR] =====
   used by: App.tsx assistant drawer <label class="follow-toggle"> (App.tsx:92); RecordEditor guided note; App.tsx .cowork-cursor (App.tsx:86)
   source:  follow-me.css:14-36 */
/* Tag along: macOS switch, guided form note and the co-working cursor */
.follow-toggle{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:560;color:var(--label);cursor:pointer;-webkit-user-select:none;user-select:none}
.follow-toggle input{position:relative;flex:none;width:38px;height:22px;margin:0;border-radius:var(--r-pill);background:var(--fill-3);-webkit-appearance:none;appearance:none;cursor:pointer;transition:background var(--d-fast) var(--ease-out)}
.follow-toggle input::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:var(--r-pill);background:var(--on-accent);box-shadow:0 0 0 .5px rgb(0 0 0/.04),0 2px 4px rgb(0 0 0/.2);transition:transform var(--d-pop) var(--ease-spring),width var(--d-pop) var(--ease-spring)}
.follow-toggle input:checked{background:var(--accent-symbol)}
.follow-toggle input:checked::after{transform:translateX(16px)}
.follow-toggle input:active::after{width:22px}
.follow-toggle input:checked:active::after{transform:translateX(12px)}
.follow-toggle input:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:var(--r-pill)}
.follow-toggle input:disabled{cursor:default;opacity:.5}
.guided-form-note{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px;padding:14px 16px;border-radius:var(--r-lg);background:var(--accent-tint)}
.guided-form-note>svg{flex:none;margin-top:1px;color:var(--accent-symbol)}
.guided-form-note strong{display:block;margin-bottom:2px;font-size:13.5px;font-weight:650;color:var(--accent-text)}
.guided-form-note p{font-size:13px;line-height:1.5;color:var(--label)}








@supports(corner-shape:superellipse(1.4)){.assistant-drawer,.guided-form-note{corner-shape:superellipse(1.4)}}

/* ===== [10 PANELS + PANEL HEADINGS + SECTION HEADINGS] =====
   used by: ui.tsx Panel (<section class="panel">), Dashboard/CRM section-heading
   source:  styles.css:285-295 */
/* Containers */
.panel{min-width:0;overflow:hidden;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1)}
.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px 0}
.panel-heading>.text-button{margin-top:2px}
.panel-heading+.table-scroll{margin-top:10px}
.panel-heading p{margin-top:3px;font-size:13px;color:var(--label-2)}
.panel-body{padding:20px}
.padded-heading{padding:18px 20px 0}
.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:34px 0 14px}
.section-heading h2{font-size:20px;font-weight:700;letter-spacing:-.018em}
.section-heading p{margin-top:3px;font-size:13.5px;color:var(--label-2)}

/* ===== [11 BADGES / STATE BADGES / STATUS DOTS / MINI DOTS / COUNT BADGES / PROGRESS / LOCK BADGE] =====
   used by: ui.tsx Badge, Progress; Dashboard count-badge; lock-badge in ui.tsx ProjectCard
   source:  styles.css:296-318, styles.css:1446-1449 */
.badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px 0 8px;border-radius:var(--r-pill);background:var(--fill-1);color:var(--label-2);font-size:12px;font-weight:600;letter-spacing:0;white-space:nowrap}
.status-dot{width:6px;height:6px;flex-shrink:0;border-radius:50%;background:var(--label-3)}
.badge.teal,.badge.indigo{background:var(--green-tint);color:var(--green-text)}
.badge.teal .status-dot,.badge.indigo .status-dot{background:var(--green-dot)}
.badge.amber{background:var(--amber-tint);color:var(--amber-text)}
.badge.amber .status-dot{background:var(--amber-dot)}
.badge.rose{background:var(--rose-tint);color:var(--rose-text)}
.badge.rose .status-dot{background:var(--rose-dot)}
.badge.blue{background:var(--blue-tint);color:var(--blue-text)}
.badge.blue .status-dot{background:var(--blue-dot)}
.mini-dot{display:inline-block;flex-shrink:0;width:7px;height:7px;border-radius:50%;background:var(--label-3)}
.mini-dot.teal,.mini-dot.indigo{background:var(--green-dot)}
.mini-dot.amber{background:var(--amber-dot)}
.mini-dot.rose{background:var(--rose-dot)}
.mini-dot.blue{background:var(--blue-dot)}
.mini-dot.neutral{background:var(--label-3)}
.count-badge,.subtle-count{display:inline-grid;place-items:center;min-width:24px;height:22px;padding:0 8px;border-radius:var(--r-pill);background:var(--fill-2);color:var(--label-2);font-size:12px;font-weight:620;font-variant-numeric:tabular-nums}
.progress{height:6px;overflow:hidden;border-radius:var(--r-pill);background:var(--fill-2)}
.progress>span{display:block;height:100%;border-radius:inherit;background:var(--chart-1)}
.progress.teal>span{background:var(--green-dot)}
.progress.amber>span{background:var(--amber-dot)}
.progress.rose>span{background:var(--rose-dot)}
.progress.blue>span{background:var(--blue-dot)}
.lock-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--r-pill);background:var(--fill-1);color:var(--label);font-size:11px;font-weight:600;opacity:.8;vertical-align:middle}
.project-card h3+.lock-badge{margin:-2px 0 6px}
.lock-note{display:flex;align-items:flex-start;gap:8px;margin:0 0 14px;padding:10px 12px;border-radius:var(--r-sm);background:var(--fill-1);color:var(--label);font-size:13px;line-height:1.45}
.lock-note svg{flex-shrink:0;margin-top:2px}

/* ===== [12 ZEBRA TABLES + RECORD LINKS + CELL SUBLINES + MUTED] =====
   used by: ui.tsx Table (<div class="table-scroll"><table class="data-table">)
   source:  styles.css:319-336 */
.table-scroll{width:100%;overflow:auto}
table{width:100%;border-collapse:collapse;text-align:left;font-size:13.5px}
th{padding:10px 16px;border-bottom:var(--hairline-w) solid var(--hairline);background:transparent;color:var(--label-2);font-size:12px;font-weight:600;white-space:nowrap}
td{padding:11px 16px;color:var(--label);white-space:nowrap}
th:first-child,td:first-child{padding-left:20px}
th:last-child,td:last-child{padding-right:20px}
tbody tr:nth-child(even){background:var(--row-alt)}
tbody tr{transition:background var(--d-fast) var(--ease-out)}
tbody tr:hover{background:var(--fill-1)}
.record-link{font-weight:600;color:var(--label);text-align:left}
.record-link:hover{color:var(--accent-text);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.cell-sub{display:block;max-width:400px;margin-top:2px;overflow:hidden;font-size:12px;font-weight:450;color:var(--label-2);text-overflow:ellipsis;font-variant-numeric:normal}
.wrap-cell{min-width:190px;max-width:380px;font-size:13px;line-height:1.5;white-space:normal}
.wrap-cell details summary{cursor:pointer;font-size:12.5px;font-weight:580;color:var(--accent-text)}
.wrap-cell details pre{max-width:300px;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}
.muted{font-size:13px;line-height:1.55;color:var(--label-2)}
.muted code{font-size:inherit}
.danger-text{color:var(--rose-text)!important}

/* ===== [12b PHONE TABLE -> CARD STACKING (<=640px; td[data-label] set by ui.tsx Table)] =====
   used by: ui.tsx Table
   source:  styles.css:1497-1512 */
@media(max-width:640px){
.table-scroll:has(>table.data-table){overflow:visible;-webkit-mask-image:none;mask-image:none}
.table-scroll table.data-table{min-width:0;width:100%}
table.data-table,table.data-table>tbody{display:block}
table.data-table>thead{display:none}
table.data-table>tbody>tr{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;padding:14px 16px;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
table.data-table>tbody>tr:last-child{box-shadow:none}
table.data-table>tbody>tr>td{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:3px;min-width:0;padding:0!important;border:0;text-align:left;white-space:normal;overflow-wrap:anywhere;box-shadow:none;background:none}
table.data-table>tbody>tr>td::before{content:attr(data-label);font-size:12px;font-weight:500;line-height:1.3;color:var(--label-2)}
table.data-table>tbody>tr>td:first-child{grid-column:1/-1;padding-right:40px!important;font-size:15px}
table.data-table>tbody>tr>td:first-child::before,table.data-table>tbody>tr>td[data-label=""]::before{content:none}
table.data-table>tbody>tr>td[colspan]{grid-column:1/-1}
table.data-table>tbody>tr>td:empty{display:none}
table.data-table>tbody>tr>td:last-child:not(:first-child):has(>.icon-button:only-child){position:absolute;top:10px;right:8px}
table.data-table>tbody>tr>td:not(:first-child):has(>.button,>.icon-button:not(:only-child)){grid-column:1/-1;flex-direction:row;flex-wrap:wrap;gap:8px}
table.data-table .company-cell{width:100%}}

/* ===== [13 EMPTY STATE / ERROR / ALL-CLEAR] =====
   used by: ui.tsx Empty, ErrorMessage; Dashboard .all-clear
   source:  styles.css:337-344 */
.all-clear{display:flex;align-items:center;gap:10px;padding:36px 20px;color:var(--green-text);font-size:14px;font-weight:560}
.empty{padding:56px 24px;text-align:center;color:var(--label-2)}
.empty>svg{width:34px;height:34px;margin-bottom:14px;color:var(--label-3)}
.empty>.button,.empty>p+.button{margin-top:16px}
.empty h3{font-size:17px;font-weight:650;color:var(--label)}
.empty p{max-width:42ch;margin:8px auto 18px;font-size:13.5px;line-height:1.55}
.error{display:flex;align-items:flex-start;gap:9px;margin-bottom:16px;padding:12px 14px;border-radius:var(--r-md);background:var(--rose-tint);color:var(--rose-text);font-size:13.5px;line-height:1.5}
.error>svg{width:17px;height:17px;margin-top:1px}

/* ===== [14 DISCLOSURE DATA TABLE (chart fallback) + SOURCE TEXT] =====
   used by: Dashboard.tsx RevenueChart <details class="chart-data">
   source:  styles.css:345-353 */
.chart-data{padding:4px 20px 14px;font-size:12.5px;color:var(--label-2)}
.chart-data summary{display:flex;align-items:center;gap:6px;width:fit-content;padding:6px 0;cursor:pointer;list-style:none;font-weight:580;color:var(--accent-text)}
.chart-data summary::-webkit-details-marker{display:none}
.chart-data summary::before{content:'';width:10px;height:10px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") center/contain no-repeat;transition:rotate var(--d-pop) var(--ease-spring)}
.chart-data[open] summary::before{rotate:90deg}
.chart-data table{margin-top:8px}
.chart-data th,.chart-data td{padding:7px 8px;font-size:12.5px;text-align:right}
.chart-data th:first-child,.chart-data td:first-child{text-align:left}
.source-text{max-height:320px;overflow:auto;padding:16px;border-radius:var(--r-md);background:var(--fill-1);font:13px/1.65 inherit;white-space:pre-wrap;overflow-wrap:anywhere}

/* ===== [15 SHEETS / DIALOGS (<dialog class="modal">)] =====
   used by: ui.tsx Modal (ui.tsx:15); CRM.tsx loss dialog. Phone bottom-sheet variant is in group 32 (styles.css:1485-1489) + sheet-up keyframe (group 02).
   source:  styles.css:355-365 */
/* Dialogs as sheets */
.modal{width:560px;max-width:calc(100vw - 24px);max-height:90vh;padding:0;border:0;border-radius:var(--r-2xl);background:var(--surface);color:var(--label);box-shadow:var(--shadow-modal);overflow:auto}
.modal[open]{animation:sheet-in var(--d-settle) var(--ease-spring)}
.modal.wide{width:780px}
.modal::backdrop{background:var(--scrim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:scrim-in var(--d-pop) var(--ease-out)}
.modal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 20px 14px 24px}
.modal-heading h2{font-size:19px;font-weight:700;letter-spacing:-.018em}
.modal-heading p{margin-top:4px;font-size:13.5px;color:var(--label-2)}
.form-body{padding:8px 24px 24px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}
.modal-footer,.modal-actions{position:sticky;bottom:0;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;padding:14px 24px;background:var(--surface);box-shadow:0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
/* Keep each action at its content width so the label never overflows its pill when
   the row is tight — buttons wrap to the next line instead of shrinking. */
.modal-footer>.button,.modal-actions>.button{flex:0 0 auto;max-width:100%}

/* ===== [16 GLOBAL RESPONSIVE BREAKPOINTS (1600 / 1250 / 1000 / 760) + GLOBAL REDUCED MOTION] =====
   used by: shell + controls
   source:  styles.css:367-414 */
@media(min-width:1600px){.main-content{padding:30px 36px 48px 22px}.topbar{padding:0 36px 0 22px}}
@media(max-width:1250px){:root{--sidebar-w:224px}.topbar{gap:14px;padding:0 20px 0 14px}.main-content{padding:20px 20px 36px 14px}.global-search{width:230px}.breadcrumb,.breadcrumb-slash{display:none}.demo-pill{display:none}}
@media(max-width:1000px){.profile-button>span:not(.avatar),.profile-button>svg{display:none}.profile-button{padding:3px}.page-heading h1{font-size:26px}.list-toolbar{flex-wrap:wrap}}
@media(max-width:760px){:root{--workspace-offset:0px;--toolbar-h:52px}
.toolbar-ai{width:32px;padding:0;justify-content:center;background:none;box-shadow:none}
.toolbar-ai>span:not(.toolbar-ai-icon){display:none}
.sidebar{top:8px;left:8px;bottom:8px;z-index:80;background:var(--glass-strong);transform:translateX(calc(-100% - 16px));transition:transform var(--d-settle) var(--ease-spring);box-shadow:var(--shadow-glass),var(--shadow-modal)}
.sidebar:not(.mobile-open){visibility:hidden;box-shadow:none;transition:transform var(--d-settle) var(--ease-spring),visibility 0s linear var(--d-settle),box-shadow 0s linear var(--d-settle)}
.sidebar.mobile-open{transform:translateX(0)}
.page-heading{flex-direction:column;align-items:stretch;gap:14px}
.page-heading .heading-actions{justify-content:flex-start}
.panel-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;padding:16px 16px 0}
.panel-heading>div:first-child{display:contents}
.panel-heading>:not(:first-child){grid-row:1;grid-column:2}
.panel-heading p{grid-column:1/-1}
.padded-heading{padding:16px 16px 0}
.panel-body{padding:16px}
.tabs{scroll-snap-type:x proximity;scroll-padding:0 12px}
.tabs>button{scroll-snap-align:start}
@supports(animation-timeline:scroll()){.topbar-location>strong{animation:toolbar-title linear both;animation-timeline:scroll(root);animation-range:40px 88px}}
.mobile-backdrop{display:block;position:fixed;inset:0;z-index:75;background:var(--scrim);animation:scrim-in var(--d-pop) var(--ease-out)}
.mobile-menu{display:inline-flex;margin-left:-6px}
.topbar{gap:8px;padding:0 12px}
.global-search,.topbar-divider{display:none}
.topbar-actions{gap:4px}
.main-content{padding:18px 16px 32px}
.preview-banner{margin:10px 16px 0;align-items:flex-start;font-size:12.5px}
.page-heading{margin:4px 0 18px}
.page-heading h1{font-size:24px}
.page-heading p{font-size:14px}
.section-heading{margin-top:28px}
.form-grid{grid-template-columns:1fr}
.field.full{grid-column:auto}
.modal{max-width:calc(100vw - 16px);border-radius:var(--r-xl)}
.modal-heading{padding:18px 16px 12px 18px}
.form-body{padding:6px 18px 20px}
.modal-footer,.modal-actions{padding:12px 18px}

th,td{padding:10px 12px}
th:first-child,td:first-child{padding-left:16px}
.table-scroll table{min-width:570px}
.toast{left:50%;bottom:14px;width:calc(100vw - 24px)}
.notification-popover{right:12px;top:calc(var(--toolbar-h) + 4px);width:calc(100vw - 24px)}
.search-box{min-width:0}}
@media(prefers-reduced-motion:reduce){@keyframes materialize{from{opacity:0}}@keyframes settle{from{opacity:.35}}@keyframes sheet-in{from{opacity:0}}@keyframes rise-in{from{opacity:0}}
*,*::before,*::after{scroll-behavior:auto!important;transition-property:opacity,color,background-color,border-color,box-shadow,visibility!important}
.loading-line::after{animation:none!important;width:100%;opacity:.6}
.button:active,.icon-button:active,.toolbar-ai:active{transform:none!important}}

/* ===== [17 INSTRUMENT STRIP OF BUTTONS (stats-grid / stat) — Overview KPI row] =====
   used by: ui.tsx Stat inside Dashboard.tsx <div class="stats-grid"> (Dashboard.tsx:35)
   source:  styles.css:416-431, styles.css:1115-1116 */
/* Dashboard */
/* Overview: instrument strip, scrubbable commercial chart, attention, project cards, team, tasks, management snapshot */
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px;overflow:hidden;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1)}
.stat{display:flex;flex-direction:column;min-width:0;padding:18px 20px 16px;background:transparent;color:var(--label);text-align:left;transition:background var(--d-fast) var(--ease-out)}
.stat+.stat{box-shadow:inset var(--hairline-w) 0 0 var(--hairline)}
.stat:disabled{opacity:1;cursor:default}
.stat:not(:disabled):hover{background:var(--fill-1)}
.stat:not(:disabled):active{background:var(--fill-2)}
.stat:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-4px;border-radius:var(--r-lg)}
.stat-top{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;font-size:13px;font-weight:560;line-height:1.35;color:var(--label-2)}
.stat-top>span:first-child{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.stat-icon{display:grid;place-items:center;flex-shrink:0;color:var(--accent-symbol)}
.stat-icon>svg{width:18px;height:18px}
.stat>strong{display:block;margin:10px 0 8px;overflow:hidden;font-size:34px;font-weight:650;line-height:1.1;letter-spacing:-.025em;color:var(--label);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis}
.stat-unit{margin-left:2px;font-size:22px;font-weight:560;letter-spacing:-.01em;color:var(--label-2)}
.stat-detail{display:flex;align-items:flex-start;gap:7px;min-width:0;font-size:12.5px;line-height:1.4;color:var(--label-2)}
.stats-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.stats-grid.three>.stat{display:flex;flex-direction:column}

/* ===== [18 SCRUBBABLE SVG CHART (panel chart summary, legend, plot, cursor, dots, glass readout)] =====
   used by: Dashboard.tsx RevenueChart (Dashboard.tsx:6-20)
   source:  styles.css:432-457 */
.dashboard-middle{display:grid;grid-template-columns:minmax(0,1.63fr) minmax(300px,1fr);gap:20px;margin-bottom:28px}
.chart-legend{display:flex;flex-shrink:0;gap:14px;padding-top:3px;font-size:12px;color:var(--label-2)}
.chart-legend span{display:flex;align-items:center;gap:6px;white-space:nowrap}
.chart-legend i,.chart-readout i{display:inline-block;flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--chart-1)}
.chart-legend i.cost,.chart-readout i.cost{background:var(--chart-2)}
.chart-summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;padding:14px 20px 0}
.chart-summary>strong{font-size:26px;font-weight:650;line-height:1.15;letter-spacing:-.02em;color:var(--label);font-variant-numeric:tabular-nums}
.chart-summary>span:not(.badge){font-size:13px;color:var(--label-2)}
.chart-summary>.badge{align-self:center;margin-left:auto}
.revenue-chart{position:relative}
.revenue-plot{position:relative;margin:6px 20px 0 8px;border-radius:var(--r-sm);cursor:default;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.revenue-plot:focus-visible{outline-offset:4px}
.revenue-chart svg{display:block;width:100%;height:auto;overflow:visible}
.revenue-chart svg text{font-family:inherit;font-size:11.5px;letter-spacing:0;fill:var(--chart-label);font-variant-numeric:tabular-nums;transition:fill var(--d-fast) var(--ease-out)}
.revenue-chart svg text.active{fill:var(--label);font-weight:600}
.chart-cursor,.chart-dot{opacity:0;transition:opacity var(--d-fast) var(--ease-out)}
.revenue-plot.on .chart-cursor,.revenue-plot.on .chart-dot{opacity:1}
.revenue-plot.glide .chart-cursor,.revenue-plot.glide .chart-dot{transition:opacity var(--d-fast) var(--ease-out),transform var(--d-pop) var(--ease-spring)}
.chart-readout{position:absolute;top:2px;left:0;z-index:2;display:grid;gap:3px;width:max-content;min-width:176px;padding:8px 11px;border-radius:var(--r-md);background:var(--glass-strong);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-pop);color:var(--label-2);font-size:12.5px;line-height:1.35;font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;opacity:0;scale:.96;transform-origin:top center;transition:opacity var(--d-fast) var(--ease-out),scale var(--d-pop) var(--ease-spring)}
.revenue-plot.on .chart-readout{opacity:1;scale:1}
.revenue-plot.glide .chart-readout{transition:opacity var(--d-fast) var(--ease-out),scale var(--d-pop) var(--ease-spring),translate var(--d-pop) var(--ease-spring)}
.revenue-plot>.chart-live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.chart-readout>strong{margin-bottom:2px;font-size:12.5px;font-weight:620;color:var(--label)}
.chart-readout>span{display:flex;align-items:center;gap:7px}
.chart-readout b{margin-left:auto;padding-left:14px;font-weight:600;color:var(--label)}
.chart-readout>span.total{margin-top:3px;padding-top:5px;box-shadow:inset 0 var(--hairline-w) 0 var(--hairline)}

/* ===== [19 INSET LIST ROWS — "Needs your attention", team list, task list, attention footer] =====
   used by: Dashboard.tsx:36,38 (.attention-list, .team-list, .task-list, .attention-footer)
   source:  styles.css:458-482, styles.css:516-528 */
.attention-panel{display:flex;flex-direction:column}
.attention-list{flex:1;padding:8px 20px}
.attention-list>button,.team-list>button,.task-list>button{position:relative;display:flex;align-items:center;gap:12px;width:calc(100% + 16px);min-height:52px;margin:0 -8px;padding:8px;border-radius:var(--r-md);color:var(--label);text-align:left;transition:background var(--d-fast) var(--ease-out)}
.attention-list>button+button::before,.team-list>button+button::before,.task-list>button+button::before{content:'';position:absolute;top:0;right:8px;left:50px;height:var(--hairline-w);background:var(--hairline);transition:opacity var(--d-fast) var(--ease-out)}
.attention-list>button:hover,.team-list>button:hover,.task-list>button:hover{background:var(--fill-1)}
.attention-list>button:active,.team-list>button:active,.task-list>button:active{background:var(--fill-2)}
.attention-list>button:hover::before,.attention-list>button:hover+button::before,.team-list>button:hover::before,.team-list>button:hover+button::before,.task-list>button:hover::before,.task-list>button:hover+button::before{opacity:0}
.attention-list>button{min-height:56px}
.attention-list>.all-clear{grid-column:1/-1}
.attention-icon{display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;border-radius:50%;background:var(--fill-1);color:var(--label-2)}
.attention-icon>svg{width:16px;height:16px}
.attention-icon.amber{background:var(--amber-tint);color:var(--amber-text)}
.attention-icon.rose{background:var(--rose-tint);color:var(--rose-text)}
.attention-list>button>div{flex:1;min-width:0}
.attention-list strong{display:-webkit-box;overflow:hidden;font-size:13.5px;font-weight:600;line-height:1.35;color:var(--label);-webkit-line-clamp:2;-webkit-box-orient:vertical}
.attention-list>button>div>span{display:-webkit-box;margin-top:2px;overflow:hidden;font-size:12.5px;line-height:1.4;color:var(--label-2);-webkit-line-clamp:2;-webkit-box-orient:vertical}
.attention-list>button>svg{color:var(--label-4);transition:transform var(--d-fast) var(--ease-out),color var(--d-fast) var(--ease-out)}
.attention-list>button:hover>svg{transform:translateX(2px);color:var(--label-3)}
.attention-footer{display:flex;align-items:center;gap:8px;width:100%;min-height:46px;padding:12px 20px;box-shadow:inset 0 var(--hairline-w) 0 var(--hairline);color:var(--accent-text);font-size:13px;font-weight:580;text-align:left;transition:background var(--d-fast) var(--ease-out)}
.attention-footer:hover{background:var(--fill-1)}
.attention-footer:active{background:var(--fill-2)}
.attention-footer:focus-visible{outline-offset:-3px;border-radius:0 0 var(--r-lg) var(--r-lg)}
.attention-footer>svg:first-child{color:var(--accent-symbol)}
.attention-footer>svg:last-child{margin-left:auto;transition:transform var(--d-fast) var(--ease-out)}
.attention-footer:hover>svg:last-child{transform:translateX(2px)}
.dashboard-bottom{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-bottom:20px}
.team-list,.task-list{padding:6px 20px 10px}
.team-list>button+button::before{left:52px}
.task-list>button+button::before{left:37px}
.team-name{flex:1;min-width:0}
.team-name strong,.task-list strong{display:block;overflow:hidden;font-size:13.5px;font-weight:580;line-height:1.35;color:var(--label);white-space:nowrap;text-overflow:ellipsis}
.team-name span,.task-list>button>div>span{display:block;margin-top:1px;overflow:hidden;font-size:12.5px;line-height:1.4;color:var(--label-2);white-space:nowrap;text-overflow:ellipsis}
.team-capacity{flex-shrink:0;width:120px}
.team-capacity>span{display:block;margin-bottom:6px;font-size:12.5px;color:var(--label-2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.team-capacity .progress{height:5px}
.task-checkbox{flex-shrink:0;width:17px;height:17px;border:1.5px solid var(--label-3);border-radius:50%}
.task-list>button>div{flex:1;min-width:0}
.task-date{flex-shrink:0;font-size:12.5px;color:var(--label-2);white-space:nowrap;font-variant-numeric:tabular-nums}

/* ===== [20 PROJECT CARDS (clickable card with lift)] =====
   used by: ui.tsx ProjectCard (ui.tsx:22)
   source:  styles.css:483-507 */
.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:28px}
.project-card{display:flex;flex-direction:column;min-width:0;padding:18px 20px 0;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);color:var(--label);text-align:left;transition:box-shadow var(--d-pop) var(--ease-spring),transform var(--d-pop) var(--ease-spring)}
.project-card:hover{box-shadow:var(--shadow-2);transform:translateY(-1px)}
.project-card:active{transform:scale(.99);transition-duration:90ms}
.project-top{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.project-top>.badge{margin-left:auto}
.project-mark{display:grid;place-items:center;flex-shrink:0;width:34px;height:34px;border-radius:9px;background:var(--fill-1);color:var(--accent-symbol)}
.project-card .project-mark>svg{width:18px;height:18px}
.project-mark.blue{color:var(--blue-text)}
.project-mark.amber{color:var(--amber-text)}
.project-mark.rose{color:var(--rose-text)}
.project-card .progress>span{background:var(--chart-1)}
.card-chevron{color:var(--label-4);transition:transform var(--d-fast) var(--ease-out),color var(--d-fast) var(--ease-out)}
.project-card:hover .card-chevron{transform:translateX(2px);color:var(--label-3)}
.project-card h3{margin-bottom:4px;font-size:16px;font-weight:650;line-height:1.3;letter-spacing:-.012em;color:var(--label)}
.project-card>p{margin-bottom:20px;overflow:hidden;font-size:13px;color:var(--label-2);white-space:nowrap;text-overflow:ellipsis}
.project-progress-label{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px;font-size:12.5px;color:var(--label-2)}
.project-progress-label>b{font-size:13px;font-weight:620;color:var(--label);font-variant-numeric:tabular-nums}
.project-finances{display:flex;justify-content:space-between;gap:12px;margin:18px 0 16px}
.project-finances>div:last-child{text-align:right}
.project-finances span{display:block;margin-bottom:3px;font-size:12px;color:var(--label-2)}
.project-finances strong{font-size:15px;font-weight:620;letter-spacing:-.005em;color:var(--label);font-variant-numeric:tabular-nums}
.project-finances small{font-size:12.5px;font-weight:450;color:var(--label-2)}
.project-footer{display:flex;margin-top:auto;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:12px 0;box-shadow:inset 0 var(--hairline-w) 0 var(--hairline)}
.project-footer>span{font-size:12.5px;color:var(--label-2);font-variant-numeric:tabular-nums;white-space:nowrap}

/* ===== [21 MANAGEMENT SNAPSHOT (hairline-divided button grid) + WORKSPACE FOOTER] =====
   used by: Dashboard.tsx:39-40
   source:  styles.css:529-540 */
.management-snapshot{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:6px 4px 12px}
.management-snapshot>button{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0;padding:14px 16px 16px;border-radius:var(--r-md);color:var(--label);text-align:left;transition:background var(--d-fast) var(--ease-out)}
.management-snapshot>button+button::before{content:'';position:absolute;top:14px;bottom:14px;left:0;width:var(--hairline-w);background:var(--hairline);transition:opacity var(--d-fast) var(--ease-out)}
.management-snapshot>button:hover{background:var(--fill-1)}
.management-snapshot>button:active{background:var(--fill-2)}
.management-snapshot>button:hover::before,.management-snapshot>button:hover+button::before{opacity:0}
.management-snapshot span{font-size:12.5px;font-weight:560;line-height:1.35;color:var(--label-2)}
.management-snapshot strong{font-size:24px;font-weight:650;line-height:1.15;letter-spacing:-.02em;color:var(--label);font-variant-numeric:tabular-nums}
.management-snapshot small{font-size:12.5px;line-height:1.45;color:var(--label-2)}
.workspace-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;margin-top:32px;padding:0 4px;font-size:12px;color:var(--label-2)}
.workspace-footer>span{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.footer-separator{color:var(--label-4)}

/* ===== [22 DASHBOARD RESPONSIVE (1600 / 1250 / 1000 / 760)] =====
   used by: Dashboard.tsx
   source:  styles.css:541-603 */
@media(min-width:1600px){.stat{padding:20px 24px 18px}.dashboard-middle{gap:24px}.project-grid{gap:20px}.project-card{padding:20px 22px 0}.dashboard-bottom{gap:24px;margin-bottom:24px}}
@media(max-width:1250px){.stat{padding:16px 16px 14px}.stat>strong{font-size:30px}
.dashboard-middle{grid-template-columns:minmax(0,1.45fr) minmax(280px,1fr)}
.chart-legend{display:none}
.project-grid{gap:14px}
.project-card{padding:16px 16px 0}
.project-card h3{font-size:15px}
.team-capacity{width:96px}
.management-snapshot{padding:6px 8px 12px}
.management-snapshot>button{padding:12px 12px 14px}
.management-snapshot strong{font-size:22px}}
@media(max-width:1000px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.stats-grid:not(.three)>.stat:nth-child(odd){box-shadow:none}
.stats-grid:not(.three)>.stat:nth-child(3){box-shadow:inset 0 var(--hairline-w) 0 var(--hairline)}
.stats-grid:not(.three)>.stat:nth-child(4){box-shadow:inset var(--hairline-w) 0 0 var(--hairline),inset 0 var(--hairline-w) 0 var(--hairline)}
.stat{padding:18px 20px 16px}
.stat>strong{font-size:32px}
.dashboard-middle{grid-template-columns:minmax(0,1fr)}
.chart-legend{display:flex}
.attention-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px}
.attention-list>button:nth-child(2)::before{content:none}
.attention-list>button:hover+button::before{opacity:1}
.attention-list>button:hover+button+button::before{opacity:0}
.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.project-grid:not(.all-projects)>.project-card:nth-child(3){display:none}
.dashboard-bottom{grid-template-columns:minmax(0,1fr)}
.team-capacity{width:120px}
.management-snapshot{grid-template-columns:repeat(2,minmax(0,1fr))}
.management-snapshot>button:nth-child(3)::before{content:none}
.management-snapshot>button:nth-child(n+3)::after{content:'';position:absolute;top:0;right:0;left:12px;height:var(--hairline-w);background:var(--hairline);transition:opacity var(--d-fast) var(--ease-out)}
.management-snapshot>button:nth-child(4)::after{right:12px;left:0}
.management-snapshot>button:nth-child(2)::before{bottom:0}
.management-snapshot>button:nth-child(4)::before{top:0}
.management-snapshot>button:nth-child(n+3):hover::after,.management-snapshot>button:hover+button+button::after{opacity:0}}
@media(max-width:760px){.stats-grid{margin-bottom:16px}
.dashboard-middle>.panel>.panel-heading,.dashboard-bottom>.panel>.panel-heading,.panel:has(>.management-snapshot)>.panel-heading{padding-right:16px;padding-left:16px}
.stat{padding:14px 16px 12px}
.stat-top{font-size:12.5px}
.stat-icon>svg{width:16px;height:16px}
.stat>strong{margin:8px 0 6px;font-size:28px}
.stat-detail{font-size:12px}
.dashboard-middle{gap:16px;margin-bottom:24px}
.chart-summary{padding:12px 16px 0}
.chart-summary>strong{font-size:22px}
.chart-summary>.badge{margin-left:0}
.revenue-plot{margin:4px 12px 0 2px}
.revenue-plot:focus-visible{outline-offset:-1px}
.chart-legend{flex-direction:column;align-items:flex-end;gap:2px;padding-top:2px}
.attention-list{grid-template-columns:minmax(0,1fr);padding:6px 16px}
.attention-list>button:nth-child(2)::before{content:''}
.attention-list>button:hover+button::before{opacity:0}
.attention-list>button:hover+button+button::before{opacity:1}
.attention-footer{padding:12px 16px}
.project-grid{grid-template-columns:minmax(0,1fr);gap:12px}
.project-grid:not(.all-projects)>.project-card:nth-child(3){display:flex}
.project-card{padding:16px 16px 0}
.dashboard-bottom{gap:16px;margin-bottom:16px}
.team-list,.task-list{padding:4px 16px 8px}
.team-capacity{width:96px}
.management-snapshot{padding:4px 4px 10px}
.management-snapshot>button{padding:12px 12px 14px}
.management-snapshot strong{font-size:20px}
.workspace-footer{flex-direction:column;align-items:flex-start;margin-top:24px}}

/* ===== [23 OVERVIEW STRIP (static instrument strip of divs)] =====
   used by: CRM.tsx Accounts/AccountDetail/ProjectDetail/Pipeline/Contracts <div class="overview-strip">
   source:  styles.css:605-614 */
/* Records */
/* Records: accounts, pipeline, projects, contracts, tasks, record detail pages, record editor, signatures, SOW import */
/* Instrument strip */
.overview-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:20px 0 24px;padding:18px 0;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1)}
.overview-strip>div{min-width:0;padding:0 22px}
.overview-strip>div+div{box-shadow:inset var(--hairline-w) 0 0 var(--hairline)}
.overview-strip>div>span{display:block;margin-bottom:6px;overflow:hidden;font-size:12.5px;font-weight:560;line-height:1.35;color:var(--label-2);text-overflow:ellipsis;white-space:nowrap}
.overview-strip strong{display:block;font-size:26px;font-weight:650;line-height:1.15;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--label);white-space:nowrap}
.overview-strip strong small{margin-left:1px;font-size:13px;font-weight:500;letter-spacing:0;color:var(--label-2)}
.overview-strip>div>small{display:block;margin-top:4px;font-size:12.5px;line-height:1.4;color:var(--label-2);font-variant-numeric:tabular-nums}

/* ===== [24 RECORD HEADER — company-cell, monogram tile (company-mark), person, back link, record heading/title/meta line] =====
   used by: CRM.tsx AccountDetail (CRM.tsx:28-29), ProjectDetail, Contracts detail; ui.tsx CompanyMark
   source:  styles.css:615-640, styles.css:857-858, accounts/account-logo.css:1-6 */
/* Record identity: monograms, people, back link, heading */
.company-cell{display:flex;align-items:center;gap:12px;text-align:left;color:var(--label)}
.company-cell>span:last-child{min-width:0}
.company-cell strong{display:block;font-size:13.5px;font-weight:600;line-height:1.3;color:var(--label);transition:color var(--d-fast) var(--ease-out)}
.company-cell small{display:block;margin-top:1px;font-size:12.5px;color:var(--label-2);font-variant-numeric:tabular-nums}
.company-cell:hover strong{color:var(--accent-text)}
.company-mark{display:inline-grid;flex-shrink:0;place-items:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(180deg,#b6b6bb,#8e8e93);color:var(--on-accent);font-size:15px;font-weight:650;line-height:1;letter-spacing:-.01em;box-shadow:inset 0 1px 0 rgb(255 255 255/.24),0 1px 2px rgb(0 0 0/.12)}
.company-mark.large{width:60px;height:60px;border-radius:15px;font-size:25px;letter-spacing:-.02em;box-shadow:inset 0 1px 0 rgb(255 255 255/.24),0 1px 2px rgb(0 0 0/.1),0 4px 12px rgb(0 0 0/.08)}
.person{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:100%;font-size:13.5px;color:var(--label);white-space:nowrap}
.person>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis}
.back-link{display:inline-flex;align-items:center;gap:2px;margin:0 0 12px -4px;font-size:13px;font-weight:580;color:var(--accent-text);transition:opacity var(--d-fast) var(--ease-out)}
.back-link>svg{width:17px;height:17px}
.back-link:hover{opacity:.72}
.back-link:active{opacity:.55}
.record-heading{display:flex;align-items:center;gap:16px;margin:4px 0 20px}
.record-heading>div:nth-child(2){flex:1;min-width:0}
.record-title{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.record-heading h1{font-size:28px;font-weight:700;line-height:1.15;letter-spacing:-.022em}
.record-heading p{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;margin-top:5px;font-size:13.5px;color:var(--label-2);font-variant-numeric:tabular-nums}
.record-heading p>span{color:var(--label-4)}
.record-heading p>button{font-size:inherit;font-weight:560;color:var(--accent-text)}
.record-heading p>button:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.record-heading .heading-actions{justify-content:flex-end}

.project-mark.large{width:56px;height:56px;border-radius:14px}
.project-mark.large>svg{width:26px;height:26px}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]):not([data-theme="unifi"]):not([data-theme="jysk"]):not([data-theme="equa"]) .company-mark{background:linear-gradient(180deg,#6e6e73,#48484a);box-shadow:inset 0 1px 0 rgb(255 255 255/.14),0 1px 2px rgb(0 0 0/.4)}:root:not([data-theme="light"]):not([data-theme="unifi"]):not([data-theme="jysk"]):not([data-theme="equa"]) .company-mark.large{box-shadow:inset 0 1px 0 rgb(255 255 255/.14),0 1px 2px rgb(0 0 0/.4),0 4px 12px rgb(0 0 0/.3)}}
:root[data-theme="dark"] .company-mark{background:linear-gradient(180deg,#6e6e73,#48484a);box-shadow:inset 0 1px 0 rgb(255 255 255/.14),0 1px 2px rgb(0 0 0/.4)}:root[data-theme="dark"] .company-mark.large{box-shadow:inset 0 1px 0 rgb(255 255 255/.14),0 1px 2px rgb(0 0 0/.4),0 4px 12px rgb(0 0 0/.3)}
/* Company logos sit on a white tile so dark and transparent marks read in both themes. */
.company-mark{position:relative;overflow:hidden}
.company-mark>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:14%;background:#fff}
.company-mark.has-logo{background:#fff;color:transparent;box-shadow:inset 0 0 0 1px rgb(0 0 0/.08),0 1px 2px rgb(0 0 0/.06)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]):not([data-theme="unifi"]):not([data-theme="jysk"]):not([data-theme="equa"]) .company-mark.has-logo{box-shadow:inset 0 0 0 1px rgb(255 255 255/.12),0 1px 2px rgb(0 0 0/.4)}}
:root[data-theme="dark"] .company-mark.has-logo{box-shadow:inset 0 0 0 1px rgb(255 255 255/.12),0 1px 2px rgb(0 0 0/.4)}


/* ===== [25 DETAIL LAYOUT + INSPECTOR / ASIDE KEY-VALUE ROWS ("Account essentials")] =====
   used by: CRM.tsx DetailLine (CRM.tsx:18) in <div class="detail-layout"><div class="detail-main">…<div class="detail-aside">
   source:  styles.css:641-662 */
/* Detail layout and inspector rows */
.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;margin:20px 0}
.detail-main,.detail-aside{display:flex;flex-direction:column;gap:20px;min-width:0}
.body-copy{max-width:70ch;font-size:14px;line-height:1.6;color:var(--label)}
.inline-details{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px;padding-top:14px;border-top:var(--hairline-w) solid var(--hairline);font-size:12.5px;color:var(--label-2)}
.inline-details>span,.inline-details>a{display:inline-flex;align-items:center;gap:6px;min-width:0;overflow-wrap:anywhere}
.inline-details svg{color:var(--label-3)}
.inline-details>a{color:var(--accent-text)}
.inline-details>a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.detail-line{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:44px;padding:8px 0;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.detail-line:last-child{box-shadow:none}
.panel-body>.detail-line:first-child,.two-column-details>.detail-line:nth-child(2){margin-top:-8px}
.panel-body>.detail-line:last-child,.two-column-details>.detail-line:nth-child(odd):nth-last-child(2){margin-bottom:-8px}
.two-column-details>.detail-line:nth-child(odd):nth-last-child(2){box-shadow:none}
.detail-line>span{flex-shrink:0;font-size:13px;color:var(--label-2)}
.detail-line>strong{min-width:0;font-size:13.5px;font-weight:560;color:var(--label);text-align:right;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.detail-id{display:block;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:normal}
.panel-body>.button.full-width{margin-top:16px}
.two-column-details{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}
.copy-section{margin-top:20px}
.copy-section h3{margin-bottom:4px;font-size:13.5px;font-weight:650;letter-spacing:-.005em;color:var(--label)}
.copy-section p{max-width:70ch;font-size:14px;line-height:1.6;color:var(--label);white-space:pre-line}

/* ===== [25b LISTS INSIDE PANELS — linked-list, contact-item, toolbar-right, milestone list, finance breakdown, team rows, risk summary] =====
   used by: CRM.tsx AccountDetail/ProjectDetail/Contracts
   source:  styles.css:663-712 */
/* Lists inside panels */
.linked-list{padding:12px 10px 10px}
.linked-list:empty{display:none}
.linked-list>button{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:9px 10px;border-radius:var(--r-md);text-align:left;color:var(--label);transition:background var(--d-fast) var(--ease-out)}
.linked-list>button+button::before{content:'';position:absolute;top:0;left:10px;right:10px;border-top:var(--hairline-w) solid var(--hairline);transition:opacity var(--d-fast) var(--ease-out)}
.linked-list>button:hover{background:var(--fill-1)}
.linked-list>button:active{background:var(--fill-2)}
.linked-list>button:hover::before,.linked-list>button:hover+button::before{opacity:0}
.linked-list>button>span:nth-child(2){flex:1;min-width:0}
.linked-list strong{display:block;overflow:hidden;font-size:13.5px;font-weight:560;line-height:1.35;color:var(--label);text-overflow:ellipsis;white-space:nowrap}
.linked-list small{display:block;margin-top:1px;font-size:12.5px;color:var(--label-2);font-variant-numeric:tabular-nums}
.linked-list>button>svg{color:var(--label-3)}
.linked-list>button>svg:first-child{color:var(--accent-symbol)}
.linked-list>button>.badge{flex-shrink:0}
.contact-item{display:flex;align-items:flex-start;gap:12px;padding:12px 0;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.contact-item:last-child{box-shadow:none}
.panel-body>.contact-item:first-child{padding-top:0}
.panel-body>.contact-item:last-child{padding-bottom:0}
.contact-item>div{min-width:0}
.contact-item strong{display:block;font-size:13.5px;font-weight:560;line-height:1.35;color:var(--label)}
.contact-item small{display:block;margin-top:1px;font-size:12.5px;color:var(--label-2)}
.contact-item a{display:block;margin-top:2px;font-size:12.5px;color:var(--accent-text);overflow-wrap:anywhere}
.contact-item a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.toolbar-right{display:flex;align-items:center;gap:10px;min-width:0}
.milestone-list{padding:8px 20px 12px}
.milestone-list>div{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 0;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.milestone-list>div:last-of-type{box-shadow:none}
.milestone-list>div>div{flex:1;min-width:0}
.milestone-list>.muted{padding:12px 0}
.milestone-dot{display:grid;place-items:center;color:var(--label-3)}
.milestone-dot.complete{color:var(--green-dot)}
.milestone-list strong{display:block;font-size:13.5px;font-weight:560;line-height:1.35;color:var(--label)}
.milestone-list small{display:block;margin-top:1px;font-size:12.5px;color:var(--label-2);font-variant-numeric:tabular-nums}
.finance-breakdown{padding:12px 20px 20px}
.finance-breakdown>.muted{margin-top:12px}
.team-detail-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:6px 0;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.team-detail-row:last-child{box-shadow:none}
.panel-body>.team-detail-row:first-child{margin-top:-6px}
.panel-body>.team-detail-row:last-child{margin-bottom:-6px}
.team-detail-row>span:last-child{flex-shrink:0;font-size:13px;color:var(--label-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.risk-summary{position:relative;display:flex;align-items:flex-start;gap:10px;width:calc(100% + 20px);margin:0 -10px;padding:10px;border-radius:var(--r-md);text-align:left;font-size:13.5px;line-height:1.45;color:var(--label);transition:background var(--d-fast) var(--ease-out)}
.risk-summary+.risk-summary::before{content:'';position:absolute;top:0;left:10px;right:10px;border-top:var(--hairline-w) solid var(--hairline);transition:opacity var(--d-fast) var(--ease-out)}
.risk-summary:hover{background:var(--fill-1)}
.risk-summary:active{background:var(--fill-2)}
.risk-summary:hover::before,.risk-summary:hover+.risk-summary::before{opacity:0}
.panel-body>.risk-summary:first-child{margin-top:-10px}
.panel-body>.risk-summary:last-child{margin-bottom:-10px}
.risk-summary>svg{margin-top:1px;color:var(--amber-dot)}
.risk-summary>span:nth-child(2){flex:1;min-width:0}
.risk-summary>.badge{flex-shrink:0}

/* ===== [25c OPPORTUNITY DETAIL (selected-record panel with actions column)] =====
   used by: CRM.tsx Pipeline selectedOpp panel
   source:  styles.css:713-722 */
/* Opportunity detail */
.opportunity-detail{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:28px;padding:12px 20px 20px;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.opportunity-detail>div:first-child{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;align-content:start}
.opportunity-detail>div:first-child>:is(.badge,.body-copy){grid-column:1/-1;justify-self:start}
.opportunity-detail .detail-line:nth-last-child(2):nth-child(odd){box-shadow:none}
.opportunity-detail .body-copy{margin:12px 0 8px}
.opportunity-actions{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding-top:4px}
.opportunity-actions .muted{margin-top:4px;font-size:12.5px;line-height:1.5}
.opportunity-actions>.button.danger{background:var(--control-bg);box-shadow:var(--control-ring)}
.opportunity-actions>.button.danger:hover{background:var(--rose-tint)}

/* ===== [25d KANBAN / BOARD (columns, heading, total, cards, stage select, empty drop target) + POINTER DRAG] =====
   used by: CRM.tsx Pipeline (.kanban) + planning/usePipelineDrag.ts
   source:  styles.css:723-756, styles.css:1543-1553 */
/* Pipeline kanban */
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(212px,1fr);gap:14px;min-height:450px;margin:0 -12px;padding:0 12px 16px;overflow-x:auto;overscroll-behavior-x:contain;scroll-padding:0 12px;scroll-snap-type:x proximity}
.kanban-column{min-width:0;scroll-snap-align:start}
.kanban-heading{display:flex;align-items:center;gap:8px;min-height:32px;padding:0 0 0 4px}
.kanban-heading h2{flex:1;min-width:0;overflow:hidden;font-size:13.5px;font-weight:650;letter-spacing:-.005em;color:var(--label);text-overflow:ellipsis;white-space:nowrap}
.kanban-heading .icon-button{width:28px;height:28px}
.kanban-total{margin:-4px 0 12px 19px;font-size:12.5px;color:var(--label-2);font-variant-numeric:tabular-nums}
.opportunity-card{margin-bottom:12px;padding:16px;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);transition:box-shadow var(--d-pop) var(--ease-spring),transform var(--d-pop) var(--ease-spring)}
.opportunity-card:hover{box-shadow:var(--shadow-2);transform:translateY(-1px)}
.opp-title{display:block;width:100%;text-align:left;color:var(--label)}
.opp-title>span{display:block;margin-bottom:3px;overflow:hidden;font-size:12.5px;color:var(--label-2);text-overflow:ellipsis;white-space:nowrap}
.opp-title h3{font-size:14px;font-weight:600;line-height:1.35;letter-spacing:-.006em;color:var(--label);text-wrap:pretty;transition:color var(--d-fast) var(--ease-out)}
.opp-title:hover h3{color:var(--accent-text)}
.opp-value{display:block;margin-top:10px;font-size:20px;font-weight:650;line-height:1.2;letter-spacing:-.015em;font-variant-numeric:tabular-nums;color:var(--label)}
.opp-probability{margin:12px 0 14px}
.opp-probability>span{display:block;margin-bottom:6px;font-size:12px;color:var(--label-2);font-variant-numeric:tabular-nums}
.opp-probability .progress{height:4px}
.opp-next{display:flex;align-items:flex-start;gap:6px;padding:10px 0;font-size:12.5px;line-height:1.45;color:var(--label-2);box-shadow:inset 0 var(--hairline-w) 0 var(--hairline)}
.opp-next>svg{margin-top:2px;color:var(--label-3)}
.opp-footer{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-height:28px}
.opp-footer>span:nth-child(2){flex:1 0 auto;font-size:12.5px;color:var(--label-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.opp-card-actions{display:flex;align-items:center;gap:2px;margin-left:auto}
.opp-card-actions .icon-button{width:28px;height:28px}
.opp-lost-action{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 9px;border-radius:var(--r-pill);font-size:12.5px;font-weight:600;color:var(--label-2);white-space:nowrap;transition:background var(--d-fast) var(--ease-out),color var(--d-fast) var(--ease-out),transform 90ms var(--ease-out)}
.opportunity-card:is(:hover,:focus-within) .opp-lost-action,.opp-lost-action:focus-visible{color:var(--rose-text)}
.opp-lost-action:hover{background:var(--rose-tint)}
.opp-lost-action:active{transform:scale(.97)}
.stage-select{display:block;width:100%;min-height:30px;margin-top:10px;padding:4px 30px 4px 10px;border:0;border-radius:var(--r-sm);appearance:none;background-color:var(--field-bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238e8e93' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 15 5 5 5-5'/%3E%3Cpath d='m7 9 5-5 5 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;box-shadow:var(--field-ring);color:var(--label);font-size:12.5px;cursor:pointer;outline:0;transition:box-shadow var(--d-fast) var(--ease-out)}
.stage-select:focus{box-shadow:0 0 0 1px var(--accent-symbol),0 0 0 4px var(--focus-ring)}
.stage-select:disabled{cursor:default;opacity:.55}
.stage-readonly{margin-top:10px}
.kanban-empty{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:64px;padding:16px 12px;border:1px dashed var(--hairline-strong);border-radius:var(--r-md);font-size:13px;color:var(--label-2);transition:background var(--d-fast) var(--ease-out),color var(--d-fast) var(--ease-out),transform 90ms var(--ease-out)}
button.kanban-empty:hover{background:var(--fill-1);color:var(--label)}
button.kanban-empty:active{transform:scale(.97)}
/* Pipeline drag and drop */
.opportunity-card.is-draggable{cursor:grab;touch-action:pan-x pan-y;-webkit-user-select:none;user-select:none}
.opportunity-card.is-dragging{opacity:.35;box-shadow:none;transform:scale(.98)}
.kanban-column{border-radius:var(--r-xl);transition:background var(--d-fast) var(--ease-out),box-shadow var(--d-fast) var(--ease-out)}
.kanban-column.is-drop-target{background:var(--accent-tint,rgb(23 63 53/.07));box-shadow:inset 0 0 0 1.5px var(--focus-ring)}
body.is-pipeline-dragging,body.is-pipeline-dragging *{cursor:grabbing!important}
.opp-drag-ghost{position:fixed;z-index:2100;display:flex;flex-direction:column;gap:3px;padding:14px 16px;border-radius:var(--r-lg);background:var(--glass-strong,var(--surface));-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-modal);pointer-events:none;transform:rotate(-1.5deg) scale(1.02);transform-origin:top left}
.opp-drag-ghost span{font-size:12px;color:var(--label-2)}
.opp-drag-ghost strong{font-size:14.5px;font-weight:650;letter-spacing:-.01em;color:var(--label)}
.opp-drag-ghost em{font-style:normal;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--accent-text,var(--label))}
@media(prefers-reduced-motion:reduce){.opp-drag-ghost{transform:none}.kanban-column{transition:none}}

/* ===== [25f ACTIVITY LIST (record timeline) + DOCUMENTS LIST] =====
   used by: CRM.tsx ActivityDocuments (CRM.tsx:167-168)
   source:  styles.css:767-795 */
/* Activity and documents */
.record-section-heading{align-items:center;margin:0 0 4px}
.record-section-heading h2{font-size:17px;font-weight:650;letter-spacing:-.012em}
.record-section-heading+.error{margin:12px 20px 0}
.record-grid-heading{align-items:center;margin:4px 0 16px}
.activity-list{padding:4px 20px 12px}
.activity-list>article{display:flex;gap:12px;padding:14px 0;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.activity-list>article:last-of-type{box-shadow:none}
.activity-marker{display:grid;flex-shrink:0;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--fill-1);color:var(--label-2)}
.activity-marker>svg{width:15px;height:15px}
.activity-list article>div{flex:1;min-width:0}
.activity-list article>div>div{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;min-height:30px}
.activity-list time{font-size:12.5px;color:var(--label-2);font-variant-numeric:tabular-nums}
.activity-list p{max-width:70ch;margin:4px 0 6px;font-size:13.5px;line-height:1.55;color:var(--label);white-space:pre-line;overflow-wrap:anywhere}
.activity-list .text-button{font-size:12.5px}
.document-list{padding:8px 10px 10px}
.document-list:empty{display:none}
.document-list>a{position:relative;display:flex;align-items:center;gap:12px;min-height:56px;padding:9px 10px;border-radius:var(--r-md);color:var(--label);transition:background var(--d-fast) var(--ease-out)}
.document-list>a+a::before{content:'';position:absolute;top:0;left:56px;right:10px;border-top:var(--hairline-w) solid var(--hairline);transition:opacity var(--d-fast) var(--ease-out)}
.document-list>a:hover{background:var(--fill-1)}
.document-list>a:active{background:var(--fill-2)}
.document-list>a:hover::before,.document-list>a:hover+a::before{opacity:0}
.document-list>a>span:nth-child(2){flex:1;min-width:0}
.document-list strong{display:block;font-size:13.5px;font-weight:560;line-height:1.35;overflow-wrap:anywhere}
.document-list small{display:block;margin-top:1px;font-size:12.5px;color:var(--label-2);font-variant-numeric:tabular-nums}
.document-list>a>svg{color:var(--label-3);transition:color var(--d-fast) var(--ease-out)}
.document-list>a:hover>svg{color:var(--accent-text)}
.document-icon{display:grid;flex-shrink:0;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--fill-1);color:var(--label-2)}
.document-icon>svg{width:18px;height:18px}

/* ===== [25g RECORDS RESPONSIVE (+ reduced motion; <=760 task-panel card layout; signatures) + LOSS DIALOG] =====
   used by: CRM.tsx
   source:  styles.css:851-856, styles.css:859-957 */
/* Loss dialog */
.loss-dialog-body{display:grid;gap:18px;padding:8px 24px 24px}
.loss-deal-summary{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r-md);background:var(--fill-1)}
.loss-deal-summary>span:last-child{display:grid;gap:2px;min-width:0}
.loss-deal-summary strong{font-size:13.5px;font-weight:600;color:var(--label)}
.loss-deal-summary small{font-size:12.5px;color:var(--label-2);font-variant-numeric:tabular-nums}
@media(prefers-reduced-motion:reduce){.opportunity-card:hover{transform:none}}
@media(min-width:1600px){.detail-layout{grid-template-columns:minmax(0,1fr) 360px;gap:24px}
.detail-main,.detail-aside{gap:24px}
.overview-strip>div{padding:0 26px}}

@media(max-width:1250px){.detail-layout{grid-template-columns:minmax(0,1fr) 288px;gap:16px}
.detail-main,.detail-aside{gap:16px}
.overview-strip>div{padding:0 18px}
.overview-strip strong{font-size:24px}
.record-heading h1{font-size:26px}
.record-title{gap:6px 10px}
.opportunity-detail{grid-template-columns:minmax(0,1fr) 250px;gap:22px}}
@media(max-width:1000px){.detail-layout{grid-template-columns:1fr}
.detail-aside{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.record-heading{flex-wrap:wrap}
.record-heading .heading-actions{margin-left:auto}
.record-toolbar{flex-wrap:wrap}
.record-toolbar>.tabs+.search-box{margin-left:auto}
.toolbar-right{flex:1 0 auto;justify-content:flex-end}
.opportunity-detail{grid-template-columns:1fr;gap:18px}
.opportunity-detail>div:first-child{grid-template-columns:1fr}
.opportunity-detail .detail-line:nth-last-child(2):nth-child(odd){box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.opportunity-actions{flex-direction:row;flex-wrap:wrap;align-items:center}
.opportunity-actions .muted{flex-basis:100%;margin-top:0}
.two-column-details{gap:0 20px}
.overview-strip>div{padding:0 14px}
.overview-strip strong{font-size:22px}}
@media(max-width:760px){.overview-strip{grid-template-columns:1fr 1fr;margin:16px 0 20px;padding:0}
.overview-strip>div,.overview-strip>div+div{padding:14px 16px;box-shadow:none}
.overview-strip>div:nth-child(2n){box-shadow:inset var(--hairline-w) 0 0 var(--hairline)}
.overview-strip>div:nth-child(3){box-shadow:inset 0 var(--hairline-w) 0 var(--hairline)}
.overview-strip>div:nth-child(4){box-shadow:inset var(--hairline-w) 0 0 var(--hairline),inset 0 var(--hairline-w) 0 var(--hairline)}
.overview-strip strong{font-size:22px;white-space:normal}
.record-toolbar>.tabs{flex-basis:100%}
.record-toolbar>.search-box{flex:1;max-width:none}
.record-toolbar>.toolbar-right{width:100%}
.panel>.record-toolbar{padding:10px 12px}
.panel>.record-toolbar>.tabs{width:100%}
.panel>.record-toolbar>.tabs>button{flex:1 0 auto;padding:0 9px}
.record-toolbar>.toolbar-right>.search-box{flex:1}
.record-heading{gap:12px;margin:0 0 18px}
.record-heading .company-mark.large,.record-heading .project-mark.large{width:48px;height:48px;border-radius:12px;font-size:20px}
.record-heading .project-mark.large>svg{width:22px;height:22px}
.record-heading h1{font-size:24px}
.record-heading p{font-size:13px}
.record-heading .heading-actions{width:100%;margin-left:0;justify-content:flex-start}
.detail-layout{gap:16px;margin:16px 0}
.detail-aside{display:flex;flex-direction:column}
.two-column-details{grid-template-columns:1fr}
.two-column-details>.detail-line:nth-child(2){margin-top:0}
.two-column-details>.detail-line:nth-child(odd):nth-last-child(2){margin-bottom:0;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.activity-list{padding:4px 16px 10px}
.milestone-list{padding:8px 16px 12px}
.finance-breakdown{padding:12px 16px 16px}
.opportunity-detail{padding:12px 16px 18px}
.opportunity-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.opportunity-actions>.button.primary,.opportunity-actions:not(:has(.danger))>.button,.opportunity-actions .muted{grid-column:1/-1}
.opportunity-actions>.button.primary{order:-1}

.task-panel :is(table,tbody){display:block}
.task-panel .table-scroll table{min-width:0}
.task-panel thead{display:none}
.task-panel tbody{margin-top:12px;box-shadow:inset 0 var(--hairline-w) 0 var(--hairline)}
.task-panel tbody tr{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:12px 12px 12px 52px}
.task-panel tbody tr:not(:has(.task-toggle-cell)){padding-left:16px}
.task-panel tbody td{min-width:0;padding:0!important}
.task-panel td.task-toggle-cell{position:absolute;top:12px;left:16px;width:auto}
.task-panel td.task-edit{position:absolute;top:6px;right:8px}
.task-panel td.task-edit:empty{display:none}
.task-panel td:is(.task-name,.task-project){flex:1 1 100%;white-space:normal}
.task-panel td.task-name{margin-right:32px}
.task-panel td.task-project{margin-top:-4px;font-size:13px;color:var(--label-2)}
.task-panel .task-project .cell-sub{display:inline;margin:0;font-size:inherit}
.task-panel .task-project .cell-sub:not(:empty)::before{content:' · '}
.task-panel td.task-due{order:1;font-size:13px}
.task-panel td.task-priority{order:2}
.task-panel td.task-status{order:3}
.task-panel td.task-owner{order:4}
.kanban{grid-auto-columns:min(82vw,280px);gap:12px;margin:0 -16px;padding:0 16px 16px;scroll-padding:0 16px;scroll-snap-type:x mandatory}

















.loss-dialog-body{padding:6px 18px 20px}}

/* ===== [25h TASK BOARD ROW STATES — round task toggle, done row, due today] =====
   used by: CRM.tsx TaskTable (CRM.tsx:166)
   source:  styles.css:958-971 */
.task-toggle-cell{width:1%;padding-right:0!important}
.task-toggle{position:relative;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--label-3);color:var(--on-accent);transition:background var(--d-fast) var(--ease-out),box-shadow var(--d-fast) var(--ease-out),transform var(--d-pop) var(--ease-spring)}
.task-toggle:hover{box-shadow:inset 0 0 0 1.5px var(--accent-symbol);background:var(--accent-tint)}
.task-toggle:active{transform:scale(.88)}
.task-toggle::after{content:'';position:absolute;inset:-12px;border-radius:50%}
.task-toggle.checked{background:var(--accent-symbol);box-shadow:none}
.task-toggle.checked:hover{background:var(--accent-hover)}
.task-toggle>svg{stroke-width:3}
tr.task-done td{color:var(--label-2)}
tr.task-done .badge{background:var(--fill-1);color:var(--label-3)}
tr.task-done .badge .status-dot{background:var(--label-4)}
tr.task-done .inline-select{color:var(--label-2)}
tr.task-done .record-link,tr.task-done td>strong{color:var(--label-2);text-decoration:line-through;text-decoration-color:var(--label-3);text-decoration-thickness:1px}
.task-due-today{color:var(--accent-text);font-weight:600}

/* ===== [25i OPERATIONS BITS worth reusing — toolbar row, date navigator, time-summary strip, day tabs, review/approval banner, skill tags, person cards] =====
   used by: Operations.tsx Time / Resources
   source:  styles.css:973-991, styles.css:1034-1045, styles.css:1100-1111, styles.css:1190-1272 */
/* Operations */
/* Delivery & finance: Time & approvals, Resource planner, Utilization, Financial overview, invoice documentation */
/* Toolbars and the week navigator */


.date-navigator{display:flex;align-items:center;gap:4px;color:var(--label-2)}
.date-navigator>.icon-button:first-child{margin-left:-12px}
.date-navigator>svg{margin:0 4px;color:var(--label-3)}
.date-navigator strong{min-width:132px;padding:0 4px;font-size:14px;font-weight:620;letter-spacing:-.006em;color:var(--label);text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}
.date-navigator>.text-button{margin-left:8px}
/* Week summary: one instrument strip */
.time-summary{display:flex;margin-bottom:20px;padding:20px 0;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1)}
.time-summary>div{flex:1;min-width:0;padding:0 20px}
.time-summary>div+div{box-shadow:inset var(--hairline-w) 0 0 var(--hairline)}
.time-summary>div>span{display:block;margin-bottom:8px;font-size:12.5px;font-weight:500;color:var(--label-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.time-summary strong{display:block;font-size:26px;line-height:1.15;font-weight:650;letter-spacing:-.022em;color:var(--label);font-variant-numeric:tabular-nums;white-space:nowrap}
.time-summary strong small{font-size:13px;font-weight:500;letter-spacing:0;color:var(--label-2)}
.time-summary>.time-summary-progress{display:flex;flex:0 1 220px;flex-direction:column;min-width:176px}
.time-summary>.time-summary-progress>span{margin-bottom:20px;font-variant-numeric:tabular-nums}
/* Daily entries and approvals */
.day-tabs{display:flex;gap:2px;width:max-content;max-width:100%;margin-bottom:16px;padding:3px;overflow-x:auto;border-radius:var(--r-pill);background:var(--fill-1);scrollbar-width:none}
.day-tabs>button{flex-shrink:0;min-height:30px;padding:0 14px;border-radius:var(--r-pill);color:var(--label-2);font-size:13px;font-weight:560;font-variant-numeric:tabular-nums;white-space:nowrap;transition:background var(--d-fast) var(--ease-out),color var(--d-fast) var(--ease-out)}
.day-tabs>button:hover{color:var(--label)}
.day-tabs>button.active{background:var(--surface);color:var(--label);font-weight:620;box-shadow:var(--shadow-segment)}
.review-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:20px 0;padding:16px 20px;border-radius:var(--r-lg);background:var(--accent-tint)}
.review-banner>div:first-child{display:flex;align-items:center;gap:12px;min-width:0}
.review-banner>svg,.review-banner>div:first-child>svg{flex-shrink:0;color:var(--accent-symbol)}
.review-banner strong{display:block;font-size:15px;font-weight:650;letter-spacing:-.008em;color:var(--label);font-variant-numeric:tabular-nums}
.review-banner small{display:block;margin-top:2px;font-size:13px;line-height:1.45;color:var(--label-2)}
.review-banner>p{flex:1;min-width:0;font-size:13px;line-height:1.5;color:var(--label-2)}
.review-banner:has(>p){justify-content:flex-start;align-items:flex-start;gap:12px}
.skill-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.skill-tags span{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--r-pill);background:var(--fill-1);color:var(--label);font-size:12.5px;font-weight:500;white-space:nowrap}
.people-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.person-card{display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding:20px 20px 0;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);color:var(--label);text-align:left;transition:box-shadow var(--d-pop) var(--ease-spring),transform var(--d-pop) var(--ease-spring)}
.person-card:hover{box-shadow:var(--shadow-2);transform:translateY(-1px)}
.person-card:active{transform:translateY(0) scale(.99);transition-duration:90ms}
.person-card h3{margin-top:16px;font-size:15px;font-weight:620;color:var(--label)}
.person-card>p{margin:2px 0 12px;font-size:13px;color:var(--label-2)}
.person-card .skill-tags{align-content:flex-start;min-height:56px;margin-bottom:16px}
.person-card-footer{display:flex;align-self:stretch;align-items:center;justify-content:space-between;margin-top:auto;padding:12px 0;border-top:var(--hairline-w) solid var(--hairline);color:var(--label-2);font-size:12.5px;font-variant-numeric:tabular-nums}
.person-card-footer>svg{color:var(--label-3);transition:color var(--d-fast) var(--ease-out),transform var(--d-pop) var(--ease-spring)}
.person-card:hover .person-card-footer>svg{color:var(--accent-symbol);transform:translate(1px,-1px)}

@media(min-width:1600px){.people-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}

@media(max-width:1000px){.time-summary>div{padding:0 16px}
.time-summary strong{font-size:24px}
.time-summary>.time-summary-progress{display:none}



.review-banner{flex-wrap:wrap}
.review-banner>.heading-actions{margin-left:auto}

.people-grid{grid-template-columns:repeat(2,minmax(0,1fr))}

.stats-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}





}
@media(max-width:760px){

.date-navigator strong{min-width:0}
.date-navigator>.text-button{margin-left:4px}
.time-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:0}
.time-summary>div,.time-summary>div+div{padding:16px;box-shadow:none}
.time-summary>div:nth-child(2){box-shadow:inset var(--hairline-w) 0 0 var(--hairline)}
.time-summary>div:nth-child(3){box-shadow:inset 0 var(--hairline-w) 0 var(--hairline)}
.time-summary>div:nth-child(4){box-shadow:inset var(--hairline-w) 0 0 var(--hairline),inset 0 var(--hairline-w) 0 var(--hairline)}
.time-summary strong{font-size:22px}









.review-banner{padding:16px;gap:16px}
.review-banner>.heading-actions{width:100%;justify-content:flex-end}










.people-grid{grid-template-columns:minmax(0,1fr);gap:12px}
.person-card .skill-tags{min-height:0}


.stats-grid.three{grid-template-columns:minmax(0,1fr)}
.stats-grid.three>.stat{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:16px;padding:12px 16px}
.stats-grid.three>.stat+.stat{box-shadow:inset 0 var(--hairline-w) 0 var(--hairline)}
.stats-grid.three .stat-top{grid-column:1;grid-row:1;flex-direction:row-reverse;justify-content:flex-end;gap:8px}
.stats-grid.three .stat>strong{grid-column:2;grid-row:1/3;margin:0;font-size:26px;text-align:right}
.stats-grid.three .stat-detail{grid-column:1;grid-row:2;margin-top:2px;padding-left:24px}
















}

/* ===== [25j SETTINGS GRID + INTEGRATION CARDS + CONFIG EXAMPLE + TOOL LIST] =====
   used by: Intelligence.tsx Settings (Integrations tab: .integration-grid > .panel > .integration-card)
   source:  styles.css:1274-1303 */
/* Intelligence */
/* @EQUA intelligence, settings and integrations */
.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start;margin:20px 0}
.settings-stack{display:flex;flex-direction:column;gap:inherit;min-width:0}
.page-heading:has(>.heading-actions>.badge){align-items:flex-start}
.page-heading:has(>.heading-actions>.badge)>.heading-actions{margin-top:6px}
.page-heading .badge:has(>svg)>.status-dot{display:none}
.profile-settings{display:flex;align-items:center;gap:16px;margin-bottom:20px}
.profile-settings h3{font-size:17px;font-weight:650;letter-spacing:-.012em}
.profile-settings p{margin-top:2px;font-size:13px;color:var(--label-2)}
.role-summary{display:flex;align-items:flex-start;gap:12px}
.role-summary>svg{flex:none;width:18px;height:18px;margin-top:2px;color:var(--accent-symbol)}
.role-summary p{max-width:70ch;font-size:14px;line-height:1.6;color:var(--label)}
.integration-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:24px}
.integration-grid>.panel{display:flex}
.integration-card{display:flex;flex:1;flex-direction:column;padding:20px}
.integration-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.integration-logo{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r-md);background:var(--accent-tint-2);color:var(--accent-text);font-size:20px;font-weight:700;line-height:1;letter-spacing:-.02em}
.integration-logo.blue{background:var(--blue-tint);color:var(--blue-text)}
.integration-card h3{margin-bottom:6px;font-size:15px;font-weight:620}
.integration-card p{font-size:13px;line-height:1.55;color:var(--label-2)}
.integration-card>small{display:block;margin-top:8px;font-size:12px;color:var(--label-2);font-variant-numeric:tabular-nums}
.integration-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin-top:auto;padding-top:20px}
.config-example{margin:12px 0;padding:14px 16px;overflow:auto;border-radius:var(--r-md);background:var(--fill-1);color:var(--label);font-family:ui-monospace,'SF Mono','Cascadia Code',Menlo,Consolas,monospace;font-size:12.5px;line-height:1.7;white-space:pre}
.tool-list{margin-top:12px}
.tool-list>label{display:flex;align-items:center;gap:10px;min-height:44px;font-size:13.5px;color:var(--label);cursor:pointer}
.tool-list>label+label{box-shadow:inset 0 var(--hairline-w) 0 var(--hairline)}
.tool-list>label>span:not(.badge){flex:1;min-width:0}
.tool-list>label>span:not(.badge)::first-letter{text-transform:uppercase}
.tool-list .badge{flex:none}

/* ===== [26 ASSISTANT PAGE + CONVERSATION (toolbar, status, messages, welcome/orb, prompt grid, chat bubbles, thinking dots, composer) + APPROVAL CARD + PRINCIPLES + RESPONSIVE] =====
   used by: Intelligence.tsx Intelligence; assistant/AgentConversation.tsx; assistant/ApprovalCard.tsx
   source:  styles.css:1304-1377, styles.css:1417-1444 */
/* @EQUA conversation */
.intelligence-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:stretch}
.intelligence-layout:has(.message,.assistant-thinking){align-items:start}
.intelligence-layout>.detail-aside>.panel:last-child{flex:1}
.assistant-panel{display:flex;flex-direction:column}
.assistant-panel>.conversation{display:flex;flex:1;flex-direction:column;min-height:0}
.assistant-panel .conversation-messages{flex:1}
.assistant-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px 12px 20px;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline);font-size:12.5px;color:var(--label-2)}
.assistant-toolbar>span{display:flex;align-items:center;gap:8px;min-width:0}
.assistant-toolbar>span>svg{color:var(--accent-symbol)}
.assistant-toolbar strong{font-size:15px;font-weight:650;letter-spacing:-.01em;color:var(--label)}
.assistant-toolbar>.filter-select{max-width:min(320px,60%)}
.conversation-status{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;padding:8px 20px;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline);font-size:12.5px;color:var(--label-2)}
.conversation-status>span{display:flex;align-items:center;gap:6px;min-width:0;overflow-wrap:anywhere}
.conversation-status svg{color:var(--label-3)}
.conversation-status .online-dot{margin:0 3px}
.conversation-messages{min-height:380px;max-height:600px;padding:20px;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth}
.assistant-welcome{padding:28px 12px 12px;text-align:center}
.assistant-orb{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 20px;border-radius:var(--r-lg);background:linear-gradient(180deg,#2d735c,#173f35);color:var(--on-accent);box-shadow:inset 0 1px 0 rgb(255 255 255/.2),0 2px 6px rgb(0 0 0/.12),0 10px 24px rgb(0 0 0/.1)}
.assistant-welcome h2{font-size:22px;font-weight:700;line-height:1.2;letter-spacing:-.02em}
.assistant-welcome>p{max-width:44ch;margin:8px auto 0;font-size:14px;line-height:1.55;color:var(--label-2)}
.prompt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:640px;margin:28px auto 0;text-align:left}
.prompt-grid>button{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:10px 12px 10px 14px;border-radius:var(--r-md);background:var(--fill-1);color:var(--label);font-size:13.5px;font-weight:500;line-height:1.35;text-align:left;transition:background var(--d-fast) var(--ease-out),transform 90ms var(--ease-out)}
.prompt-grid>button:hover{background:var(--fill-2)}
.prompt-grid>button:active{transform:scale(.97)}
.prompt-grid>button>svg{color:var(--label-3);transition:color var(--d-fast) var(--ease-out),transform var(--d-pop) var(--ease-spring)}
.prompt-grid>button:hover>svg{color:var(--label-2);transform:translate(1px,-1px)}
.assistant-note{display:block;margin-top:20px;font-size:12px;line-height:1.5;color:var(--label-2)}
.message{display:flex;align-items:flex-start;gap:12px;margin:0 0 20px;animation:settle var(--d-pop) var(--ease-spring) both}
.message>div:last-child{flex:1;min-width:0}
.message-avatar{display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;border-radius:50%}
.message.assistant .message-avatar{border-radius:8px;background:linear-gradient(180deg,#2d735c,#173f35);color:var(--on-accent);box-shadow:inset 0 1px 0 rgb(255 255 255/.18),0 1px 2px rgb(0 0 0/.16)}
.message.assistant .message-avatar>svg{width:16px;height:16px}
.message.user .message-avatar .avatar{width:30px;height:30px;font-size:11.5px}
.message>div>strong{display:flex;align-items:baseline;gap:8px;min-width:0;padding-top:5px;font-size:13px;font-weight:620;line-height:20px;color:var(--label)}
.message>div>strong>small{overflow:hidden;font-size:12px;font-weight:450;color:var(--label-2);text-overflow:ellipsis;white-space:nowrap}
.message-content{margin-top:2px;font-size:14px;line-height:1.6;color:var(--label);white-space:pre-wrap;overflow-wrap:anywhere}
.message.user{flex-direction:row-reverse}
.message.user>div:last-child{display:flex;flex-direction:column;align-items:flex-end}
.message.user>div>strong{flex-direction:row-reverse}
.message.user .message-content{max-width:min(560px,88%);margin-top:4px;padding:10px 14px;border-radius:18px;background:var(--accent-tint-2)}
.assistant-thinking{display:flex;align-items:center;gap:8px;padding:4px 0 16px;font-size:13px;color:var(--label-2)}
.assistant-thinking>svg{width:30px;height:16px;margin-right:4px;color:var(--accent-symbol)}
.assistant-thinking i{position:relative;flex:none;width:6px;height:6px;margin:0 12px;border-radius:50%;background:var(--accent-tint-2);animation:assistant-thinking 1.2s var(--ease-out) .2s infinite}
.assistant-thinking i::before,.assistant-thinking i::after{content:'';position:absolute;top:0;width:6px;height:6px;border-radius:50%;background:var(--accent-tint-2);animation:assistant-thinking 1.2s var(--ease-out) infinite}
.assistant-thinking i::before{left:-10px}
.assistant-thinking i::after{left:10px;animation-delay:.4s}
@keyframes assistant-thinking{0%,70%,100%{background-color:var(--accent-tint-2)}35%{background-color:var(--accent-symbol)}}
.conversation-input{display:flex;flex-direction:column;gap:4px;margin:0 16px 16px;padding:10px 10px 10px 16px;border-radius:18px;background:var(--field-bg);box-shadow:var(--field-ring);transition:box-shadow var(--d-fast) var(--ease-out)}
.conversation-input:has(textarea:focus){box-shadow:0 0 0 1px var(--accent-symbol),0 0 0 4px var(--focus-ring)}
.conversation-input textarea{width:100%;min-height:44px;max-height:200px;padding:4px 0 0;border:0;outline:0;resize:none;background:transparent;color:var(--label);font-size:14px;line-height:1.5}
.conversation-input>div{display:flex;align-items:center;justify-content:space-between;gap:12px}
.conversation-input>div>span{font-size:12px;color:var(--label-2)}
.conversation-input .button{min-height:30px;padding:0 14px}
.approval-card{margin:12px 0 4px;padding:14px 16px 16px;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1)}
.approval-card>div:first-child{display:flex;align-items:center;gap:8px}
.approval-card>div:first-child>svg{color:var(--accent-symbol)}
.approval-card>div:first-child strong{flex:1;min-width:0;margin:0;font-size:14px;font-weight:620;color:var(--label)}
.approval-card>div:first-child strong::first-letter{text-transform:uppercase}
.approval-card dl{margin:12px 0 0}
.approval-card dl>div{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:8px 0;box-shadow:inset 0 var(--hairline-w) 0 var(--hairline);font-size:13px}
.approval-card dt{flex-shrink:0;color:var(--label-2);text-transform:lowercase}
.approval-card dt::first-letter{text-transform:uppercase}
.approval-card dd{min-width:0;margin:0;color:var(--label);font-weight:500;text-align:right;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.approval-card .heading-actions{justify-content:flex-end;margin-top:12px}
.approvals-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.approvals-grid>.approval-card{margin:0}
.approvals-grid>.panel{grid-column:1/-1}
.assistant-principle{display:flex;align-items:flex-start;gap:12px;margin-bottom:20px}
.assistant-principle>svg{margin-top:1px;color:var(--accent-symbol)}
.assistant-principle strong{display:block;margin-bottom:2px;font-size:13.5px;font-weight:620;color:var(--label)}
.assistant-principle p{font-size:13px;line-height:1.5;color:var(--label-2)}
.example-commands code{display:block;margin-bottom:8px;padding:10px 12px;border-radius:var(--r-md);background:var(--fill-1);color:var(--label);font-family:inherit;font-size:13px;font-weight:500;line-height:1.5}
.example-commands .muted{margin-top:12px}
@supports(corner-shape:superellipse(1.4)){.assistant-orb,.integration-logo,.approval-card,.conversation-input,.presence-popover{corner-shape:superellipse(1.4)}}
@media(prefers-reduced-motion:reduce){.assistant-thinking i,.assistant-thinking i::before,.assistant-thinking i::after{background:var(--accent-symbol)}}
@media(min-width:1600px){.intelligence-layout{grid-template-columns:minmax(0,1fr) 360px;gap:24px}.conversation-messages{max-height:680px}.integration-grid,.settings-grid{gap:24px}}
@media(max-width:1250px){.intelligence-layout{grid-template-columns:minmax(0,1fr) 280px;gap:16px}.integration-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-grid{gap:16px}.presence-stop>span:nth-child(2){display:none}.presence-stop{padding:0 10px}}
@media(max-width:1000px){.settings-grid{grid-template-columns:1fr}.intelligence-layout{grid-template-columns:1fr}.presence-popover{right:-48px}}
@media(max-width:760px){.integration-grid{grid-template-columns:1fr}
.page-heading:has(>.heading-actions>.badge){flex-direction:column;gap:10px}
.page-heading:has(>.heading-actions>.badge)>.heading-actions{margin-top:0}
.settings-grid{gap:16px;margin:16px 0}
.integration-card{padding:16px}
.assistant-toolbar{flex-wrap:wrap;gap:8px 12px;padding:12px 16px}
.assistant-toolbar>.filter-select{flex:1;max-width:none}
.conversation-status{flex-direction:column;gap:4px;padding:8px 16px}
.conversation-messages{min-height:320px;max-height:520px;padding:16px}
.assistant-welcome{padding:20px 0 8px}
.assistant-welcome h2{font-size:20px}
.prompt-grid{grid-template-columns:1fr;margin-top:20px}
.conversation-input{margin:0 12px 12px}
.message.user .message-content{max-width:92%}
.approvals-grid{grid-template-columns:1fr}
.approval-card dl>div{flex-direction:column;gap:2px}
.approval-card dd{text-align:left}
.tool-list>label{min-height:48px}
.presence-popover{position:fixed;top:calc(var(--toolbar-h) + 4px);right:12px;width:calc(100vw - 24px)}
.presence-trigger{min-width:36px}
.presence-count{display:none}
.presence-stop b,.presence-stop>span:nth-child(2){display:none}
.presence-stop{gap:6px;padding:0 10px}}

/* ===== [28 ASSISTANT MARKDOWN / RECORD CHIPS / FLOW ACTIONS / APPROVAL DIFF + NOTICES (assistant.css, whole file)] =====
   used by: assistant/Markdown.tsx, RecordChip.tsx, AgentConversation.tsx, ApprovalCard.tsx
   source:  assistant/assistant.css:1-70 */
/* @EQUA assistant (W5): Markdown answers, record chips, readable approval cards. Tokens only, each with a fallback (canonical §I). */
.eq-agent-md{white-space:normal;overflow-wrap:anywhere}
.eq-agent-md>*+*{margin-top:8px}
.eq-agent-md p,.eq-agent-md ul,.eq-agent-md ol,.eq-agent-md blockquote,.eq-agent-md pre{margin-bottom:0}
.eq-agent-md ul,.eq-agent-md ol{padding-left:20px}
.eq-agent-md li+li{margin-top:3px}
.eq-agent-md li::marker{color:var(--label-3,#86868b)}
.eq-agent-md strong{font-weight:620;color:var(--label,#1d1d1f)}
.eq-agent-md-heading{margin-top:12px}
.eq-agent-md code{padding:1px 5px;border-radius:var(--r-xs,6px);background:var(--fill-1,rgba(0,0,0,.04));font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}
.eq-agent-md pre{overflow-x:auto;padding:10px 12px;border-radius:var(--r-md,10px);background:var(--fill-1,rgba(0,0,0,.04));white-space:pre}
.eq-agent-md pre code{padding:0;background:none}
.eq-agent-md blockquote{margin-left:0;padding-left:12px;box-shadow:inset 2px 0 0 var(--hairline-strong,rgba(0,0,0,.16));color:var(--label-2,#6e6e73)}
.eq-agent-md-table{max-width:100%;overflow-x:auto;border-radius:var(--r-md,10px);box-shadow:0 0 0 var(--hairline-w,1px) var(--hairline,rgba(0,0,0,.1))}
.eq-agent-md-table:focus-visible{outline:none;box-shadow:0 0 0 var(--hairline-w,1px) var(--hairline,rgba(0,0,0,.1)),0 0 0 3px var(--focus-ring,rgba(23,63,53,.35))}
.eq-agent-md-table table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.eq-agent-md-table th,.eq-agent-md-table td{padding:6px 10px;text-align:left;vertical-align:top;white-space:nowrap}
.eq-agent-md-table th{font-weight:600;color:var(--label-2,#6e6e73);background:var(--fill-1,rgba(0,0,0,.04))}
.eq-agent-md-table tr+tr td,.eq-agent-md-table tbody tr:first-child td{box-shadow:inset 0 var(--hairline-w,1px) 0 var(--hairline,rgba(0,0,0,.1))}
.eq-agent-md-note{margin:0;padding:6px 10px;font-size:12px;color:var(--label-2,#6e6e73)}
.compact .eq-agent-md-table th,.compact .eq-agent-md-table td{padding:5px 8px;white-space:normal}
/* The welcome in the narrow drawer: a smaller orb and one column of suggestions. */
.conversation.compact .assistant-welcome{padding:16px 2px 8px}
.conversation.compact .assistant-orb{width:48px;height:48px;margin-bottom:14px}
.conversation.compact .assistant-welcome h2{font-size:18px}
.conversation.compact .assistant-welcome>p{font-size:13.5px}
.conversation.compact .prompt-grid{grid-template-columns:1fr;gap:6px;margin-top:18px}
.conversation.compact .assistant-note{margin-top:14px}

.eq-agent-chip{display:inline;padding:1px 7px;border:0;border-radius:var(--r-pill,999px);background:var(--accent-tint,rgba(23,63,53,.08));color:var(--accent-text,#173f35);font:inherit;font-weight:560;line-height:1.5;text-align:left;cursor:pointer;box-decoration-break:clone;-webkit-box-decoration-break:clone;transition:background var(--d-fast,160ms) var(--ease-out,ease)}
.eq-agent-chip:hover{background:var(--accent-tint-2,rgba(23,63,53,.14))}
.eq-agent-chip:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring,rgba(23,63,53,.35))}
.eq-agent-chip.is-static{cursor:default}
.eq-agent-chip.is-static:hover{background:var(--accent-tint,rgba(23,63,53,.08))}

.eq-agent-flow-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.eq-agent-flow-actions .button,.eq-agent-flow-actions .text-button{display:inline-flex;align-items:center;gap:6px}
.eq-agent-input-hint{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px}
.eq-agent-new{display:inline-flex;align-items:center;gap:4px;padding:2px 4px;border:0;border-radius:var(--r-xs,6px);background:none;color:var(--accent-text,#173f35);font:inherit;font-weight:560;cursor:pointer}
.eq-agent-new:hover{background:var(--fill-1,rgba(0,0,0,.04))}
.eq-agent-new:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring,rgba(23,63,53,.35))}
.eq-agent-new:disabled{color:var(--label-3,#86868b);cursor:default}

.eq-agent-approval .eq-agent-approval-title{margin:8px 0 0;font-size:14px;font-weight:600;line-height:1.4;color:var(--label,#1d1d1f)}
.approval-card.eq-agent-approval dt,.approval-card.eq-agent-approval dt::first-letter{text-transform:none}
.eq-agent-approval dd .eq-agent-chip{font-weight:560}
.eq-agent-diff{margin:10px 0 0;padding:0;list-style:none}
.eq-agent-diff li{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px;padding:8px 0;box-shadow:inset 0 var(--hairline-w,1px) 0 var(--hairline,rgba(0,0,0,.1));font-size:13px}
.eq-agent-diff-label{color:var(--label-2,#6e6e73)}
.eq-agent-diff-values{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0;text-align:right;font-variant-numeric:tabular-nums}
.eq-agent-diff-values svg{flex:none;color:var(--label-3,#86868b)}
.eq-agent-diff del{color:var(--label-2,#6e6e73);text-decoration-color:var(--label-3,#86868b)}
.eq-agent-diff ins{text-decoration:none;font-weight:620;color:var(--label,#1d1d1f)}
.eq-agent-notice,.eq-agent-effects{display:flex;align-items:flex-start;gap:8px;margin-top:12px;padding:10px 12px;border-radius:var(--r-md,10px);font-size:13px;line-height:1.45}
.eq-agent-notice>svg,.eq-agent-effects>svg{flex:none;margin-top:2px}
.eq-agent-notice ul,.eq-agent-effects ul{margin:2px 0 0;padding-left:16px}
.eq-agent-notice strong,.eq-agent-effects strong{font-weight:620}
.eq-agent-notice.is-amber{background:var(--amber-tint,#fff4de);color:var(--amber-text,#8a5a00)}
.eq-agent-notice.is-rose{background:var(--rose-tint,#fdecef);color:var(--rose-text,#a3243b)}
.eq-agent-effects{background:var(--fill-1,rgba(0,0,0,.04));color:var(--label,#1d1d1f)}
.eq-agent-effects>svg{color:var(--accent-symbol,#173f35)}
.eq-agent-footnote{margin:12px 0 0;font-size:12px;line-height:1.5;color:var(--label-2,#6e6e73)}
.eq-agent-outcome{margin:12px 0 0;font-size:13px;font-weight:560;color:var(--label-2,#6e6e73)}
.eq-agent-outcome.is-green{color:var(--green-text,#1f6f43)}
.eq-agent-outcome.is-rose{color:var(--rose-text,#a3243b)}
.eq-agent-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}

@media(max-width:480px){.eq-agent-diff li{flex-direction:column;align-items:flex-start}.eq-agent-diff-values{text-align:left}}
@media(prefers-reduced-motion:reduce){.eq-agent-chip{transition:none}}
@media(forced-colors:active){.eq-agent-chip{border:1px solid ButtonText}.eq-agent-notice,.eq-agent-effects{border:1px solid CanvasText}}

/* ===== [29 GUIDED FLOW SHELL + STEP PRIMITIVES + IN-DIALOG SHEETS + FLOW TOAST + COMMAND PALETTE (flow.css, whole file)] =====
   used by: flows/FlowShell.tsx, flows/steps.tsx, flows/CommandPalette.tsx (.flow-palette at flow.css:198-222)
   source:  flows/flow.css:1-260 */
/* Guided flows (W1): shell, step primitives, sheets and the command palette. Tokens only, always with fallbacks (canonical §I). */

/* ---------- shell ---------- */
.flow-shell{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:hidden;color:var(--label,#1d1d1f);background:var(--desktop,linear-gradient(transparent,transparent)),var(--canvas,#f5f5f7)}
.flow-shell[open]{display:block;animation:flow-fade var(--d-pop,340ms) var(--ease-out,cubic-bezier(.22,.8,.26,1))}
.flow-shell::backdrop{background:var(--canvas,#f5f5f7)}
.flow-frame{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%}
.flow-header{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:16px;min-height:var(--toolbar-h,56px);padding:8px 16px 8px 22px;background:var(--glass-bar,rgba(245,245,247,.74));-webkit-backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));box-shadow:0 1px 0 var(--hairline,rgba(0,0,0,.1))}
.flow-heading{display:flex;align-items:baseline;gap:10px;min-width:0}
.flow-heading strong{flex:none;font-size:15px;font-weight:650;letter-spacing:-.012em}
.flow-draft-title{min-width:0;overflow:hidden;color:var(--label-2,#6e6e73);font-size:13.5px;text-overflow:ellipsis;white-space:nowrap}
.flow-save{display:inline-flex;align-items:center;gap:5px;margin:0;color:var(--label-2,#6e6e73);font-size:12.5px;font-weight:540;white-space:nowrap}
.flow-save.saved svg{color:var(--green-dot,#2f8a67)}
.flow-save.offline,.flow-save.conflict{color:var(--amber-text,#8a5a00)}
.flow-save.error{display:block;color:var(--rose-text,#a3243b);white-space:normal;max-width:44ch;line-height:1.35}
.flow-save-fix{display:inline;font-size:inherit;white-space:normal;text-align:left;text-decoration:underline;text-underline-offset:2px}
.flow-save.launched{color:var(--accent-text,#173f35)}
.flow-header-actions{display:flex;align-items:center;gap:6px}
.flow-steps-toggle{display:none}
.flow-progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--fill-2,rgba(0,0,0,.06))}
.flow-progress>span{display:block;height:100%;background:var(--accent,#173f35);transition:width var(--d-settle,480ms) var(--ease-spring,cubic-bezier(.2,.8,.2,1))}
.flow-body{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:0}
.flow-body.cockpit{grid-template-columns:minmax(0,1fr)}
@media(min-width:1280px){.flow-body.with-context{grid-template-columns:248px minmax(0,1fr) 300px}}

/* ---------- rail ---------- */
.flow-rail{margin:10px 0 10px 10px;padding:14px 10px;overflow:auto;overscroll-behavior:contain;border-radius:var(--r-xl,18px);background:var(--glass,rgba(255,255,255,.78));-webkit-backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));box-shadow:var(--shadow-glass,0 1px 3px rgba(0,0,0,.08))}
.flow-rail.in-sheet{margin:0 0 12px;padding:0;background:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;max-height:55vh}
.flow-rail-group+.flow-rail-group{margin-top:14px}
.flow-rail-phase{margin:0 0 4px;padding:0 8px;color:var(--label-3,#86868b);font-size:11.5px;font-weight:620;letter-spacing:.02em}
.flow-rail ol{margin:0;padding:0;list-style:none}
.flow-rail-step{display:flex;align-items:flex-start;gap:9px;width:100%;min-height:36px;padding:7px 8px;border-radius:var(--r-sm,8px);color:var(--label,#1d1d1f);font-size:13px;text-align:left;transition:background var(--d-fast,160ms) var(--ease-out,ease)}
.flow-rail-step:hover:not(:disabled){background:var(--fill-1,rgba(0,0,0,.04))}
.flow-rail-step:disabled{color:var(--label-3,#86868b);cursor:default}
.flow-rail-step.current{background:var(--accent-tint-2,rgba(23,63,53,.14));color:var(--accent-text,#173f35);font-weight:600}
.flow-rail-mark{display:inline-grid;flex:none;place-items:center;width:20px;height:20px;border-radius:var(--r-pill,999px);background:var(--fill-2,rgba(0,0,0,.06));color:var(--label-2,#6e6e73);font-size:11px;font-weight:650;font-variant-numeric:tabular-nums}
.flow-rail-step.current .flow-rail-mark{background:var(--accent,#173f35);color:var(--on-accent,#fff)}
.flow-rail-step.done .flow-rail-mark{background:var(--green-tint,#e6f4ea);color:var(--green-text,#1f6f43)}
.flow-rail-step.error .flow-rail-mark{background:var(--rose-tint,#fdecef);color:var(--rose-text,#a3243b)}
.flow-rail-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.flow-rail-title{overflow-wrap:anywhere}
.flow-rail-state{color:var(--label-2,#6e6e73);font-size:11.5px;font-weight:520}
.flow-rail-state.error{color:var(--rose-text,#a3243b);font-weight:600}
.flow-pill{display:inline-flex;align-items:center;align-self:flex-start;gap:4px;height:19px;padding:0 7px;border-radius:var(--r-pill,999px);background:var(--fill-1,rgba(0,0,0,.04));color:var(--label-2,#6e6e73);font-size:11px;font-weight:600;white-space:nowrap}
.flow-pill.assisted{background:var(--accent-tint,rgba(23,63,53,.08));color:var(--accent-text,#173f35)}

/* ---------- stage ---------- */
.flow-stage{min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;padding:12vh 32px 72px;scroll-padding-bottom:96px}
.flow-stage-inner{max-width:680px;margin:0 auto}
.flow-stage-inner.wide{max-width:960px}
.flow-restored{margin-bottom:18px}
.flow-step{animation:flow-step-in var(--d-pop,340ms) var(--ease-spring,cubic-bezier(.2,.8,.2,1)) both}
.flow-step[data-dir="back"]{animation-name:flow-step-back}
.flow-eyebrow{margin:0 0 10px;color:var(--accent-text,#173f35);font-size:12.5px;font-weight:560;letter-spacing:0}
.flow-question-heading{margin:0;font-size:30px;line-height:1.15;font-weight:650;letter-spacing:-.022em;outline:0}
.flow-help{margin:12px 0 0;color:var(--label-2,#6e6e73);font-size:15px;line-height:1.5}
.flow-step-body{margin-top:28px}
.flow-step-body>*+*{margin-top:18px}
.flow-step-errors{margin-top:20px;padding:12px 14px;border-radius:var(--r-md,10px);background:var(--rose-tint,#fdecef);color:var(--rose-text,#a3243b);font-size:13.5px;outline:0}
.flow-step-errors ul{margin:6px 0 0;padding-left:18px}
.flow-step-errors:focus-visible{outline:3px solid var(--focus-ring,rgba(36,120,94,.42));outline-offset:2px}
.flow-ok-row{display:flex;align-items:center;gap:14px;margin-top:30px}
.flow-ok{min-height:40px;padding:0 20px;font-size:14.5px}
.flow-ok-hint{color:var(--label-3,#86868b);font-size:12.5px}
.flow-context{margin:10px 10px 10px 0;padding:18px;overflow:auto;border-radius:var(--r-lg,14px);background:var(--surface,#fff);box-shadow:var(--shadow-1,0 1px 3px rgba(0,0,0,.08));display:none}
.flow-context h2{margin:0 0 12px;font-size:13px;font-weight:650;color:var(--label-2,#6e6e73)}
.flow-context dl{margin:0}
.flow-context dl>div{padding:9px 0;border-top:1px solid var(--hairline,rgba(0,0,0,.1))}
.flow-context dt{color:var(--label-3,#86868b);font-size:11.5px;font-weight:600}
.flow-context dd{margin:2px 0 0;font-size:13.5px;overflow-wrap:anywhere}
@media(min-width:1280px){.flow-context{display:block}}
.flow-footer{position:relative;z-index:2;display:flex;align-items:center;gap:10px;padding:10px 18px;background:var(--glass-bar,rgba(245,245,247,.74));-webkit-backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));box-shadow:0 -1px 0 var(--hairline,rgba(0,0,0,.1))}
.flow-footer-count{color:var(--label-2,#6e6e73);font-size:12.5px;font-variant-numeric:tabular-nums}
.flow-footer-spacer{flex:1}
.flow-ok-mobile{display:none}
.flow-muted{color:var(--label-2,#6e6e73);font-size:12.5px}
.flow-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- step primitives ---------- */
.flow-question{margin-top:22px}
.flow-question-title{margin:0;font-size:17px;font-weight:620;letter-spacing:-.01em}
.flow-question-body{margin-top:12px}
.flow-choices{display:flex;flex-direction:column;gap:8px}
.flow-choice{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:10px 14px;border-radius:var(--r-lg,14px);background:var(--surface,#fff);box-shadow:var(--shadow-1,0 1px 3px rgba(0,0,0,.08));color:var(--label,#1d1d1f);text-align:left;transition:background var(--d-fast,160ms) var(--ease-out,ease),box-shadow var(--d-fast,160ms) var(--ease-out,ease),transform 90ms var(--ease-out,ease)}
.flow-choice:hover:not(.disabled){background:var(--control-bg-hover,#f7f7f8)}
.flow-choice:active:not(.disabled){transform:scale(.985)}
.flow-choice.selected{background:var(--accent-tint-2,rgba(23,63,53,.14));box-shadow:inset 0 0 0 1.5px var(--accent-symbol,#246150)}
.flow-choice.disabled{opacity:.62;cursor:not-allowed}
.flow-choice-key{display:inline-grid;flex:none;place-items:center;width:24px;height:24px;border-radius:7px;box-shadow:inset 0 0 0 1px var(--hairline-strong,rgba(0,0,0,.16));color:var(--label-2,#6e6e73);font-size:12px;font-weight:650}
.flow-choice.selected .flow-choice-key{background:var(--accent,#173f35);box-shadow:none;color:var(--on-accent,#fff)}
.flow-choice-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0}
.flow-choice-text strong{font-size:15px;font-weight:600}
.flow-choice-text small{color:var(--label-2,#6e6e73);font-size:13px;line-height:1.4}
.flow-choice-reason{color:var(--amber-text,#8a5a00)!important}
.flow-choice-check{flex:none;color:var(--accent-text,#173f35)}
.flow-chips{display:flex;flex-wrap:wrap;gap:8px}
.flow-chips>small{align-self:center}
.flow-fields{gap:16px}
.flow-required{color:var(--rose-text,#a3243b)}
.flow-invalid input,.flow-invalid select,.flow-invalid textarea{box-shadow:0 0 0 1.5px var(--rose-dot,#e5484d)!important}
.flow-field-error{display:flex!important;align-items:center;gap:5px;margin:4px 0 0;color:var(--rose-text,#a3243b)!important;font-size:12.5px;font-weight:540}
.flow-calculated{margin-left:8px;padding:1px 7px;border-radius:var(--r-pill,999px);background:var(--fill-1,rgba(0,0,0,.04));color:var(--label-2,#6e6e73);font-size:11px;font-weight:600}
.flow-money{position:relative;display:block}
.flow-money input{padding-right:56px!important;font-variant-numeric:tabular-nums}
.flow-money-currency{position:absolute;top:50%;right:12px;transform:translateY(-50%);color:var(--label-2,#6e6e73);font-size:13px;font-weight:600;pointer-events:none}
.flow-date-range{display:flex;flex-direction:column;gap:12px}
.flow-pick{position:relative;display:flex;flex-direction:column;gap:10px}
.flow-pick-selected{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-md,10px);background:var(--accent-tint,rgba(23,63,53,.08));color:var(--accent-text,#173f35)}
.flow-pick-selected>span{display:flex;flex:1;flex-direction:column;min-width:0;color:var(--label,#1d1d1f)}
.flow-pick-selected small,.flow-pick-option small{color:var(--label-2,#6e6e73);font-size:12.5px}
.flow-pick-field{position:relative;display:flex;align-items:center;gap:8px;min-height:44px;padding:0 8px 0 12px;border-radius:var(--r-md,10px);background:var(--field-bg,#fff);box-shadow:var(--field-ring,0 0 0 1px rgba(0,0,0,.15));color:var(--label-2,#6e6e73)}
.flow-pick-field:focus-within{box-shadow:0 0 0 1px var(--accent-symbol,#246150),0 0 0 4px var(--focus-ring,rgba(36,120,94,.42))}
.flow-pick-field input{flex:1;min-width:0;min-height:42px;border:0;background:transparent;color:var(--label,#1d1d1f);font-size:15px;outline:0}
.flow-pick-list{position:absolute;z-index:5;top:50px;left:0;right:0;max-height:300px;margin:0;padding:6px;overflow:auto;list-style:none;border-radius:var(--r-md,10px);background:var(--surface,#fff);box-shadow:var(--shadow-pop,0 4px 16px rgba(0,0,0,.08))}
.flow-pick-option{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:40px;padding:7px 10px;border-radius:var(--r-sm,8px);cursor:pointer}
.flow-pick-option>span{display:flex;flex-direction:column;min-width:0}
.flow-pick-option.active{background:var(--accent-tint-2,rgba(23,63,53,.14))}
.flow-pick-option.create{justify-content:flex-start;color:var(--accent-text,#173f35);font-weight:600}
.flow-pick-empty{padding:10px;color:var(--label-2,#6e6e73);font-size:13px}
.flow-toggles{display:flex;flex-direction:column;margin:0;padding:0;list-style:none;border-radius:var(--r-lg,14px);background:var(--surface,#fff);box-shadow:var(--shadow-1,0 1px 3px rgba(0,0,0,.08))}
.flow-toggle-row{display:flex;align-items:center;gap:12px;padding:12px 14px}
.flow-toggle-row+.flow-toggle-row{border-top:1px solid var(--hairline,rgba(0,0,0,.1))}
.flow-toggle-text{display:flex;flex:1;flex-direction:column;gap:2px;min-width:0;font-size:14px;font-weight:540}
.flow-toggle-text small{color:var(--label-2,#6e6e73);font-size:12.5px;font-weight:450;line-height:1.4}
.flow-toggle-state{flex:none;min-width:2.2em;color:var(--label-2,#6e6e73);font-size:12px;font-weight:600;text-align:right}
.flow-toggle-state.on{color:var(--accent-text,#173f35)}
.flow-switch{position:relative;flex:none;width:38px;height:23px;border-radius:var(--r-pill,999px);background:var(--fill-3,rgba(0,0,0,.09));transition:background var(--d-fast,160ms) var(--ease-out,ease)}
.flow-switch>span{position:absolute;top:2px;left:2px;width:19px;height:19px;border-radius:50%;background:var(--surface,#fff);box-shadow:var(--shadow-segment,0 1px 3px rgba(0,0,0,.2));transition:transform var(--d-fast,160ms) var(--ease-spring,ease)}
.flow-switch.on{background:var(--accent,#173f35)}
.flow-switch.on>span{transform:translateX(15px)}
.flow-table{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.flow-table .table-scroll{width:100%}
.flow-table input,.flow-table select{width:100%;min-width:90px;min-height:34px;padding:5px 9px;border:0;border-radius:8px;background:var(--field-bg,#fff);box-shadow:var(--field-ring,0 0 0 1px rgba(0,0,0,.15));color:var(--label,#1d1d1f);font-size:13.5px}
.flow-row-invalid td{background:var(--rose-tint,#fdecef)}
.flow-upload{display:flex;flex-direction:column;gap:10px}
.flow-drop{position:relative;display:flex;align-items:center;gap:14px;padding:18px;border-radius:var(--r-lg,14px);background:var(--surface,#fff);box-shadow:inset 0 0 0 1.5px var(--hairline-strong,rgba(0,0,0,.16));color:var(--label-2,#6e6e73);transition:background var(--d-fast,160ms) var(--ease-out,ease)}
.flow-drop>div{display:flex;flex:1;flex-direction:column;gap:2px}
.flow-drop small{font-size:12.5px}
.flow-drop.over{background:var(--accent-tint,rgba(23,63,53,.08));box-shadow:inset 0 0 0 1.5px var(--accent-symbol,#246150)}
.flow-drop:focus-within{box-shadow:inset 0 0 0 1.5px var(--accent-symbol,#246150),0 0 0 4px var(--focus-ring,rgba(36,120,94,.42))}
.flow-drop-label{color:var(--label,#1d1d1f);font-size:14.5px;font-weight:600;cursor:pointer}
.flow-file-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.flow-upload-progress{display:flex;align-items:center;gap:10px;color:var(--label-2,#6e6e73);font-size:12.5px}
.flow-upload-progress progress{flex:1;height:6px;accent-color:var(--accent,#173f35)}
.flow-upload-file{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--r-md,10px);background:var(--green-tint,#e6f4ea);color:var(--green-text,#1f6f43)}
.flow-upload-file>span{display:flex;flex:1;flex-direction:column;min-width:0;color:var(--label,#1d1d1f)}
.flow-upload-file small{color:var(--label-2,#6e6e73);font-size:12.5px}
.flow-notice{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border-radius:var(--r-md,10px);background:var(--blue-tint,#e8f1fb);color:var(--blue-text,#1d5fa8);font-size:13.5px;line-height:1.45}
.flow-notice>svg{flex:none;margin-top:2px}
.flow-notice>div{min-width:0;color:var(--label,#1d1d1f)}
.flow-notice.amber{background:var(--amber-tint,#fff4de);color:var(--amber-text,#8a5a00)}
.flow-notice.rose{background:var(--rose-tint,#fdecef);color:var(--rose-text,#a3243b)}
.flow-notice.green{background:var(--green-tint,#e6f4ea);color:var(--green-text,#1f6f43)}
.flow-notice ul{margin:4px 0 0;padding-left:18px}
.flow-review-block{padding:16px 18px;border-radius:var(--r-lg,14px);background:var(--surface,#fff);box-shadow:var(--shadow-1,0 1px 3px rgba(0,0,0,.08))}
.flow-review-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.flow-review-head h3{margin:0;font-size:14.5px;font-weight:650}
.flow-review-block ul{margin:8px 0 0;padding-left:18px;color:var(--label,#1d1d1f);font-size:13.5px;line-height:1.55}
.flow-launch{display:flex;flex-direction:column;gap:2px;margin:0;padding:6px;list-style:none;border-radius:var(--r-lg,14px);background:var(--surface,#fff);box-shadow:var(--shadow-1,0 1px 3px rgba(0,0,0,.08))}
.flow-launch-item{display:flex;align-items:center;gap:10px;min-height:42px;padding:6px 10px;font-size:14px}
.flow-launch-icon{display:inline-grid;flex:none;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--fill-1,rgba(0,0,0,.04));color:var(--label-3,#86868b)}
.flow-launch-item.done .flow-launch-icon{background:var(--green-tint,#e6f4ea);color:var(--green-text,#1f6f43)}
.flow-launch-item.running .flow-launch-icon{background:var(--accent-tint,rgba(23,63,53,.08));color:var(--accent-text,#173f35)}
.flow-launch-item.failed .flow-launch-icon{background:var(--rose-tint,#fdecef);color:var(--rose-text,#a3243b)}
.flow-launch-label{flex:1;min-width:0}
.flow-launch-status{color:var(--label-2,#6e6e73);font-size:12.5px;font-weight:560;text-align:right}
.flow-launch-item.failed .flow-launch-status{color:var(--rose-text,#a3243b)}
.flow-launch-item.done .flow-launch-status{color:var(--green-text,#1f6f43)}
.flow-spin{animation:flow-spin 1s linear infinite}

/* ---------- cockpit ---------- */
.flow-cockpit>*+*{margin-top:18px}
.flow-cockpit-retry{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.flow-cockpit-retry .flow-notice{flex:1 1 320px}
.flow-cockpit-links{display:flex;flex-wrap:wrap;gap:8px}
.flow-signing{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:var(--r-lg,14px);background:var(--surface,#fff);box-shadow:var(--shadow-1,0 1px 3px rgba(0,0,0,.08))}
.flow-copy-row{display:flex;gap:8px}
.flow-copy-row input{flex:1;min-width:0}
.flow-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.12em}

/* ---------- sheets and toast (inside the modal dialog) ---------- */
.flow-sheet-backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:16px;background:var(--scrim,rgba(0,0,0,.26));animation:flow-fade var(--d-fast,160ms) var(--ease-out,ease)}
.flow-sheet{width:min(460px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:22px;border-radius:var(--r-2xl,22px);background:var(--surface,#fff);box-shadow:var(--shadow-modal,0 24px 64px rgba(0,0,0,.18));animation:flow-sheet-in var(--d-pop,340ms) var(--ease-spring,cubic-bezier(.2,.8,.2,1))}
.flow-sheet.wide{width:min(620px,100%)}
.flow-sheet h2{margin:0 0 8px;font-size:18px;font-weight:650;letter-spacing:-.015em}
.flow-sheet>p{margin:0 0 14px;color:var(--label-2,#6e6e73);font-size:14px;line-height:1.5}
.flow-sheet .flow-notice{margin-bottom:14px}
.flow-sheet-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px}
.flow-keys{display:grid;gap:0;margin:0}
.flow-keys>div{display:grid;grid-template-columns:minmax(120px,auto) 1fr;gap:12px;padding:8px 0;border-top:1px solid var(--hairline,rgba(0,0,0,.1))}
.flow-keys dd{margin:0;color:var(--label-2,#6e6e73);font-size:13.5px}
.flow-shell kbd,.flow-palette kbd{display:inline-block;min-width:20px;padding:1px 6px;border-radius:6px;background:var(--fill-1,rgba(0,0,0,.04));box-shadow:inset 0 -1px 0 var(--hairline-strong,rgba(0,0,0,.16));color:var(--label,#1d1d1f);font:600 11.5px/1.6 inherit;text-align:center}
.flow-toast{position:fixed;left:50%;bottom:84px;z-index:30;display:flex;align-items:center;gap:10px;max-width:min(520px,calc(100vw - 32px));padding:9px 8px 9px 14px;transform:translateX(-50%);border-radius:var(--r-lg,14px);background:var(--label,#1d1d1f);color:var(--canvas,#f5f5f7);font-size:13.5px;font-weight:550;box-shadow:var(--shadow-pop,0 4px 16px rgba(0,0,0,.08));animation:flow-fade var(--d-pop,340ms) var(--ease-out,ease)}
.flow-toast .icon-button{width:26px;height:26px;color:inherit}
.flow-action-toast{gap:10px}
.flow-action-toast .button{flex:none}

/* ---------- command palette ---------- */
.flow-palette{width:min(640px,calc(100vw - 32px));max-height:min(620px,calc(100dvh - 24vh));margin:12vh auto auto;padding:0;overflow:hidden;border:0;border-radius:var(--r-xl,18px);background:var(--glass-strong,rgba(251,251,252,.92));-webkit-backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));color:var(--label,#1d1d1f);box-shadow:var(--shadow-modal,0 24px 64px rgba(0,0,0,.18))}
.flow-palette[open]{display:flex;flex-direction:column;animation:flow-sheet-in var(--d-pop,340ms) var(--ease-spring,cubic-bezier(.2,.8,.2,1))}
.flow-palette::backdrop{background:var(--scrim,rgba(0,0,0,.26))}
.flow-palette-search{display:flex;align-items:center;gap:10px;padding:14px 16px;color:var(--label-2,#6e6e73);box-shadow:0 1px 0 var(--hairline,rgba(0,0,0,.1))}
.flow-palette-search input{flex:1;min-width:0;border:0;background:transparent;color:var(--label,#1d1d1f);font-size:17px;outline:0}
.flow-palette-search:focus-within{color:var(--accent-text,#1f5a4a);box-shadow:0 1px 0 var(--hairline,rgba(0,0,0,.1)),inset 0 -2px 0 var(--accent-symbol,#246150)}
.flow-palette-results{flex:1;min-height:0;padding:6px 8px 10px;overflow:auto;overscroll-behavior:contain}
.flow-palette-heading{padding:10px 10px 4px;color:var(--label-3,#86868b);font-size:11.5px;font-weight:620;letter-spacing:.02em}
.flow-palette-option{display:flex;align-items:center;gap:12px;min-height:44px;padding:7px 10px;border-radius:var(--r-md,10px);cursor:pointer}
.flow-palette-option.active{background:var(--accent,#173f35);color:var(--on-accent,#fff)}
.flow-palette-option.active small,.flow-palette-option.active .flow-palette-icon{color:var(--on-accent,#fff);opacity:.85}
.flow-palette-icon{display:inline-grid;flex:none;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--fill-1,rgba(0,0,0,.04));color:var(--label-2,#6e6e73)}
.flow-palette-option.active .flow-palette-icon{background:transparent}
/* Tag chips on the selected (green) row: translucent white capsule, white text (7:1 on EQUA green); dark mode's lighter green takes a dark wash instead so the text stays above 4.5:1. */
.flow-palette-option.active .tag-chip{background:rgb(255 255 255/.16);box-shadow:inset 0 0 0 .5px rgb(255 255 255/.32);color:var(--on-accent,#fff)}
.flow-palette-option.active .tag-dot{box-shadow:0 0 0 1px rgb(255 255 255/.6)}
.flow-palette-option.active .tag-more-button{box-shadow:inset 0 0 0 1px rgb(255 255 255/.45);color:var(--on-accent,#fff)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]):not([data-theme="unifi"]):not([data-theme="jysk"]):not([data-theme="equa"]) .flow-palette-option.active .tag-chip{background:rgb(0 0 0/.24)}}
:root[data-theme="dark"] .flow-palette-option.active .tag-chip{background:rgb(0 0 0/.24)}
.flow-palette-text{display:flex;flex-direction:column;min-width:0}
.flow-palette-text strong{overflow:hidden;font-size:14px;font-weight:580;text-overflow:ellipsis;white-space:nowrap}
.flow-palette-text small{overflow:hidden;color:var(--label-2,#6e6e73);font-size:12.5px;text-overflow:ellipsis;white-space:nowrap}
.flow-palette-empty{margin:0;padding:22px 12px;color:var(--label-2,#6e6e73);font-size:13.5px;text-align:center}
.flow-palette-foot{display:flex;gap:16px;padding:9px 16px;color:var(--label-3,#86868b);font-size:12px;box-shadow:0 -1px 0 var(--hairline,rgba(0,0,0,.1))}
.flow-palette-foot kbd{margin-right:3px}

/* ---------- motion ---------- */
@keyframes flow-fade{from{opacity:0}}
@keyframes flow-step-in{from{opacity:0;transform:translateY(12px)}}
@keyframes flow-step-back{from{opacity:0;transform:translateY(-12px)}}
@keyframes flow-sheet-in{from{opacity:0;transform:translateY(8px) scale(.985)}}
@keyframes flow-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){
  .flow-step,.flow-step[data-dir="back"]{animation:flow-fade var(--d-pop,340ms) linear both}
  .flow-sheet,.flow-palette[open]{animation:flow-fade var(--d-fast,160ms) linear}
  .flow-choice:active:not(.disabled){transform:none}
  .flow-spin{animation:none}
  .flow-progress>span,.flow-switch>span{transition:none}
}

/* ---------- mobile ---------- */
@media(max-width:759px){
  .flow-header{grid-template-columns:minmax(0,1fr) auto;padding:8px 10px 8px 14px}
  .flow-save{grid-column:1/-1;grid-row:2;font-size:12px}
  .flow-draft-title{display:none}
  .flow-heading strong{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .flow-steps-toggle{display:inline-flex}
  .flow-body,.flow-body.with-context{grid-template-columns:minmax(0,1fr)}
  .flow-rail:not(.in-sheet),.flow-context{display:none}
  .flow-stage{padding:24px 16px 120px}
  .flow-question-heading{font-size:24px}
  .flow-help{font-size:14.5px}
  .flow-ok-row{display:none}
  .flow-ok-mobile{display:inline-flex}
  .flow-footer{position:sticky;bottom:0;padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px))}
  .flow-footer-count{display:none}
  .flow-drop{flex-wrap:wrap}
  .flow-toast{bottom:76px}
  .flow-palette{margin-top:12px;max-height:calc(100dvh - 24px)}
  .flow-palette-foot{display:none}
  .flow-keys>div{grid-template-columns:1fr}
}
@media(pointer:coarse){.flow-rail-step,.flow-choice,.flow-pick-option,.flow-palette-option{min-height:44px}}

/* ===== [30 CONNECTED DOCK TAB, SIDE SHEET, CHAIN RAIL, LINKED CHANGES, HISTORY TIMELINE (links.css, whole file)] =====
   used by: links/ConnectedDock.tsx, RelatedRail.tsx, RecordTimeline.tsx, LinkedChangeCard.tsx
   source:  links/links.css:1-129 */
/* Connected records (W4): dock tab, side sheet, chain rail, linked-change cards and record history.
   Tokens only, always with fallbacks (canonical §I). Glass is chrome only: the sheet frame is glass, records sit on white inset panels. */

/* Dock tab: a right-edge vertical capsule on desktop, a round button bottom-left on phones. */
.cx-tab{position:fixed;top:50%;right:0;z-index:60;display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 8px 14px 9px;transform:translateY(-50%);border-radius:var(--r-lg,14px) 0 0 var(--r-lg,14px);background:var(--glass-strong,rgba(251,251,252,.8));-webkit-backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));box-shadow:var(--shadow-pop,0 4px 16px rgba(0,0,0,.08));color:var(--label,#1d1d1f);font-size:12.5px;font-weight:620;letter-spacing:.01em;transition:background var(--d-fast,160ms) var(--ease-out,ease-out),transform 90ms var(--ease-out,ease-out)}
.cx-tab:hover{background:var(--surface,#fff)}
.cx-tab:active{transform:translateY(-50%) scale(.97)}
.cx-tab:focus-visible{outline:3px solid var(--focus-ring,rgba(23,63,53,.35));outline-offset:2px}
.cx-tab-label{writing-mode:vertical-rl;transform:rotate(180deg)}
.cx-tab-icon{color:var(--accent-symbol,var(--accent,#173f35))}
.cx-tab-count{display:grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill,999px);background:var(--accent,#173f35);color:var(--on-accent,#fff);font-size:11.5px;font-weight:650}
.cx-tab[aria-expanded="true"]{opacity:0;pointer-events:none}

/* Side sheet */
.cx-scrim{position:fixed;inset:0;z-index:69;background:var(--scrim,rgba(0,0,0,.26));animation:cx-fade var(--d-pop,340ms) var(--ease-out,ease-out)}
.cx-sheet{position:fixed;top:10px;right:10px;bottom:10px;z-index:70;display:flex;flex-direction:column;width:min(420px,calc(100vw - 20px));overflow:hidden;border-radius:var(--r-2xl,22px);background:var(--glass-strong,rgba(251,251,252,.8));-webkit-backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));backdrop-filter:var(--glass-blur,saturate(180%) blur(20px));box-shadow:var(--shadow-modal,0 24px 64px rgba(0,0,0,.18));color:var(--label,#1d1d1f);animation:cx-sheet-in var(--d-pop,340ms) var(--ease-spring,cubic-bezier(.2,.8,.2,1))}
.cx-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 18px 12px;box-shadow:0 var(--hairline-w,1px) 0 var(--hairline,rgba(0,0,0,.1))}
.cx-head h2{margin:2px 0 0;font-size:19px;font-weight:700;letter-spacing:-.018em;line-height:1.25;overflow-wrap:anywhere}
.cx-eyebrow{margin:0;color:var(--label-2,#6e6e73);font-size:12.5px;font-weight:600}
.cx-body{flex:1;overflow:auto;padding:12px 12px 18px;overscroll-behavior:contain}
.cx-section{margin:0 0 12px;padding:14px 14px 12px;border-radius:var(--r-lg,14px);background:var(--surface,#fff);box-shadow:var(--shadow-1,0 1px 3px rgba(0,0,0,.08))}
.cx-section>h3{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:13.5px;font-weight:650;letter-spacing:-.005em}
.cx-count{display:inline-grid;place-items:center;min-width:20px;height:18px;padding:0 6px;border-radius:var(--r-pill,999px);background:var(--fill-2,rgba(0,0,0,.06));color:var(--label-2,#6e6e73);font-size:11.5px;font-weight:620}
.cx-tags-section:has(.cx-tags:empty){display:none}
.cx-muted{margin:0 0 8px;color:var(--label-2,#6e6e73);font-size:12.5px}
p.cx-muted.cx-section{padding:12px 14px}

/* Chain rail */
.cx-rail ol{margin:0;padding:0;list-style:none}
.cx-node{position:relative;display:grid;grid-template-columns:16px minmax(0,1fr);column-gap:10px;padding-bottom:12px}
.cx-node:not(:last-child)::before{content:'';position:absolute;top:18px;bottom:0;left:7px;width:2px;border-radius:1px;background:var(--hairline-strong,rgba(0,0,0,.16))}
.cx-dot{display:block;width:12px;height:12px;margin:5px 0 0 2px;border-radius:50%;background:var(--label-3,#86868b);box-shadow:0 0 0 3px var(--surface,#fff)}
.cx-dot.green{background:var(--green-dot,#1f6f43)}.cx-dot.amber{background:var(--amber-dot,#8a5a00)}.cx-dot.rose{background:var(--rose-dot,#a3243b)}
.cx-node.is-gap .cx-dot,.cx-dot.is-gap{background:var(--surface,#fff);box-shadow:none;border:1.5px dashed var(--hairline-strong,rgba(0,0,0,.16))}
.cx-dot.is-gap{display:inline-block;flex:none;width:10px;height:10px;margin:0}
.cx-node-body{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:3px}
.cx-node-label{color:var(--label-2,#6e6e73);font-size:12px;font-weight:600}
.cx-here{color:var(--accent-text,#173f35)}
.cx-capsule{display:inline-flex;max-width:100%;align-items:center;gap:6px;min-height:28px;padding:0 12px;border-radius:var(--r-pill,999px);background:var(--fill-1,rgba(0,0,0,.04));color:var(--label,#1d1d1f);font-size:13px;font-weight:580;text-align:left;transition:background var(--d-fast,160ms) var(--ease-out,ease-out)}
.cx-capsule>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cx-capsule svg{flex:none;color:var(--label-3,#86868b)}
button.cx-capsule:hover{background:var(--fill-2,rgba(0,0,0,.06))}
.cx-capsule.is-static{background:var(--accent-tint,rgba(23,63,53,.08));color:var(--accent-text,#173f35)}
.cx-node-status{font-size:12.5px;color:var(--label-2,#6e6e73)}
.cx-node-status.green{color:var(--green-text,#1f6f43)}.cx-node-status.amber{color:var(--amber-text,#8a5a00)}.cx-node-status.rose{color:var(--rose-text,#a3243b)}
.cx-gap-text{color:var(--label-2,#6e6e73);font-size:13px;font-weight:560}
.cx-node-actions{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:2px}
.cx-link{display:inline-flex;align-items:center;gap:4px;min-height:24px;color:var(--accent-text,#173f35);font-size:12.5px;font-weight:600;border-radius:var(--r-sm,8px)}
.cx-link:hover{text-decoration:underline;text-underline-offset:2px}
.cx-rail.is-compact .cx-node{padding-bottom:8px}
.cx-rail.is-compact .cx-capsule{min-height:24px;padding:0 10px;font-size:12.5px}
.cx-gap-line{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:6px 0 0;color:var(--label-2,#6e6e73);font-size:12.5px}
.cx-group{margin-top:10px;padding-top:10px;box-shadow:inset 0 var(--hairline-w,1px) 0 var(--hairline,rgba(0,0,0,.1))}
.cx-group h4{display:flex;gap:6px;margin:0 0 4px;color:var(--label-2,#6e6e73);font-size:12.5px;font-weight:620}
.cx-group ul{margin:0;padding:0;list-style:none}
.cx-row{display:flex;width:100%;min-height:32px;align-items:center;justify-content:space-between;gap:10px;padding:4px 8px;border-radius:var(--r-md,10px);font-size:13px;text-align:left}
.cx-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cx-row small{flex:none;color:var(--label-2,#6e6e73);font-size:12px}
.cx-row:hover:not(:disabled){background:var(--fill-1,rgba(0,0,0,.04))}

/* Linked changes */
.cx-changes{display:grid;gap:10px}
.cx-apply-all{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--label-2,#6e6e73);font-size:12.5px}
.cx-change{padding:12px;border-radius:var(--r-md,10px);background:var(--surface-sunken,#f2f2f4);box-shadow:inset 0 0 0 var(--hairline-w,1px) var(--hairline,rgba(0,0,0,.1))}
.cx-change header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.cx-change h4{margin:0;font-size:13.5px;font-weight:650;line-height:1.35}
.cx-state{flex:none;display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:var(--r-pill,999px);background:var(--fill-1,rgba(0,0,0,.04));color:var(--label-2,#6e6e73);font-size:12px;font-weight:600}
.cx-reason{margin:6px 0 0;color:var(--label-2,#6e6e73);font-size:12.5px;line-height:1.45}
.cx-diff{margin-top:10px}
.cx-diff-target{margin:0 0 4px;font-size:12.5px;font-weight:600;overflow-wrap:anywhere}
.cx-diff-target span{color:var(--label-2,#6e6e73);font-weight:560}
.cx-diff table{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}
.cx-diff th,.cx-diff td{padding:4px 6px;text-align:left;vertical-align:top;box-shadow:inset 0 calc(var(--hairline-w,1px)*-1) 0 var(--hairline,rgba(0,0,0,.1))}
.cx-diff thead th{color:var(--label-3,#86868b);font-weight:600}
.cx-diff tbody th{color:var(--label-2,#6e6e73);font-weight:560}
.cx-diff td:last-child{font-weight:620}
.cx-diff-op{margin:4px 0 0;font-size:12.5px;color:var(--label,#1d1d1f)}
.cx-more{margin:6px 0 0;color:var(--label-2,#6e6e73);font-size:12.5px}
.cx-note{margin:8px 0 0;padding:8px 10px;border-radius:var(--r-md,10px);background:var(--blue-tint,#e8f1fb);color:var(--blue-text,#1d5fa8);font-size:12.5px}
.cx-error{margin:8px 0 0;padding:8px 10px;border-radius:var(--r-md,10px);background:var(--rose-tint,#fdecef);color:var(--rose-text,#a3243b);font-size:12.5px}
.cx-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.cx-actions .button,.cx-apply-all .button{min-height:30px;padding:0 14px}

/* What's next */
.cx-next{display:grid;gap:6px}
.cx-next-action{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:9px 12px;border-radius:var(--r-md,10px);background:var(--fill-1,rgba(0,0,0,.04));text-align:left;transition:background var(--d-fast,160ms) var(--ease-out,ease-out)}
.cx-next-action strong{color:var(--accent-text,#173f35);font-size:13.5px;font-weight:620}
.cx-next-action small{color:var(--label-2,#6e6e73);font-size:12.5px}
.cx-next-action:hover{background:var(--accent-tint,rgba(23,63,53,.08))}

/* History */
.cx-day+.cx-day{margin-top:10px}
.cx-day h4{margin:0 0 4px;color:var(--label-2,#6e6e73);font-size:12.5px;font-weight:620}
.cx-day ol{margin:0;padding:0;list-style:none}
.cx-event{display:grid;grid-template-columns:42px minmax(0,1fr);gap:8px;padding:6px 0;box-shadow:inset 0 calc(var(--hairline-w,1px)*-1) 0 var(--hairline,rgba(0,0,0,.1))}
.cx-event:last-child{box-shadow:none}
.cx-event p{margin:0;font-size:13px;line-height:1.45;overflow-wrap:anywhere}
.cx-event-time{padding-top:1px;color:var(--label-3,#86868b);font-size:12px}
.cx-source{display:inline-flex;align-items:center;height:20px;margin-left:6px;padding:0 8px;border-radius:var(--r-pill,999px);background:var(--fill-1,rgba(0,0,0,.04));color:var(--label-2,#6e6e73);font-size:11.5px;font-weight:600;vertical-align:1px}
.cx-auto{margin-top:4px;font-size:12.5px;color:var(--label-2,#6e6e73)}
.cx-auto summary{display:flex;align-items:flex-start;gap:4px;cursor:pointer;list-style:none;border-radius:var(--r-sm,8px)}
.cx-auto summary::-webkit-details-marker{display:none}
.cx-auto summary svg{flex:none;margin-top:3px;transition:transform var(--d-fast,160ms) var(--ease-out,ease-out)}
.cx-auto[open] summary svg{transform:rotate(90deg)}
.cx-auto ul{margin:6px 0 0;padding:0 0 0 17px;display:grid;gap:4px}
.cx-earlier{margin-top:10px;min-height:30px}

/* Inside RecordEditor */
.cx-record{grid-column:1/-1;margin-top:6px;padding-top:14px;box-shadow:inset 0 var(--hairline-w,1px) 0 var(--hairline,rgba(0,0,0,.1))}
.cx-record h3{margin:0 0 10px;font-size:13.5px;font-weight:650}
.cx-subhead{margin:6px 0 8px;color:var(--label-2,#6e6e73);font-size:12.5px;font-weight:620}

@keyframes cx-sheet-in{from{opacity:0;transform:translateX(18px) scale(.985)}}
@keyframes cx-fade{from{opacity:0}}
@media(max-width:760px){
  .cx-tab{top:auto;right:auto;bottom:calc(16px + env(safe-area-inset-bottom,0px));left:16px;flex-direction:row;justify-content:center;width:48px;height:48px;padding:0;transform:none;border-radius:50%}
  .cx-tab:active{transform:scale(.97)}
  .cx-tab-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .cx-tab-count{position:absolute;top:-4px;right:-4px}
  .cx-sheet{top:8px;right:8px;bottom:8px;left:8px;width:auto;border-radius:var(--r-xl,18px)}
}
@media(prefers-reduced-motion:reduce){
  .cx-sheet{animation:cx-fade var(--d-fast,160ms) linear}
  .cx-tab,.cx-tab:active{transition:none}
  .cx-tab:active{transform:translateY(-50%)}
  .cx-auto summary svg{transition:none}
}
@media(prefers-reduced-motion:reduce) and (max-width:760px){.cx-tab:active{transform:none}}
@media(prefers-reduced-transparency:reduce){.cx-tab,.cx-sheet{background:var(--surface,#fff);-webkit-backdrop-filter:none;backdrop-filter:none}}

/* ===== [31 TAG CHIPS + "+N" OVERFLOW POPOVER + RECORD TAGS] =====
   used by: tags/TagChips.tsx, tags/RecordTags.tsx
   source:  tags/tags.css:1-25, tags/tags.css:72-80, tags/tags.css:152-157 */
/* W3 tags. Tokens from styles.css, always with fallbacks; no hex colours outside fallbacks. Tags are neutral capsules
   with a coloured dot, so status colours and the EQUA green accent stay reserved for states and actions. */
.tag-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Chips */
.tag-chips{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;min-width:0;max-width:100%}
.tag-chip{position:relative;display:inline-flex;align-items:center;gap:5px;max-width:100%;height:22px;padding:0 8px 0 7px;border-radius:var(--r-pill,999px);background:var(--fill-1,rgba(0,0,0,.04));color:var(--label,#1d1d1f);font-size:12px;font-weight:520;line-height:1;letter-spacing:0;white-space:nowrap;vertical-align:middle}
.tag-chip .tag-name{min-width:0;overflow:hidden;text-overflow:ellipsis}
.tag-chip s.tag-name{text-decoration-thickness:1px}
.tag-chip.is-archived{color:var(--label-3,#86868b)}
.tag-chip.is-large{height:30px;padding:0 13px 0 11px;font-size:15px;font-weight:620;gap:8px}
.tag-chip.is-large .tag-dot{width:10px;height:10px}
button.tag-chip.is-interactive{min-height:24px;height:24px;cursor:pointer;transition:background var(--d-fast,160ms) var(--ease-out,ease)}
button.tag-chip.is-interactive:hover{background:var(--fill-2,rgba(0,0,0,.06))}
button.tag-chip.is-interactive:active{background:var(--fill-3,rgba(0,0,0,.09))}
button.tag-chip.is-interactive:focus-visible,.tag-chip-remove:focus-visible,.tag-more-button:focus-visible{border-radius:var(--r-pill,999px)}
.tag-dot{flex-shrink:0;display:inline-block;width:8px;height:8px;border-radius:50%;box-shadow:inset 0 0 0 1px var(--hairline-strong,rgba(0,0,0,.16))}
.tag-chip.has-remove{height:24px;padding-right:0}
.tag-chip-remove{display:inline-grid;place-items:center;flex-shrink:0;width:24px;height:24px;margin-left:-2px;border-radius:var(--r-pill,999px);color:var(--label-2,#6e6e73);transition:background var(--d-fast,160ms) var(--ease-out,ease)}
.tag-chip-remove:hover{background:var(--fill-2,rgba(0,0,0,.06));color:var(--label,#1d1d1f)}
.tag-more{position:relative;display:inline-flex}
.tag-more-button{display:inline-flex;align-items:center;min-width:28px;height:24px;padding:0 8px;border-radius:var(--r-pill,999px);background:transparent;box-shadow:inset 0 0 0 1px var(--hairline,rgba(0,0,0,.1));color:var(--label-2,#6e6e73);font-size:12px;font-weight:600}
.tag-more-button:hover,.tag-more-button[aria-expanded=true]{background:var(--fill-1,rgba(0,0,0,.04));color:var(--label,#1d1d1f)}
.tag-popover{position:absolute;z-index:30;top:calc(100% + 6px);left:0;display:flex;flex-wrap:wrap;gap:4px;width:max-content;max-width:min(280px,calc(100vw - 32px));padding:8px;border-radius:var(--r-md,10px);background:var(--surface,#fff);box-shadow:var(--shadow-pop,0 4px 16px rgba(0,0,0,.08));animation:tag-pop var(--d-fast,160ms) var(--ease-out,ease)}
@keyframes tag-pop{from{opacity:0;transform:translateY(-3px)}}
/* RecordTags */
.record-tags{display:flex;flex-direction:column;gap:8px;min-width:0}
.record-tags-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.record-tags-head h3{font-size:13px;font-weight:620;color:var(--label-2,#6e6e73)}
.record-tags-view{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;min-height:24px}
.tag-edit-button{min-height:24px}
.record-tags-edit{display:flex;flex-direction:column;gap:8px}
.record-tags-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.record-tags-actions .muted{margin-right:auto;font-size:12px}
@media(prefers-reduced-motion:reduce){
  .tag-popover,.tag-panel{animation:none}
  .tag-swatches input.tag-swatch:hover{transform:none}
}
@media(prefers-reduced-transparency:reduce){.tag-popover,.tag-panel{background:var(--surface,#fff)}}
@media(forced-colors:active){.tag-dot{forced-color-adjust:none}.tag-chip{border:1px solid CanvasText}}

/* ===== [31b MENU (small action menu popover)] =====
   used by: accounts/AccountLogo.tsx .account-logo-menu
   source:  accounts/account-logo.css:8-19 */
.account-logo{position:relative;display:inline-flex;flex-shrink:0}
.account-logo-button{position:relative;padding:0;border:0;background:none;border-radius:12px;cursor:pointer}
.account-logo-button:focus-visible{outline:2px solid var(--accent-symbol);outline-offset:2px}
.account-logo-edit{position:absolute;right:-4px;bottom:-4px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--surface,#fff);color:var(--label);box-shadow:0 1px 3px rgb(0 0 0/.18);opacity:0;transition:opacity .15s}
.account-logo-button:hover .account-logo-edit,.account-logo-button:focus-visible .account-logo-edit,.account-logo-button[aria-expanded=true] .account-logo-edit{opacity:1}
@media(hover:none){.account-logo-edit{opacity:1}}
.account-logo-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:30;display:grid;min-width:190px;padding:5px;border-radius:12px;background:var(--surface,#fff);box-shadow:0 0 0 1px rgb(0 0 0/.06),0 8px 28px rgb(0 0 0/.16)}
.account-logo-menu button{display:flex;align-items:center;gap:8px;min-height:36px;padding:0 10px;border:0;border-radius:8px;background:none;color:var(--label);font:inherit;font-size:13px;text-align:left;cursor:pointer}
.account-logo-menu button:hover:not(:disabled){background:var(--fill-1)}
.account-logo-menu button.danger{color:var(--danger,#d70015)}
.account-logo-menu button:disabled{opacity:.55;cursor:default}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]):not([data-theme="unifi"]):not([data-theme="jysk"]):not([data-theme="equa"]) .account-logo-menu,:root:not([data-theme="light"]):not([data-theme="unifi"]):not([data-theme="jysk"]):not([data-theme="equa"]) .account-logo-edit{background:#2c2c2e}}
:root[data-theme="dark"] .account-logo-menu,:root[data-theme="dark"] .account-logo-edit{background:#2c2c2e}

/* ===== [33 SKELETON / LOADING (startup splash + loading line, AI busy banner, draft banner, cash-flow skeleton bars)] =====
   used by: App.tsx startup (App.tsx:74); builders .ai-busy; cashflow/CashFlowPage.tsx Skeleton (namespaced .cfp-page, --cfp-* tokens map to --fill-2/--r-md)
   source:  styles.css:198-202, styles.css:1596-1602, cashflow/cashflow.css:399-404, cashflow/cashflow.css:413 */
.startup{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;height:100vh}
.startup .brand-word{font-size:34px}
.startup p{font-size:13px;color:var(--label-2)}
.loading-line{width:140px;height:4px;overflow:hidden;border-radius:var(--r-pill);background:var(--fill-2)}
.loading-line::after{content:'';display:block;width:40%;height:100%;border-radius:inherit;background:var(--accent-symbol);animation:loading 1.1s var(--ease-out) infinite alternate}
.ai-busy{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 16px;padding:11px 14px;border-radius:var(--r-md);background:var(--accent-tint);color:var(--accent-text);font-weight:580}
.ai-busy>svg{animation:ai-pulse 1.4s var(--ease-out) infinite}
.ai-busy .muted{padding:0;margin:0 0 0 auto;font-weight:450}
@keyframes ai-pulse{0%,100%{opacity:1}50%{opacity:.35}}
.draft-banner{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 16px;padding:11px 14px;border-radius:var(--r-md);background:var(--accent-tint-2);color:var(--label);font-size:13.5px}
.draft-banner>svg{color:var(--accent-text)}
.draft-banner .text-button{margin-left:auto}
/* Loading */







/* ===== [03d TABLET/PHONE OFF-CANVAS GLASS DRAWER + SCRIM (<=1024px) — must come after group 16] =====
   used by: App.tsx .sidebar.mobile-open + <button class="mobile-backdrop"> (App.tsx:81 backdrop, :82 sidebar)
   source:  styles.css:1451-1466 */
/* ── Phones and tablets ────────────────────────────────────────────────────────────────────────
   Below 1024px the sidebar becomes the drawer (a docked 224px rail left tablets cramped); below
   760px the page works as a phone: safe-area aware chrome, 16px fields (no iOS focus zoom),
   bottom-sheet dialogs and full-width actions; below 640px list tables stack into cards whose
   cells carry their column heading (data-label, set by <Table>). */
@media(max-width:1024px){:root{--workspace-offset:0px}
.sidebar{top:8px;left:8px;bottom:8px;z-index:80;background:var(--glass-strong);transform:translateX(calc(-100% - 16px));transition:transform var(--d-settle) var(--ease-spring);box-shadow:var(--shadow-glass),var(--shadow-modal)}
.sidebar:not(.mobile-open){visibility:hidden;box-shadow:none;transition:transform var(--d-settle) var(--ease-spring),visibility 0s linear var(--d-settle),box-shadow 0s linear var(--d-settle)}
.sidebar.mobile-open{transform:translateX(0)}
.mobile-backdrop{display:block;position:fixed;inset:0;z-index:75;background:var(--scrim);animation:scrim-in var(--d-pop) var(--ease-out)}
.mobile-menu{display:inline-flex;margin-left:-6px}
.topbar{gap:12px;padding:0 16px}
.topbar-location{min-width:0}
.global-search{flex:1 1 auto;width:auto;min-width:0;max-width:320px}
.main-content{padding:20px 20px 36px}
.toast{left:50%}}

/* ===== [32 PHONES (<=760 safe-area chrome, 16px fields, bottom-sheet dialogs, full-width actions) + COARSE POINTER TARGETS] =====
   used by: shell
   source:  styles.css:1468-1493, styles.css:1514-1521 */
@media(max-width:760px){
.topbar{height:calc(var(--toolbar-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left))}
.sidebar{top:calc(8px + env(safe-area-inset-top));bottom:calc(8px + env(safe-area-inset-bottom));left:max(8px,env(safe-area-inset-left));max-width:calc(100vw - 48px)}
.main-content{padding:18px max(16px,env(safe-area-inset-right)) calc(88px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}





.toast{bottom:calc(14px + env(safe-area-inset-bottom))}
:is(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea):not(#_){font-size:16px}
.page-heading .heading-actions{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);align-items:stretch}
.page-heading .heading-actions:has(>:nth-child(3)){grid-auto-flow:row;grid-template-columns:1fr 1fr}
.page-heading .heading-actions>*{min-width:0;min-height:44px}
.page-heading .heading-actions>.button{padding:0 12px}
.page-heading .heading-actions>.button.primary:last-child:nth-child(odd){grid-column:1/-1}
.list-toolbar .search-box,.list-toolbar .filter-select{flex:1 1 100%;max-width:none}
.modal,.modal.wide{width:100vw;max-width:100vw;max-height:calc(100dvh - env(safe-area-inset-top) - 24px);margin:auto 0 0;border-radius:var(--r-2xl) var(--r-2xl) 0 0}
.modal[open]{animation:sheet-up var(--d-settle) var(--ease-spring)}
.modal-heading{position:sticky;top:0;z-index:2;background:var(--surface)}
.modal-footer,.modal-actions{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}
.modal-footer>.button,.modal-actions>.button{flex:1 1 0;min-height:44px}
.overview-strip>div{min-width:0}
.overview-strip strong{overflow-wrap:anywhere}

}
@media(pointer:coarse){
.icon-button{position:relative}
.icon-button::after{content:'';position:absolute;inset:-6px;border-radius:inherit}
.button{min-height:40px}
.button.small{min-height:34px}
.tabs>button{min-height:36px}
.nav-link{min-height:44px}
.choice-chip{min-height:36px}}

/* ===== [27 ASSISTANT DRAWER (floating chat sheet) + LAUNCHER + RM] =====
   used by: App.tsx <aside class="assistant-drawer"> (App.tsx:92) + <button class="assistant-launcher"> (App.tsx:91)
   source:  follow-me.css:1-12, follow-me.css:37, follow-me.css:53, follow-me.css:57-70 */
/* @EQUA assistant drawer sheet (opened from the toolbar control) */
.assistant-drawer{position:fixed;right:20px;bottom:20px;z-index:75;display:flex;flex-direction:column;width:min(400px,calc(100vw - 24px));height:min(600px,calc(100vh - 40px));overflow:hidden;border-radius:var(--r-2xl);background:var(--glass-strong);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-modal);color:var(--label);transform-origin:bottom right;animation:assistant-drawer-in var(--d-settle) var(--ease-spring)}
@keyframes assistant-drawer-in{from{opacity:0;transform:translateY(12px) scale(.94);filter:blur(8px)}}
.assistant-drawer-head{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 12px;box-shadow:inset 0 calc(var(--hairline-w)*-1) 0 var(--hairline)}
.assistant-drawer-head>strong{flex:1;min-width:0;font-size:14px;font-weight:650;letter-spacing:-.01em}
.assistant-drawer-head .follow-toggle{margin-right:4px}
.assistant-drawer-body{display:flex;flex:1;flex-direction:column;min-height:0}
.assistant-drawer-body>.conversation{display:flex;flex:1;flex-direction:column;min-height:0}
.assistant-drawer-body .conversation-messages{flex:1;min-height:0;max-height:none;padding:16px}
.assistant-drawer-body .conversation-input{margin:0 12px 12px}
.assistant-drawer-body .conversation-input textarea{min-height:48px}
.assistant-drawer-body .message.user .message-content{max-width:92%}
@media(max-width:760px){.assistant-drawer{inset:8px;width:auto;height:auto;border-radius:var(--r-xl)}}
@media(prefers-reduced-motion:reduce){@keyframes assistant-drawer-in{from{opacity:0}}}
/* @EQUA launcher: always in the bottom-right corner; opens the floating chat, which minimises back to it. */
.assistant-launcher{position:fixed;right:calc(20px + env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom));z-index:74;display:inline-flex;align-items:center;gap:8px;height:46px;padding:0 18px 0 14px;border-radius:var(--r-pill);background:linear-gradient(180deg,#2d735c,#173f35);color:#fff;font-size:14px;font-weight:650;letter-spacing:-.01em;box-shadow:inset 0 1px 0 rgb(255 255 255/.2),0 10px 28px rgb(15 45 39/.3),0 1px 3px rgb(0 0 0/.2);transform-origin:bottom right;animation:assistant-launcher-in var(--d-settle,420ms) var(--ease-spring,ease-out);transition:transform var(--d-fast,160ms) var(--ease-out),box-shadow var(--d-fast,160ms) var(--ease-out)}
.assistant-launcher:hover{transform:translateY(-1px);box-shadow:inset 0 1px 0 rgb(255 255 255/.2),0 14px 32px rgb(15 45 39/.34),0 1px 3px rgb(0 0 0/.2)}
.assistant-launcher:active{transform:scale(.97)}
.assistant-launcher:focus-visible{outline:none;box-shadow:0 0 0 3px var(--canvas),0 0 0 6px var(--focus-ring),0 10px 28px rgb(15 45 39/.3)}
.assistant-launcher>svg{flex:none}
@keyframes assistant-launcher-in{from{opacity:0;transform:translateY(8px) scale(.9)}}
@media(max-width:760px){
.assistant-launcher{right:calc(14px + env(safe-area-inset-right));bottom:calc(14px + env(safe-area-inset-bottom));width:52px;height:52px;padding:0;justify-content:center}
.assistant-launcher>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.assistant-drawer{inset:calc(8px + env(safe-area-inset-top)) calc(8px + env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) calc(8px + env(safe-area-inset-left))}
.toast{bottom:calc(78px + env(safe-area-inset-bottom))}
}
@media(prefers-reduced-motion:reduce){.assistant-launcher{animation:none;transition:none}}
