/* v2.106 — MSD brand re-skin. Per MSD Brand & Identity Guidelines V3.2 the
   primary typeface is Invention (sans-only; Arial is the official fallback).
   Invention web fonts are now SELF-HOSTED (licensed copy provided) under
   /fonts/invention — CSP font-src 'self' covers them. The old Google Fonts
   imports (Cormorant Garamond + Jost + DM Sans + JetBrains Mono) are dropped. */
@font-face{font-family:'Invention';font-weight:300;font-style:normal;font-display:swap;
  src:url('/fonts/invention/Invention_W_Lt.woff2') format('woff2'),url('/fonts/invention/Invention_W_Lt.woff') format('woff');}
@font-face{font-family:'Invention';font-weight:300;font-style:italic;font-display:swap;
  src:url('/fonts/invention/Invention_W_LtIt.woff2') format('woff2'),url('/fonts/invention/Invention_W_LtIt.woff') format('woff');}
@font-face{font-family:'Invention';font-weight:400;font-style:normal;font-display:swap;
  src:url('/fonts/invention/Invention_W_Rg.woff2') format('woff2'),url('/fonts/invention/Invention_W_Rg.woff') format('woff');}
@font-face{font-family:'Invention';font-weight:400;font-style:italic;font-display:swap;
  src:url('/fonts/invention/Invention_W_It.woff2') format('woff2'),url('/fonts/invention/Invention_W_It.woff') format('woff');}
@font-face{font-family:'Invention';font-weight:700;font-style:normal;font-display:swap;
  src:url('/fonts/invention/Invention_W_Bd.woff2') format('woff2'),url('/fonts/invention/Invention_W_Bd.woff') format('woff');}
@font-face{font-family:'Invention';font-weight:700;font-style:italic;font-display:swap;
  src:url('/fonts/invention/Invention_W_BdIt.woff2') format('woff2'),url('/fonts/invention/Invention_W_BdIt.woff') format('woff');}
:root{--navy:#042C53;--navy-deep:#021B35;--navy-mid:#0A3A6B;--blue:#378ADD;--blue-light:#5AA3E8;--teal:#1D9E75;--teal-light:#25C692;--amber:#E8A317;--red:#D94052;--green:#1D9E75;--surface:#081E36;--surface-raised:#0C2A4A;--surface-card:#102F52;--border:rgba(255,255,255,0.10);--border-strong:rgba(255,255,255,0.16);--border-light:rgba(255,255,255,0.05);--text:#E8EDF3;--text-sec:#8BA3BE;--text-muted:#5A7A98;--font:'Invention',Arial,"Helvetica Neue",Helvetica,system-ui,sans-serif;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;--sidebar-w:250px;--r:10px;--rs:6px;--rl:14px;--shadow-1:0 1px 2px rgba(0,0,0,0.18);--shadow-2:0 4px 14px rgba(0,0,0,0.32);--shadow-3:0 12px 36px rgba(0,0,0,0.45);--ring:0 0 0 2px rgba(55,138,221,0.45);--dur:.16s}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;
  /* v2.48 — mobile best-practice base.
     text-size-adjust:100% stops iOS Safari from auto-inflating body text in
     landscape (which broke layouts at ~+12%). overflow-x:hidden on html+body
     prevents a single wide child from triggering mobile zoom-out. */
  -webkit-text-size-adjust:100%;text-size-adjust:100%;overflow-x:hidden}
body{font-family:var(--font);background:var(--navy-deep);color:var(--text);
  /* 100dvh = dynamic viewport height — adjusts as iOS Safari's URL bar
     appears/disappears, vs 100vh which is locked to the LARGEST viewport
     and causes content to be cut off when the URL bar is showing.
     Fallback to 100vh for browsers without dvh support. */
  height:100vh;height:100dvh;
  overflow:hidden;overflow-x:hidden;
  font-feature-settings:"kern" 1,"liga" 1,"calt" 1}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:var(--text)}
input,textarea,select{font-family:inherit;border:none;outline:none;background:none;color:var(--text)}
a{color:var(--blue-light);text-decoration:none}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:none;box-shadow:var(--ring);border-radius:6px}
::selection{background:rgba(55,138,221,0.32);color:#fff}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.08);border-radius:5px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.18);background-clip:content-box;border:2px solid transparent}

/* ── Login ── */
.login-page{height:100vh;height:100dvh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--navy-deep) 0%,var(--navy) 100%);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--rl);padding:36px;width:380px;max-width:92vw}
.login-card h1{font-size:22px;font-weight:700;margin-bottom:4px}
.login-card .sub{color:var(--text-muted);font-size:13px;margin-bottom:24px}
.login-card .logo{color:var(--teal-light);font-size:12px;font-weight:700;letter-spacing:1px;margin-bottom:16px}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:12px;color:var(--text-sec);margin-bottom:6px;font-weight:500}
.form-group input{width:100%;padding:10px 14px;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;font-size:14px;transition:border-color var(--dur) ease,box-shadow var(--dur) ease}
.form-group input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(55,138,221,0.15)}
.form-error{color:var(--red);font-size:12.5px;margin-bottom:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 20px;border-radius:8px;font-size:13.5px;font-weight:600;letter-spacing:0.005em;transition:transform var(--dur) ease,background var(--dur) ease,border-color var(--dur) ease,box-shadow var(--dur) ease,color var(--dur) ease;will-change:transform}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--blue);color:#fff;width:100%;box-shadow:var(--shadow-1)}.btn-primary:hover{background:var(--blue-light);box-shadow:var(--shadow-2)}
.btn-sm{padding:6px 13px;font-size:12.5px;border-radius:7px}
.btn-outline{border:1px solid var(--border);color:var(--text-sec);background:rgba(255,255,255,0.015)}
.btn-outline:hover{border-color:var(--blue);color:#fff;background:rgba(55,138,221,0.08)}
.btn-danger{background:var(--red);color:#fff;box-shadow:var(--shadow-1)}.btn-danger:hover{background:#E54B5D;box-shadow:var(--shadow-2)}
.btn-teal{background:var(--teal);color:#fff;box-shadow:var(--shadow-1)}.btn-teal:hover{background:var(--teal-light);box-shadow:var(--shadow-2)}

/* ── App Shell ── */
.app{display:flex;height:100vh;height:100dvh}
.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--navy);display:flex;flex-direction:column;border-right:1px solid var(--border)}
.sb-brand{padding:18px 18px 14px}.sb-brand h1{font-size:15px;font-weight:700;color:#fff}.sb-brand .sub{font-size:11px;color:var(--text-muted);margin-top:2px}
.sb-nav{padding:6px 8px;flex:1;overflow-y:auto}
.sb-label{font-size:9.5px;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-muted);padding:14px 10px 5px;font-weight:600}
.sb-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:7px;font-size:13px;font-weight:450;color:var(--text-sec);transition:background var(--dur) ease,color var(--dur) ease;width:100%;text-align:left;margin-bottom:1px;position:relative}
.sb-item:hover{background:rgba(255,255,255,0.05);color:#fff}
.sb-item.active{background:var(--blue);color:#fff;box-shadow:var(--shadow-1)}
.sb-item.active::before{content:"";position:absolute;left:-8px;top:6px;bottom:6px;width:3px;background:var(--teal-light);border-radius:0 2px 2px 0}
.sb-item svg{width:16px;height:16px;flex-shrink:0}
.sb-item .badge{margin-left:auto;background:rgba(255,255,255,0.1);padding:1px 7px;border-radius:10px;font-size:11px}
.sb-src{display:flex;align-items:center;gap:8px;padding:5px 10px;font-size:12px;color:var(--text-muted)}
.sb-dot{width:6px;height:6px;border-radius:50%}.sb-dot.on{background:var(--teal-light)}.sb-dot.wait{background:var(--amber)}.sb-dot.off{background:var(--text-muted);opacity:.3}
.sb-history{padding:4px 8px}
.sb-hist-item{display:flex;align-items:flex-start;gap:8px;padding:6px 10px;border-radius:var(--rs);font-size:12px;color:var(--text-muted);cursor:pointer;transition:all .12s;overflow:hidden}
.sb-hist-item:hover{background:rgba(255,255,255,0.04);color:var(--text-sec)}
.sb-hist-item.active{color:var(--blue-light)}
.sb-hist-item svg{width:14px;height:14px;flex-shrink:0;opacity:.5;margin-top:2px}
.sb-hist-content{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.25}
.sb-hist-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.sb-hist-when{font-size:10.5px;opacity:.65;margin-top:1px}
.sb-user{padding:12px 14px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px}
.sb-avatar{width:30px;height:30px;border-radius:50%;background:var(--blue);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff;flex-shrink:0}
.sb-uname{font-size:12.5px;font-weight:500}.sb-urole{font-size:10.5px;color:var(--text-muted)}
.sb-logout{margin-left:auto;font-size:11px;color:var(--text-muted);cursor:pointer;padding:4px 8px;border-radius:var(--rs)}.sb-logout:hover{color:var(--red)}
.sb-version{padding:6px 14px 10px;font-size:10px;color:var(--text-muted);text-align:right;font-family:var(--mono);letter-spacing:.5px;display:flex;align-items:center;justify-content:flex-end;gap:8px}
.sb-version-num{opacity:0.35}
.sb-whatsnew{font-size:10px;color:var(--blue-light);text-decoration:none;opacity:0.6;transition:opacity var(--dur) ease,color var(--dur) ease;font-family:var(--font);letter-spacing:0;cursor:pointer}
.sb-whatsnew:hover{opacity:1;color:var(--teal-light);text-decoration:underline}

/* Release notes modal */
/* v2.94 — compact "What's new" popup (distinct from the full .rn browser) */
/* v2.99 — V2 brand theme (matches the xV / saved-groups modals), not the old dark navy. */
.wn-popup{position:fixed;inset:0;z-index:10001;display:flex;align-items:center;justify-content:center;animation:fadeUp .15s ease}
.wn-backdrop{position:absolute;inset:0;background:rgba(28,26,23,0.45);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.wn-panel{position:relative;width:min(460px,92vw);max-height:82vh;display:flex;flex-direction:column;background:var(--bg-elev);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-md);overflow:hidden;color:var(--ink)}
.wn-head{display:flex;align-items:center;gap:8px;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--bg-cream);font-family:var(--serif);font-weight:500;font-size:18px;color:var(--ink);letter-spacing:-0.005em}
.wn-spark{font-size:16px}
.wn-close{margin-left:auto;background:transparent;border:none;color:var(--ink-3);font-size:22px;line-height:1;cursor:pointer;padding:0 4px}
.wn-close:hover{color:var(--ink)}
.wn-body{padding:16px 18px;overflow-y:auto}
.wn-entry+.wn-entry{margin-top:14px;padding-top:14px;border-top:1px solid var(--line-soft)}
.wn-entry-title{font-size:13.5px;font-weight:600;color:var(--ink);margin-bottom:6px}
.wn-entry-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:5px}
.wn-entry-list li{font-size:12.5px;line-height:1.55;color:var(--ink-2)}
.wn-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px;border-top:1px solid var(--line);background:var(--bg-cream)}
.wn-seeall{font-size:12px;color:var(--teal);text-decoration:none;font-weight:500}
.wn-seeall:hover{color:var(--teal-dark);text-decoration:underline}
.rn-modal{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;animation:fadeUp .15s ease}
.rn-backdrop{position:absolute;inset:0;background:rgba(28,26,23,0.45);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.rn-panel{position:relative;width:min(720px,92vw);max-height:88vh;display:flex;flex-direction:column;background:var(--bg-elev);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-md);overflow:hidden;color:var(--ink)}
.rn-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--bg-cream)}
.rn-title{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-weight:500;font-size:18px;color:var(--ink);letter-spacing:-0.005em}
.rn-icon{width:18px;height:18px;color:var(--teal)}
.rn-close{font-size:22px;line-height:1;color:var(--ink-3);background:transparent;border:none;cursor:pointer;padding:4px 10px;border-radius:6px;transition:color var(--dur) ease,background var(--dur) ease}
.rn-close:hover{color:var(--ink);background:var(--bg-cream-2)}
.rn-toolbar{display:flex;align-items:flex-end;gap:14px;padding:12px 18px;border-bottom:1px solid var(--line);background:var(--bg-cream-2);flex-wrap:wrap}
.rn-toolbar-group{display:flex;flex-direction:column;gap:5px;min-width:0}
.rn-toolbar-group>label{font-size:10px;color:var(--ink-3);text-transform:uppercase;letter-spacing:0.06em;font-weight:600}
.rn-search-group{flex:1;min-width:180px}
.rn-select{padding:6px 10px;background:var(--bg-elev);border:1px solid var(--line);border-radius:8px;font-size:12.5px;color:var(--ink);outline:none;transition:border-color var(--dur) ease,box-shadow var(--dur) ease;height:32px;font-family:var(--sans)}
.rn-select:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(45,110,101,0.15)}
.rn-body{flex:1;overflow-y:auto;padding:14px 18px;background:var(--bg-elev)}
.rn-entry{padding:14px 0;border-bottom:1px solid var(--line-soft)}
.rn-entry:last-child{border-bottom:none}
.rn-entry-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.rn-entry-meta{display:flex;align-items:baseline;gap:10px}
.rn-version{font-size:14px;font-weight:700;color:var(--ink);font-family:var(--mono);letter-spacing:0.01em}
.rn-date{font-size:11.5px;color:var(--ink-3)}
.rn-cats{display:flex;gap:5px;flex-wrap:wrap}
.rn-cat{font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;background:rgba(45,110,101,0.12);color:var(--teal-dark);letter-spacing:0.02em}
.rn-entry-title{font-size:13.5px;font-weight:600;color:var(--teal-dark);margin-bottom:8px;letter-spacing:-0.005em}
.rn-entry-list{list-style:none;display:flex;flex-direction:column;gap:6px;padding:0;margin:0}
.rn-entry-list li{font-size:12.5px;color:var(--ink-2);line-height:1.55;padding-left:14px;position:relative}
.rn-entry-list li::before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;border-radius:50%;background:var(--teal)}

/* ── Main ── */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.topbar{height:48px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 20px;flex-shrink:0;backdrop-filter:saturate(140%) blur(6px);-webkit-backdrop-filter:saturate(140%) blur(6px)}
.topbar-title{font-size:13.5px;font-weight:600;letter-spacing:-0.005em}
.topbar-stats{font-size:12px;color:var(--text-muted)}.topbar-stats b{color:var(--text);font-weight:600}
.topbar-right{display:flex;align-items:center;gap:12px}

/* ── Chat Area ── */
.chat-area{flex:1;overflow-y:auto;padding:20px 20px 14px;display:flex;flex-direction:column}
.chat-messages{flex:1;width:100%;max-width:min(1200px,94vw);margin:0 auto;display:flex;flex-direction:column;gap:18px}
.welcome{text-align:center;padding:40px 16px 20px;animation:fadeUp .4s ease}
.welcome h2{font-size:20px;font-weight:600;margin-bottom:6px}
.welcome p{font-size:13.5px;color:var(--text-sec);max-width:480px;margin:0 auto 18px;line-height:1.6}
.welcome-chips{display:flex;gap:7px;flex-wrap:wrap;justify-content:center}
.wchip{padding:7px 14px;background:var(--surface-raised);border:1px solid var(--border);border-radius:18px;font-size:12.5px;color:var(--blue-light);transition:all var(--dur) ease;cursor:pointer;display:inline-flex;align-items:center;gap:5px;box-shadow:var(--shadow-1)}
.wchip:hover{border-color:var(--blue);background:rgba(55,138,221,0.10);transform:translateY(-1px);box-shadow:var(--shadow-2)}
.wchip-template{color:var(--teal-light);border-color:rgba(29,158,117,0.32)}
.wchip-template:hover{border-color:var(--teal);background:rgba(29,158,117,0.10)}
.wchip-arrow{width:11px;height:11px;opacity:.7}
.welcome-form{margin-top:18px;max-width:560px;margin-left:auto;margin-right:auto;text-align:left;animation:fadeUp .25s ease}
.welcome-form-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.welcome-form-back{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .12s}
.welcome-form-back svg{width:14px;height:14px}
.welcome-form-back:hover{border-color:var(--blue);color:var(--blue-light)}
.welcome-form-prompt{font-size:13.5px;font-weight:600;color:var(--text)}
.welcome-form-row{display:flex;gap:8px;align-items:stretch}
.welcome-input{flex:1;padding:10px 14px;background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:13.5px;font-family:inherit;outline:none;transition:border-color .15s;line-height:1.5;resize:vertical;min-height:40px}
.welcome-input:focus{border-color:var(--blue)}
textarea.welcome-input{min-height:80px}
.welcome-form-go{flex-shrink:0;padding:0 18px;font-size:13px;font-weight:600;border-radius:10px}
.welcome-autocomplete{margin-top:6px;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;overflow:hidden;box-shadow:0 6px 18px rgba(0,0,0,0.35);max-height:240px;overflow-y:auto}
.welcome-auto-item{display:block;width:100%;padding:8px 14px;background:transparent;border:none;color:var(--text);font-size:13px;text-align:left;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.04);transition:background .12s}
.welcome-auto-item:last-child{border-bottom:none}
.welcome-auto-item:hover{background:rgba(55,138,221,0.10);color:#fff}
@media(max-width:600px){
  .welcome-form-row{flex-wrap:wrap}
  .welcome-form-go{width:100%}
}

/* Messages */
.msg{display:flex;gap:10px;animation:fadeUp .3s ease}.msg.user{justify-content:flex-end}
.msg.user .msg-content{background:var(--blue);color:#fff;border-radius:var(--rl) var(--rl) 4px var(--rl);padding:10px 16px;max-width:min(820px,80%);font-size:13.5px;line-height:1.6}
.msg.ai{align-items:flex-start}
.msg-avatar{width:32px;height:32px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}
.msg.ai .msg-avatar{background:var(--teal);color:#fff}.msg.ai .msg-body{max-width:none;flex:1;min-width:0}
.msg-text{background:var(--surface-raised);border:1px solid var(--border);border-radius:4px var(--rl) var(--rl) var(--rl);padding:16px 20px;font-size:14px;line-height:1.8;color:rgba(255,255,255,0.9)}
.msg-text p{margin:0 0 10px 0}.msg-text p:last-child{margin-bottom:0}
.msg-text strong{color:#fff;font-weight:600}
.msg-header{display:block;margin-top:14px;margin-bottom:2px;color:var(--text-sec);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.07em}
.msg-header:first-child{margin-top:0}
.msg-li{display:block;padding:3px 0 3px 2px;color:rgba(255,255,255,0.88)}

/* Alert */
.chat-alert{background:rgba(232,163,23,0.08);border:1px solid rgba(232,163,23,0.25);border-radius:var(--rs);padding:8px 12px;margin-top:8px;font-size:12.5px;color:var(--amber);display:flex;align-items:center;gap:8px}
.chat-alert-dot{width:6px;height:6px;border-radius:50%;background:var(--amber);flex-shrink:0}

/* Cards */
.chat-cards{display:flex;flex-direction:column;gap:6px;margin-top:10px}
/* Numbered cards (v2.28). When chat-cards has 5+ cards, JS adds the .chat-cards-numbered class
   and a small index badge appears in the top-left of each card. CSS counter so JS doesn't have
   to thread an index through renderCard, and so the numbering is always visually consistent
   with DOM order regardless of how the cards were generated. */
.chat-cards-numbered{counter-reset:scard-counter}
.chat-cards-numbered .scard{counter-increment:scard-counter;position:relative}
.chat-cards-numbered .scard::before{content:counter(scard-counter);position:absolute;top:-7px;left:-7px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center;font-feature-settings:"tnum";z-index:2;box-shadow:var(--shadow-1);transition:color var(--dur) ease,border-color var(--dur) ease}
.chat-cards-numbered .scard:hover::before{color:var(--blue-light);border-color:rgba(55,138,221,0.4)}
.scard{background:var(--surface-card);border:1px solid var(--border);border-radius:10px;overflow:visible;transition:border-color var(--dur) ease,box-shadow var(--dur) ease,transform var(--dur) ease;cursor:pointer;box-shadow:var(--shadow-1)}
.scard:hover{border-color:rgba(55,138,221,0.4);box-shadow:var(--shadow-2);transform:translateY(-1px)}
.scard-main{display:flex;gap:12px;align-items:flex-start;padding:12px 14px}
.scard-avatar{position:relative;width:38px;height:38px;border-radius:var(--rs);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;flex-shrink:0;overflow:hidden}
/* v2.100 — company logo overlays the initials; a capturing 'error' listener removes
   the <img> on 404 so the initials beneath show through (CSP blocks inline onerror). */
.scard-logo{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#fff;border-radius:inherit}
.scard-body{flex:1;min-width:0}
.scard-top{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:3px}
.scard-name{font-size:13.5px;font-weight:600}
.scard-actions{display:flex;gap:4px;flex-shrink:0}
.scard-action{width:24px;height:24px;border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:all .12s;position:relative}
.scard-action:hover{background:rgba(255,255,255,0.06);color:var(--blue-light)}
.scard-action::after{content:attr(title);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:#1a3a5c;color:#c8dff0;font-size:10px;font-weight:500;white-space:nowrap;padding:3px 7px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .15s;z-index:50;border:1px solid rgba(255,255,255,0.1)}
.scard-action:hover::after{opacity:1}
.scard-action svg{width:13px;height:13px}
.scard-action.saved{color:var(--amber)}
.scard-expand{color:var(--text-muted);font-size:10.5px;display:flex;align-items:center;gap:3px;transition:color .15s}
.scard:hover .scard-expand{color:var(--blue-light)}
.scard-expand svg{width:13px;height:13px;transition:transform .2s}.scard.open .scard-expand svg{transform:rotate(180deg)}
.scard-tags{display:flex;gap:4px;flex-shrink:0;flex-wrap:wrap}
.scard-tag{padding:1px 7px;border-radius:3px;font-size:10px;font-weight:600;border:1px solid}
.scard-tag.teal{background:rgba(29,158,117,0.1);color:var(--teal-light);border-color:rgba(29,158,117,0.25)}
.scard-tag.blue{background:rgba(55,138,221,0.1);color:var(--blue-light);border-color:rgba(55,138,221,0.2)}
.scard-tag.gray{background:rgba(255,255,255,0.04);color:var(--text-sec);border-color:var(--border)}
.scard-tagline{font-size:12px;color:var(--text-sec);line-height:1.5;margin-bottom:4px}
.scard-meta{display:flex;gap:12px;font-size:11.5px;color:var(--text-muted);flex-wrap:wrap}
.scard-cohort.current{color:var(--teal,#2d6e65);font-weight:600}
.scard-cohort.alumni{color:var(--text-secondary)}
.scard-cohort.applicant{color:var(--text-muted);font-style:italic}
.scard-highlight{margin-top:6px;padding:6px 10px;background:rgba(55,138,221,0.05);border-left:2px solid var(--blue);border-radius:0 var(--rs) var(--rs) 0;font-size:12px;color:var(--text-sec);line-height:1.5}
/* v2.81 — Merck engagement on cards */
.scard-merck{display:flex;align-items:center;gap:6px;margin-top:6px;flex-wrap:wrap}
.scard-merck-label{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:600}
.scard-merck-val{display:inline-block;padding:2px 8px;border-radius:9px;font-size:11px;font-weight:600}
.scard-merck-val.me-active{background:rgba(29,158,117,0.14);color:#1D9E75}
.scard-merck-val.me-interest{background:rgba(55,138,221,0.12);color:#2C6FB3}
.scard-merck-val.me-unclear{background:var(--surface-raised);color:var(--text-muted);border:1px solid var(--border)}
.scard-merck-val.me-muted{background:var(--surface-raised);color:var(--text-muted);font-style:italic}
/* v2.93 — structured Merck Engagement (detail view): type row + people chips + collapsible raw text */
.merck-eng{display:flex;flex-direction:column;gap:8px}
.merck-eng-row{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}
.merck-eng-sublabel{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:600;min-width:96px;padding-top:3px}
.merck-person-chips{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:0}
.merck-person-chip{display:inline-block;padding:2px 9px;border-radius:11px;font-size:11.5px;font-weight:500;background:rgba(55,138,221,0.10);color:#2C6FB3;border:1px solid rgba(55,138,221,0.18)}
.merck-eng-details{margin-top:2px}
.merck-eng-details>summary{font-size:11px;color:var(--text-muted);cursor:pointer;list-style:none;user-select:none}
.merck-eng-details>summary::-webkit-details-marker{display:none}
.merck-eng-details>summary::before{content:'▸ ';color:var(--text-muted)}
.merck-eng-details[open]>summary::before{content:'▾ '}
/* v3.12 — AI-cleaned Merck engagement: well-written summary + key-fact chips.
   Used in the card detail and the dashboard modal (.dashv2 inherits these). */
.merck-clean{margin:2px 0 4px}
.merck-clean-summary{font-size:13px;line-height:1.55;color:var(--text);margin-bottom:8px}
.merck-facts{display:flex;flex-wrap:wrap;gap:6px}
.merck-fact{display:inline-flex;flex-direction:column;gap:1px;padding:5px 10px;border-radius:8px;background:var(--teal-light);border:1px solid rgba(0,133,124,0.15)}
.merck-fact-label{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--teal)}
.merck-fact-val{font-size:12px;font-weight:600;color:var(--ink,#1c1a17)}
/* v3.13 — full original note rendered inline (no clicking) + loading state */
.merck-clean-loading{font-size:12px;color:var(--ink-3);font-style:italic;padding:4px 0}
.merck-orig-note{font-size:12.5px;line-height:1.55;color:var(--ink-2);background:var(--bg-cream-2);border:1px solid var(--line-soft);border-radius:8px;padding:11px 13px;margin-top:8px;white-space:pre-wrap}
.merck-eng-details>summary:hover{color:var(--text-sec)}
/* v2.95 — AI-synthesized profile review block (local companies) */
.ai-prof{background:rgba(232,163,23,0.06);border:1px solid rgba(232,163,23,0.28);border-radius:10px;padding:12px 14px}
/* v2.100 — applied state: calmer teal, no longer the amber "needs review" look. */
.ai-prof.ai-prof-applied{background:rgba(45,110,101,0.05);border-color:rgba(45,110,101,0.22)}
.ai-prof-badge-applied{color:var(--teal-dark)!important;background:rgba(45,110,101,0.12)!important}
.ai-prof-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.ai-prof-badge{font-size:11px;font-weight:600;color:#B47E12;background:rgba(232,163,23,0.16);padding:3px 9px;border-radius:10px}
.ai-prof-actions{display:flex;gap:6px;flex-wrap:wrap}
.ai-prof-row{display:flex;gap:10px;padding:4px 0;align-items:flex-start}
.ai-prof-k{flex:0 0 92px;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600;padding-top:2px}
.ai-prof-v{flex:1;min-width:0;font-size:12.5px;line-height:1.5;color:var(--text-sec)}
.ai-prof-tags{display:flex;gap:5px;flex-wrap:wrap}
.ai-prof-tag{display:inline-block;padding:1px 8px;border-radius:9px;font-size:11px;background:rgba(232,163,23,0.12);color:#B47E12}
.ai-prof-note{font-size:11px;color:var(--text-muted);margin-top:8px;line-height:1.45;font-style:italic}
.ai-prof-empty{display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.scard-score{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:10px;font-weight:700;flex-shrink:0;margin-left:4px}
.scard-score.high{background:rgba(29,158,117,0.15);color:#25C692;border:1px solid rgba(29,158,117,0.3)}
.scard-score.mid{background:rgba(232,163,23,0.12);color:#E8A317;border:1px solid rgba(232,163,23,0.25)}
.scard-score.low{background:rgba(255,255,255,0.06);color:var(--text-sec);border:1px solid var(--border)}

/* Detail panel */
.scard-detail{display:none;border-top:1px solid var(--border);max-height:0;overflow:hidden;transition:max-height .3s,padding .3s}.scard.open .scard-detail{display:block;max-height:2000px;padding:14px}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px}
.detail-section.full{grid-column:1/-1}
.detail-label{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600;margin-bottom:3px}
.detail-value{font-size:12.5px;line-height:1.6;color:var(--text-sec)}
.detail-divider{grid-column:1/-1;height:1px;background:var(--border);margin:3px 0}
/* v3.15 — editable custom fields on a card detail (freq:fee1ed0e) */
.cf-block{grid-column:1/-1}
.cf-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.cf-rows{display:flex;flex-direction:column;gap:6px}
.cf-row-view{display:flex;gap:10px;align-items:baseline}
.cf-row-view .cf-k{flex:0 0 38%;font-size:12px;font-weight:600;color:var(--text-muted)}
.cf-row-view .cf-v{font-size:12.5px;color:var(--text-sec);line-height:1.5;word-break:break-word}
.cf-empty{font-size:12px;color:var(--text-muted);font-style:italic}
.cf-edit-rows{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}
.cf-edit-row{display:flex;gap:6px;align-items:center}
.cf-edit-row input{flex:1;min-width:0;padding:7px 9px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--bg);color:var(--text);font-family:inherit}
.cf-edit-row input.cf-label{flex:0 0 38%}
.cf-edit-row input:focus{outline:none;border-color:var(--accent,#2d6e65)}
.cf-remove{flex:0 0 auto;width:28px;height:28px;border:1px solid var(--border);background:var(--bg);color:var(--text-sec);border-radius:6px;font-size:15px;line-height:1;cursor:pointer}
.cf-remove:hover{border-color:#d33;color:#d33}
.cf-edit-actions{display:flex;align-items:center;gap:8px}
.cf-edit-spacer{flex:1}
.cf-edit-status{font-size:11.5px;color:var(--text-muted)}
.detail-text-block{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--rs);padding:8px 10px;font-size:12px;line-height:1.65;color:var(--text-sec);max-height:100px;overflow-y:auto}
.detail-contact{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border-light);border-radius:var(--rs);padding:8px 12px}
.detail-contact-avatar{width:32px;height:32px;border-radius:50%;background:var(--navy-mid);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--blue-light);flex-shrink:0}
.dc-name{font-weight:600;color:var(--text);font-size:12.5px}.dc-title{font-size:11.5px;color:var(--text-muted)}.dc-email{font-size:11.5px;color:var(--blue-light)}
.detail-links{display:flex;gap:6px;flex-wrap:wrap;margin-top:3px}
.detail-link{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--rs);font-size:11.5px;color:var(--blue-light);transition:all .15s}
.detail-link:hover{border-color:var(--blue)}.detail-link svg{width:12px;height:12px}

/* Follow-up */
.follow-up{margin-top:8px}.follow-btn{padding:6px 12px;background:var(--surface-card);border:1px solid var(--border);border-radius:18px;font-size:12px;color:var(--blue-light);transition:all .15s}.follow-btn:hover{border-color:var(--blue);background:rgba(55,138,221,0.08)}

/* Identity-scrub ⓘ icon — sits inline at the end of .msg-timing. Clicking opens .scrub-pop.
   Subtle by design — the user shouldn't have to notice it unless they're curious why a sentence
   reads slightly differently than expected. (v2.25) */
.msg-timing .scrub-info{margin-left:8px;background:transparent;border:none;color:var(--text-muted);font-size:13px;line-height:1;cursor:pointer;padding:0 2px;border-radius:50%;transition:color .15s,background .15s}
.msg-timing .scrub-info:hover{color:var(--amber);background:rgba(232,163,23,0.1)}
.scrub-pop{position:fixed;z-index:10000;max-width:min(380px,90vw);background:var(--surface-card);border:1px solid var(--border);border-radius:var(--rs);box-shadow:var(--shadow-3,0 8px 28px rgba(0,0,0,0.4));padding:10px 12px;font-size:12.5px;line-height:1.5;animation:scrubPopIn .12s ease-out}
@keyframes scrubPopIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.scrub-pop .scrub-head{font-weight:600;color:var(--amber);margin-bottom:6px;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em}
.scrub-pop .scrub-list{list-style:none;margin:0 0 6px;padding:0}
.scrub-pop .scrub-list li{display:flex;align-items:center;gap:6px;padding:2px 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px}
.scrub-pop .scrub-orig{color:var(--text-muted);text-decoration:line-through}
.scrub-pop .scrub-arrow{color:var(--text-muted);opacity:.6}
.scrub-pop .scrub-repl{color:var(--teal-light);font-weight:600}
.scrub-pop .scrub-removed{color:var(--amber);font-style:italic}
.scrub-pop .scrub-empty{color:var(--text-muted);font-style:italic;font-size:11.5px}
.scrub-pop .scrub-foot{margin-top:6px;color:var(--text-muted);font-size:11px;font-style:italic}

/* Fact-check banner — appears when post-generation numeric validator caught the AI claiming
   a number that disagrees with the structured Airtable record (v2.21). Amber, leans on the
   same tone as the large-result warning so it reads as "advisory" rather than "broken". */
/* v2.40 — Fact-check chip + popover. The loud yellow banner was downgraded
   to a small ⚠ icon at the end of the timing row (mirroring the scrub ⓘ).
   The full banner CSS is retired; only the icon and popover styles remain. */
.msg-timing .fc-info{margin-left:6px;background:transparent;border:none;color:var(--amber);font-size:13px;line-height:1;cursor:pointer;padding:0 2px;border-radius:50%;transition:color .15s,background .15s;opacity:.72}
.msg-timing .fc-info:hover{opacity:1;background:rgba(232,163,23,0.14)}
.fc-pop{position:fixed;z-index:10000;max-width:min(440px,90vw);background:var(--surface-card);border:1px solid var(--border);border-radius:var(--rs);box-shadow:var(--shadow-3,0 8px 28px rgba(0,0,0,0.4));padding:10px 12px;font-size:12.5px;line-height:1.5;animation:scrubPopIn .12s ease-out}
.fc-pop .fc-pop-head{font-weight:600;color:var(--amber);margin-bottom:6px;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em}
.fc-pop .fc-pop-list{list-style:none;margin:0 0 6px;padding:0}
.fc-pop .fc-pop-list li{padding:3px 0;font-size:12px}
.fc-pop .fc-pop-list li b{color:var(--text);font-weight:600}
.fc-pop .fc-claimed{color:var(--text-muted);text-decoration:line-through;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;margin:0 2px}
.fc-pop .fc-arrow{color:var(--text-muted);opacity:.6;margin:0 4px}
.fc-pop .fc-canon{color:var(--teal-light);font-weight:600;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px}
.fc-pop .fc-pop-foot{margin-top:6px;color:var(--text-muted);font-size:11px;font-style:italic}

/* v2.44 — Cards-pruned ⓘ. Server stopped inlining the "_Note: model returned
   N startup card(s)…_" sentence in the message body. Surface as a small icon
   in the timing row with a native hover-tooltip; click-popover for mobile. */
.msg-timing .cards-pruned-info{margin-left:6px;background:transparent;border:none;color:var(--text-muted);font-size:13px;line-height:1;cursor:help;padding:0 2px;border-radius:50%;transition:color .15s,background .15s;opacity:.65}
.msg-timing .cards-pruned-info:hover{color:var(--text);opacity:1;background:rgba(255,255,255,0.06)}
.cp-pop{position:fixed;z-index:10000;max-width:min(380px,90vw);background:var(--surface-card);border:1px solid var(--border);border-radius:var(--rs);box-shadow:var(--shadow-3,0 8px 28px rgba(0,0,0,0.4));padding:10px 12px;font-size:12.5px;line-height:1.5;animation:scrubPopIn .12s ease-out}
.cp-pop .cp-pop-head{font-weight:600;color:var(--text-muted);margin-bottom:6px;font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.cp-pop .cp-pop-body{color:var(--text-sec);font-size:12px;line-height:1.55}

/* Large-result warning */
.lrw-box{margin-top:10px;padding:10px 12px;background:rgba(232,163,23,0.06);border:1px solid rgba(232,163,23,0.28);border-radius:var(--rs)}
.lrw-head{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--amber);font-weight:600;margin-bottom:6px}
.lrw-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.lrw-chip{padding:5px 11px;background:var(--surface-card);border:1px solid var(--border);border-radius:16px;font-size:12px;color:var(--text);transition:all .15s;cursor:pointer}
.lrw-chip:hover{border-color:var(--teal);background:rgba(0,140,140,0.08);color:var(--teal-light)}
.lrw-actions{display:flex;justify-content:flex-end}
.lrw-show-all{padding:6px 12px;background:transparent;border:1px solid var(--border);border-radius:16px;font-size:12px;color:var(--text-muted);cursor:pointer;transition:all .15s}
.lrw-show-all:hover{border-color:var(--amber);color:var(--amber)}

/* Typing */
.typing{display:flex;gap:10px;align-items:flex-start;animation:fadeUp .3s ease}.typing .msg-avatar{background:var(--teal);color:#fff}
.typing-dots{background:var(--surface-raised);border:1px solid var(--border);border-radius:4px var(--rl) var(--rl) var(--rl);padding:12px 18px;display:flex;gap:4px}
.typing-dots span{width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:bounce 1.2s infinite}.typing-dots span:nth-child(2){animation-delay:.15s}.typing-dots span:nth-child(3){animation-delay:.3s}

/* Input bar */
.input-bar{padding:10px 20px 14px;border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}
.input-box{width:100%;max-width:min(1200px,94vw);margin:0 auto;display:flex;align-items:center;background:var(--surface-raised);border:1px solid var(--border);border-radius:14px;overflow:hidden;transition:border-color var(--dur) ease,box-shadow var(--dur) ease;box-shadow:var(--shadow-1)}
.input-box:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px rgba(55,138,221,0.18),var(--shadow-1)}
.input-box input{flex:1;padding:11px 16px;font-size:14px}.input-box input::placeholder{color:var(--text-muted)}
.send-btn{background:var(--blue);color:#fff;margin:4px;padding:8px 16px;border-radius:var(--r);font-size:13px;font-weight:600;display:flex;align-items:center;gap:5px;transition:background .15s;white-space:nowrap;flex-shrink:0}
.send-btn:hover{background:var(--blue-light)}.send-btn:disabled{opacity:.3;pointer-events:none}.send-btn svg{width:15px;height:15px}
.stop-btn{background:var(--red);color:#fff;margin:4px;padding:8px 16px;border-radius:var(--r);font-size:13px;font-weight:600;display:flex;align-items:center;gap:5px;white-space:nowrap;flex-shrink:0;transition:opacity .15s}.stop-btn:hover{opacity:.8}.stop-btn svg{width:13px;height:13px}
.attach-btn{background:transparent;border:none;padding:0 6px 0 12px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;flex-shrink:0;align-self:stretch;transition:color .15s}
.attach-btn:hover{color:var(--blue)}
.attach-btn svg{width:18px;height:18px;transform:rotate(-45deg)}
.attach-chip{max-width:min(1200px,94vw);margin:0 auto 8px;display:flex;align-items:center;gap:8px;padding:6px 6px 6px 12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r);font-size:12px;color:var(--text-secondary);width:fit-content}
.attach-chip-icon{display:flex;color:var(--blue)}
.attach-chip-icon svg{width:14px;height:14px;transform:rotate(-45deg)}
.attach-chip-name{font-weight:600;color:var(--text-primary);max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.attach-chip-meta{color:var(--text-muted);font-size:11px;letter-spacing:.02em}
.attach-chip-remove{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:2px 8px;font-size:16px;line-height:1;border-radius:var(--r);margin-left:4px}
.attach-chip-remove:hover{background:var(--surface);color:var(--red)}
.attach-chip.uploading{opacity:.65}
.attach-chip.uploading .attach-chip-icon{animation:attach-pulse 1.2s ease-in-out infinite}
.attach-chip.truncated .attach-chip-meta{color:#d97706}
@keyframes attach-pulse{0%,100%{opacity:.4}50%{opacity:1}}

/* ── Content views (history, saved, admin, analytics) ── */
.view{flex:1;overflow-y:auto;padding:24px;display:none}.view.active{display:block}
.view-inner{max-width:min(1200px,94vw);margin:0 auto}
.view-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:12px;flex-wrap:wrap}
.view-header h2{font-size:20px;font-weight:600;letter-spacing:-0.012em;color:#fff}
.view-empty{text-align:center;padding:48px 24px;color:var(--text-muted);font-size:13.5px;background:var(--surface-raised);border:1px dashed var(--border);border-radius:10px}

/* History list */
.hist-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r);padding:12px 16px;margin-bottom:8px;cursor:pointer;transition:border-color .15s;display:flex;align-items:center;justify-content:space-between}
.hist-card:hover{border-color:rgba(55,138,221,0.3)}
.hist-title{font-size:13.5px;font-weight:500;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:12px}
.hist-date{font-size:11.5px;color:var(--text-muted);flex-shrink:0;margin-right:8px}
.hist-delete{color:var(--text-muted);padding:4px;border-radius:4px;flex-shrink:0}.hist-delete:hover{color:var(--red);background:rgba(217,64,82,0.1)}
.hist-delete svg{width:14px;height:14px}

/* Saved list */
.saved-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r);padding:12px 16px;margin-bottom:8px;display:flex;flex-direction:column;gap:0}
.saved-header{display:flex;align-items:center;gap:12px}
.saved-card .saved-info{flex:1;min-width:0}
.saved-card .saved-name{font-size:13.5px;font-weight:600}
.saved-name-link{cursor:pointer;color:var(--blue-light);transition:color .15s}.saved-name-link:hover{color:var(--teal-light);text-decoration:underline}
.saved-card .saved-meta{font-size:11.5px;color:var(--text-muted)}
.saved-actions{display:flex;gap:6px;flex-shrink:0}
.saved-detail-panel{display:none;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}

/* v2.89 — Saved Groups: tab pills + list + expandable rows + new-group modal. */
.sgrp-tabs{display:inline-flex;gap:4px;margin-left:auto;background:var(--bg-cream-2);padding:3px;border-radius:8px;border:1px solid var(--line)}
/* v2.91 (B3) — pill padding bumped from 5px/12px to 8px/14px so the hit area
   clears 36px tall, closer to WCAG 2.5.5 touch-target guidance. */
.sgrp-pill{background:transparent;border:none;padding:8px 14px;font-size:12px;font-weight:600;color:var(--ink-3);cursor:pointer;border-radius:6px;font-family:var(--sans);transition:color .15s,background .15s;min-height:36px}
.sgrp-pill:hover{color:var(--ink-2)}
.sgrp-pill.active{background:var(--bg-elev);color:var(--ink);box-shadow:var(--shadow-sm)}
.sgrp-pill:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.sgrp-toolbar{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.sgrp-toolbar-hint{font-size:12px;color:var(--ink-3)}
.sgrp-section{margin-bottom:20px}
.sgrp-section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin:0 0 8px 0;font-family:var(--sans)}
.sgrp-section-count{display:inline-block;margin-left:6px;background:var(--bg-cream-2);color:var(--ink-2);padding:1px 7px;border-radius:9px;font-size:10px;font-weight:600;letter-spacing:0;text-transform:none}
.sgrp-empty{font-size:12px;color:var(--ink-3);padding:8px 0;font-style:italic}
.sgrp-list{display:flex;flex-direction:column;gap:8px}
.sgrp-row{background:var(--bg-elev);border:1px solid var(--line);border-radius:8px;overflow:hidden;transition:border-color .15s}
.sgrp-row:hover{border-color:var(--line-soft)}
.sgrp-row-head{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;cursor:pointer}
.sgrp-row-head:focus-visible{outline:2px solid var(--teal);outline-offset:-2px;border-radius:8px}
.sgrp-row-main{flex:1;min-width:0}
.sgrp-row-name{font-size:14px;font-weight:600;color:var(--ink);font-family:var(--serif);letter-spacing:-0.005em}
.sgrp-row-sub{font-size:11.5px;color:var(--ink-3);margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sgrp-row-desc{font-size:12px;color:var(--ink-2);margin-top:6px;line-height:1.45}
.sgrp-share-icon,.sgrp-private-icon{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;padding:1px 7px;border-radius:9px;background:var(--bg-cream-2);color:var(--ink-2);font-weight:500}
.sgrp-share-icon{background:rgba(45,110,101,0.10);color:var(--teal-dark)}
.sgrp-owner{font-size:10.5px;color:var(--ink-3);font-style:italic}
.sgrp-row-actions{display:flex;gap:4px;flex-shrink:0}
.sgrp-row-actions button{background:transparent;border:1px solid transparent;padding:4px 8px;font-size:13px;cursor:pointer;border-radius:5px;color:var(--ink-3);font-family:var(--sans);transition:color .15s,border-color .15s,background .15s}
.sgrp-row-actions button:hover{color:var(--ink);border-color:var(--line);background:var(--bg-cream-2)}
.sgrp-row-actions .sgrp-delete-btn:hover{color:var(--rose);border-color:var(--rose)}
.sgrp-row-body{padding:0 14px 14px 14px;border-top:1px solid var(--line-soft);background:var(--bg-cream)}
.sgrp-row-loading,.sgrp-row-error,.sgrp-empty-members{font-size:12px;color:var(--ink-3);padding:10px 0;font-style:italic}
.sgrp-row-error{color:var(--rose);font-style:normal}
.sgrp-add-row{display:flex;align-items:center;gap:8px;padding:10px 0;flex-wrap:wrap}
.sgrp-add-label{font-size:11.5px;color:var(--ink-2);font-weight:500}
.sgrp-add-select{flex:1;min-width:180px;padding:5px 8px;font-size:12px;border:1px solid var(--line);border-radius:6px;background:var(--bg-elev);color:var(--ink);font-family:var(--sans)}
.sgrp-add-hint{font-size:11.5px;color:var(--ink-3);padding:8px 0;font-style:italic}
.sgrp-members{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.sgrp-member{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg-elev);border:1px solid var(--line);border-radius:6px}
.sgrp-member-name{flex:1;font-size:13px;color:var(--ink);font-weight:500}
.sgrp-member-meta{font-size:10.5px;color:var(--ink-3)}
.sgrp-member-remove{flex-shrink:0}

/* New / edit group modal */
.sgrp-modal-wrap{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center}
.sgrp-modal-backdrop{position:absolute;inset:0;background:rgba(28,26,23,0.45);backdrop-filter:blur(2px)}
.sgrp-modal{position:relative;background:var(--bg-elev);border:1px solid var(--line);border-radius:12px;width:min(440px,92vw);max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-md);overflow:hidden;color:var(--ink)}
.sgrp-modal-head{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--bg-cream)}
.sgrp-modal-title{flex:1;font-family:var(--serif);font-weight:500;font-size:17px;color:var(--ink);letter-spacing:-0.005em}
.sgrp-modal-close{background:transparent;border:none;color:var(--ink-3);font-size:22px;cursor:pointer;padding:0 6px;line-height:1}
.sgrp-modal-close:hover{color:var(--ink)}
.sgrp-modal-body{padding:16px 18px;display:flex;flex-direction:column;gap:8px}
.sgrp-modal-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin-top:6px}
.sgrp-modal-name,.sgrp-modal-desc{padding:8px 10px;font-size:13px;border:1px solid var(--line);border-radius:6px;background:var(--bg-elev);color:var(--ink);font-family:var(--sans);width:100%;box-sizing:border-box}
.sgrp-modal-name:focus,.sgrp-modal-desc:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px rgba(45,110,101,0.18)}
.sgrp-modal-desc{resize:vertical;min-height:54px;font-family:var(--sans);line-height:1.5}
.sgrp-modal-shared{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink);margin-top:8px;cursor:pointer}
.sgrp-modal-shared input{accent-color:var(--teal)}
.sgrp-modal-shared-hint{font-size:11.5px;color:var(--ink-3);line-height:1.5}
.sgrp-modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line);background:var(--bg-cream)}

/* Compare */
.compare-badge{font-size:11px;color:var(--teal-light);margin-left:2px}
.compare-field-label{color:var(--text-muted);font-weight:600;white-space:nowrap}
.compare-table{width:100%;border-collapse:collapse;margin-top:12px}
.compare-table th{text-align:left;padding:8px 12px;font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600;border-bottom:1px solid var(--border);background:var(--surface)}
.compare-table td{padding:8px 12px;font-size:12.5px;color:var(--text-sec);border-bottom:1px solid var(--border-light);vertical-align:top}
.compare-table tr:hover td{background:rgba(55,138,221,0.02)}
.compare-actions{display:flex;gap:8px;margin-top:16px}

/* Compare v2 — toolbar / field picker / cells */
.cmp-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px;padding:10px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r)}
.cmp-toolbar .cmp-sort{padding:6px 10px;font-size:12px;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px}
.cmp-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-sec);cursor:pointer;user-select:none}
.cmp-toggle input{margin:0}
.cmp-field-picker{margin:0 0 12px;padding:12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-2)}
.cmp-fp-head{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.cmp-fp-head input{flex:1;padding:7px 10px;font-size:12.5px;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px}
.cmp-fp-close{background:transparent;border:none;color:var(--text-muted);font-size:20px;line-height:1;cursor:pointer;padding:4px 8px}
.cmp-fp-close:hover{color:var(--text)}
.cmp-fp-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px;padding-bottom:8px;border-bottom:1px dashed var(--border)}
.cmp-fp-hint{font-size:11px;color:var(--text-muted);margin-left:auto}
.cmp-fp-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;max-height:280px;overflow-y:auto}
.cmp-fp-item{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border-radius:6px;background:var(--bg);border:1px solid var(--border-light)}
.cmp-fp-item:hover{background:var(--surface)}
.cmp-fp-item label{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-sec);cursor:pointer;flex:1;min-width:0}
.cmp-fp-item label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmp-fp-item label input{margin:0}
.cmp-fp-reorder{display:flex;gap:2px}
.cmp-fp-reorder button{background:transparent;border:1px solid var(--border);color:var(--text-muted);width:22px;height:22px;border-radius:4px;cursor:pointer;font-size:11px;line-height:1;padding:0}
.cmp-fp-reorder button:hover:not(:disabled){background:var(--surface);color:var(--text)}
.cmp-fp-reorder button:disabled{opacity:.3;cursor:not-allowed}
.cmp-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r)}
.cmp-startup-head{position:relative;padding-right:28px !important;text-transform:none !important;font-size:12.5px !important;letter-spacing:0 !important;color:var(--text) !important}
.cmp-startup-name{white-space:normal;font-weight:600}
.cmp-remove-startup{position:absolute;top:4px;right:4px;background:transparent;border:none;color:var(--text-muted);width:20px;height:20px;border-radius:4px;cursor:pointer;font-size:16px;line-height:1;padding:0}
.cmp-remove-startup:hover{background:#3a1f1f;color:#ff6b6b}
.cmp-startup-row-head{display:flex;align-items:center;gap:6px}
.cmp-startup-row-head .cmp-remove-startup{position:static}
.cmp-row-diff td.cmp-cell{background:rgba(232,163,23,0.07)}
.cmp-row-diff .compare-field-label{color:#E8A317}
.cmp-cell-diff{background:rgba(232,163,23,0.07) !important}
.cmp-cell{max-width:340px}
.cmp-cell{white-space:pre-wrap;word-break:break-word}
.cmp-empty{color:var(--text-muted);opacity:.5}
.cmp-empty-row{text-align:center;padding:20px !important;color:var(--text-muted)}
.cmp-link{color:var(--teal-light);text-decoration:none;word-break:break-all}
.cmp-link:hover{text-decoration:underline}
.cmp-acc-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:600;letter-spacing:.01em;line-height:1.4;border:1px solid transparent;white-space:nowrap}
.cmp-acc-pill svg{width:13px;height:13px;flex-shrink:0}
/* Dark theme — green for accepted, amber for not (applicants are not failures, just not in) */
.cmp-acc-yes{background:rgba(45,158,117,.18);color:#3DDC8C;border-color:rgba(61,220,140,.40)}
.cmp-acc-no{background:rgba(232,163,23,.14);color:#F0B441;border-color:rgba(232,163,23,.32)}
@media (max-width:720px){
  .cmp-toolbar{flex-direction:column;align-items:stretch}
  .cmp-toolbar > *{width:100%}
  .cmp-fp-list{grid-template-columns:1fr}
}

/* Admin */
.admin-section{margin-bottom:24px}
.admin-section h3{font-size:15px;font-weight:600;margin-bottom:12px}
.admin-table{width:100%;border-collapse:collapse}
.admin-table th{text-align:left;padding:8px 12px;font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);font-weight:600;border-bottom:1px solid var(--border);background:var(--surface)}
.admin-table td{padding:8px 12px;font-size:12.5px;color:var(--text-sec);border-bottom:1px solid var(--border-light)}
.invite-result{margin-top:12px;padding:12px;background:var(--surface-card);border:1px solid var(--teal);border-radius:var(--rs);font-size:13px}
.invite-result a{word-break:break-all}

/* Analytics */
.analytics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:20px}
.stat-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r);padding:16px}
.stat-card .stat-value{font-size:28px;font-weight:700;color:var(--text)}
.stat-card .stat-label{font-size:11.5px;color:var(--text-muted);margin-top:2px}
.chart-bar{height:6px;background:var(--blue);border-radius:3px;margin-top:4px;transition:width .3s}
.top-list{list-style:none}
.top-list li{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border-light);font-size:12.5px}
.top-list li .count{color:var(--blue-light);font-weight:600}

/* Alerts */
.alert-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r);padding:12px 16px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}
.alert-query{font-size:13.5px;font-weight:500;flex:1}.alert-freq{font-size:11.5px;color:var(--text-muted);margin:0 12px}

/* Animations */
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes bounce{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-4px)}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
.stream-cursor{display:inline-block;animation:blink 0.8s step-end infinite;margin-left:1px;color:var(--teal-light)}
.chat-area::-webkit-scrollbar,.view::-webkit-scrollbar{width:5px}.chat-area::-webkit-scrollbar-thumb,.view::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}

/* Topbar short title (mobile only) */
.topbar-short{display:none}

/* Overscroll containment */
.chat-area,.view{overscroll-behavior:contain}

/* Touch optimizations */
button,.scard,.hist-card,.wchip,.saved-name-link{-webkit-tap-highlight-color:transparent;touch-action:manipulation}

/* ── Mobile bottom nav (hidden on desktop) ── */
.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--navy);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}
.mobile-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:9px 2px 7px;font-size:9.5px;font-weight:500;letter-spacing:0.2px;color:var(--text-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border:none;background:none;font-family:var(--font);position:relative;transition:color .15s}
.mobile-nav-item.active{color:var(--blue-light)}
.mobile-nav-item svg{width:20px;height:20px}
.mobile-nav-badge{position:absolute;top:5px;right:50%;margin-right:-20px;background:var(--teal-light);color:#000;font-size:8px;font-weight:700;padding:0 4px;border-radius:8px;min-width:14px;text-align:center;line-height:14px}

/* ── Mobile ── */
/* v2.71 — Hamburger menu trigger for narrow viewports. Visible only at ≤900px (the
   same breakpoint that hides the sidebar). Toggles `.menu-open` on `.app`, which
   slides the sidebar in as a fixed-position drawer with a tap-anywhere backdrop.
   The drawer covers the full sidebar (which is otherwise unreachable at this
   width — the bottom mobile-nav only carries 7 primary items). */
.menu-btn{display:none;background:none;border:none;color:var(--text);cursor:pointer;padding:10px;margin-right:4px;-webkit-tap-highlight-color:transparent;align-items:center;justify-content:center;min-width:44px;min-height:44px}
.menu-btn svg{width:22px;height:22px;display:block}
.menu-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:399;animation:menuBackdropFadeIn .2s ease}
@keyframes menuBackdropFadeIn{from{opacity:0}to{opacity:1}}
.app.menu-open .menu-backdrop{display:block}

@media(max-width:900px){
  /* Layout */
  .sidebar{display:none}
  .mobile-nav{display:flex}
  body,.app{height:100svh}

  /* v2.71 — show hamburger trigger + transform sidebar into a slide-in drawer. */
  .menu-btn{display:inline-flex}
  .app.menu-open .sidebar{
    display:flex;position:fixed;left:0;top:0;bottom:0;width:min(86vw,320px);min-width:0;
    z-index:400;box-shadow:6px 0 24px rgba(0,0,0,0.35);overflow-y:auto;
    animation:menuDrawerIn .22s ease;
  }
  @keyframes menuDrawerIn{from{transform:translateX(-100%)}to{transform:translateX(0)}}

  /* Topbar */
  .topbar{padding:0 14px;padding-top:env(safe-area-inset-top);height:calc(52px + env(safe-area-inset-top))}
  .topbar-full{display:none}
  .topbar-short{display:inline;font-size:14px;font-weight:600}
  .topbar-stats{font-size:11px}

  /* v2.71 — touch-target floor for small inline icon buttons. The ⓘ chips and similar
     icon-only affordances were under 44×44 at mobile widths (WCAG 2.5.5). Pad them
     to expand the hit area without enlarging the visual icon. */
  .scrub-info,.fc-info,.cards-pruned-info,.msg-feedback button{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}

  /* Chat area — bottom padding = input bar (~54px) + mobile nav (56px) + gap */
  .chat-area{padding:12px 12px calc(124px + env(safe-area-inset-bottom))}
  .chat-messages{gap:12px}

  /* Views — bottom padding = mobile nav (56px) + breathing room */
  .view{padding:16px 14px calc(72px + env(safe-area-inset-bottom))}
  .view-header{flex-wrap:wrap;gap:8px;margin-bottom:14px}

  /* Welcome */
  .welcome{padding:24px 4px 16px}
  .welcome h2{font-size:17px}
  .welcome p{font-size:13px}
  .welcome-chips{flex-direction:column;gap:6px}
  .wchip{text-align:left;padding:11px 14px;border-radius:10px;font-size:13px}

  /* Messages */
  .msg{gap:8px}
  .msg.user .msg-content{max-width:88%;font-size:13.5px;padding:9px 13px}
  .msg-avatar{width:28px;height:28px;font-size:9px}
  .msg.ai .msg-body{min-width:0}
  .msg-text{padding:12px 14px;font-size:13.5px;line-height:1.75}

  /* Cards */
  .scard-main{padding:11px 12px;gap:10px}
  .scard-avatar{width:34px;height:34px;font-size:11px}
  .scard-name{font-size:13px}
  .scard-tagline{font-size:11.5px}
  .scard-meta{font-size:11px;gap:8px}
  .scard-tags{display:none}
  .scard-highlight{font-size:11.5px;padding:6px 10px}
  .scard-action{width:32px;height:32px}
  .scard-action svg{width:15px;height:15px}
  .scard-expand{font-size:10.5px}

  /* Detail panel */
  .detail-grid{grid-template-columns:1fr}

  /* Input bar — sits above mobile nav */
  .input-bar{position:fixed;bottom:calc(56px + env(safe-area-inset-bottom));left:0;right:0;z-index:100;padding:8px 12px 8px}
  .input-box{border-radius:12px}
  .input-box input{padding:10px 14px;font-size:14px}
  .send-btn{padding:8px 14px;font-size:13px;margin:3px}

  /* Tables — horizontal scroll */
  .admin-section{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .compare-table{white-space:nowrap;font-size:11.5px}
  .compare-table th,.compare-table td{padding:7px 10px}
  .compare-actions{flex-wrap:wrap;gap:6px}
  .admin-table{white-space:nowrap;font-size:11.5px}
  .admin-table th,.admin-table td{padding:7px 10px}

  /* Saved */
  .saved-header{align-items:flex-start;flex-wrap:wrap}
  .saved-actions{flex-wrap:wrap;gap:4px;margin-top:4px;width:100%}
  .saved-actions .btn{font-size:11.5px;padding:6px 10px}

  /* Alert cards */
  .alert-card{flex-wrap:wrap;gap:8px}
  .alert-freq{margin:0}

  /* Admin invite result */
  .invite-result{flex-direction:column;align-items:flex-start;gap:6px}
  .invite-result input{width:100%!important;max-width:none!important;margin:0!important}

  /* Follow-up + alerts */
  .follow-btn{font-size:12px;padding:6px 12px}
  .chat-alert{font-size:12px;padding:7px 10px}

  /* Analytics */
  .analytics-grid{grid-template-columns:1fr 1fr}
  .stat-card .stat-value{font-size:22px}

  /* Login */
  .login-card{padding:28px 20px;margin:16px}
}

/* ── Analytics View ── */
.an-toolbar-right{display:flex;align-items:center;gap:8px}
.an-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;padding:14px;margin-bottom:18px;background:var(--surface-raised);border:1px solid var(--border);border-radius:10px}
.an-filter-group{display:flex;flex-direction:column;gap:5px;min-width:0}
.an-filter-group>label{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.06em;font-weight:600}
.an-search-group{flex:1;min-width:180px}
.an-input{padding:6px 10px;background:var(--surface);border:1px solid var(--border);border-radius:8px;font-size:12.5px;color:var(--text);outline:none;transition:border-color .15s}
.an-input:focus{border-color:var(--blue)}
input.an-input,select.an-input{height:32px}
.an-chip-row{display:flex;gap:6px;flex-wrap:wrap}
.an-chip{padding:5px 12px;border-radius:18px;border:1px solid var(--border);background:transparent;color:var(--text-sec);font-size:12px;cursor:pointer;transition:all .15s}
.an-chip.active{background:var(--blue);border-color:var(--blue);color:#fff}
.an-chip:hover{border-color:var(--blue);color:var(--text)}
.an-custom-range{flex-direction:row;align-items:center;gap:8px}
.an-custom-range>label{margin-right:-2px}

.an-kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:18px}
.an-kpi{background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;padding:14px 16px;transition:transform .12s, border-color .12s}
.an-kpi:hover{border-color:var(--blue);transform:translateY(-1px)}
.an-kpi-val{font-size:24px;font-weight:700;color:#fff;line-height:1.1;font-variant-numeric:tabular-nums}
.an-kpi-lab{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.07em;margin-top:6px;font-weight:600}

.an-section{background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;padding:16px 18px;margin-bottom:14px}
.an-section h3{font-size:12px;font-weight:600;color:var(--text-sec);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:14px}
.an-cols-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.an-cols-2 .an-section{margin-bottom:0}

.an-daily{display:flex;flex-direction:column;gap:5px}
.an-day-row{display:flex;align-items:center;gap:10px}
.an-day-label{font-size:11px;color:var(--text-muted);width:62px;font-variant-numeric:tabular-nums}
.an-day-track{flex:1;height:14px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden}
.an-day-fill{height:100%;background:linear-gradient(90deg,var(--blue) 0%,var(--blue-light) 100%);border-radius:3px;transition:width .35s ease}
.an-day-val{font-size:11px;color:var(--text-sec);width:40px;text-align:right;font-variant-numeric:tabular-nums}

.an-hbar-list{display:flex;flex-direction:column;gap:7px}
.an-hbar{display:flex;align-items:center;gap:10px;font-size:12px}
.an-hbar-label{flex:0 0 130px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.an-hbar-track{flex:1;height:14px;background:rgba(255,255,255,0.04);border-radius:3px;overflow:hidden}
.an-hbar-fill{height:100%;background:var(--blue);border-radius:3px;transition:width .35s ease}
.an-hbar-val{flex:0 0 40px;text-align:right;color:var(--text-sec);font-size:11px;font-variant-numeric:tabular-nums}

.an-heatmap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.an-heatmap table{border-collapse:separate;border-spacing:3px;font-size:11px;width:100%}
.an-heatmap th{padding:4px 8px;text-align:center;color:var(--text-muted);font-weight:500;font-size:10.5px}
.an-heatmap th:first-child{text-align:right;color:var(--text)}
.an-heatmap td{padding:6px 0;text-align:center;color:#fff;font-weight:600;border-radius:3px;min-width:38px;background:rgba(255,255,255,0.02)}

.an-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.an-table{width:100%;border-collapse:collapse;font-size:12px}
.an-table thead th{padding:9px 12px;background:rgba(0,0,0,0.18);color:var(--text-muted);font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:0.05em;text-align:left;border-bottom:1px solid var(--border)}
.an-table tbody td{padding:9px 12px;border-bottom:1px solid rgba(255,255,255,0.04);color:var(--text);vertical-align:top}
.an-table tbody tr:hover td{background:rgba(55,138,221,0.05)}
.an-cell-sub{font-size:11px;color:var(--text-muted)}
.an-cell-time{color:var(--text-muted);white-space:nowrap}
.an-cell-data{color:var(--text-sec);max-width:380px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.an-evt-tag{display:inline-block;padding:2px 8px;background:rgba(55,138,221,0.14);color:var(--blue-light);border-radius:10px;font-size:10.5px;font-weight:600;letter-spacing:0.02em;font-family:var(--mono)}
.an-list-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;margin-right:10px}
.an-pagination{display:flex;align-items:center;gap:12px;justify-content:center;margin-top:14px}
.an-page-label{font-size:12px;color:var(--text-sec)}

@media(max-width:1100px){.an-kpi-row{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.an-kpi-row{grid-template-columns:repeat(2,1fr)}.an-cols-2{grid-template-columns:1fr}.an-search-group{flex-basis:100%}}

/* ── Map View ── */
.map-toolbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.map-search{padding:6px 12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;font-size:12.5px;color:var(--text);min-width:200px;outline:none;transition:border-color .15s}
.map-search:focus{border-color:var(--blue)}
.map-select{padding:6px 10px;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;font-size:12px;color:var(--text);outline:none;cursor:pointer}
.map-mode-toggle{display:inline-flex;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.map-mode-btn{padding:6px 12px;background:transparent;border:none;color:var(--text-sec);font-size:12px;cursor:pointer;transition:all .15s}
.map-mode-btn.active{background:var(--blue);color:#fff}
.map-filter-row{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin:0 0 14px;padding:12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:10px}
.map-filter-group{display:flex;flex-direction:column;gap:4px;min-width:0}
.map-filter-group>label{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.06em;font-weight:600}
.map-chip-row{display:flex;gap:6px;flex-wrap:wrap}
.map-filter-btn{padding:4px 12px;border-radius:18px;border:1px solid var(--border);background:transparent;color:var(--text-sec);font-size:12px;cursor:pointer;transition:all .15s;line-height:1.4}
.map-filter-btn.active{background:var(--blue);border-color:var(--blue);color:#fff}
.map-filter-btn:hover{border-color:var(--blue);color:var(--text)}
.map-clear-btn{margin-left:auto;align-self:flex-end;padding:6px 14px;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text-muted);font-size:12px;cursor:pointer;transition:all .15s}
.map-clear-btn:hover{border-color:var(--red);color:var(--red)}
.map-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:10px}
.map-stats{font-size:12px;color:var(--text-sec)}.map-stats b{color:var(--text);font-weight:600}
.map-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--text-muted)}
.map-legend-item{display:inline-flex;align-items:center;gap:5px}
.map-legend-item i{width:10px;height:10px;border-radius:50%;display:inline-block}
.leaflet-popup-content-wrapper{background:#0C2A4A;border:1px solid #1D3A5C;color:#E8EDF3;border-radius:8px;box-shadow:0 6px 22px rgba(0,0,0,0.5)}
.leaflet-popup-tip{background:#0C2A4A}
.leaflet-popup-content{margin:10px 14px;font-size:12px}
.map-popup{max-height:220px;overflow-y:auto;min-width:200px}
.map-popup-head{font-weight:700;margin-bottom:6px;color:var(--teal-light);font-size:11.5px;text-transform:uppercase;letter-spacing:0.05em}
.map-popup-row{border-bottom:1px solid rgba(255,255,255,0.05);padding:5px 0}
.map-popup-row:last-child{border-bottom:none}
.map-popup-row b{color:#fff;font-weight:600}
.map-popup-meta{font-size:11px;color:var(--text-muted)}
.map-popup-link{font-size:11px;color:var(--blue-light);text-decoration:none;font-weight:500}
.map-popup-link:hover{color:#fff}
.map-pop-tag{display:inline-block;font-size:10px;padding:1px 6px;border-radius:8px;margin-left:4px;font-weight:600}
.map-pop-tag-acc{background:rgba(29,158,117,0.18);color:var(--teal-light)}
.map-popup-more{font-size:11px;color:var(--text-muted);padding-top:4px;font-style:italic}

/* v2.40 — Map upgrades:
   • Active-filter chip strip above the map (visible feedback of applied filters)
   • Popup action buttons (Ask / Save / Compare) inline with each startup row
   • Group-level "Ask AI about these N startups" CTA
   • Toolbar Fit / Reset-view buttons */
.map-toolbar-right .map-fit-btn{padding:5px 10px;background:var(--surface-raised);border:1px solid var(--border);border-radius:6px;font-size:11.5px;color:var(--text-sec);cursor:pointer;transition:all .15s}
.map-toolbar-right .map-fit-btn:hover{border-color:var(--teal);color:var(--teal);background:rgba(29,158,117,0.08)}
.map-active-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;padding:8px 12px;background:rgba(29,158,117,0.08);border:1px solid rgba(29,158,117,0.20);border-radius:8px;font-size:12px}
.map-af-lead{font-size:10.5px;text-transform:uppercase;letter-spacing:0.07em;color:var(--text-muted);font-weight:600;margin-right:4px}
.map-af-chip{padding:3px 10px;background:var(--surface);border:1px solid var(--border);border-radius:14px;color:var(--text);font-size:11.5px;cursor:pointer;transition:all .12s;display:inline-flex;align-items:center;gap:4px}
.map-af-chip:hover{border-color:var(--red,#d94052);color:var(--red,#d94052)}
.map-af-chip .map-af-x{font-weight:700;opacity:.6}
.map-af-clear{margin-left:auto;background:transparent;border:none;color:var(--text-muted);font-size:11.5px;cursor:pointer;text-decoration:underline}
.map-af-clear:hover{color:var(--text)}
.map-popup-row{padding:7px 0}
.map-popup-row-head{margin-bottom:2px}
.map-popup-sector{margin-left:6px;font-size:10px;color:var(--text-muted);background:rgba(255,255,255,0.06);padding:1px 6px;border-radius:8px}
.map-popup-actions{display:flex;gap:5px;margin-top:5px}
.map-popup-btn{padding:3px 9px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.10);color:#E8EDF3;border-radius:5px;font-size:10.5px;cursor:pointer;transition:all .12s}
.map-popup-btn:hover{background:rgba(55,138,221,0.20);border-color:var(--blue-light,#5fa9eb);color:#fff}
.map-popup-btn:disabled{opacity:.55;cursor:default}
.map-popup-group-ask{display:block;margin-top:8px;width:100%;padding:6px 10px;background:rgba(29,158,117,0.18);border:1px solid rgba(29,158,117,0.40);color:var(--teal-light,#5fd0ad);border-radius:6px;font-size:11.5px;font-weight:500;cursor:pointer;text-align:center;transition:all .15s}
.map-popup-group-ask:hover{background:rgba(29,158,117,0.30);color:#fff}

/* ── Dashboard ── */
.dashboard{position:fixed;inset:0;z-index:1000;background:#021B35;display:flex;flex-direction:column;overflow:hidden}
.dash-topbar{display:flex;align-items:center;padding:12px 24px;background:#042C53;border-bottom:1px solid #1D3A5C;gap:16px;flex-shrink:0}
.dash-brand{font-size:14px;font-weight:700;color:#fff;letter-spacing:0.03em;flex:1}
.dash-time{font-size:14px;color:var(--text-sec);font-variant-numeric:tabular-nums;min-width:80px}
.dash-btn{padding:5px 14px;border-radius:6px;border:1px solid #1D3A5C;background:transparent;color:var(--text-sec);font-size:12px;cursor:pointer}
.dash-btn:hover{background:#0C2A4A;color:#fff}
.dash-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}
.dash-footer{padding:8px 24px;font-size:11px;color:var(--text-muted);border-top:1px solid #1D3A5C;flex-shrink:0}
.dash-loading{color:var(--text-muted);padding:40px;text-align:center}
.dash-grid-top{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.dash-grid-mid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.dash-grid-bot{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.dash-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;padding:20px 24px}
.dash-num{font-size:48px;font-weight:800;color:#fff;line-height:1}
.dash-label{font-size:11px;text-transform:uppercase;letter-spacing:0.07em;color:var(--text-muted);margin-top:6px}
.dash-sub{font-size:13px;color:var(--teal-light);margin-top:4px}
.dash-sparkline{display:flex;align-items:flex-end;gap:3px;height:36px;margin-top:10px}
.dash-spark-bar{width:8px;background:#378ADD;border-radius:2px 2px 0 0;min-height:4px;transition:height .3s}
.dash-panel{background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;padding:16px 20px}
.dash-panel-title{font-size:11px;text-transform:uppercase;letter-spacing:0.07em;color:var(--text-muted);margin-bottom:12px;font-weight:600}
.dash-feed{display:flex;flex-direction:column;gap:6px}
.dash-feed-item{display:flex;align-items:center;gap:8px;font-size:12px;padding:5px 0;border-bottom:1px solid rgba(255,255,255,0.04)}
.dash-feed-item:last-child{border-bottom:none}
.dash-feed-user{color:var(--blue-light);font-weight:600;min-width:80px;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-feed-query{flex:1;color:rgba(255,255,255,0.8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-feed-time{color:var(--text-muted);font-size:11px;white-space:nowrap}
.dash-feed-count{color:var(--teal-light);font-size:11px;font-weight:700;margin-left:auto}
.dash-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:12px}
.dash-bar-label{color:var(--text-sec);min-width:60px}
.dash-bar-track{flex:1;height:14px;background:rgba(255,255,255,0.06);border-radius:3px;position:relative;overflow:hidden}
.dash-bar-fill{position:absolute;top:0;left:0;height:100%;background:#378ADD;border-radius:3px;transition:width .5s}
.dash-bar-acc{position:absolute;top:0;left:0;height:100%;background:#1D9E75;border-radius:3px;transition:width .5s}
.dash-bar-val{color:var(--text-sec);font-size:11px;min-width:40px;text-align:right}
@media(max-width:900px){.dash-grid-top{grid-template-columns:1fr}.dash-grid-mid,.dash-grid-bot{grid-template-columns:1fr}}

/* ── Meeting prep download ── */
.meeting-prep-download{margin-top:8px;padding:0 0 4px 0}

/* ── PDF Export UI ── */
.export-results-row{margin-top:6px;display:flex;justify-content:flex-end}
.export-results-btn{display:inline-flex;align-items:center;padding:4px 10px;background:transparent;border:1px solid var(--border);border-radius:var(--rs);font-size:11px;color:var(--text-muted);transition:all .15s;cursor:pointer}
.export-results-btn:hover{border-color:var(--blue);color:var(--blue-light)}
.detail-actions{display:flex;gap:8px;padding-top:4px}
.detail-pdf-btn{font-size:11px;padding:5px 10px;opacity:.7}.detail-pdf-btn:hover{opacity:1}
.hist-pdf{color:var(--text-muted);padding:4px;border-radius:4px;margin-right:4px}.hist-pdf:hover{color:var(--blue-light);background:rgba(55,138,221,0.08)}
.hist-pdf svg{width:14px;height:14px}
.early-cards{margin-top:0}
.msg-timing{font-size:10px;color:var(--text-muted);margin-top:5px;text-align:right;opacity:.7}
/* Typing dots inside the AI bubble */
.msg-typing-anim{display:flex;align-items:center;justify-content:flex-start;padding:4px 2px 6px}
.msg-typing-anim .typing-dots{background:none;border:none;padding:0;gap:5px}
/* Meeting prep / DD export action row */
.resp-actions-row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.resp-action-btn{display:inline-flex;align-items:center;padding:5px 12px;border:1px solid var(--teal);border-radius:var(--rs);font-size:11.5px;font-weight:500;color:var(--teal-light);background:rgba(29,158,117,0.06);cursor:pointer;transition:all .15s}
.resp-action-btn:hover{background:rgba(29,158,117,0.14);color:#fff}
/* Live version-update toast */
.version-toast{position:fixed;bottom:20px;right:20px;z-index:10000;display:flex;align-items:center;gap:14px;padding:12px 14px 12px 16px;background:linear-gradient(135deg,#0E2C4D 0%,#0A2440 100%);border:1px solid var(--blue);border-radius:10px;box-shadow:0 16px 40px rgba(0,0,0,0.55),0 4px 12px rgba(0,0,0,0.4);color:#fff;max-width:380px;opacity:0;transform:translateY(16px);transition:opacity .25s ease,transform .25s ease}
.version-toast.version-toast-in{opacity:1;transform:translateY(0)}
.version-toast.version-toast-hide{opacity:0;transform:translateY(8px)}
.version-toast-body{display:flex;align-items:flex-start;gap:11px;flex:1}
.version-toast-icon{width:18px;height:18px;color:var(--teal-light);flex-shrink:0;margin-top:2px}
.version-toast-text{display:flex;flex-direction:column;gap:2px}
.version-toast-title{font-size:13px;font-weight:600;color:#fff}
.version-toast-sub{font-size:11.5px;color:#9DC1E8;line-height:1.4}
.version-toast-actions{display:flex;gap:6px;flex-shrink:0}
.version-toast-btn{padding:6px 12px;border-radius:6px;font-size:11.5px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .12s;background:transparent;color:#9DC1E8}
.version-toast-reload{background:var(--teal);color:#fff;border-color:var(--teal)}
.version-toast-reload:hover{background:var(--teal-light);border-color:var(--teal-light)}
.version-toast-dismiss{border-color:rgba(255,255,255,0.15)}
.version-toast-dismiss:hover{background:rgba(255,255,255,0.06);color:#fff}
@media(max-width:600px){.version-toast{left:12px;right:12px;bottom:12px;max-width:none}}

/* Clickable startup-name links inside table cells */
.tbl-startup{color:var(--blue-light);font-weight:600;text-decoration:none;border-bottom:1px dashed rgba(55,138,221,0.45);cursor:pointer;transition:all .12s}
.tbl-startup:hover{color:#fff;border-bottom-color:#fff;background:rgba(55,138,221,0.12)}
.tbl-popup{position:fixed;z-index:9999;min-width:240px;max-width:320px;background:#0A1F38;border:1px solid var(--border);border-radius:var(--rs);box-shadow:0 12px 32px rgba(0,0,0,0.55),0 4px 12px rgba(0,0,0,0.35);padding:6px;animation:tblPopIn .15s ease-out}
.tbl-popup-header{padding:6px 10px 8px;font-size:12px;font-weight:600;color:#fff;border-bottom:1px solid rgba(255,255,255,0.06);margin-bottom:4px;letter-spacing:0.01em}
.tbl-popup-item{display:flex;align-items:center;gap:9px;width:100%;padding:7px 10px;background:transparent;border:none;border-radius:4px;color:var(--text);font-size:12.5px;text-align:left;cursor:pointer;transition:background .12s,color .12s;line-height:1.2}
.tbl-popup-item:hover{background:rgba(55,138,221,0.12);color:#fff}
.tbl-popup-item svg{color:var(--blue-light);opacity:0.85}
.tbl-popup-item:hover svg{opacity:1}
@keyframes tblPopIn{from{opacity:0;transform:translateY(-4px) scale(0.98)}to{opacity:1;transform:translateY(0) scale(1)}}

/* In-message charts (rendered from ```chart fenced blocks).
   Visual language matches /dashboard: cream/white surface, brand tones, serif numerals. */
.msg-chart-wrap{margin:16px 0;padding:18px 20px;background:#fdfaf5;border:1px solid #e2ddd6;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,0.06),0 4px 16px rgba(0,0,0,0.04);color:#1c1a17;--chart-track:#ece7df;--chart-axis:rgba(28,26,23,.12)}
.msg-chart-title{font-family:var(--sans);font-size:20px;font-weight:500;color:#1c1a17;margin-bottom:2px;letter-spacing:-0.005em;line-height:1.2}
.msg-chart-sub{font-size:11px;color:#8e8880;margin-bottom:14px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}
.chart-empty,.chart-err{font-size:12px;color:#8e8880;padding:18px;text-align:center;font-style:italic}
.chart-err{color:#8b4a54;font-style:normal}
/* Pie / donut */
.chart-pie-wrap{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.chart-pie{width:220px;height:220px;flex-shrink:0}
.chart-pie-seg{transition:opacity .2s, stroke-width .2s;cursor:pointer}
.chart-pie-seg.chart-dim{opacity:0.25}
.chart-pie-total{font-family:var(--sans);font-size:54px;font-weight:300;fill:#1c1a17}
.chart-pie-totallabel{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.18em;fill:#8e8880}
.chart-legend{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}
.chart-legend-item{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px;color:#5a5549;padding:5px 8px;border-radius:5px;cursor:pointer;transition:background .15s,opacity .2s}
.chart-legend-item:hover{background:#f3eee5}
.chart-legend-item.chart-dim{opacity:0.45}
.chart-legend-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0;display:inline-block}
.chart-legend-label{flex:1;color:#5a5549;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px}
.chart-legend-val{font-family:var(--sans);font-weight:500;font-size:16px;color:#1c1a17;font-variant-numeric:tabular-nums;letter-spacing:0}
/* Vertical bar */
.chart-bar-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.chart-bar-svg{height:240px;display:block}
.chart-bar-rect{transition:opacity .2s;cursor:pointer}
.chart-bar-rect.chart-dim{opacity:0.3}
.chart-bar-val{font-family:var(--sans);font-size:13px;fill:#1c1a17;font-weight:500}
.chart-bar-labels{position:relative}
.chart-bar-label{position:absolute;transform:translateX(-50%);top:6px;font-size:11px;color:#5a5549;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-weight:500;line-height:1.2}
/* Horizontal bar — modeled on dashboard's barList rows */
.chart-hbar{display:flex;flex-direction:column;gap:2px}
.chart-hbar-row{display:grid;grid-template-columns:180px 1fr 64px;align-items:center;gap:12px;padding:8px 6px;cursor:pointer;border-radius:4px;transition:background .15s,opacity .2s}
.chart-hbar-row:hover{background:#f3eee5}
.chart-hbar-row.chart-dim{opacity:0.35}
.chart-hbar-label{font-size:12.5px;color:#5a5549;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chart-hbar-track{height:8px;background:#ece7df;border-radius:4px;overflow:hidden;position:relative}
.chart-hbar-fill{height:100%;border-radius:4px;transition:width .5s cubic-bezier(.2,.8,.2,1)}
.chart-hbar-val{font-family:var(--sans);font-size:18px;font-weight:500;color:#1c1a17;text-align:right;font-variant-numeric:tabular-nums}
/* Line */
.chart-line-wrap{overflow-x:auto}
.chart-line-svg{width:100%;max-width:600px;height:240px;display:block}
.chart-line-label{font-size:10px;fill:#8e8880}
.chart-line-dot{transition:opacity .2s, r .15s;cursor:pointer}
.chart-line-dot:hover{r:6.5}
.chart-line-dot.chart-dim{opacity:0.3}
/* Heatmap / matrix — brand-tone gradient (cream → warm → teal) */
.chart-heatmap-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.chart-heatmap{border-collapse:separate;border-spacing:2px;font-size:11.5px}
.chart-heatmap th,.chart-heatmap td{padding:7px 10px;text-align:center;font-weight:500;min-width:46px;border-radius:3px}
.chart-heatmap th{background:transparent;color:#8e8880;font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;font-family:var(--sans)}
.chart-heatmap th.hm-rh{text-align:right;color:#1c1a17;text-transform:none;letter-spacing:0;font-weight:500;font-size:12.5px;font-family:inherit}
.chart-hm-cell{font-family:var(--sans);font-size:14px;font-weight:500;cursor:pointer;transition:opacity .2s;text-shadow:none}
.chart-hm-cell.chart-dim{opacity:0.35}
.chart-hm-scale{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:10.5px;color:#8e8880;max-width:300px}
.chart-hm-grad{flex:1;height:8px;border-radius:4px;background:linear-gradient(90deg,#f5ede6 0%,#c8b19e 30%,#8b6144 60%,#5a6e55 80%,#2d6e65 100%)}

/* Custom HTML chart tooltip — single body-level element repositioned per hover. */
.chart-tooltip{position:fixed;z-index:1000;max-width:280px;background:#1c1a17;color:#fdfaf5;padding:10px 12px;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.35);font-size:12.5px;line-height:1.45;pointer-events:none}
.chart-tooltip .ct-head{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;margin-bottom:2px}
.chart-tooltip .ct-head b{font-weight:600;color:#fdfaf5}
.chart-tooltip .ct-swatch{width:9px;height:9px;border-radius:2px;flex-shrink:0;display:inline-block}
.chart-tooltip .ct-meta{font-size:11.5px;color:#c8c3bc;margin-bottom:6px;font-family:var(--sans);font-size:14px;font-weight:500}
.chart-tooltip .ct-items{margin:6px 0 0;padding-left:14px;list-style:disc}
.chart-tooltip .ct-items li{font-size:12px;color:#e2ddd6;margin:1px 0;line-height:1.35}
.chart-tooltip .ct-more{margin-top:5px;font-size:10.5px;color:#8e8880;font-style:italic}

/* Chart-slice modal — opens on click of a pie segment / bar / cell. Lists the startups in that
   slice, each row clickable to drill into chat. Visual language matches the dashboard's modal. */
.csm-modal{position:fixed;inset:0;background:rgba(28,26,23,.55);z-index:1200;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px)}
.csm-card{background:#fdfaf5;color:#1c1a17;border-radius:12px;width:min(560px,100%);max-height:85vh;display:flex;flex-direction:column;box-shadow:0 24px 80px rgba(0,0,0,0.18);overflow:hidden}
.csm-head{display:flex;align-items:flex-start;gap:12px;padding:18px 22px 10px;border-bottom:1px solid #e2ddd6}
.csm-title-wrap{display:flex;gap:10px;flex:1;align-items:center;min-width:0}
.csm-swatch{width:14px;height:14px;border-radius:3px;flex-shrink:0;margin-top:6px}
.csm-title{font-family:var(--sans);font-size:22px;font-weight:500;color:#1c1a17;line-height:1.15;letter-spacing:-0.005em}
.csm-sub{font-size:11.5px;color:#8e8880;margin-top:2px;letter-spacing:.04em;text-transform:uppercase;font-weight:500}
.csm-close{background:transparent;border:none;color:#8e8880;font-size:26px;line-height:1;cursor:pointer;padding:0 6px;flex-shrink:0}
.csm-close:hover{color:#1c1a17}
.csm-body{padding:14px 22px;overflow-y:auto;flex:1}
.csm-empty{color:#5a5549;font-size:13px;padding:18px 0;text-align:center;font-style:italic}
.csm-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.csm-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:6px;font-size:13px;color:#1c1a17;border:1px solid transparent}
.csm-row-link{cursor:pointer;transition:background .15s,border-color .15s}
.csm-row-link:hover{background:#f3eee5;border-color:#e2ddd6}
.csm-row-name{flex:1;font-family:var(--sans);font-size:16px;font-weight:500;letter-spacing:-0.005em}
.csm-row-arrow{color:#2d6e65;font-size:18px;font-weight:600}
.csm-row-tag{font-size:10.5px;color:#8e8880;text-transform:uppercase;letter-spacing:.06em;font-weight:500}
.csm-foot{display:flex;align-items:center;gap:12px;padding:14px 22px 16px;border-top:1px solid #e2ddd6;flex-wrap:wrap}
.csm-ask-btn{background:#2d6e65;color:#fff;border:none;border-radius:6px;padding:8px 14px;font-size:12.5px;font-weight:500;cursor:pointer;letter-spacing:.01em}
.csm-ask-btn:hover{background:#235a52}
.csm-ask-hint{font-size:11px;color:#8e8880;flex:1;min-width:0;font-style:italic}

/* ── Profile wizard (first-login modal) ────────────────────────────────────── */
.pw-modal{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:1300;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(3px)}
.pw-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:14px;padding:0 0 22px;width:min(620px,100%);max-height:90vh;overflow-y:auto;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.pw-progress{height:3px;background:rgba(255,255,255,.05);border-radius:14px 14px 0 0;overflow:hidden}
.pw-progress-fill{height:100%;background:linear-gradient(90deg,var(--teal,#1D9E75),#25C692);transition:width .3s}
.pw-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:22px 26px 12px}
.pw-eyebrow{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.16em;font-weight:600;margin-bottom:4px}
.pw-title{font-size:22px;font-weight:600;color:var(--text);margin:0 0 8px;letter-spacing:-0.005em;line-height:1.2}
.pw-sub{font-size:13px;color:var(--text-muted);margin:6px 0 0;line-height:1.55}
.pw-skip{background:transparent;border:1px solid var(--border);color:var(--text-muted);font-size:11.5px;padding:6px 12px;border-radius:6px;cursor:pointer;flex-shrink:0}
.pw-skip:hover{color:var(--text);border-color:var(--text-muted)}
.pw-q{font-size:14px;font-weight:500;color:var(--text);padding:8px 26px 12px;letter-spacing:-0.005em}
.pw-body{padding:0 26px 18px}
.pw-options{display:flex;flex-wrap:wrap;gap:8px}
.pw-opt{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:9px 14px;border-radius:8px;font-size:13px;cursor:pointer;transition:all .15s}
.pw-opt:hover{border-color:var(--teal-light);background:rgba(45,158,117,.06)}
.pw-opt.active{background:rgba(45,158,117,.18);border-color:var(--teal-light);color:#3DDC8C;font-weight:500}
.pw-text{width:100%;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13.5px;outline:none;transition:border-color .15s}
.pw-text:focus{border-color:var(--teal-light)}
.pw-options-multi{padding-top:2px}
.pw-other-wrap{margin-top:10px}
.ps-options-multi .ps-opt.active::after{content:' ✓';color:#3DDC8C;font-weight:600;margin-left:4px}
.ps-other-wrap{margin-top:8px}
.ps-other-input{max-width:520px}
.ps-hint{font-size:11px;color:var(--text-muted);margin-top:4px}

/* ── Persona Config (admin) ──────────────────────────────────────────────── */
.pc-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;padding:18px 20px;margin-bottom:16px;max-width:760px}
.pc-title{font-size:16px;font-weight:600;color:var(--text);margin:0 0 12px}
.pc-row{display:flex;gap:14px;flex-wrap:wrap}

/* ── Scouting view ───────────────────────────────────────────────────────── */
.scout-stats-bar{font-size:12px;color:var(--text-muted);margin-bottom:10px}
.sc-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;padding:14px 18px;margin-bottom:10px}
.sc-card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
.sc-card-name{font-size:15px;font-weight:600;color:var(--text)}
.sc-pill{display:inline-block;padding:2px 9px;border-radius:99px;font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.sc-pill-promoted{background:rgba(45,158,117,.18);color:#3DDC8C}
.sc-card-desc{font-size:12.5px;color:var(--text-sec);line-height:1.55;margin-bottom:8px}
.sc-card-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:11.5px;color:var(--text-muted);margin-bottom:10px;align-items:center}
.sc-card-meta a{color:var(--teal-light);text-decoration:none}
.sc-card-meta a:hover{text-decoration:underline}
.sc-meta-count{font-style:italic}
.sc-sig{display:inline-flex;align-items:center;padding:3px 9px;border-radius:6px;font-size:10.5px;font-weight:600;background:var(--surface);color:var(--text-sec);border:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em}
.sc-sig-nih_sbir_sttr{background:rgba(45,158,117,.15);color:#3DDC8C;border-color:rgba(45,158,117,.30)}
.sc-sig-arxiv_paper{background:rgba(232,163,23,.14);color:#F0B441;border-color:rgba(232,163,23,.30)}
.sc-sig-github_org{background:rgba(139,92,246,.14);color:#a684f8;border-color:rgba(139,92,246,.30)}
.sc-card-actions{display:flex;gap:6px;flex-wrap:wrap}
.ss-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-sec);cursor:pointer}
.ss-toggle input{accent-color:var(--teal-light)}
.pw-foot{display:flex;justify-content:space-between;align-items:center;padding:14px 26px 0;border-top:1px solid var(--border-light);margin-top:8px;padding-top:18px}
.pw-btn{padding:9px 16px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .15s}
.pw-btn-back{background:transparent;border-color:var(--border);color:var(--text-muted)}
.pw-btn-back:hover:not(:disabled){border-color:var(--text-muted);color:var(--text)}
.pw-btn-back:disabled{opacity:.35;cursor:not-allowed}
.pw-btn-next{background:var(--teal,#1D9E75);color:#fff}
.pw-btn-next:hover{background:#25C692}
.pw-toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:var(--surface-raised);border:1px solid var(--teal-light);color:var(--text);padding:11px 18px;border-radius:8px;font-size:13px;z-index:1500;box-shadow:0 8px 24px rgba(0,0,0,.35);transition:opacity .3s}
.pw-toast.out{opacity:0}

/* ── Profile settings page ──────────────────────────────────────────────── */
.ps-field{margin-bottom:22px}
.ps-label{display:block;font-size:13px;font-weight:600;color:var(--text);margin-bottom:9px;letter-spacing:-0.005em}
.ps-options{display:flex;flex-wrap:wrap;gap:6px}
.ps-opt{background:var(--surface);border:1px solid var(--border);color:var(--text-sec);padding:7px 12px;border-radius:8px;font-size:12.5px;cursor:pointer;transition:all .15s}
.ps-opt:hover{border-color:var(--teal-light);color:var(--text)}
.ps-opt.active{background:rgba(45,158,117,.16);border-color:var(--teal-light);color:#3DDC8C;font-weight:500}
.ps-text{width:100%;padding:9px 12px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13.5px;outline:none;font-family:inherit;line-height:1.5}
.ps-text:focus{border-color:var(--teal-light)}
.ps-actions{display:flex;align-items:center;gap:14px;margin-top:24px}
.ps-saved-msg{color:#3DDC8C;font-size:12.5px;font-weight:500}

/* ── Notifications view + bell badge ─────────────────────────────────────── */
.notif-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 5px;margin-left:6px;background:#D94052;color:#fff;border-radius:9px;font-size:10.5px;font-weight:700}
.notif-row{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px;cursor:pointer;background:var(--surface);transition:all .15s}
.notif-row:hover{border-color:var(--teal-light);background:var(--surface-raised)}
.notif-row.unread{background:var(--surface-raised);border-color:rgba(45,158,117,.30)}
.notif-dot{width:8px;height:8px;border-radius:50%;background:transparent;flex-shrink:0;margin-top:6px}
.notif-dot.on{background:var(--teal-light)}
.notif-body{flex:1;min-width:0}
.notif-title{font-size:13.5px;color:var(--text);font-weight:500;margin-bottom:3px;letter-spacing:-0.005em}
.notif-text{font-size:12.5px;color:var(--text-sec);line-height:1.5;margin-bottom:5px}
.notif-meta{font-size:11px;color:var(--text-muted)}
.notif-del{background:transparent;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:0 8px;align-self:flex-start;line-height:1}
.notif-del:hover{color:var(--text)}

/* ── Memory view (v2.40) ─────────────────────────────────────────────────
   Long-lived facts the user wants the assistant to remember on every chat.
   Same row chrome as notifications but content-first (no left dot) since
   every row is "active". Inline edit replaces the row with a textarea so
   the user doesn't lose context to a modal. */
.memv-count{margin-left:12px;font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums;align-self:center}
.memv-input{width:100%;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13.5px;line-height:1.5;font-family:inherit;outline:none;resize:vertical;min-height:48px}
.memv-input:focus{border-color:var(--teal-light);box-shadow:0 0 0 3px rgba(29,158,117,0.10)}
.memv-row{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px;background:var(--surface);transition:all .15s;flex-direction:column}
.memv-row:hover{border-color:var(--teal-light);background:var(--surface-raised)}
.memv-text{font-size:13.5px;color:var(--text);line-height:1.55;letter-spacing:-0.005em;width:100%;white-space:pre-wrap;word-break:break-word}
.memv-meta{display:flex;align-items:center;gap:14px;width:100%;font-size:11px;color:var(--text-muted)}
.memv-when{flex:1}
.memv-act{background:transparent;border:none;color:var(--text-muted);font-size:11.5px;cursor:pointer;padding:2px 6px;border-radius:4px;transition:all .12s}
.memv-act:hover{color:var(--text);background:var(--surface-raised)}
.memv-act.memv-del:hover{color:var(--red,#d94052)}

/* ── System alerts (admin) ─────────────────────────────────────────────── */
.sa-builder{background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;padding:18px;margin-bottom:18px}
.sa-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px;align-items:center}
.sa-input{padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13px;outline:none;flex:1;min-width:200px}
.sa-input:focus{border-color:var(--teal-light)}
.sa-select{padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13px;cursor:pointer}
.sa-label{font-size:12px;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px;display:block}
.sa-recipients{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px;max-height:160px;overflow-y:auto;flex:1;min-width:300px}
.sa-rcp-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:4px;font-size:12.5px;color:var(--text-sec);cursor:pointer}
.sa-rcp-row:hover{background:var(--surface-raised)}
.sa-rcp-row input{accent-color:var(--teal-light)}
.sa-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px 18px;margin-bottom:10px;display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.sa-card-title{font-size:14px;font-weight:500;color:var(--text);margin-bottom:3px}
.sa-card-meta{font-size:11.5px;color:var(--text-muted);display:flex;gap:8px;flex-wrap:wrap}
.sa-card-tag{padding:2px 8px;background:var(--surface-raised);border:1px solid var(--border);border-radius:99px;font-size:10.5px}
.sa-card-paused .sa-card-title{color:var(--text-muted)}
.sa-card-actions{display:flex;gap:6px;flex-shrink:0}

/* In-message tables (rendered from markdown pipe tables in AI responses) */
.msg-table-wrap{margin:10px 0;border-radius:var(--rs);border:1px solid var(--border);background:rgba(8,24,42,0.45);overflow-x:auto;-webkit-overflow-scrolling:touch}
.msg-table{width:100%;border-collapse:collapse;font-size:12.5px;color:var(--text);line-height:1.45}
.msg-table thead th{background:linear-gradient(180deg,#0E2C4D 0%,#0A2440 100%);color:#9DC1E8;font-weight:600;font-size:11px;letter-spacing:0.04em;text-transform:uppercase;text-align:left;padding:9px 12px;border-bottom:1px solid var(--blue);white-space:nowrap}
.msg-table tbody td{padding:8px 12px;border-bottom:1px solid rgba(255,255,255,0.04);vertical-align:top}
.msg-table tbody tr:last-child td{border-bottom:none}
.msg-table tbody tr:nth-child(even) td{background:rgba(255,255,255,0.018)}
.msg-table tbody tr:hover td{background:rgba(55,138,221,0.06)}
.msg-table tbody td strong{color:#fff;font-weight:600}
.msg-table thead th:first-child,.msg-table tbody td:first-child{padding-left:14px}
.msg-table thead th:last-child,.msg-table tbody td:last-child{padding-right:14px}
@media(max-width:600px){
  .msg-table{font-size:11.5px}
  .msg-table thead th,.msg-table tbody td{padding:7px 9px}
}

/* Universal per-message export actions (appear on every assistant response) */
.msg-actions-row{display:flex;gap:6px;margin-top:8px;padding-top:6px;border-top:1px solid rgba(255,255,255,0.04);justify-content:flex-end;flex-wrap:wrap}
.msg-action-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;background:transparent;border:1px solid var(--border);border-radius:var(--rs);font-size:10.5px;color:var(--text-muted);cursor:pointer;transition:all .15s;line-height:1}
.msg-action-btn:hover{border-color:var(--blue);color:var(--blue-light);background:rgba(55,138,221,0.06)}
.msg-action-btn svg{width:11px;height:11px;flex-shrink:0}
.msg-action-btn span{font-weight:500}

/* v2.45 — Feedback row above the export row. Three small chrome-less buttons
   (👍 / 👎 / suggest correction). Sits at the same right-aligned edge as the
   export buttons for visual consistency. The correction form drops in below
   on click — inline, no modal. */
.msg-feedback-row{display:flex;gap:4px;margin-top:8px;padding-top:6px;border-top:1px solid rgba(255,255,255,0.04);justify-content:flex-end;align-items:center;flex-wrap:wrap}
.msg-fb-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;background:transparent;border:1px solid transparent;border-radius:var(--rs);font-size:10.5px;color:var(--text-muted);cursor:pointer;transition:all .15s;line-height:1}
.msg-fb-btn:hover{color:var(--text);background:rgba(255,255,255,0.05)}
.msg-fb-btn svg{width:13px;height:13px;flex-shrink:0}
.msg-fb-btn span{font-weight:500}
.msg-fb-up.active{color:var(--teal);background:rgba(29,158,117,0.10)}
.msg-fb-down.active{color:var(--amber);background:rgba(232,163,23,0.10)}
.msg-fb-correct{padding-left:9px;padding-right:9px}
.msg-fb-status{font-size:10.5px;color:var(--text-muted);margin-left:6px;min-height:14px}

.msg-correct-form{margin-top:8px;padding:12px 14px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--rs);font-size:12.5px}
.msg-correct-form .mcf-head{font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:8px}
.msg-correct-form .mcf-label{display:block;font-size:11px;color:var(--text-muted);margin:8px 0 4px;font-weight:500}
.msg-correct-form .mcf-optional{font-weight:400;opacity:.7}
.msg-correct-form .mcf-input{width:100%;padding:7px 10px;background:var(--surface);border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:12px;line-height:1.45;font-family:inherit;outline:none;resize:vertical;box-sizing:border-box}
.msg-correct-form .mcf-input:focus{border-color:var(--teal-light);box-shadow:0 0 0 2px rgba(29,158,117,0.10)}
.msg-correct-form .mcf-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.msg-correct-form .mcf-note{margin-top:8px;font-size:10.5px;color:var(--text-muted);font-style:italic}
.msg-correct-form .mcf-thanks{font-size:12px;color:var(--teal-light);padding:6px 2px}

/* v2.47 — Auto-saved memory confirmation banner. Shown when the AI's response
   included a memoryToSave field that the server persisted to user_memories.
   Visual: warm tinted strip with the brain icon + the persisted text + a
   Review link to the Memory view. Same chrome family as the chat-alert and
   lrw-box banners. */
/* v3.55 — Merck Dashboard (Merck-wide innovation portfolio) */
.md-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:6px 0 16px}
.md-kpi{background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;padding:14px 16px}
.md-kpi-val{font-size:26px;font-weight:700;color:var(--text);line-height:1.1}
.md-kpi-label{font-size:11px;color:var(--text-muted);margin-top:4px;text-transform:uppercase;letter-spacing:.05em}
.md-kpi-sub{font-size:11px;color:var(--text-muted);margin-top:3px}
.md-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}
.md-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:14px}
.md-card-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text);margin-bottom:10px}
.md-bar{display:flex;align-items:center;gap:8px;margin:5px 0;font-size:12px}
.md-bar-label{flex:0 0 42%;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.md-bar-track{flex:1;height:10px;background:var(--border);border-radius:5px;overflow:hidden}
.md-bar-fill{height:100%;background:var(--teal,#00857C);border-radius:5px;min-width:2px;transition:width .3s ease}
.md-bar-num{flex:0 0 34px;color:var(--text);font-weight:600;text-align:right}
.md-sub{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}
.md-empty{font-size:12px;color:var(--text-muted)}
.md-activity{list-style:none;margin:0;padding:0;font-size:12px}
.md-activity li{display:flex;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--border)}
.md-activity li:last-child{border-bottom:none}
.md-act-name{font-weight:600;color:var(--text)}
.md-act-field{color:var(--text-muted)}
.md-act-src{margin-left:auto;font-size:10px;color:var(--teal-light,#6ECEB2);text-transform:uppercase;letter-spacing:.04em}
.md-act-when{color:var(--text-muted);font-size:11px;white-space:nowrap}

/* v3.49 — AI-proposed card edits (confirm-to-apply) */
.proposed-edits{margin:10px 0 0;display:flex;flex-direction:column;gap:8px}
.pe-card{padding:10px 12px;background:rgba(0,133,124,0.07);border:1px solid rgba(0,133,124,0.30);border-left:3px solid var(--teal,#00857C);border-radius:var(--rs)}
.pe-head{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--teal-light,#6ECEB2);font-weight:600;margin-bottom:4px}
/* v3.75 — proposed ACTIONS (create/link/convert/score) get a distinct accent from field edits */
.pa-card{background:rgba(122,79,174,0.07);border-color:rgba(122,79,174,0.32);border-left-color:#7a4fae}
.pa-card .pe-head{color:#b18bd9}
.pe-body{font-size:13px;color:var(--text);line-height:1.5}
.pe-field{color:var(--text-muted)}
.pe-val{font-weight:600}
.pe-rationale{font-size:12px;color:var(--text-muted);margin-top:3px;line-height:1.45}
.pe-actions{display:flex;gap:8px;align-items:center;margin-top:8px}
.memory-saved-banner{display:flex;align-items:center;gap:8px;margin:10px 0 0;padding:8px 12px;background:rgba(29,158,117,0.10);border:1px solid rgba(29,158,117,0.30);border-radius:var(--rs);font-size:12px;color:var(--text);line-height:1.45}
.memory-saved-banner svg{color:var(--teal-light)}
.memory-saved-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--teal-light);font-weight:600;flex-shrink:0}
.memory-saved-text{flex:1;color:var(--text);font-size:12.5px}
.memory-saved-view{background:transparent;border:none;color:var(--teal-light);font-size:11.5px;cursor:pointer;padding:2px 6px;border-radius:4px;flex-shrink:0;font-weight:500}
.memory-saved-view:hover{background:rgba(29,158,117,0.15);color:#fff}

/* v2.45 — Learned Corrections admin view */
.corr-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px;max-width:1080px}
.corr-stat{background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;padding:14px 16px}
.corr-stat-num{font-size:26px;font-weight:700;color:var(--text);line-height:1.1}
.corr-stat-good{color:var(--teal)}
.corr-stat-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-top:4px}
.corr-stat-applied{border-left:3px solid var(--teal)}
.corr-tabs{display:flex;gap:6px;border-bottom:1px solid var(--border);margin-bottom:14px;max-width:1080px}
.corr-tab{background:transparent;border:none;padding:8px 16px;font-size:13px;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;display:inline-flex;align-items:center;gap:6px;transition:all .15s}
.corr-tab:hover{color:var(--text)}
.corr-tab.active{color:var(--teal);border-bottom-color:var(--teal)}
.corr-tab-count{background:rgba(255,255,255,0.06);font-size:11px;padding:1px 6px;border-radius:8px;font-variant-numeric:tabular-nums}
.corr-tab.active .corr-tab-count{background:rgba(29,158,117,0.18);color:var(--teal-light)}
.corr-filters{display:flex;gap:10px;margin-bottom:18px;max-width:1080px;flex-wrap:wrap}
.corr-filter-select,.corr-filter-input{padding:6px 10px;background:var(--surface);border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--text);outline:none}
.corr-filter-input{flex:1;min-width:200px}
.corr-row{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin-bottom:10px;font-size:12.5px;line-height:1.5}
.corr-row-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,0.04);font-size:11px;color:var(--text-muted)}
.corr-source{display:inline-block;padding:2px 8px;border-radius:10px;font-size:10.5px;font-weight:500;letter-spacing:.02em}
.corr-source-amber{background:rgba(232,163,23,0.14);color:var(--amber)}
.corr-source-blue{background:rgba(55,138,221,0.14);color:var(--blue-light)}
.corr-source-red{background:rgba(217,64,82,0.14);color:#f0888f}
.corr-source-gray{background:rgba(255,255,255,0.06);color:var(--text-muted)}
.corr-source-teal{background:rgba(29,158,117,0.14);color:var(--teal-light)}
.corr-entity{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:var(--text);background:rgba(255,255,255,0.04);padding:2px 7px;border-radius:4px}
.corr-applied{font-size:11px;color:var(--teal-light);font-weight:500}
.corr-when,.corr-user{margin-left:auto;font-size:10.5px}
.corr-user{margin-left:0}
.corr-field{margin:4px 0}
.corr-field-label{font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-right:6px}
.corr-field-val{color:var(--text);font-size:12.5px}
.corr-field-val.corr-correct{color:var(--teal-light)}
.corr-details{margin:4px 0}
.corr-details summary{cursor:pointer;color:var(--text-muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.corr-response{margin-top:6px;padding:6px 10px;background:rgba(255,255,255,0.03);border-left:2px solid var(--border);color:var(--text-sec);font-size:12px;white-space:pre-wrap;border-radius:0 4px 4px 0}
.corr-actions{display:flex;gap:6px;margin-top:10px;justify-content:flex-end;flex-wrap:wrap}

/* Editor modal */
.corr-edit-modal{position:fixed;inset:0;z-index:11000;display:flex;align-items:center;justify-content:center}
.corr-edit-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0.55)}
.corr-edit-panel{position:relative;background:var(--surface-card);border:1px solid var(--border);border-radius:10px;padding:20px 22px;width:min(620px,92vw);max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-3,0 8px 32px rgba(0,0,0,0.5))}
.corr-edit-head{font-size:14px;font-weight:600;color:var(--text);margin-bottom:14px}
.corr-edit-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
/* Per-card stagger animation */
.cards-stagger .scard{opacity:0;transform:translateY(10px);transition:opacity 0.25s ease,transform 0.25s ease}
.cards-stagger .scard.card-in{opacity:1;transform:translateY(0)}
/* Saved bookmark icon fill */
.scard-save.saved{color:var(--teal-light)}
/* Card overflow (…) menu */
.scard-overflow-wrap{position:relative;display:inline-flex}
.scard-more{color:var(--text-muted) !important}
.scard-overflow-menu{display:none;position:absolute;top:100%;right:0;min-width:190px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--rs);box-shadow:0 6px 20px rgba(0,0,0,.35);z-index:200;padding:4px 0}
.scard-overflow-menu.open{display:block}
.scard-overflow-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 14px;background:none;border:none;color:var(--text);font-size:12.5px;cursor:pointer;text-align:left;transition:background .12s}
.scard-overflow-item:hover{background:var(--surface-hover)}
/* ── Alerts Redesign ── */
.alert-builder-section{margin-bottom:28px}
.alert-builder{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:12px}
.alert-field{margin-bottom:14px}
.alert-label{display:block;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:7px}
.alert-input{width:100%;padding:9px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--rs);color:var(--text);font-size:13.5px;outline:none;transition:border-color .15s}
.alert-input:focus{border-color:var(--teal)}
.alert-filter-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.alert-select{padding:7px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--rs);color:var(--text);font-size:12.5px;outline:none;cursor:pointer;min-width:120px}
.alert-select:focus{border-color:var(--teal)}
.alert-toggle-wrap{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:12.5px;color:var(--text)}
.alert-toggle-wrap input[type=checkbox]{accent-color:var(--teal);width:14px;height:14px}
.alert-row-2{display:flex;gap:16px;flex-wrap:wrap;margin-top:4px}
.alert-freq-btns{display:flex;gap:6px}
.alert-freq-btn{padding:6px 14px;border:1px solid var(--border);border-radius:var(--rs);background:none;color:var(--text-muted);font-size:12.5px;cursor:pointer;transition:all .15s}
.alert-freq-btn.active{border-color:var(--teal);color:var(--teal-light);background:rgba(29,158,117,.1)}
.alert-actions{display:flex;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}
.alert-preview-header{font-size:12.5px;color:var(--teal-light);font-weight:600;padding:10px 0 6px}
.alert-suggestions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:4px 0 2px}
.alert-sug-label{font-size:11.5px;color:var(--text-muted);white-space:nowrap}
.alert-sug-btn{padding:4px 10px;border:1px solid var(--border);border-radius:20px;background:none;color:var(--text-muted);font-size:11.5px;cursor:pointer;transition:all .15s}
.alert-sug-btn:hover{border-color:var(--teal);color:var(--teal-light)}
.alert-notify-on{margin-top:8px}
.alert-notify-checks{display:flex;flex-direction:column;gap:7px}
.alert-check-wrap{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:12.5px;color:var(--text-sec)}
.alert-check-wrap input[type=checkbox]{accent-color:var(--teal);width:13px;height:13px;flex-shrink:0}
.alert-active-section{}
.alert-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px;transition:border-color .15s}
.alert-card:hover{border-color:var(--border-active)}
.alert-card.paused{opacity:.55}
.alert-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px}
.alert-card-query{font-size:13.5px;font-weight:600;color:var(--text);flex:1}
.alert-freq-badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:rgba(29,158,117,.12);color:var(--teal-light);white-space:nowrap}
.alert-card-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.alert-tag{font-size:11px;padding:2px 8px;border-radius:10px;background:var(--surface);border:1px solid var(--border);color:var(--text-muted)}
.alert-card-meta{font-size:11.5px;color:var(--text-muted);margin-bottom:8px}
.alert-match-count{color:var(--teal-light);font-weight:500}
.alert-card-actions{display:flex;gap:6px;flex-wrap:wrap}

/* ── Patents View ── */
.patent-stats-bar{display:flex;gap:20px;padding:12px 16px;background:var(--surface-raised);border-radius:var(--r);border:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}
.patent-stat{display:flex;flex-direction:column;gap:2px}
.patent-stat-val{font-size:22px;font-weight:700;color:var(--blue-light)}
.patent-stat-lbl{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}
.patent-search-row{display:flex;gap:8px;margin-bottom:14px;align-items:center}
.patent-search-input{flex:1;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--rs);padding:8px 12px;font-size:13.5px;color:var(--text);transition:border-color .2s}
.patent-search-input:focus{border-color:var(--blue)}
.patent-cat-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.patent-chip{display:flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;background:var(--surface-raised);border:1px solid var(--border);font-size:12px;color:var(--text-sec);cursor:pointer;transition:all .15s;white-space:nowrap}
.patent-chip:hover,.patent-chip.active{border-color:var(--blue);color:var(--blue-light);background:rgba(55,138,221,.1)}
.patent-chip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.patent-chip-count{font-size:10px;color:var(--text-muted)}
.patent-grid{display:flex;flex-direction:column;gap:10px}
.chat-patent-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin:14px 0 8px}
.cards-stagger .patent-card{opacity:0;transform:translateY(10px);transition:opacity 0.25s ease,transform 0.25s ease}
.cards-stagger .patent-card.card-in{opacity:1;transform:translateY(0)}
.patent-card{background:var(--surface-card);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;transition:border-color .15s}
.patent-card:hover{border-color:rgba(255,255,255,.15)}
.patent-header{display:flex;align-items:flex-start;gap:12px;padding:14px 14px 10px}
.patent-avatar{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px}
.patent-info{flex:1;min-width:0}
.patent-title{font-size:13.5px;font-weight:600;color:var(--text);line-height:1.4;margin-bottom:4px}
.patent-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.patent-cat{font-size:11px;font-weight:600}
.patent-num{font-size:11px;color:var(--text-muted);font-family:var(--mono)}
.patent-status{font-size:10.5px;padding:2px 7px;border-radius:10px;font-weight:600;background:rgba(29,158,117,.15);color:var(--teal-light)}
.patent-status.pending{background:rgba(232,163,23,.15);color:var(--amber)}
.patent-desc{padding:0 14px 10px;font-size:12.5px;color:var(--text-sec);line-height:1.5}
.patent-footer{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-top:1px solid var(--border-light)}
.patent-date{font-size:11px;color:var(--text-muted)}
.patent-detail-btn{font-size:12px;color:var(--blue-light);background:none;border:none;cursor:pointer;padding:2px 0}
.patent-detail-btn:hover{color:var(--text)}
.patent-expand-panel{border-top:1px solid var(--border-light);padding:14px;background:var(--surface)}
.patent-detail-inner{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pd-section{display:flex;flex-direction:column;gap:4px}
.pd-section.full{grid-column:1/-1}
.pd-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}
.pd-text{font-size:12.5px;color:var(--text-sec);line-height:1.5}
.pd-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.pd-tag{font-size:11px;padding:2px 8px;border-radius:10px;background:var(--surface-raised);border:1px solid var(--border);color:var(--text-muted)}
.pd-actions{grid-column:1/-1;display:flex;gap:8px;margin-top:4px}

/* ── Related Merck IP (in startup detail) ── */
.related-patents-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.related-patent-item{padding:10px 12px;border-radius:var(--rs);background:var(--surface-raised);border:1px solid var(--border)}
.rp-title{font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:4px;line-height:1.4}
.rp-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.rp-cat{font-size:11px;font-weight:600}
.rp-num{font-size:11px;color:var(--text-muted);font-family:var(--mono)}
.rp-badge{font-size:10px;padding:1px 6px;border-radius:10px;background:rgba(55,138,221,.15);color:var(--blue-light);font-weight:600}
.rp-desc{font-size:12px;color:var(--text-muted);line-height:1.5}

/* ── Startup Browser ── */
.browse-search-row{display:flex;gap:8px;margin-bottom:14px;align-items:center}
.browse-search-input{flex:1;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r);padding:9px 14px;color:var(--text);font-size:13.5px;outline:none}
.browse-search-input:focus{border-color:var(--teal-light)}
.browse-sort-select{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r);padding:8px 12px;color:var(--text);font-size:13px;outline:none;cursor:pointer}
.browse-filters{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.bf-row{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}
.bf-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;padding-top:6px;min-width:52px;flex-shrink:0}
.bf-chips{display:flex;gap:5px;flex-wrap:wrap}
.bf-chip{background:var(--surface-raised);border:1px solid var(--border);border-radius:20px;padding:4px 10px;font-size:12px;color:var(--text-muted);cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:5px}
.bf-chip:hover{border-color:var(--teal-light);color:var(--text)}
.bf-chip.active{background:rgba(45,212,191,.12);border-color:var(--teal-light);color:var(--teal-light)}
.bf-chip-sector{background:var(--surface-raised);border:1px solid var(--border);border-radius:20px;padding:4px 10px;font-size:12px;color:var(--text-muted);cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:5px}
.bf-chip-sector:hover{border-color:var(--teal-light);color:var(--text)}
.bf-chip-sector.active{background:rgba(45,212,191,.12);border-color:var(--teal-light);color:var(--teal-light)}
.bf-count{font-size:10px;opacity:.7;background:rgba(255,255,255,.08);border-radius:10px;padding:1px 5px}
.bf-clear-row{justify-content:space-between;padding:6px 0;border-top:1px solid var(--border);margin-top:4px}
.bf-active-count{font-size:12px;color:var(--text-muted)}
.bf-clear-btn{background:none;border:1px solid var(--border);border-radius:var(--r);padding:4px 10px;font-size:12px;color:var(--text-muted);cursor:pointer}
.bf-clear-btn:hover{color:var(--text);border-color:var(--text-muted)}
.browse-results-bar{font-size:12px;color:var(--text-muted);margin-bottom:10px;padding:6px 0;border-top:1px solid var(--border)}
.browse-count b{color:var(--text)}
.browse-cards{display:flex;flex-direction:column;gap:8px}
.browse-card-wrap{position:relative}
.browse-card-accepted .scard{border-left:2px solid var(--teal-light)}
.browse-card-inner{position:relative}
.browse-card-accepted .scard-tag:first-child{background:rgba(45,212,191,.15);color:var(--teal-light);border:1px solid rgba(45,212,191,.25)}
/* Hide the icon-only action row inside browser cards — the labeled footer below is the canonical control surface here. */
.browse-card-wrap .scard-actions{display:none}
.browse-card-wrap .scard-name{padding-right:0}

/* Labeled action footer — text + icon buttons that replace the obscure icon-only row + the standalone "Ask AI" button. */
.browse-action-footer{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px 12px;border-top:1px solid var(--border-light);background:rgba(255,255,255,0.01)}
.bcard-act{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:transparent;border:1px solid var(--border);border-radius:6px;font-size:12.5px;color:var(--text-sec);cursor:pointer;transition:all .15s;line-height:1.1}
.bcard-act svg{width:13px;height:13px;flex-shrink:0}
.bcard-act:hover{border-color:var(--teal-light);color:var(--text);background:var(--surface)}
.bcard-act.active{background:rgba(45,212,191,.10);border-color:var(--teal-light);color:var(--teal-light)}
.bcard-act.active svg{stroke:var(--teal-light)}
.bcard-more-wrap{position:relative;margin-left:auto}
.bcard-more-menu{display:none;position:absolute;right:0;top:calc(100% + 4px);min-width:200px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-2);z-index:30;padding:4px;flex-direction:column}
.bcard-more-menu.open{display:flex}
.bcard-more-item{background:transparent;border:none;color:var(--text-sec);padding:8px 10px;font-size:12.5px;text-align:left;cursor:pointer;border-radius:4px}
.bcard-more-item:hover{background:var(--surface);color:var(--text)}
@media (max-width:640px){
  .browse-action-footer{gap:4px;padding:6px 8px 10px}
  .bcard-act{padding:5px 8px;font-size:12px}
  .bcard-act span{display:none}
  .bcard-act svg{width:14px;height:14px}
  .bcard-more-wrap{margin-left:auto}
  .bcard-act.bcard-more span{display:inline}
}

/* View header tip line — short helper string under the page title to orient first-time users. */
.view-help-tip{font-size:12.5px;color:var(--text-muted);margin-top:4px;font-weight:400;letter-spacing:.01em}

/* "More filters" toggle row */
.bf-more-row{margin:4px 0 2px}
.bf-more-toggle{background:transparent;border:1px dashed var(--border);border-radius:6px;padding:5px 10px;font-size:12px;color:var(--text-muted);cursor:pointer;display:inline-flex;align-items:center;gap:6px;letter-spacing:.02em}
.bf-more-toggle:hover{border-color:var(--teal-light);color:var(--text)}
.bf-more-toggle.open{border-style:solid;color:var(--text-sec)}
.bf-more-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 5px;background:var(--teal-light);color:#021B35;border-radius:8px;font-size:10.5px;font-weight:700;margin-left:2px}
.bf-row-adv{padding-left:6px;border-left:2px solid var(--border-light)}
.bf-input{padding:5px 9px;background:var(--surface-raised);border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:12px;outline:none}
.bf-input:focus{border-color:var(--teal-light)}
.bf-mini-btn{padding:5px 11px;background:var(--surface-raised);border:1px solid var(--border);border-radius:5px;color:var(--text-muted);font-size:11.5px;cursor:pointer}
.bf-mini-btn:hover{border-color:var(--teal-light);color:var(--text)}
.patent-filter-select{padding:7px 10px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:12.5px;cursor:pointer;outline:none}
.patent-filter-select:focus{border-color:var(--teal-light)}

/* Persistent comparison tray — pinned to bottom of the viewport in Startups view. */
.compare-tray{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:40;display:flex;align-items:center;gap:14px;background:var(--surface-raised);border:1px solid var(--teal-light);border-radius:999px;padding:8px 14px;box-shadow:var(--shadow-3,0 8px 24px rgba(0,0,0,.35));max-width:calc(100vw - 32px)}
.compare-tray .ct-msg{font-size:13px;color:var(--text);font-weight:500;display:flex;align-items:center;gap:8px}
.compare-tray .ct-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;background:var(--teal-light);color:#021B35;border-radius:12px;font-size:13px;font-weight:700}
.compare-tray .ct-actions{display:flex;gap:8px}
.compare-tray .btn{white-space:nowrap}
@media (max-width:640px){
  .compare-tray{bottom:12px;padding:6px 10px;gap:8px;border-radius:14px}
  .compare-tray .ct-msg{font-size:12px}
}

/* ════════════════════════════════════════════════════════════════════════
   V2 BRAND OVERRIDE — warm cream + teal/serif aesthetic from /dashboard
   Redirects dark-mode tokens to the MDSS palette and applies the self-hosted
   MSD Invention typeface globally. Removing this block restores the
   original dark theme.
   ════════════════════════════════════════════════════════════════════════ */
:root{
  /* MSD brand palette — v2.106, mapped from MSD Brand & Identity Guidelines V3.2.
     This single block drives the whole SPA (it also remaps the legacy chrome
     tokens below), so the re-skin propagates everywhere. */
  --teal:#00857C;--teal-light:#6ECEB2;--teal-dark:#006A5F;   /* MSD Teal (Pantone 3282 C) + Light Teal; -dark is AA-safe for small text/links */
  --warm:#A06D39;--warm-light:#BF874E;                       /* MSD tertiary tan/brown */
  --sage:#5A8F7F;--sage-light:#6ECEB2;                        /* teal-green family (distinct chart hue) */
  --slate:#5450E4;--slate-light:#688CE8;                      /* MSD secondary periwinkle / blue */
  --rose:#C8102E;                                            /* brand-adjacent red for errors */
  --bg-cream:#F7F7F7;--bg-cream-2:#EEEEEC;--bg-elev:#ffffff;  /* MSD cool off-white (was warm cream) */
  --line:#E1E1DF;--line-soft:#ECECEA;
  --ink:#1b2027;--ink-2:#4b5560;--ink-3:#7d8690;             /* cool dark neutrals to match the off-white */
  --serif:'Invention',Arial,"Helvetica Neue",Helvetica,system-ui,sans-serif;  /* MSD is sans-only — serif role now Invention */
  --sans:'Invention',Arial,"Helvetica Neue",Helvetica,system-ui,sans-serif;   /* MSD primary typeface (self-hosted), Arial fallback */
  --shadow-sm:0 1px 4px rgba(0,0,0,0.06),0 4px 16px rgba(0,0,0,0.04);
  --shadow-md:0 4px 12px rgba(0,0,0,0.1),0 12px 32px rgba(0,0,0,0.06);

  /* Remap legacy tokens — existing rules keep working but flipped to light */
  --navy:#ffffff;--navy-deep:var(--bg-cream);--navy-mid:var(--bg-cream-2);
  --blue:var(--teal);--blue-light:var(--teal-light);
  --green:var(--teal);
  --amber:var(--warm);--red:var(--rose);
  --surface:#ffffff;--surface-raised:#ffffff;--surface-card:#ffffff;
  --surface-hover:var(--bg-cream-2);
  --border:var(--line);--border-light:var(--line-soft);--border-active:var(--teal);
  --text:var(--ink);--text-sec:var(--ink-2);--text-muted:var(--ink-3);
  --font:var(--sans);--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}

body{background:var(--bg-cream);color:var(--ink);font-family:var(--sans);font-weight:400;line-height:1.55}
a{color:var(--teal-dark)}a:hover{color:var(--teal)}  /* v2.106 — teal-dark for AA on small link text; brighter MSD Teal on hover */

/* Headings — Invention (medium weight) for hero/section titles */
.welcome h2,.view-header h2,.admin-section h3,.login-card h1,.dash-num,.stat-card .stat-value,.dash-brand{font-family:var(--serif);letter-spacing:-0.005em;font-weight:500}
/* v2.109 — text headings kept the dark-theme color:#fff (app.css:382) after the
   re-skin → white-on-cream (Martin caught "Startup Map" invisible). Reset to ink.
   Numbers (.dash-num/.stat-value) keep their own accent colors — not listed here. */
.welcome h2,.view-header h2,.admin-section h3,.login-card h1{color:var(--ink)}
.login-card h1{font-size:30px;font-weight:500}
.welcome h2{font-size:32px;font-weight:500}
.view-header h2{font-size:24px;font-weight:500}

/* Login page */
.login-page{background:linear-gradient(135deg,var(--bg-cream) 0%,var(--bg-cream-2) 100%)}
.login-card{background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-md)}
.login-card .logo{color:var(--teal);font-family:var(--sans);font-weight:600;letter-spacing:0.12em;text-transform:uppercase}
.login-card .sub{color:var(--ink-3)}
.form-group input{background:#fff;border:1px solid var(--line);color:var(--ink)}
.form-group input::placeholder{color:var(--ink-3)}
.form-group input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(45,110,101,0.08)}
.form-group label{color:var(--ink-2);font-weight:500}

/* Buttons */
.btn{font-family:var(--sans);font-weight:500;border-radius:6px;letter-spacing:0.01em}
.btn-primary{background:var(--teal);color:#fff}.btn-primary:hover{background:var(--teal-dark)}
.btn-outline{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.btn-outline:hover{background:var(--bg-cream-2);border-color:var(--teal);color:var(--teal)}
.btn-teal{background:var(--teal)}.btn-teal:hover{background:var(--teal-dark)}
.btn-danger{background:var(--rose)}

/* Sidebar — light cream with teal accents */
.sidebar{background:#fff;border-right:1px solid var(--line)}
.sb-brand h1{color:var(--ink);font-family:var(--serif);font-size:17px;font-weight:500;letter-spacing:-0.005em;line-height:1.2}
.sb-brand .sub{color:var(--ink-3);font-size:10.5px;letter-spacing:0.01em;text-transform:none;margin-top:4px;line-height:1.35}
.sb-label{color:var(--ink-3);font-weight:600;letter-spacing:0.12em}
.sb-item{color:var(--ink-2);font-weight:500}
.sb-item:hover{background:var(--bg-cream-2);color:var(--ink)}
.sb-item.active{background:var(--teal);color:#fff;box-shadow:0 1px 3px rgba(45,110,101,0.25)}
.sb-item .badge{background:var(--bg-cream-2);color:var(--ink-2)}
.sb-item.active .badge{background:rgba(255,255,255,0.2);color:#fff}
.sb-src{color:var(--ink-3)}
.sb-dot.on{background:var(--teal)}.sb-dot.wait{background:var(--warm)}.sb-dot.off{background:var(--ink-3);opacity:.35}
.sb-history{padding:4px 8px}
.sb-hist-item{color:var(--ink-3)}
.sb-hist-item:hover{background:var(--bg-cream-2);color:var(--ink-2)}
.sb-hist-item.active{color:var(--teal)}
.sb-user{border-top:1px solid var(--line)}
.sb-avatar{background:var(--teal);color:#fff}
.sb-uname{color:var(--ink)}.sb-urole{color:var(--ink-3)}
.sb-logout{color:var(--ink-3)}.sb-logout:hover{color:var(--rose)}
.sb-version{color:var(--ink-3);opacity:.4}
/* v3.0 — sidebar polish: clearer group separation, calmer section labels, and a
   single solid-teal active pill (dropped the pale left-accent sliver that read
   as noise on the light chrome). */
.sb-nav{padding:8px 10px}
.sb-label{margin-top:13px;font-size:9px;color:var(--ink-3);opacity:.85}
.sb-label:first-child{margin-top:2px}
.sb-item{margin-bottom:2px}
.sb-item.active::before{display:none}
.sb-item.active{box-shadow:0 1px 3px rgba(0,133,124,.28)}

/* Topbar */
.topbar{background:#fff;border-bottom:1px solid var(--line);height:54px}
.topbar-title{font-family:var(--serif);font-size:18px;font-weight:500;color:var(--ink);letter-spacing:-0.005em}
.topbar-stats{color:var(--ink-3)}.topbar-stats b{color:var(--ink);font-family:var(--serif);font-weight:500;font-size:15px}

/* Welcome / chips */
.welcome p{color:var(--ink-2)}
.wchip{background:#fff;border:1px solid var(--line);color:var(--teal);font-weight:500}
.wchip:hover{border-color:var(--teal);background:var(--bg-cream-2)}

/* Chat messages */
.msg.user .msg-content{background:var(--teal);color:#fff}
.msg.ai .msg-avatar{background:var(--teal);color:#fff;font-family:var(--sans)}
.msg-text{background:#fff;border:1px solid var(--line);color:var(--ink-2);box-shadow:var(--shadow-sm)}
.msg-text strong{color:var(--ink);font-weight:600}
.msg-header{color:var(--teal);font-weight:600;letter-spacing:0.1em}
.msg-li{color:var(--ink-2)}
.typing-dots{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.typing-dots span{background:var(--ink-3)}

/* Chat alert */
.chat-alert{background:rgba(139,97,68,0.07);border:1px solid rgba(139,97,68,0.22);color:var(--warm)}
.chat-alert-dot{background:var(--warm)}

/* Cards (scard) */
.scard{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.scard:hover{border-color:var(--teal);box-shadow:var(--shadow-md)}
.scard-name{color:var(--ink);font-family:var(--serif);font-size:17px;font-weight:500;letter-spacing:-0.005em}
.scard-tagline{color:var(--ink-2)}
.scard-meta{color:var(--ink-3)}
.scard-action{color:var(--ink-3)}
.scard-action:hover{background:var(--bg-cream-2);color:var(--teal)}
.scard-action::after{background:var(--ink);color:#fff;border:none}
.scard-expand{color:var(--ink-3)}.scard:hover .scard-expand{color:var(--teal)}
.scard-tag{font-weight:600;font-size:9.5px;letter-spacing:0.08em;text-transform:uppercase}
.scard-tag.teal{background:rgba(45,110,101,.10);color:var(--teal);border-color:rgba(45,110,101,.25)}
.scard-tag.blue{background:rgba(74,90,114,.10);color:var(--slate);border-color:rgba(74,90,114,.20)}
.scard-tag.gray{background:var(--bg-cream-2);color:var(--ink-2);border-color:var(--line)}
.scard-highlight{background:rgba(45,110,101,0.05);border-left-color:var(--teal);color:var(--ink-2)}
.scard-score.high{background:rgba(45,110,101,.15);color:var(--teal);border-color:rgba(45,110,101,.3)}
.scard-score.mid{background:rgba(139,97,68,.12);color:var(--warm);border-color:rgba(139,97,68,.25)}
.scard-score.low{background:var(--bg-cream-2);color:var(--ink-2);border-color:var(--line)}
.scard-detail{border-top:1px solid var(--line)}
.detail-grid .detail-label{color:var(--ink-3);font-weight:600;letter-spacing:0.08em}
.detail-grid .detail-value{color:var(--ink-2)}
.detail-text-block{background:var(--bg-cream);border:1px solid var(--line);color:var(--ink-2)}
.detail-contact{background:var(--bg-cream);border:1px solid var(--line)}
.detail-contact-avatar{background:var(--teal);color:#fff}
.dc-name{color:var(--ink)}.dc-title{color:var(--ink-3)}.dc-email{color:var(--teal)}
.detail-link{background:#fff;border:1px solid var(--line);color:var(--teal)}
.detail-link:hover{border-color:var(--teal);background:var(--bg-cream-2)}

/* Follow-up */
.follow-btn{background:#fff;border:1px solid var(--line);color:var(--teal);border-radius:18px}
.follow-btn:hover{border-color:var(--teal);background:var(--bg-cream-2)}
.lrw-box{background:rgba(184,134,11,0.06);border-color:rgba(184,134,11,0.3)}
.lrw-head{color:#996600}
.lrw-chip{background:#fff;border-color:var(--line);color:var(--text)}
.lrw-chip:hover{border-color:var(--teal);background:var(--bg-cream-2);color:var(--teal)}
.lrw-show-all{background:#fff;border-color:var(--line)}

/* Input bar */
.input-bar{background:#fff;border-top:1px solid var(--line)}
.input-box{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:10px}
.input-box:focus-within{border-color:var(--teal);box-shadow:0 0 0 3px rgba(45,110,101,0.08)}
.input-box input{color:var(--ink)}
.input-box input::placeholder{color:var(--ink-3)}
.send-btn{background:var(--teal)}.send-btn:hover{background:var(--teal-dark)}
.attach-btn:hover{color:var(--teal)}
.attach-chip{background:#fff;border:1px solid var(--line)}
.attach-chip-icon{color:var(--teal)}
.stop-btn{background:var(--rose)}

/* History / Saved / Compare / Admin / Analytics tables */
.hist-card,.saved-card,.alert-card{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.hist-card:hover{border-color:var(--teal)}
.hist-title{color:var(--ink)}.hist-date{color:var(--ink-3)}
.hist-delete{color:var(--ink-3)}.hist-delete:hover{color:var(--rose);background:rgba(139,74,84,0.08)}
.saved-card .saved-name{color:var(--ink)}.saved-card .saved-meta{color:var(--ink-3)}
.saved-name-link{color:var(--teal)}.saved-name-link:hover{color:var(--teal-dark)}
.saved-detail-panel{border-top:1px solid var(--line)}
.compare-table th{background:var(--bg-cream-2);color:var(--ink-3);border-bottom:1px solid var(--line);font-weight:600;letter-spacing:0.08em}
.compare-table td{color:var(--ink-2);border-bottom:1px solid var(--line-soft)}
.compare-table tr:hover td{background:var(--bg-cream)}
/* Light-mode Accepted/Not-accepted pills — strong contrast on cream surface */
.cmp-acc-yes{background:rgba(45,110,101,.10);color:#1c5a52;border-color:rgba(45,110,101,.40)}
.cmp-acc-no{background:rgba(139,97,68,.10);color:#6e4630;border-color:rgba(139,97,68,.35)}
.admin-table th{background:var(--bg-cream-2);color:var(--ink-3);border-bottom:1px solid var(--line);font-weight:600;letter-spacing:0.08em}
.admin-table td{color:var(--ink-2);border-bottom:1px solid var(--line-soft)}
.invite-result{background:#fff;border:1px solid var(--teal);color:var(--ink-2)}
.stat-card{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:8px}
.stat-card .stat-value{font-size:36px;color:var(--ink);font-weight:500}
.stat-card .stat-label{color:var(--ink-3);font-weight:600;letter-spacing:0.1em;text-transform:uppercase}
.chart-bar{background:var(--teal)}
.top-list li{color:var(--ink-2);border-bottom:1px solid var(--line-soft)}
.top-list li .count{color:var(--teal);font-family:var(--serif);font-size:14px;font-weight:500}

/* Alerts */
.alert-builder,.alert-card{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:8px}
.alert-card:hover{border-color:var(--teal)}
.alert-label{color:var(--ink-3)}
.alert-input,.alert-select{background:#fff;border:1px solid var(--line);color:var(--ink)}
.alert-input:focus,.alert-select:focus{border-color:var(--teal)}
.alert-card-query{color:var(--ink)}
.alert-freq-badge{background:rgba(45,110,101,0.10);color:var(--teal)}
.alert-tag{background:var(--bg-cream-2);border:1px solid var(--line);color:var(--ink-2)}
.alert-card-meta{color:var(--ink-3)}
.alert-match-count{color:var(--teal)}

/* Patents view */
.patent-stats-bar{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.patent-stat-val{color:var(--teal);font-family:var(--serif);font-size:28px;font-weight:500}
.patent-stat-lbl{color:var(--ink-3);font-weight:600;letter-spacing:0.1em}
.patent-search-input{background:#fff;border:1px solid var(--line);color:var(--ink)}
.patent-search-input:focus{border-color:var(--teal)}
.patent-chip{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.patent-chip:hover,.patent-chip.active{background:rgba(45,110,101,0.08);border-color:var(--teal);color:var(--teal)}
.patent-chip-count{color:var(--ink-3)}
.patent-card{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.patent-card:hover{border-color:var(--teal)}
.patent-title{color:var(--ink);font-family:var(--serif);font-weight:500;font-size:15px;letter-spacing:-0.003em}
.patent-num{color:var(--ink-3)}
.patent-status{background:rgba(45,110,101,0.12);color:var(--teal)}
.patent-status.pending{background:rgba(139,97,68,0.12);color:var(--warm)}
.patent-desc{color:var(--ink-2)}
.patent-footer{border-top:1px solid var(--line-soft)}
.patent-date{color:var(--ink-3)}
.patent-detail-btn{color:var(--teal)}.patent-detail-btn:hover{color:var(--teal-dark)}
.patent-expand-panel{background:var(--bg-cream);border-top:1px solid var(--line-soft)}
.pd-label{color:var(--ink-3);font-weight:600;letter-spacing:0.1em}
.pd-text{color:var(--ink-2)}
.pd-tag{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.related-patent-item{background:#fff;border:1px solid var(--line)}
.rp-title{color:var(--ink)}
.rp-num{color:var(--ink-3)}
.rp-badge{background:rgba(45,110,101,0.12);color:var(--teal)}
.rp-desc{color:var(--ink-3)}

/* Browse */
.browse-search-input,.browse-sort-select{background:#fff;border:1px solid var(--line);color:var(--ink)}
.browse-search-input:focus{border-color:var(--teal)}
.bf-label{color:var(--ink-3);font-weight:600;letter-spacing:0.1em}
.bf-chip,.bf-chip-sector{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.bf-chip:hover,.bf-chip-sector:hover{border-color:var(--teal);color:var(--teal)}
.bf-chip.active,.bf-chip-sector.active{background:rgba(45,110,101,0.10);border-color:var(--teal);color:var(--teal)}
.bf-count{background:var(--bg-cream-2);color:var(--ink-3)}
.bf-clear-row{border-top:1px solid var(--line)}
.bf-clear-btn{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.bf-clear-btn:hover{border-color:var(--teal);color:var(--teal)}
.browse-results-bar{color:var(--ink-3);border-top:1px solid var(--line)}
.browse-count b{color:var(--ink)}
.browse-card-accepted .scard{border-left:3px solid var(--teal)}
.browse-card-accepted .scard-tag:first-child{background:rgba(45,110,101,0.12);color:var(--teal);border-color:rgba(45,110,101,0.25)}
/* Light-mode browse action footer + comparison tray + more-filters toggle */
.browse-action-footer{background:var(--bg-cream);border-top:1px solid var(--line-soft)}
.bcard-act{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.bcard-act:hover{border-color:var(--teal);color:var(--teal);background:var(--bg-cream-2)}
.bcard-act.active{background:rgba(45,110,101,0.10);border-color:var(--teal);color:var(--teal)}
.bcard-more-menu{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm)}
.bcard-more-item{color:var(--ink-2)}
.bcard-more-item:hover{background:var(--bg-cream-2);color:var(--teal)}
.bf-more-toggle{border-color:var(--line);color:var(--ink-3)}
.bf-more-toggle:hover{border-color:var(--teal);color:var(--teal)}
.bf-more-count{background:var(--teal);color:#fff}
.compare-tray{background:#fff;border:1px solid var(--teal);box-shadow:var(--shadow-sm)}
.compare-tray .ct-msg{color:var(--ink)}
.compare-tray .ct-count{background:var(--teal);color:#fff}
.view-help-tip{color:var(--ink-3)}

/* Map */
.map-filter-btn{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.map-filter-btn:hover{background:var(--bg-cream-2);border-color:var(--teal);color:var(--teal)}
.map-filter-btn.active{background:var(--teal);border-color:var(--teal);color:#fff}
.map-stats{color:var(--ink-3)}
.map-search,.map-select,.map-mode-toggle{background:#fff;border-color:var(--line);color:var(--ink-2)}
.map-mode-btn{color:var(--ink-3)}
.map-mode-btn.active{background:var(--teal);color:#fff}
.map-filter-row{background:var(--bg-cream-2);border-color:var(--line)}
.map-filter-group>label{color:var(--ink-3)}
.map-clear-btn{background:#fff;border-color:var(--line);color:var(--ink-3)}
.map-clear-btn:hover{border-color:var(--red);color:var(--red)}
.map-stats b{color:var(--ink)}
.map-legend{color:var(--ink-3)}
.leaflet-popup-content-wrapper{background:#fff;border:1px solid var(--line);color:var(--ink);box-shadow:var(--shadow-md)}
.leaflet-popup-tip{background:#fff;border:1px solid var(--line)}

/* V1 Dashboard — match the V2 cream/teal/serif brand */
.dashboard{background:var(--bg-cream)}
.dash-topbar{background:#fff;border-bottom:1px solid var(--line);padding:14px 28px}
.dash-brand{color:var(--ink);font-family:var(--serif);font-size:20px;font-weight:500;letter-spacing:-0.005em}
.dash-time{color:var(--ink-3);font-family:var(--sans)}
.dash-btn{background:#fff;border:1px solid var(--line);color:var(--ink-2);font-family:var(--sans);font-weight:500;border-radius:6px}
.dash-btn:hover{background:var(--bg-cream-2);border-color:var(--teal);color:var(--teal)}
.dash-body{padding:28px}
.dash-footer{background:#fff;color:var(--ink-3);border-top:1px solid var(--line);font-family:var(--sans)}
.dash-card,.dash-panel{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:6px;padding:22px}
.dash-num{color:var(--ink);font-family:var(--serif);font-size:42px;font-weight:500;line-height:1}
.dash-label{color:var(--ink-3);font-weight:600;letter-spacing:0.12em;text-transform:uppercase;font-family:var(--sans)}
.dash-sub{color:var(--teal);font-family:var(--sans);font-weight:500}
.dash-sparkline{margin-top:12px}
.dash-spark-bar{background:var(--teal);border-radius:2px 2px 0 0}
.dash-panel-title{color:var(--ink-3);font-weight:600;letter-spacing:0.12em;text-transform:uppercase;font-family:var(--sans);font-size:11px}
.dash-feed-user{color:var(--teal);font-family:var(--sans);font-weight:600}
.dash-feed-query{color:var(--ink);font-family:var(--sans)}
.dash-feed-time{color:var(--ink-3)}
.dash-feed-count{color:var(--warm);font-family:var(--serif);font-size:14px;font-weight:500}
.dash-feed-item{border-bottom:1px solid var(--line-soft);padding:7px 0}
.dash-bar-row{display:grid;grid-template-columns:120px 1fr 60px;align-items:center;gap:12px;padding:6px 0}
.dash-bar-label{color:var(--ink-2);font-family:var(--sans);font-size:12px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-bar-track{background:var(--bg-cream);height:8px;border-radius:4px}
.dash-bar-fill{background:var(--teal);border-radius:4px}
.dash-bar-acc{background:var(--warm);border-radius:4px}
.dash-bar-val{color:var(--ink);font-family:var(--serif);font-size:16px;font-weight:500;text-align:right}
.dash-loading{color:var(--ink-3);font-family:var(--sans)}
@media(max-width:900px){.dash-bar-row{grid-template-columns:90px 1fr 50px}}

/* Mobile bottom nav */
.mobile-nav{background:#fff;border-top:1px solid var(--line);box-shadow:0 -2px 12px rgba(0,0,0,0.04)}
.mobile-nav-item{color:var(--ink-3);font-family:var(--sans)}
.mobile-nav-item.active{color:var(--teal)}
.mobile-nav-badge{background:var(--teal);color:#fff}

/* Scrollbars */
.chat-area::-webkit-scrollbar-thumb,.view::-webkit-scrollbar-thumb{background:var(--line)}

/* Card overflow menu */
.scard-overflow-menu{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-md)}
.scard-overflow-item{color:var(--ink-2)}
.scard-overflow-item:hover{background:var(--bg-cream-2);color:var(--ink)}

/* Send button on mobile */
@media(max-width:900px){
  .topbar-short{font-family:var(--serif);font-size:18px;font-weight:500;letter-spacing:-0.005em}
}

/* Stream cursor */
.stream-cursor{color:var(--teal)}

/* Resp action buttons (meeting prep / DD export) */
.resp-action-btn{background:rgba(45,110,101,0.06);border-color:var(--teal);color:var(--teal)}
.resp-action-btn:hover{background:rgba(45,110,101,0.14);color:var(--teal-dark)}

/* Saved bookmark filled */
.scard-save.saved{color:var(--warm)}
.scard-action.saved{color:var(--warm)}

/* Hist PDF */
.hist-pdf{color:var(--ink-3)}.hist-pdf:hover{color:var(--teal);background:rgba(45,110,101,0.08)}

/* Export results btn */
.export-results-btn{background:#fff;border:1px solid var(--line);color:var(--ink-3)}
.export-results-btn:hover{border-color:var(--teal);color:var(--teal)}

/* Per-message export action buttons */
.msg-actions-row{border-top:1px solid var(--line)}
.msg-action-btn{background:#fff;border:1px solid var(--line);color:var(--ink-3)}
.msg-action-btn:hover{border-color:var(--teal);color:var(--teal);background:rgba(45,110,101,0.04)}

/* Clickable startup links + popup — light theme */
.tbl-startup{color:var(--teal);border-bottom:1px dashed rgba(45,110,101,0.5)}
.tbl-startup:hover{color:var(--teal-dark);border-bottom-color:var(--teal-dark);background:rgba(45,110,101,0.08)}
.tbl-popup{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-md)}
.tbl-popup-header{color:var(--ink);border-bottom:1px solid var(--line)}
.tbl-popup-item{color:var(--ink-2)}
.tbl-popup-item:hover{background:var(--bg-cream-2);color:var(--ink)}
.tbl-popup-item svg{color:var(--teal)}

/* In-message tables — light theme */
.msg-table-wrap{background:#fff;border:1px solid var(--line)}
.msg-table{color:var(--ink)}
.msg-table thead th{background:linear-gradient(180deg,var(--bg-cream-2) 0%,var(--bg-cream) 100%);color:var(--teal-dark);border-bottom:1px solid var(--teal)}
.msg-table tbody td{border-bottom:1px solid var(--line)}
.msg-table tbody tr:nth-child(even) td{background:var(--bg-cream)}
.msg-table tbody tr:hover td{background:rgba(45,110,101,0.05)}
.msg-table tbody td strong{color:var(--ink)}

/* Voice UI — mic button + auto-play mute toggle (v2.30) */
.mic-btn{background:transparent;border:none;padding:0 6px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;flex-shrink:0;align-self:stretch;transition:color .15s}
.mic-btn:hover{color:var(--blue)}
.mic-btn svg{width:18px;height:18px}
.mic-btn.recording{color:var(--red);animation:mic-pulse 1.2s ease-in-out infinite}
.mic-btn.recording svg{filter:drop-shadow(0 0 4px rgba(217,64,82,0.55))}
.mic-btn.processing{color:var(--text-muted)}
.mic-btn.processing .mic-ico-spin svg{animation:mic-spin 1s linear infinite}
.mic-btn.playing{color:var(--teal);box-shadow:inset 0 0 0 0 transparent;animation:mic-halo 1.4s ease-in-out infinite}
.mic-mute-btn{background:transparent;border:none;padding:0 4px 0 0;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;flex-shrink:0;align-self:stretch;transition:color .15s}
.mic-mute-btn:hover{color:var(--blue)}
.mic-mute-btn svg{width:16px;height:16px}
.mic-mute-btn.on{color:var(--teal)}
@keyframes mic-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.08)}}
@keyframes mic-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes mic-halo{0%,100%{filter:drop-shadow(0 0 0 rgba(29,158,117,0))}50%{filter:drop-shadow(0 0 6px rgba(29,158,117,0.65))}}
.live-mode-btn{background:transparent;border:none;padding:0 6px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;flex-shrink:0;align-self:stretch;transition:color .15s}
.live-mode-btn:hover{color:var(--teal)}
.live-mode-btn svg{width:18px;height:18px}
/* Summary mode toggle (v2.40) — short-form answers. Same chrome as mic/live
   buttons; turns teal when active so it reads as an engaged state, not just
   a hover. Same icon language as the rest of the input bar (lines stack). */
.summary-mode-btn{background:transparent;border:none;padding:0 6px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;flex-shrink:0;align-self:stretch;transition:color .15s}
.summary-mode-btn:hover{color:var(--teal)}
.summary-mode-btn svg{width:18px;height:18px}
.summary-mode-btn.active{color:var(--teal)}
.summary-mode-btn.active svg{filter:drop-shadow(0 0 3px rgba(29,158,117,0.55))}
.live-mode-btn.listening{color:var(--teal);animation:live-pulse 1.6s ease-in-out infinite}
.live-mode-btn.thinking{color:var(--teal);opacity:.7}
.live-mode-btn.thinking svg{animation:mic-spin 1.4s linear infinite}
.live-mode-btn.speaking{color:var(--teal);animation:mic-halo 1.2s ease-in-out infinite}
@keyframes live-pulse{0%,100%{filter:drop-shadow(0 0 0 rgba(29,158,117,0));transform:scale(1)}50%{filter:drop-shadow(0 0 8px rgba(29,158,117,0.7));transform:scale(1.08)}}
.live-captions{position:absolute;left:50%;transform:translateX(-50%);bottom:100%;margin-bottom:8px;max-width:80%;min-width:200px;padding:8px 12px;background:rgba(20,28,38,0.92);color:#fff;border-radius:10px;font-size:13.5px;line-height:1.4;box-shadow:0 4px 14px rgba(0,0,0,0.25);pointer-events:none;z-index:5}
.live-captions .live-state-badge{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--teal-light,#5fd0ad);margin-bottom:4px;font-weight:600}
/* Live STOP button — context-sensitive interrupt. Added v2.39. */
.live-captions .live-stop-btn{position:absolute;top:6px;right:8px;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.18);color:#fff;width:22px;height:22px;border-radius:50%;font-size:11px;line-height:1;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;pointer-events:auto;transition:background .12s ease}
.live-captions .live-stop-btn:hover{background:rgba(255,80,80,0.5);border-color:rgba(255,120,120,0.8)}
.live-captions{pointer-events:none}
.live-captions .live-stop-btn{pointer-events:auto}
.live-captions .confirmed{opacity:1}
.live-captions .interim{opacity:.55;font-style:italic}
.input-bar{position:relative}

/* Scouting sub-tabs (v2.39) — three-pane navigation inside the unified Scouting view.
   Discoveries (feed) / Run history (job log) / Configure (per-source settings).
   Visual style matches the Linear pattern: 2px bottom border indicator, no chrome. */
.scout-tabs{display:flex;gap:24px;border-bottom:1px solid var(--border);margin:8px 0 24px;padding:0}
.scout-tab{background:none;border:0;padding:10px 0;font:inherit;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;letter-spacing:.01em;transition:color .12s ease}
.scout-tab:hover{color:var(--text-secondary)}
.scout-tab.active{color:var(--text-primary);border-bottom-color:var(--teal)}

/* ════════════════════════════════════════════════════════════════════════
   v2.48 — MOBILE BEST-PRACTICE PATCH BLOCK
   ════════════════════════════════════════════════════════════════════════
   This block fixes the "have to manually resize on iPhone / iPad / Android"
   complaint. The single biggest culprit is iOS Safari's auto-zoom on any
   <input>, <select>, or <textarea> with font-size < 16px — tapping any
   such field zooms the page in and never zooms back out, leaving the layout
   permanently "off". Fix: force ≥ 16px on every form control under 900px.
   Desktop density unchanged because the rule lives inside the media query.
   ──────────────────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
  /* iOS Safari auto-zooms when the user focuses an input < 16px. Force every
     focusable form control to 16px on small viewports — kills auto-zoom on
     all inputs at once without per-field churn. */
  .app input[type="text"],
  .app input[type="email"],
  .app input[type="password"],
  .app input[type="search"],
  .app input[type="number"],
  .app input[type="tel"],
  .app input[type="url"],
  .app input[type="date"],
  .app input:not([type]),
  .app textarea,
  .app select,
  .login-card input,
  .login-card select {
    font-size: 16px !important;
  }

  /* Touch-target floor — Apple HIG + Material both call 44×44 px the minimum
     comfortably tappable area. Most chrome buttons already exceed this, but
     small action chips (export row, feedback row, popup actions) can fall
     under. min-height + content-aligning padding makes them tappable without
     making them visually larger than necessary. */
  .app button,
  .app .btn,
  .app .wchip,
  .app .scard-action,
  .app .msg-fb-btn,
  .app .msg-action-btn {
    min-height: 36px;
  }
  .app .mobile-nav-item { min-height: 56px; } /* bottom-nav row, must be big */
  .app .send-btn,
  .app .stop-btn { min-height: 40px; }

  /* Prevent any sub-element from forcing the page wider than the viewport.
     A single oversized table or pre block triggers mobile zoom-out, which
     leaves the user staring at a tiny page they have to pinch to read. */
  .main, .chat-area, .view, .msg-text {
    max-width: 100vw;
    overflow-wrap: break-word;
    word-wrap: break-word;
  }

  /* Long URLs, code, or comma-glued lists shouldn't force horizontal scroll
     of the whole message body. break-word lets them wrap mid-token. */
  .msg-text a,
  .msg-text code,
  .corr-field-val,
  .memv-text { overflow-wrap: anywhere; word-break: break-word; }

  /* Safe-area inset top for the topbar (status bar / Dynamic Island / notch).
     Already partly applied in the 900px block above — this re-asserts it
     after our overrides so order doesn't matter. */
  .topbar {
    padding-top: max(env(safe-area-inset-top), 8px);
  }

  /* Avoid the iOS keyboard pushing the fixed input bar out of view. The
     `visualViewport` API would be the precise fix but is JS-heavy; this
     constraint at least keeps the input bar above the keyboard on most
     OS versions by relying on the viewport units sliding with the keyboard. */
  .input-bar {
    /* When iOS keyboard opens, `100dvh` shrinks. Use `padding-bottom` w/ safe
       area so the input stays clear of the home indicator. */
    padding-bottom: calc(8px + env(safe-area-inset-bottom)) !important;
  }
}

/* ──────────────────────────────────────────────────────────────────────
   Narrow-phone tier (< 420 px) — iPhone SE / older Androids.
   Trim padding so cards/buttons don't feel boxed-in.
   ────────────────────────────────────────────────────────────────────── */
@media (max-width: 420px) {
  .view { padding-left: 12px; padding-right: 12px; }
  .chat-area { padding-left: 10px; padding-right: 10px; }
  .welcome { padding-left: 8px; padding-right: 8px; }
  .topbar { padding-left: 10px; padding-right: 10px; }
  .login-card { padding: 24px 18px; }
  /* Drop the second word of long sidebar/topbar labels — "Learned
     Corrections" → "Corrections" on tiny screens via title visibility */
  .topbar-stats { font-size: 10.5px; }
}

/* ──────────────────────────────────────────────────────────────────────
   Tablet tier (901-1100 px) — iPad portrait sits in this range.
   Sidebar is shown (240px) but content can feel cramped. Tighten the
   sidebar slightly and reduce view padding so chat + cards have room.
   ────────────────────────────────────────────────────────────────────── */
@media (min-width: 901px) and (max-width: 1100px) {
  :root { --sidebar-w: 220px; }
  .view { padding-left: 18px; padding-right: 18px; }
  .chat-area { padding-left: 18px; padding-right: 18px; }
}

/* ──────────────────────────────────────────────────────────────────────
   Landscape phone — short height + wide layout. The bottom nav (56px)
   + input bar (54px) eat half the viewport in landscape, leaving the
   chat area cramped. Compact those so the chat keeps real estate.
   ────────────────────────────────────────────────────────────────────── */
@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
  .mobile-nav { padding-bottom: 0; }
  .mobile-nav-item { padding: 6px 2px 4px; font-size: 9px; }
  .mobile-nav-item svg { width: 16px; height: 16px; }
  .topbar { height: calc(44px + env(safe-area-inset-top)); }
  .input-bar { padding-top: 4px; padding-bottom: 4px; }
}

/* ──────────────────────────────────────────────────────────────────────
   Reduced-motion preference — respect the OS setting.
   ────────────────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* v2.49 — Persona confirmation step + About-me banner + re-prompt banner */
.pw-persona-list{display:flex;flex-direction:column;gap:10px;margin:14px 0}
.pw-persona-card{background:var(--surface-raised);border:1px solid rgba(29,158,117,0.30);border-left:3px solid var(--teal);border-radius:8px;padding:12px 14px}
.pw-persona-name{font-size:14px;font-weight:600;color:var(--teal-light);margin-bottom:4px}
.pw-persona-desc{font-size:13px;color:var(--text-sec);line-height:1.5}
.pw-persona-multi-note{font-size:12px;color:var(--text-muted);font-style:italic;padding:8px 12px;background:rgba(255,255,255,0.03);border-radius:6px;margin-top:4px}
.ps-persona-banner{background:rgba(29,158,117,0.10);border:1px solid rgba(29,158,117,0.30);border-radius:10px;padding:14px 18px;margin-bottom:20px}
.ps-persona-banner-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-weight:600;margin-bottom:4px}
.ps-persona-banner-name{font-size:16px;font-weight:600;color:var(--teal-light);margin-bottom:6px}
.ps-persona-banner-desc{font-size:13px;color:var(--text-sec);line-height:1.5}
.ps-persona-empty{background:rgba(232,163,23,0.10);border-color:rgba(232,163,23,0.30);color:var(--amber);font-size:13px}
.persona-finalize-banner{position:fixed;top:max(60px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);max-width:min(680px,94vw);z-index:500;display:flex;align-items:center;gap:10px;padding:10px 14px;background:#102F52;border:1px solid rgba(232,163,23,0.40);border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,0.45);font-size:13px;color:var(--text);animation:fadeUp .25s ease}
.persona-finalize-banner svg{color:var(--amber)}
.pfb-text{flex:1;line-height:1.45}
.pfb-text b{color:var(--amber)}
.pfb-btn{padding:6px 12px;background:var(--teal);border:none;border-radius:6px;color:#fff;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.pfb-btn:hover{background:var(--teal-light)}
.pfb-close{background:transparent;border:none;color:var(--text-muted);font-size:18px;line-height:1;cursor:pointer;padding:2px 6px}
.pfb-close:hover{color:var(--text)}
@media (max-width:600px){.persona-finalize-banner{flex-wrap:wrap}.pfb-text{flex-basis:100%;font-size:12px}}


/* ════════════════════════════════════════════════════════════════════
   v2.51 — Network graph view
   ════════════════════════════════════════════════════════════════════ */
/* v2.87 — full-bleed view: drop the base .view 24px padding so .graph-shell's
   `100vh - 60px` doesn't overflow the viewport (same fix as the feature-request
   panes / .dashv2-host). */
.view#viewGraph{padding:0;overflow:hidden}
.graph-shell{display:flex;height:calc(100vh - 60px);background:var(--surface);overflow:hidden;position:relative}
@supports (height: 100dvh){.graph-shell{height:calc(100dvh - 60px)}}
/* v2.76 — when entering browser fullscreen the topbar isn't rendered, so use full viewport */
.graph-shell:fullscreen,.graph-shell:-webkit-full-screen{height:100vh}
.graph-rail{width:300px;min-width:300px;border-right:1px solid var(--border);display:flex;flex-direction:column;background:var(--surface-raised);position:relative;transition:width .2s ease,min-width .2s ease}
/* v2.76 — collapsed left rail. Hide all children except the toggle button itself.
   The button stays clickable at 28px width; content disappears so the canvas wins. */
.graph-rail.collapsed{width:28px;min-width:28px;overflow:hidden}
.graph-rail.collapsed > *:not(.graph-panel-toggle){display:none}
/* v2.76 — collapsed right side panel — mirror of the rail */
.graph-side.collapsed{width:28px;min-width:28px;overflow:hidden}
.graph-side.collapsed > *:not(.graph-panel-toggle){display:none}
/* v2.76 — panel collapse toggle. Lives at the inside edge of each panel. */
.graph-panel-toggle{position:absolute;top:10px;z-index:5;width:22px;height:46px;display:flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;font-size:18px;line-height:1;padding:0;font-family:inherit;border-radius:4px;transition:background .12s,color .12s,border-color .12s}
.graph-panel-toggle:hover{background:var(--surface-raised);color:var(--text);border-color:var(--text-muted)}
.graph-panel-toggle:active{background:var(--teal,#1D9E75);color:#fff;border-color:var(--teal,#1D9E75)}
.graph-panel-toggle.gpt-left{right:6px}
.graph-panel-toggle.gpt-right{left:6px}
/* When collapsed, center the toggle in the narrow strip */
.graph-rail.collapsed .graph-panel-toggle.gpt-left{right:auto;left:50%;transform:translateX(-50%)}
.graph-side.collapsed .graph-panel-toggle.gpt-right{left:50%;transform:translateX(-50%)}
.graph-rail-head{padding:18px 18px 12px;border-bottom:1px solid var(--border)}
.graph-rail-actions{padding:12px 14px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:8px}
.graph-search{padding:8px 10px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:13px;outline:none;font-family:inherit}
.graph-search:focus{border-color:var(--teal-light);box-shadow:0 0 0 3px rgba(29,158,117,0.10)}
/* v2.57 — Filter pills (status / cohort / has-extraction) */
.graph-filter-row{display:flex;gap:4px;flex-wrap:wrap}
.graph-filter-pill{flex:1;min-width:0;padding:5px 8px;background:var(--surface);border:1px solid var(--border);border-radius:5px;color:var(--text);font-size:11px;font-family:inherit;cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--text-muted) 50%),linear-gradient(135deg,var(--text-muted) 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 10px) 50%;background-size:4px 4px,4px 4px;background-repeat:no-repeat;padding-right:22px}
.graph-filter-pill:focus{border-color:var(--teal-light)}
.graph-list-header{padding:4px 12px 6px;font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums}
.graph-comp-row.has-ext .graph-comp-meta{color:var(--teal-light)}
.graph-actions-row{display:flex;gap:6px}
.graph-actions-row .btn{flex:1;padding:5px 8px;font-size:11.5px}
.graph-count{font-size:11.5px;color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right}
.graph-company-list{flex:1;overflow-y:auto;padding:6px 8px;background:var(--surface)}
.graph-comp-row{display:flex;align-items:center;gap:7px;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:12.5px;color:var(--text);user-select:none;transition:background .12s,border-color .12s;border-left:3px solid transparent}
.graph-comp-row:hover{background:var(--surface-raised)}
.graph-comp-row.selected{background:rgba(29,158,117,0.18);border-left-color:var(--teal);font-weight:500}
.mdss-badge{display:inline-block;padding:1px 6px;font-size:9.5px;font-weight:600;border-radius:8px;letter-spacing:.03em;text-transform:uppercase;flex-shrink:0;line-height:1.4}
.mdss-accepted{background:rgba(29,158,117,0.22);color:var(--teal);border:1px solid rgba(29,158,117,0.45)}
.mdss-applicant{background:rgba(232,163,23,0.18);color:#B45309;border:1px solid rgba(232,163,23,0.40)}
.mdss-unknown{background:transparent;color:var(--text-muted);border:1px solid var(--border);opacity:.6}
.graph-rail-toggles{padding:12px 14px;border-bottom:1px solid var(--border);background:var(--surface)}
.grt-head{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:600;margin-bottom:8px}
.grt-row{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text);padding:3px 0;cursor:pointer;user-select:none}
.grt-row input[type=checkbox]{margin:0;cursor:pointer;accent-color:var(--teal);flex-shrink:0}
.grt-row.grt-disabled{opacity:0.45;cursor:not-allowed}
.grt-shape{width:12px;height:12px;display:inline-block;flex-shrink:0}
.grt-stage{background:#EC4899;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.grt-ta{background:#06B6D4;border-radius:6px}
.grt-modality{background:#10B981;clip-path:polygon(15% 0,85% 0,100% 50%,85% 100%,15% 100%,0 50%)}
.grt-innovation{background:#F59E0B;clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.grt-warn{font-size:10px;color:#B45309;margin-left:4px;cursor:help}
.grt-status{margin-top:8px;font-size:10.5px;line-height:1.4}
.grt-ok{color:var(--teal)}
.grt-pending{color:#B45309;font-style:italic}
.graph-comp-row input[type=checkbox]{margin:0;cursor:pointer;accent-color:var(--teal)}
.graph-comp-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.graph-comp-meta{font-size:10.5px;color:var(--text-muted);font-variant-numeric:tabular-nums;letter-spacing:-0.02em}
.graph-main{flex:1;display:flex;min-width:0}
/* v3.12 — light/brand graph canvas + chip bar (was dark #0F0F1A/#10101E). */
.graph-canvas-wrap{flex:1;position:relative;background:var(--bg-cream,#F7F7F7);min-width:0;display:flex;flex-direction:column}
.graph-chip-bar{padding:8px 12px;background:var(--surface,#fff);border-bottom:1px solid var(--line,#E1E1DF);display:flex;flex-wrap:wrap;gap:6px;align-items:center;max-height:90px;overflow-y:auto;flex-shrink:0;z-index:4}
.graph-startup-chip{background:var(--teal-light,#6ECEB2);color:var(--teal-dark,#006A5F);border:1px solid rgba(0,133,124,0.25);padding:3px 11px;border-radius:12px;font-size:11.5px;cursor:pointer;font-family:inherit;line-height:1.3;transition:background .12s,border-color .12s}
.graph-startup-chip:hover{background:var(--teal,#00857C);color:#fff;border-color:var(--teal,#00857C)}
.graph-canvas{position:relative;flex:1;min-height:0}
.graph-canvas canvas{display:block}
/* v3.1 — 2D/3D engine toggle + reset, 3D loading/error message */
.graph-dim-toggle{display:flex;align-items:center;gap:0;margin-top:2px}
.graph-dim-btn{flex:1;padding:5px 0;background:var(--surface);border:1px solid var(--border);color:var(--text-sec);font-size:11.5px;font-weight:600;cursor:pointer;font-family:inherit}
.graph-dim-btn:first-child{border-radius:6px 0 0 6px}
.graph-dim-btn:nth-child(2){border-left:none}
.graph-dim-btn.active{background:var(--teal);color:#fff;border-color:var(--teal)}
.graph-dim-reset{width:30px;flex:0 0 30px;margin-left:6px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text-sec);cursor:pointer;font-size:13px;line-height:1}
.graph-dim-reset:hover{color:var(--text);border-color:var(--teal)}
.graph3d-msg{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--ink-3);font-size:13px;text-align:center;padding:16px}
.graph-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#5B5B7A;text-align:center;padding:24px;pointer-events:none}
.graph-building{position:absolute;top:14px;right:14px;background:rgba(29,158,117,0.15);border:1px solid var(--teal);color:#A6E8D0;padding:4px 10px;border-radius:14px;font-size:11.5px;font-weight:600;z-index:3}
/* ════════════════════════════════════════════════════════════════════
   v2.58 — Dashboard V2 embedded inside the IIP shell
   The dashboard's own stylesheet sets `.dashv2 { position:fixed; inset:0; z-index:1000 }`
   so it can run as a full-screen takeover. When it lives inside the IIP shell
   (.dashv2-host = the view-pane container), we override those rules.
   ════════════════════════════════════════════════════════════════════ */
/* v2.59 — the previous version set `display:flex` on .dashv2-host which
   overrode `.view{display:none}` (same specificity, later in the cascade
   wins). Result: the empty dashboard host div took ~640px of layout under
   the chat input even when chat was the active view. Now we only constrain
   sizing/padding/overflow; the .view/.view.active rules handle visibility,
   and the .dashv2 child gets height:100% to fill the host. */
.view.dashv2-host{padding:0!important;overflow:hidden;height:calc(100vh - 60px)}
@supports (height: 100dvh){.view.dashv2-host{height:calc(100dvh - 60px)}}
.view.dashv2-host .dashv2{position:relative;inset:auto;z-index:auto;height:100%;display:flex;flex-direction:column}
/* The dashboard ships its own brand+refresh bar with a "← Back" button. The
   IIP sidebar already provides brand + nav and "Back" is meaningless inside
   the shell, so hide the top entirely. The internal sub-nav (Executive /
   Companies / Alignment / AI tabs) stays — that's still useful navigation. */
.dashv2-host .dashv2-top{display:none}
.dashv2-host .dashv2-footer{font-size:10.5px;padding:8px 24px;color:var(--text-muted);text-align:center;border-top:1px solid var(--border);background:#fff;flex-shrink:0}

/* v2.55 — floating zoom controls (top-right of canvas) */
.graph-zoom-ctrls{position:absolute;top:14px;right:14px;display:flex;flex-direction:column;gap:4px;z-index:4}
.graph-zoom-ctrls button{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0.78);color:#D5DBEC;border:1px solid #2A2A40;border-radius:5px;cursor:pointer;font-size:16px;line-height:1;font-family:inherit;padding:0;transition:background .12s,color .12s,border-color .12s}
.graph-zoom-ctrls button:hover{background:rgba(56,56,90,0.95);color:#fff;border-color:#7B68EE}
.graph-zoom-ctrls button:active{background:#7B68EE;color:#fff}
/* Move building-chip down when zoom ctrls are visible */
.graph-zoom-ctrls + .graph-legend{}
.graph-canvas-wrap .graph-building{right:54px}
.graph-legend{position:absolute;bottom:12px;right:12px;display:flex;flex-direction:column;gap:6px;background:rgba(255,255,255,0.94);padding:9px 12px;border-radius:8px;border:1px solid var(--line);font-size:11px;color:var(--ink-2);z-index:2;backdrop-filter:blur(4px);box-shadow:var(--shadow-sm)}  /* v3.1 — pale (was dark navy box) */
.gl-item{display:inline-flex;align-items:center;gap:7px;line-height:1}
.gl-shape{width:12px;height:12px;display:inline-block;flex-shrink:0}
.gl-startup{background:#7B68EE;border-radius:50%;border:1px solid #1B0E45}
.gl-person{background:#20B2AA;border-radius:50%}
.gl-org{background:#4169E1;border-radius:2px}
.gl-event{background:#DA8B0A;transform:rotate(45deg);width:9px;height:9px;margin:1px 1px 1px 1px}
.gl-ring{width:12px;height:12px;border-radius:50%;background:transparent;border:2px solid #F59E0B;display:inline-block;flex-shrink:0}
.graph-side{width:320px;min-width:320px;border-left:1px solid var(--border);background:var(--surface-raised);display:flex;flex-direction:column;overflow-y:auto;position:relative;transition:width .2s ease,min-width .2s ease}
.graph-summary{padding:14px 16px;border-bottom:1px solid var(--border)}
.graph-summary-head{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:600;margin-bottom:8px}
.graph-summary-text{font-size:13px;color:var(--text);line-height:1.55;letter-spacing:-0.005em}
.graph-stats{padding:14px 16px;border-bottom:1px solid var(--border)}
.graph-stats-head{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:600;margin-bottom:10px}
.graph-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.gs-kpi{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px;text-align:center}
.gs-kpi-v{font-size:16px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.gs-kpi-l{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}
.graph-node-detail{padding:14px 16px}
.gnd-head{font-size:15px;font-weight:600;color:var(--text);margin-bottom:2px}
.gnd-sub{font-size:11.5px;color:var(--text-muted);margin-bottom:8px}
.gnd-shared{display:inline-block;padding:3px 8px;background:rgba(245,158,11,0.12);color:#B45309;border-radius:10px;font-size:11px;font-weight:600;margin-bottom:10px}
.gnd-sec{margin-top:10px}
.gnd-sec-head{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:600;margin-bottom:4px}
.gnd-list{margin:0;padding-left:18px;font-size:12.5px;color:var(--text);line-height:1.5}
.gnd-fact{font-size:12px;padding:4px 0;border-bottom:1px dashed var(--border)}
.gnd-fact:last-child{border-bottom:none}
.gnd-fact-pred{font-weight:600;color:var(--text-sec);font-size:11px;text-transform:uppercase;letter-spacing:.03em;margin-right:6px}
.gnd-fact-val{color:var(--text)}
@media (max-width:1100px){.graph-rail{width:240px;min-width:240px}.graph-side{width:260px;min-width:260px}}
@media (max-width:900px){.graph-shell{flex-direction:column;height:auto}.graph-rail{width:100%;min-width:0;max-height:40vh}.graph-side{width:100%;min-width:0;border-left:none;border-top:1px solid var(--border)}.graph-canvas-wrap{height:60vh}}

/* ════════════════════════════════════════════════════════════════════
   v2.78 — Feature-request intake (admin only)
   ════════════════════════════════════════════════════════════════════ */
/* v2.86 — the feature-request views are full-bleed (they own their height +
   internal scroll, like .dashv2-host). The base .view rule adds padding:24px,
   which on top of the 60px topbar pushed .fr-shell's `100vh - 60px` ~48px past
   the viewport — so the input box / table bottom sat below the fold. Neutralize
   the view padding for these two panes (mirrors the .dashv2-host fix). */
.view#viewFeatureRequests, .view#viewFeatureRequestsList{padding:0;overflow:hidden}
.fr-shell{display:flex;height:calc(100vh - 60px);background:var(--surface);overflow:hidden}
@supports (height: 100dvh){.fr-shell{height:calc(100dvh - 60px)}}
.fr-intake{flex:1;display:flex;flex-direction:column;min-width:0}
.fr-intake-head{padding:18px 20px 12px;border-bottom:1px solid var(--border)}
.fr-messages{flex:1;overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column;gap:12px}
.fr-msg{display:flex;max-width:80%}
.fr-msg-ai{align-self:flex-start}
.fr-msg-user{align-self:flex-end;justify-content:flex-end}
.fr-msg-body{padding:10px 14px;border-radius:12px;font-size:14px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}
.fr-msg-ai .fr-msg-body{background:var(--surface-raised);color:var(--text);border:1px solid var(--border);border-bottom-left-radius:4px}
.fr-msg-user .fr-msg-body{background:var(--teal);color:#fff;border-bottom-right-radius:4px}
.fr-savebar{padding:8px 20px;border-top:1px solid var(--border);display:flex;align-items:center;gap:12px;background:var(--surface-raised)}
.fr-input-box{display:flex;align-items:center;gap:8px;padding:12px 20px;border-top:1px solid var(--border)}
.fr-input-box input{flex:1;font-size:16px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text)}
/* v2.85 (Q2) — removed dead .fr-list-pane/.fr-list/.fr-card* rules (the intake-page
   captured-requests list was removed in v2.82). The badge/select classes below are
   still used by the Captured Requests management table. */
.fr-status-sel{font-size:12px;padding:4px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text)}
/* v3.69 (Phase 4a) — triage column. Inline select mirrors .fr-status-sel; terminal-state badges. */
.fr-triage-sel{font-size:12px;padding:4px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text)}
.fb-triage-badge{display:inline-block;padding:2px 8px;border-radius:9px;font-size:10.5px;font-weight:700;white-space:nowrap}
.fb-triage-promoted{background:rgba(29,158,117,0.14);color:#1D9E75;border:1px solid transparent}
.fb-triage-linked{background:rgba(55,138,221,0.14);color:#2F6FB0;border:1px solid transparent}
.fb-row-bank-ref{display:inline-block;padding:2px 7px;border-radius:9px;font-size:10.5px;font-weight:700;background:rgba(29,158,117,0.12);color:#1D9E75;vertical-align:middle}
.fr-actions-cell{white-space:nowrap}
/* v3.70 (Phase 4c) — Rejected triage select tint + rejection-reason popover */
.fr-triage-rejected{border-color:#D94052;color:#B23636;background:rgba(217,64,82,0.06)}
.fb-reject-backdrop{position:fixed;inset:0;z-index:9100;background:rgba(28,26,23,0.25)}
.fb-reject-prompt{position:fixed;width:280px;box-sizing:border-box;background:var(--bg-elev);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-md);padding:12px;color:var(--ink)}
.fb-reject-label{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:6px}
.fb-reject-ta{width:100%;box-sizing:border-box;font-size:13px;font-family:inherit;border:1px solid var(--line);border-radius:7px;padding:7px 8px;resize:vertical;color:var(--ink);background:var(--surface)}
.fb-reject-row{display:flex;align-items:center;justify-content:space-between;margin-top:7px;gap:8px}
.fb-reject-counter{font-size:11px;color:var(--text-muted)}
.fb-reject-counter.short{color:#D94052;font-weight:600}
.fb-reject-actions{display:flex;gap:6px}
.fb-reject-err{margin-top:6px;font-size:11.5px;color:#D94052}
/* v3.69 (Phase 4b) — multi-select checkbox column + bulk action bar */
.fr-check-th,.fr-check-cell{width:34px;text-align:center}
.fr-row-check,.fr-check-all{accent-color:var(--teal);cursor:pointer}
.fr-bulk-bar{display:flex;align-items:center;gap:10px;padding:10px 20px;border-bottom:1px solid var(--line);background:rgba(45,110,101,0.06)}
.fr-bulk-count{font-size:12.5px;font-weight:600;color:var(--ink-2)}
.fb-merge-note{font-size:12.5px;color:var(--ink-2);background:rgba(45,110,101,0.06);border:1px solid var(--line);border-radius:8px;padding:9px 11px;line-height:1.5}
.fb-merge-list{margin:5px 0 0;padding-left:18px}
.fb-merge-list li{margin:1px 0}
/* v3.69 (Phase 4a) — Feature Bank promote/link modals. Shell mirrors .sgrp-modal-*. */
.fb-modal-wrap{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center}
.fb-modal-backdrop{position:absolute;inset:0;background:rgba(28,26,23,0.45);backdrop-filter:blur(2px)}
.fb-modal{position:relative;background:var(--bg-elev);border:1px solid var(--line);border-radius:12px;width:min(760px,94vw);max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-md);overflow:hidden;color:var(--ink)}
.fb-modal-narrow{width:min(520px,94vw)}
.fb-modal-head{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--bg-cream)}
.fb-modal-title{flex:1;font-family:var(--serif);font-weight:500;font-size:17px;color:var(--ink);letter-spacing:-0.005em}
.fb-modal-close{background:transparent;border:none;color:var(--ink-3);font-size:22px;cursor:pointer;padding:0 6px;line-height:1}
.fb-modal-close:hover{color:var(--ink)}
.fb-modal-body{padding:16px 18px;display:flex;flex-direction:column;gap:10px;overflow-y:auto}
.fb-modal-sub{font-size:12.5px;color:var(--ink-2);line-height:1.5}
.fb-modal-search{padding:8px 10px;font-size:13px;border:1px solid var(--line);border-radius:6px;background:var(--bg-elev);color:var(--ink);font-family:var(--sans);width:100%;box-sizing:border-box}
.fb-modal-search:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px rgba(45,110,101,0.18)}
.fb-modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line);background:var(--bg-cream)}
/* v3.70 (Phase 4c) — step-2 modify-parent-on-link */
.fb-modal-back{background:transparent;border:none;color:var(--teal-dark);font-size:13px;font-weight:600;cursor:pointer;padding:0 12px 0 0}
.fb-modal-back:hover{text-decoration:underline}
.fb-foot-1,.fb-foot-2{display:flex;gap:8px}
.fb-step2-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:680px){.fb-step2-grid{grid-template-columns:1fr}}
.fb-modal-edit-panel,.fb-modal-reference-panel{border:1px solid var(--line);border-radius:8px;padding:12px}
.fb-modal-edit-panel{background:var(--bg-elev)}
.fb-modal-reference-panel{background:var(--bg-cream)}
.fb-ref-field{margin-bottom:9px}
.fb-ref-val{font-size:12.5px;color:var(--ink-2);line-height:1.45;white-space:pre-wrap;word-break:break-word}
.fb-step2-err-actions{margin-top:8px;display:flex;gap:8px}
.fb-modal-loading,.fb-modal-empty,.fb-modal-err{padding:14px 6px;font-size:12.5px;color:var(--ink-3)}
.fb-modal-err{color:#B23636}
/* Link picker list */
.fb-link-list{display:flex;flex-direction:column;gap:6px;max-height:48vh;overflow-y:auto}
.fb-link-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg-elev)}
.fb-link-row:hover{border-color:var(--teal)}
.fb-link-row-main{flex:1;min-width:0}
.fb-link-fid{font-weight:700;font-size:12px;color:var(--teal-dark)}
.fb-link-title{font-size:13px;color:var(--ink)}
.fb-link-meta{font-size:11px;color:var(--ink-3);margin-top:2px}
.fb-link-row-act{white-space:nowrap;display:flex;align-items:center;gap:6px}
.fb-link-confirm-q{font-size:12px;color:var(--ink-2)}
.fb-link-err{font-size:12px;color:#B23636}
/* Promote modal — two-panel grid + form fields */
.fb-promote-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:14px}
@media (max-width:680px){.fb-promote-grid{grid-template-columns:1fr}}
.fb-modal-section{border:1px solid var(--line);border-radius:8px;padding:12px;background:var(--bg-elev)}
.fb-section-head{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin-bottom:8px}
.fb-flabel{display:block;font-size:11px;font-weight:600;color:var(--ink-3);margin:8px 0 3px}
.fb-finput,.fb-farea,.fb-field select{width:100%;box-sizing:border-box;padding:7px 9px;font-size:13px;border:1px solid var(--line);border-radius:6px;background:var(--bg-elev);color:var(--ink);font-family:var(--sans)}
.fb-farea{resize:vertical;line-height:1.5}
.fb-finput:focus,.fb-farea:focus,.fb-field:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 2px rgba(45,110,101,0.18)}
.fb-frow{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:4px}
.fb-skeleton{font-size:12px;color:var(--ink-3);padding:10px 4px;background:linear-gradient(90deg,rgba(0,0,0,0.02),rgba(0,0,0,0.05),rgba(0,0,0,0.02));border-radius:6px}
/* v3.83 (9) — edit-with-diff-preview (step 2) */
.fb-diff-list{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.fb-diff-row{border:1px solid var(--line);border-radius:8px;padding:9px 11px;background:var(--bg-elev)}
.fb-diff-field{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin-bottom:5px}
.fb-diff-change{display:flex;align-items:flex-start;gap:7px;flex-wrap:wrap;font-size:13px;line-height:1.45}
.fb-diff-old{color:var(--ink-2);text-decoration:line-through;text-decoration-color:var(--ink-3);opacity:.85;overflow-wrap:anywhere}
.fb-diff-arrow{color:var(--ink-3);flex-shrink:0}
.fb-diff-new{color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.fb-diff-empty{color:var(--ink-3);font-style:italic}
.fb-diff-none{font-size:13px;color:var(--ink-3);padding:8px 0}
/* v3.83 (10) — merge modal survivor cards */
.fb-merge-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:560px){.fb-merge-grid{grid-template-columns:1fr}}
.fb-merge-card{display:flex;gap:8px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--bg-elev);cursor:pointer}
.fb-merge-card.fb-merge-sel{border-color:var(--teal);box-shadow:0 0 0 2px rgba(45,110,101,0.18)}
.fb-merge-card input{margin-top:3px;flex-shrink:0}
.fb-merge-card-body{min-width:0}
.fb-merge-fid{font-weight:700;font-size:12px;color:var(--teal-dark)}
.fb-merge-title{font-size:13px;font-weight:600;color:var(--ink);margin:2px 0}
.fb-merge-meta{font-size:11.5px;color:var(--ink-3)}
.fb-merge-sum{font-size:12px;color:var(--ink-2);margin-top:5px;overflow-wrap:anywhere}
/* Similar-features panel + UC suggestion chips (Task 9) */
.fb-sim-group-head{font-size:11px;font-weight:700;margin:8px 0 4px;color:var(--ink-2)}
.fb-sim-row{display:flex;align-items:flex-start;gap:8px;padding:7px 9px;border:1px solid var(--line);border-radius:7px;margin-bottom:5px;background:var(--bg-elev)}
.fb-sim-row.fb-sim-redundant{border-color:#D9A036;background:rgba(217,160,54,0.06)}
.fb-sim-main{flex:1;min-width:0}
.fb-sim-fid{font-weight:700;font-size:12px;color:var(--teal-dark)}
.fb-sim-reason{font-size:11.5px;color:var(--ink-2);margin-top:2px}
/* v3.70 (Phase 4c) — candidate row Status·Tier meta + summary excerpt; tier-gate warning */
.fb-sim-meta{font-size:11px;color:var(--ink-3);margin-top:2px}
.fb-sim-excerpt{font-size:11.5px;color:var(--ink-2);margin-top:2px;overflow:hidden;text-overflow:ellipsis}
.fb-field-warn{border-color:#D94052 !important;box-shadow:0 0 0 2px rgba(217,64,82,0.18)}
.fb-sim-act{white-space:nowrap}
.fb-show-all{background:none;border:none;color:var(--teal-dark);font-size:12px;cursor:pointer;padding:4px 0;text-decoration:underline}
.fb-uc-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid var(--line);border-radius:14px;font-size:12px;cursor:pointer;margin:0 5px 5px 0;background:var(--bg-elev);color:var(--ink)}
.fb-uc-chip.sel{border-color:var(--teal);background:rgba(45,110,101,0.10);color:var(--teal-dark);font-weight:600}
.fb-uc-verdict{font-size:10px;color:var(--ink-3)}
.fb-uc-freeform{width:100%;box-sizing:border-box;padding:7px 9px;font-size:12.5px;border:1px solid var(--line);border-radius:6px;background:var(--bg-elev);color:var(--ink)}
.fb-degraded-note{font-size:11.5px;color:#9A6A1E;background:rgba(217,160,54,0.08);border-radius:6px;padding:7px 9px;line-height:1.45}
.fr-pri{display:inline-block;padding:2px 7px;border-radius:9px;font-size:10.5px;font-weight:700;color:#fff}
.fr-pri-p0{background:#D94052}.fr-pri-p1{background:#E8A317}.fr-pri-p2{background:#378ADD}.fr-pri-p3{background:#7A8699}
.fr-cat{display:inline-block;padding:2px 7px;border-radius:9px;font-size:10.5px;font-weight:600;background:rgba(123,104,238,0.12);color:#6B5BD0}
.fr-status{display:inline-block;padding:2px 7px;border-radius:9px;font-size:10.5px;font-weight:600;background:var(--surface-raised);color:var(--text-muted);border:1px solid var(--border)}
.fr-status-done{background:rgba(29,158,117,0.14);color:#1D9E75;border-color:transparent}
.fr-status-declined{background:rgba(217,64,82,0.12);color:#B23636;border-color:transparent}
@media (max-width:900px){.fr-shell{flex-direction:column;height:auto}.fr-intake{min-height:60vh}}
/* v3.64 — Survey Results (admin) */
.survey-mgmt{height:calc(100vh - 60px);overflow-y:auto;background:var(--surface);padding:0}
@supports (height: 100dvh){.survey-mgmt{height:calc(100dvh - 60px)}}
.survey-bar{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:2;flex-wrap:wrap}
.survey-avg{display:inline-block;margin-left:8px;font-size:12px;font-weight:600;color:var(--teal);background:rgba(0,133,124,0.08);border:1px solid var(--teal-light,#6ECEB2);padding:1px 8px;border-radius:9px;vertical-align:middle}
.survey-link{padding:10px 20px;font-size:12px;color:var(--text-muted);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.survey-link code{background:var(--surface-raised);border:1px solid var(--border);border-radius:5px;padding:2px 7px;color:var(--text);font-size:12px}
.survey-link-note{color:var(--text-muted)}
.survey-table{width:100%;border-collapse:collapse;font-size:13px}
.survey-table thead th{text-align:left;padding:10px 20px;border-bottom:1px solid var(--border);color:var(--text-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.survey-tr td{padding:10px 20px;border-bottom:1px solid var(--border-light,var(--border))}
.survey-c-num{text-align:center;font-variant-numeric:tabular-nums}
.survey-c-date{color:var(--text-muted);white-space:nowrap}
.survey-expand{cursor:pointer;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px}
.survey-expand:hover{color:var(--teal)}
.survey-caret{color:var(--text-muted);width:12px;display:inline-block}
.survey-detail-tr td{padding:0 20px 16px;background:var(--surface-raised)}
.survey-detail{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:14px 0}
.survey-block{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px 14px}
.survey-block:first-child{grid-column:1/-1}
.survey-block-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:8px}
.survey-f{margin-bottom:8px}
.survey-f-lbl{font-size:11px;color:var(--text-muted);font-weight:600}
.survey-f-val{font-size:13px;color:var(--text);white-space:pre-wrap;word-break:break-word}
.survey-sid{font-size:11px;color:var(--text-muted);font-family:var(--mono,monospace)}
.survey-conv{border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-bottom:10px;background:var(--surface-raised)}
.survey-conv-h{font-size:12px;font-weight:700;color:var(--teal);margin-bottom:6px}
@media (max-width:760px){.survey-detail{grid-template-columns:1fr}}

/* v2.79 — Captured Requests management page */
.fr-mgmt{height:calc(100vh - 60px);overflow-y:auto;background:var(--surface);padding:0}
@supports (height: 100dvh){.fr-mgmt{height:calc(100dvh - 60px)}}
.fr-mgmt-bar{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:2;flex-wrap:wrap}
.fr-count{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:9px;background:var(--surface-raised);border:1px solid var(--border);font-size:12px;color:var(--text-muted);font-weight:600;vertical-align:middle}
.fr-table-wrap{padding:12px 20px 40px}
.fr-table{width:100%;border-collapse:collapse;font-size:13px}
.fr-table th{text-align:left;padding:8px 10px;border-bottom:2px solid var(--border);color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:600;white-space:nowrap}
.fr-th{cursor:pointer;user-select:none}
.fr-th:hover{color:var(--text)}
/* v2.85 (A1/A2) — visible focus rings for keyboard-operable header + expander */
.fr-th:focus-visible,.fr-expander:focus-visible{outline:2px solid var(--teal,#1D9E75);outline-offset:2px;border-radius:3px}
.fr-expander{cursor:pointer}
.fr-table td{padding:10px;border-bottom:1px solid var(--border);vertical-align:top}
.fr-tr:hover{background:var(--surface-raised)}
.fr-td-title{font-weight:600;color:var(--text)}
.fr-td-sum{font-size:11.5px;color:var(--text-muted);line-height:1.4;margin-top:2px;max-width:380px}
.fr-td-date{white-space:nowrap;color:var(--text-muted)}
/* v2.82 — intake page is full-width now (captured-requests list removed) */
.fr-shell .fr-intake{flex:1;min-width:0}
/* v2.82 — editable detail panel layout */
.fr-detail-cols{display:flex;gap:24px;flex-wrap:wrap}
.fr-detail-context{flex:1;min-width:280px}
.fr-detail-edit{flex:1;min-width:320px}
.fr-dt-section-head{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:700;margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border)}
.fr-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fr-ef{display:flex;flex-direction:column;gap:3px}
.fr-ef-wide{grid-column:1 / -1}
.fr-ef-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:600}
.fr-ef-input,.fr-ef-area{font-size:13px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);width:100%;font-family:inherit}
.fr-ef-area{resize:vertical}
.fr-edit-actions{display:flex;align-items:center;gap:10px;margin-top:12px}
.fr-save-status{font-size:12px;color:var(--text-muted)}
@media (max-width:700px){.fr-edit-grid{grid-template-columns:1fr}}
.fr-expander{cursor:pointer;display:flex;align-items:center;gap:6px}
.fr-expander:hover{color:var(--teal,#1D9E75)}
.fr-caret{display:inline-block;width:12px;color:var(--text-muted);font-size:11px}
.fr-detail{padding:6px 8px 12px 26px;background:var(--surface-raised);border-radius:6px;margin:2px 0 6px}
.fr-dt-field{margin-bottom:8px}
.fr-dt-field:last-child{margin-bottom:0}
.fr-dt-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600;margin-bottom:2px}
.fr-dt-val{font-size:13px;color:var(--text);line-height:1.5;white-space:pre-wrap}
@media (max-width:900px){.fr-table-wrap{overflow-x:auto}.fr-table{min-width:760px}}

/* ── Feature Bank view (v3.83, Phase 5a) — mirrors .fr-* table chrome ───── */
.fb-bank-mgmt{height:calc(100vh - 60px);overflow-y:auto;background:var(--surface);padding:0}
@supports (height: 100dvh){.fb-bank-mgmt{height:calc(100dvh - 60px)}}
.fb-td-fid{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--text-muted);font-weight:600}
.fb-td-title{font-weight:600;color:var(--text)}
.fb-td-num{text-align:right;font-variant-numeric:tabular-nums}
.fb-tr:hover{background:var(--surface-hover,rgba(0,0,0,0.02))}
.fb-child-badge{display:inline-block;margin-left:8px;font-size:11px;color:var(--teal-dark);background:var(--bg-cream-2,rgba(0,133,124,0.08));border:1px solid var(--line-soft,rgba(0,133,124,0.2));border-radius:10px;padding:1px 7px;vertical-align:middle}
.fb-expander{cursor:pointer}
.fb-caret{display:inline-block;width:14px;color:var(--text-muted)}
.fb-detail{padding:14px 16px;background:var(--surface-alt,rgba(0,0,0,0.015))}
.fb-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media (max-width:760px){.fb-detail-grid{grid-template-columns:1fr}}
.fb-detail-block{margin-bottom:14px}
.fb-parent-row{font-size:13px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fb-children-list,.fb-linked-list{display:flex;flex-direction:column;gap:6px}
.fb-child-link{text-align:left;background:none;border:1px solid var(--border);border-radius:6px;padding:5px 9px;font-size:12.5px;color:var(--teal-dark);cursor:pointer}
.fb-child-link:hover{background:var(--bg-cream-2,rgba(0,133,124,0.06))}
.fb-linked-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--border);border-radius:6px;padding:6px 10px}
.fb-linked-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.fb-linked-title{font-size:13px;color:var(--text);font-weight:600}
.fb-linked-meta{font-size:11px;color:var(--text-muted)}

/* ── Add startup (v2.65, business-card scan flow) ───────────────────────── */
.add-startup-shell{max-width:1080px;margin:0 auto;padding:24px 24px 48px}
.add-startup-pane{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px}
.add-startup-head h2{margin:0 0 4px;font-size:22px;font-weight:600;letter-spacing:-.01em}
.add-startup-sub{color:var(--text-sec);font-size:13px;margin-bottom:18px}
/* v2.66 — mode toggle pill */
.add-startup-mode{display:inline-flex;background:var(--bg);border:1px solid var(--border);border-radius:20px;padding:3px;margin-bottom:18px;gap:2px}
.add-startup-mode-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:500;color:var(--text-sec);background:transparent;border:none;border-radius:16px;cursor:pointer;font-family:inherit}
.add-startup-mode-btn:hover{color:var(--text)}
.add-startup-mode-btn.active{background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,0.05)}
.add-startup-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:48px 24px;border:2px dashed var(--border);border-radius:10px;cursor:pointer;color:var(--text-sec);transition:border-color .15s,background .15s}
.add-startup-drop:hover,.add-startup-drop.dragover{border-color:var(--accent,#2d6e65);background:rgba(45,110,101,0.04)}
/* v2.102 — busy state while the AI reads an uploaded document */
.add-startup-drop.busy{opacity:.6;pointer-events:none}
.add-startup-drop-title{font-size:15px;font-weight:500;color:var(--text);margin-top:8px}
/* v2.102 — source-document reference link on a startup card */
.src-doc-link{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--teal,#2d6e65);text-decoration:none;padding:6px 10px;border:1px solid var(--line,var(--border));border-radius:7px;background:var(--bg-cream-2,rgba(0,0,0,0.02))}
.src-doc-link:hover{text-decoration:underline}
.add-startup-drop-sub{font-size:12px}
.add-startup-status{margin-top:14px;font-size:13px;color:var(--text-sec);min-height:18px}
.add-startup-grid{display:grid;grid-template-columns:360px 1fr;gap:24px;align-items:start}
.add-startup-photo{background:#f6f4f0;border:1px solid var(--border);border-radius:8px;padding:8px;position:sticky;top:8px}
.add-startup-photo img{width:100%;height:auto;display:block;border-radius:4px}
.add-startup-form{display:flex;flex-direction:column;gap:12px}
.add-startup-field{display:flex;flex-direction:column;gap:4px}
.add-startup-field-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-sec);font-weight:600}
.add-startup-field input{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:14px;background:var(--bg);color:var(--text);font-family:inherit}
.add-startup-field input:focus{outline:none;border-color:var(--accent,#2d6e65)}
.add-startup-field.confidence-low{padding-left:10px;border-left:3px solid #d4a017;margin-left:-13px}
.add-startup-field.confidence-low input{background:#fffbeb}
.add-startup-hint{font-size:11px;color:#a07308;font-style:italic}
.add-startup-amb{font-size:12px;color:var(--text-sec);padding:8px 10px;background:rgba(0,0,0,0.025);border-radius:6px;border:1px solid var(--border)}
.add-startup-actions{display:flex;gap:8px;margin-top:6px}
/* v3.14 — custom fields on a startup card (freq:fee1ed0e, P2) */
.add-startup-custom{display:flex;flex-direction:column;gap:8px;padding-top:6px;border-top:1px dashed var(--border);margin-top:2px}
.add-startup-custom-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.add-startup-custom-hint{font-size:11.5px;color:var(--text-sec);line-height:1.45}
.add-startup-custom-row{display:flex;gap:8px;align-items:center}
.add-startup-custom-row input{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:14px;background:var(--bg);color:var(--text);font-family:inherit}
.add-startup-custom-row input.acf-label{flex:0 0 38%}
.add-startup-custom-row input:focus{outline:none;border-color:var(--accent,#2d6e65)}
.acf-remove{flex:0 0 auto;width:30px;height:30px;border:1px solid var(--border);background:var(--bg);color:var(--text-sec);border-radius:6px;font-size:16px;line-height:1;cursor:pointer}
.acf-remove:hover{border-color:#d33;color:#d33}
.dedup-warning{background:#fef3c7;border:1px solid #f59e0b;border-radius:8px;padding:10px 12px;margin-bottom:16px;font-size:13px;color:#7c5a00}
.dedup-override{display:inline-flex;align-items:center;gap:4px;margin-left:8px;font-size:12px;cursor:pointer}
.local-pill{display:inline-block;background:rgba(45,110,101,0.12);color:var(--accent,#2d6e65);font-size:10px;font-weight:600;padding:2px 6px;border-radius:10px;text-transform:uppercase;letter-spacing:.04em;margin-left:6px;vertical-align:middle}
@media (max-width:760px){.add-startup-grid{grid-template-columns:1fr}.add-startup-photo{position:static;max-width:360px;margin:0 auto}.add-startup-shell{padding:12px 12px 32px}}

/* ── xV Framework (v2.67) ──────────────────────────────────────────────── */

/* All colors use the V2 cream/ink palette so the modal + portfolio read on
   the same light surface as Memory, Account settings, Persona Config, etc.
   Tokens: --bg-cream (page), --bg-cream-2 (subtle band), --bg-elev (#fff
   for cards), --line (border), --line-soft (subtle separators), --ink (body
   text), --ink-2 (secondary text), --ink-3 (muted text), --teal (accent),
   --teal-light, --warm (highlight), --rose (error). */

/* Detail-panel card */
.xv-card-placeholder{}
.xv-card .xv-sub{font-size:11px;font-weight:400;color:var(--ink-3)}
.xv-card-rows{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.xv-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg-elev);border:1px solid var(--line);border-radius:8px;flex-wrap:wrap}
.xv-row-label{flex:0 0 160px;font-size:12px;font-weight:600;color:var(--ink-2)}
.xv-row-sub{font-weight:400;color:var(--ink-3);margin-left:4px}
.xv-row-val{flex:1;min-width:140px}
.xv-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:14px;background:var(--bg-cream-2);border:1px solid var(--line);font-size:13px;font-weight:600;color:var(--ink)}
.xv-badge-empty{color:var(--ink-3);font-weight:400;font-style:italic;background:transparent;border-color:transparent}
.xv-glyph{font-size:14px}
.xv-val{font-variant-numeric:tabular-nums}
.xv-weak-chip{margin-left:6px;font-size:10px;padding:1px 6px;border-radius:8px;background:var(--bg-cream-2);color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.xv-eff-excellent{color:#1d9e75}
.xv-eff-good{color:var(--teal)}
.xv-eff-fair{color:var(--warm)}
.xv-eff-poor{color:var(--rose)}
.xv-empty-cta{margin-top:10px;padding:10px 12px;background:var(--bg-cream-2);border-left:3px solid var(--teal);border-radius:4px;font-size:12px;color:var(--ink-2);line-height:1.55}

/* Modal — light cream surface with strong type contrast */
.xv-modal-wrap{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center}
.xv-modal-backdrop{position:absolute;inset:0;background:rgba(28,26,23,0.45);backdrop-filter:blur(2px)}
.xv-modal{position:relative;background:var(--bg-elev);border:1px solid var(--line);border-radius:12px;width:min(720px,92vw);max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-md);overflow:hidden;color:var(--ink)}
.xv-modal-head{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--bg-cream)}
.xv-modal-title{font-size:15px;font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-family:var(--serif);font-weight:500;font-size:18px;letter-spacing:-0.005em}
.xv-modal-name{font-family:var(--sans);font-weight:600;font-size:15px}
.xv-modal-scope-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;border-radius:10px;background:var(--teal);color:#fff;font-weight:600}
.xv-modal-close{background:transparent;border:none;color:var(--ink-3);font-size:24px;cursor:pointer;padding:0 6px;line-height:1}
.xv-modal-close:hover{color:var(--ink)}
.xv-modal-body{flex:1;overflow-y:auto;padding:18px 20px;background:var(--bg-elev)}
.xv-modal-foot{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--line);background:var(--bg-cream)}
.xv-modal-foot .btn-danger{margin-right:auto}

.xv-suggest-bar{display:flex;align-items:center;gap:10px;margin-bottom:18px;padding:10px 12px;background:linear-gradient(135deg,rgba(45,110,101,0.06) 0%,rgba(139,97,68,0.06) 100%);border:1px dashed var(--teal-light);border-radius:8px}
.xv-suggest-status{font-size:12px;flex:1;color:var(--ink-2)}
.xv-suggest-status.pending{color:var(--ink-3);font-style:italic}
.xv-suggest-status.success{color:var(--teal-dark);font-weight:500}
.xv-suggest-status.error{color:var(--warm)}

.xv-section{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--line-soft)}
.xv-section:last-of-type{border-bottom:none;padding-bottom:0}
.xv-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);margin:0 0 4px;font-family:var(--sans)}
.xv-section-desc{font-size:12px;color:var(--ink-3);margin-bottom:10px;line-height:1.5}

/* Confidence anchor dropdowns + evidence drawers (v3.63 — replaced the sliders) */
.xv-conf-grid{display:flex;flex-direction:column;gap:8px}
.xv-conf-row{display:grid;grid-template-columns:170px 1fr 48px auto;align-items:center;gap:12px}
.xv-conf-label{font-size:13px;color:var(--ink);font-weight:500}
.xv-conf-select{width:100%;padding:7px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);font-size:13px;font-family:var(--sans);cursor:pointer}
.xv-conf-select.xv-ai-suggested{border-color:#d8a200;box-shadow:0 0 0 1px #d8a200 inset}
.xv-conf-readout{font-variant-numeric:tabular-nums;text-align:right;font-size:13px;font-weight:600;color:var(--teal);background:var(--bg-cream-2);padding:2px 6px;border-radius:4px}
.xv-ev-toggle{font-size:11px;padding:4px 9px;border:1px solid var(--line);border-radius:12px;background:var(--bg-cream-2);color:var(--ink-2);cursor:pointer;white-space:nowrap}
.xv-ev-toggle:hover{border-color:var(--teal-light);color:var(--teal)}
.xv-ev-count{font-weight:700;color:var(--teal);font-variant-numeric:tabular-nums}
.xv-ev-drawer{margin:2px 0 8px;padding:10px 12px;border:1px dashed var(--line);border-radius:8px;background:var(--bg-cream-2);display:flex;flex-direction:column;gap:6px}
.xv-ev-why{font-size:11px;color:var(--ink-3);font-style:italic;line-height:1.4;margin-bottom:2px}
.xv-ev-src-row{display:flex;align-items:flex-start;gap:8px;font-size:12px;color:var(--ink-2);cursor:pointer;line-height:1.4}
.xv-ev-src-row input{margin-top:2px;accent-color:var(--teal);cursor:pointer}
.xv-ev-hint{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--ink-2);margin-top:4px;padding-top:6px;border-top:1px dashed var(--line)}
.xv-ev-notes{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-size:12px;font-family:var(--sans);color:var(--ink);resize:vertical;background:#fff}
.xv-ev-chip{font-size:10px;font-weight:700;padding:1px 6px;border-radius:8px;background:var(--bg-cream-2);color:var(--ink-2);border:1px solid var(--line-soft);font-variant-numeric:tabular-nums}
.xvp-c-ev{font-variant-numeric:tabular-nums}
.if-xv-evidence{font-size:12px;color:var(--ink-2);margin:6px 0 2px}
/* v3.71 — analyzer value-class PV breakdown (the inputs the AI grounded $ on) */
.if-xv-pvclass{margin:2px 0 12px;padding:8px 10px;background:var(--bg-cream);border:1px solid var(--line-soft);border-radius:8px}
.if-pvc-head{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.if-pvc-verify{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--warm);background:rgba(139,97,68,0.13);border-radius:8px;padding:1px 6px}
.if-pvc-inputs{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.if-pvc-input{display:inline-flex;align-items:center;gap:5px;font-size:11px;background:var(--bg-elev);border:1px solid var(--line-soft);border-radius:7px;padding:2px 8px}
.if-pvc-k{color:var(--ink-3)}
.if-pvc-v{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.if-pvc-nomwrap{margin-top:6px}
.if-pvc-nom{font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.xv-pv-tests{margin-top:10px;border:1px dashed var(--line);border-radius:8px;padding:8px 12px;background:var(--bg-cream-2)}
.xv-pv-tests summary{font-size:12px;font-weight:600;color:var(--ink-2);cursor:pointer}
.xv-pv-test-row{margin-top:8px}
.xv-pv-test-lbl{display:block;font-size:12px;font-weight:600;color:var(--ink)}
.xv-pv-test-prompt{font-size:11px;color:var(--ink-3);margin:2px 0 4px;line-height:1.4}
.xv-pv-test{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-size:12px;font-family:var(--sans);color:var(--ink);resize:vertical;background:#fff}
/* v3.65 — collaboration rework */
.xv-explainer{margin:0 0 14px;border:1px solid var(--line);border-radius:8px;background:var(--bg-cream-2);padding:0 12px}
.xv-explainer summary{cursor:pointer;font-size:12px;font-weight:600;color:var(--teal);padding:10px 0}
.xv-explainer p{font-size:12px;color:var(--ink-2);line-height:1.5;margin:0 0 8px}
.xv-gate-row{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg-cream-2)}
.xv-gate-pilot{font-size:13px;color:var(--ink);display:flex;align-items:center;gap:6px;cursor:pointer}
.xv-gate-pilot input{accent-color:var(--teal);cursor:pointer}
.xv-gate-hint{color:var(--ink-3);font-size:11px}
.xv-gate-maturity{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:6px;margin-left:auto}
.xv-ev-prov{font-size:10px;padding:1px 7px;border-radius:9px;border:1px solid var(--line);background:#fff;cursor:pointer;margin-left:auto;white-space:nowrap}
.xv-ev-prov-verified{background:rgba(0,133,124,0.1);border-color:var(--teal-light,#6ECEB2);color:var(--teal);font-weight:600}
.xv-ev-prov-external{color:var(--ink-3)}
.xv-ev-src-row{display:flex;align-items:center;gap:8px}
.xv-pvc-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.xv-pvc-tab{font-size:12px;font-weight:600;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink-2);cursor:pointer}
.xv-pvc-tab:hover{border-color:var(--teal-light,#6ECEB2)}
.xv-pvc-tab.active{background:var(--teal);border-color:var(--teal);color:#fff}
.xv-pvc-desc{font-size:11px;color:var(--ink-3);font-style:italic;margin-bottom:8px;line-height:1.4}
.xv-pvc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.xv-pvc-field{display:flex;flex-direction:column;gap:3px}
.xv-pvc-field label{font-size:11px;font-weight:600;color:var(--ink-2)}
.xv-pvc-input{padding:8px 10px;border:1px solid var(--line);border-radius:6px;font-size:13px;font-family:var(--sans);background:#fff;color:var(--ink);width:100%}
.xv-pvc-pv{margin-top:10px;padding:8px 12px;border-radius:8px;background:rgba(0,133,124,0.07);border:1px solid var(--teal-light,#6ECEB2);font-size:13px;color:var(--ink)}
.xv-pvc-pv:empty{display:none}
.xv-pvc-pv-lbl{color:var(--ink-3);font-size:11px}
.xv-pvc-pv-nom{color:var(--ink-3);font-size:11px;margin-left:8px}
.xv-pvc-legacy{font-size:11px;color:var(--ink-3);margin-bottom:8px}
.xvp-class-note{font-size:12px;color:var(--ink-2);padding:8px 12px;background:var(--bg-cream-2);border-radius:6px;margin-bottom:10px}
.xvp-group td{background:var(--bg-cream-2);font-weight:700;font-size:12px;color:var(--navy,#0C2340);padding:8px 12px;text-transform:none;border-top:2px solid var(--line)}
.xvp-group-meta{font-weight:400;color:var(--ink-3);margin-left:8px}
.xvp-c-rank{text-align:center;color:var(--ink-3);font-variant-numeric:tabular-nums;width:34px}
.xvp-pilot{font-size:10px;color:var(--teal);font-weight:600}
.xvp-crossclass td{background:var(--bg-cream-2);font-weight:700;border-top:2px solid var(--line)}
.xvp-directional{font-weight:400;font-size:11px;color:var(--ink-3);margin-left:6px}
@media (max-width:640px){.xv-pvc-grid{grid-template-columns:1fr}}
.xv-anchor-legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.xv-anchor-chip{font-size:10px;padding:3px 8px;border-radius:10px;background:var(--bg-cream-2);color:var(--ink-2);cursor:help;border:1px solid var(--line-soft)}
.xv-anchor-chip .xv-anchor-v{font-weight:700;color:var(--teal);margin-right:3px;font-variant-numeric:tabular-nums}

/* PV bands */
.xv-pv-bands{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.xv-pv-band{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;cursor:pointer;background:var(--bg-elev);transition:border-color .15s,background .15s;position:relative}
.xv-pv-band:hover{border-color:var(--teal-light);background:var(--bg-cream-2)}
.xv-pv-band.active{border-color:var(--teal);background:rgba(45,110,101,0.06);box-shadow:0 0 0 1px var(--teal) inset}
.xv-pv-band input{position:absolute;opacity:0;pointer-events:none}
.xv-pv-band-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--teal)}
.xv-pv-band-range{font-size:14px;color:var(--ink);font-weight:500}
.xv-pv-band-desc{font-size:11px;color:var(--ink-3);line-height:1.4}
.xv-pv-amount-row{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:13px;color:var(--ink-2)}
.xv-input-money{padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);font-size:14px;width:220px;font-variant-numeric:tabular-nums;font-family:var(--sans)}
.xv-input-money:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(45,110,101,0.08)}

/* TS select */
.xv-ts-select{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);font-size:14px;font-family:var(--sans);cursor:pointer}
.xv-ts-select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(45,110,101,0.08)}

/* SF radios */
.xv-sf-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.xv-sf-fieldset{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:0;background:var(--bg-elev)}
.xv-sf-fieldset legend{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);padding:0 6px;font-family:var(--sans)}
.xv-sf-radio{display:flex;align-items:flex-start;gap:8px;font-size:12px;padding:4px 0;cursor:pointer;color:var(--ink-2);line-height:1.4}
.xv-sf-radio:hover{color:var(--ink)}
.xv-sf-radio input{margin-top:2px;accent-color:var(--teal);flex-shrink:0}
.xv-sf-radio input:checked + span{color:var(--ink);font-weight:500}

/* AI-suggested visual flag (yellow border + sr-only description). Color is
   secondary; the aria-describedby tie-in is the primary accessibility signal. */
.xv-ai-suggested{outline:2px solid var(--warm);outline-offset:1px;animation:xv-ai-pulse 1.2s ease-out 1}
@keyframes xv-ai-pulse{0%{background:rgba(139,97,68,0.18)}100%{background:transparent}}
.xv-sf-fieldset.xv-ai-suggested{box-shadow:0 0 0 2px var(--warm)}
.xv-pv-band.xv-ai-suggested{border-color:var(--warm)!important;box-shadow:0 0 0 2px rgba(139,97,68,0.25)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* v2.88 — per-metric AI rationale: ⓘ buttons + popover + evidence drawer. */
/* v2.91 (B3) — bumped from 18x18 to 24x24 so the visible target is closer
   to WCAG 2.5.5 territory. A 44x44 phantom hit area via ::before was the
   alternative but risks intercepting clicks on adjacent SF radio inputs in
   the legend layout — kept the simpler approach. */
.xv-rationale-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:6px;padding:0;border:1px solid var(--line);background:var(--bg-elev);color:var(--ink-3);border-radius:50%;font-size:12px;line-height:1;cursor:pointer;vertical-align:middle;font-family:var(--sans);transition:color .15s,border-color .15s,background .15s}
.xv-rationale-btn:hover,.xv-rationale-btn:focus-visible{color:var(--teal);border-color:var(--teal-light);background:var(--bg-cream-2);outline:none}
.xv-rationale-btn:focus-visible{box-shadow:0 0 0 2px rgba(45,110,101,0.25)}
.xv-sf-fieldset legend .xv-rationale-btn{margin-left:8px}
.xv-rationale-pop{z-index:10001;max-width:320px;padding:10px 12px;background:var(--bg-elev);color:var(--ink);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-md);font-size:12px;line-height:1.5;font-family:var(--sans)}
.xv-evidence-host:empty{display:none}
.xv-evidence-host{margin-bottom:14px}
.xv-evidence-drawer{border:1px solid var(--line);border-radius:8px;background:var(--bg-cream-2);overflow:hidden}
.xv-evidence-drawer>summary{padding:8px 12px;cursor:pointer;font-size:12px;font-weight:600;color:var(--ink-2);list-style:none;user-select:none}
.xv-evidence-drawer>summary::-webkit-details-marker{display:none}
.xv-evidence-drawer>summary::before{content:'▸ ';color:var(--ink-3);margin-right:4px;display:inline-block;transition:transform .15s}
.xv-evidence-drawer[open]>summary::before{transform:rotate(90deg)}
.xv-evidence-drawer>summary:hover{color:var(--ink)}
.xv-evidence-body{padding:0 14px 12px 14px;font-size:12px;line-height:1.6;color:var(--ink-2);white-space:pre-wrap}
.xv-evidence-stub{font-size:11px;color:var(--ink-3);font-style:italic;padding:6px 10px}

/* Live preview */
.xv-live-preview{margin-top:16px;padding:12px 14px;background:linear-gradient(180deg,rgba(45,110,101,0.05),rgba(45,110,101,0));border:1px solid var(--teal-light);border-radius:10px}
.xv-preview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.xv-preview-cell{text-align:center}
.xv-preview-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin-bottom:3px;font-weight:600}
.xv-preview-val{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink);font-family:var(--serif);letter-spacing:-0.005em}
.xv-preview-xv{color:var(--teal)}

/* Toast */
.xv-toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:8px;font-size:13px;opacity:0;transition:opacity .25s;z-index:10000;pointer-events:none;box-shadow:var(--shadow-md);font-weight:500}
.xv-toast.show{opacity:1}

/* Portfolio view */
.xvp-shell{padding:22px 28px 60px;color:var(--ink)}
.xvp-header{display:flex;align-items:center;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.xvp-header h2{margin:0;font-size:24px;font-family:var(--serif);font-weight:500;color:var(--ink);letter-spacing:-0.005em}
.xvp-scope-toggle{display:inline-flex;background:var(--bg-elev);border:1px solid var(--line);border-radius:8px;padding:3px;flex:0 1 280px}
.xvp-scope{flex:1;background:transparent;border:none;color:var(--ink-2);padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;border-radius:6px;transition:all .15s;font-family:var(--sans)}
.xvp-scope:hover{color:var(--ink)}
.xvp-scope.active{background:var(--teal);color:#fff;box-shadow:0 1px 3px rgba(45,110,101,0.25)}
.xvp-metrics{margin-bottom:18px}
.xvp-metrics-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.xvp-metric{padding:12px 14px;background:var(--bg-elev);border:1px solid var(--line);border-radius:8px}
.xvp-metric-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin-bottom:4px;font-weight:600}
.xvp-metric-val{font-size:20px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink);font-family:var(--serif);letter-spacing:-0.005em}
/* v3.68 — small qualifier on a metric tile (e.g. "incl. 2 ideas", "startups only") */
.xvp-metric-sub{font-size:10px;font-weight:600;color:var(--ink-3);font-family:inherit;letter-spacing:0}
.xvp-metric-lbl .xvp-metric-sub{text-transform:none;letter-spacing:0}
.xvp-loading,.xvp-empty,.xvp-error{padding:24px;text-align:center;color:var(--ink-3);font-style:italic;background:var(--bg-elev);border:1px solid var(--line);border-radius:8px}
.xvp-error{color:var(--rose);font-style:normal}
.xvp-table-wrap{background:var(--bg-elev);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.xvp-table{width:100%;border-collapse:collapse;font-size:13px}
.xvp-table thead th{background:var(--bg-cream-2);padding:10px 12px;text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);border-bottom:1px solid var(--line);position:sticky;top:0;font-weight:700}
.xvp-sortable{cursor:pointer;user-select:none}
.xvp-sortable:hover{color:var(--teal)}
.xvp-table tbody tr{border-bottom:1px solid var(--line-soft)}
.xvp-table tbody tr:last-child{border-bottom:none}
.xvp-table tbody tr:hover{background:var(--bg-cream)}
.xvp-table td{padding:10px 12px;font-variant-numeric:tabular-nums;color:var(--ink)}
.xvp-c-name{font-variant-numeric:normal}
.xvp-link{color:var(--ink);text-decoration:none;font-weight:500}
.xvp-link:hover{color:var(--teal);text-decoration:underline}
.xvp-ai-badge{display:inline-block;margin-left:6px;font-size:9px;font-weight:700;padding:1px 6px;border-radius:8px;background:rgba(139,97,68,0.15);color:var(--warm);text-transform:uppercase;letter-spacing:.04em;cursor:help}
/* v3.66 — scored ideas in the portfolio (excluded from rollup totals) */
.xvp-idea-badge{display:inline-block;margin-left:6px;font-size:9px;font-weight:700;padding:1px 6px;border-radius:8px;background:rgba(0,133,124,0.13);color:var(--teal-deep,#00857C);text-transform:uppercase;letter-spacing:.04em;cursor:help}
/* v3.72 — free / return / future-potential chips + cost inputs + future-potential picker */
.xv-nocost-chip{display:inline-block;margin-left:6px;font-size:9px;font-weight:700;padding:1px 6px;border-radius:8px;background:rgba(0,133,124,0.16);color:var(--teal-deep,#00857C);letter-spacing:.03em;cursor:help}
.xv-roi-chip{display:inline-block;margin-left:6px;font-size:9px;font-weight:700;padding:1px 6px;border-radius:8px;background:var(--bg-cream-2);color:var(--ink-2);cursor:help}
.xv-fp-chip{display:inline-block;margin-left:6px;font-size:9px;font-weight:700;padding:1px 6px;border-radius:8px;background:rgba(120,80,160,0.13);color:#7a4fae;cursor:help}
.xv-nocost-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);margin-bottom:8px;cursor:pointer}
.xv-nocost-row input{width:auto;margin:0}
.xv-fp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.xv-fp-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-3)}
.xv-fp-field input{width:100%}
.xv-preview-fp{margin-top:8px;font-size:12px;color:var(--ink-2)}
.xv-preview-fp-sub{color:var(--ink-3);font-size:11px}
.if-xv-fp{margin:2px 0 12px;padding:8px 10px;background:rgba(120,80,160,0.07);border:1px solid var(--line-soft);border-radius:8px;font-size:13px;color:var(--ink-2)}
.if-xv-fp-lbl{font-weight:600;color:#7a4fae}
.if-xv-fp-sub{font-size:11px;color:var(--ink-3)}

/* Responsive */
@media (max-width:1099px){
  .xvp-metrics-row{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:767px){
  .xvp-metrics-row{grid-template-columns:repeat(2,1fr)}
  .xv-conf-row{grid-template-columns:1fr;gap:6px}
  .xv-conf-readout{text-align:left;align-self:flex-start}
  .xv-pv-bands{grid-template-columns:1fr}
  .xv-sf-grid{grid-template-columns:1fr}
  .xv-preview-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  /* Table → card list on phones. Standard "responsive data table" pattern. */
  .xvp-table,.xvp-table thead,.xvp-table tbody,.xvp-table tr,.xvp-table th,.xvp-table td{display:block}
  .xvp-table thead{display:none}
  .xvp-table tbody tr{padding:12px 14px;border-bottom:1px solid var(--line)}
  .xvp-table td{padding:3px 0;border:none;display:flex;justify-content:space-between;font-size:13px}
  .xv-row{flex-direction:column;align-items:flex-start;gap:6px}
  .xv-row-label{flex:0 0 auto}
  .xv-input-money{font-size:16px;width:100%}  /* iOS auto-zoom kill */
  .xv-ts-select{font-size:16px}
  .xv-modal{width:96vw;max-height:94vh;border-radius:8px}
  .xv-modal-body{padding:14px 16px}
}
@media (max-width:420px){
  .xvp-shell{padding:12px 14px 40px}
  .xvp-metrics-row{grid-template-columns:1fr 1fr}
}

/* ════════════════ v2.110 — Innovation Framework + stage badge ════════════════ */
/* Stage badge — mirrors .dashv2-cc-badge; colored by funnel stage with MSD tokens. */
.stage-badge{display:inline-flex;align-items:center;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:2px 8px;border-radius:11px;white-space:nowrap;line-height:1.6}
.stage-badge.stage-strategy{background:var(--bg-cream-2);color:var(--ink-3)}
.stage-badge.stage-sensing{background:var(--sage-light);color:var(--sage)}
.stage-badge.stage-fit-check{background:var(--slate-light);color:var(--slate)}
.stage-badge.stage-explore{background:#0C2340;color:#fff}  /* v3.1 — MSD navy (was brown --warm) */
.stage-badge.stage-feasibility{background:var(--teal-light);color:var(--teal-dark)}
.stage-badge.stage-pilot{background:var(--teal);color:#fff}
.stage-badge.stage-adopt{background:var(--teal-dark);color:#fff}
.stage-badge.stage-exited{background:var(--bg-cream-2);color:var(--ink-3)}
/* v3.58 — LT Alignment gates can now be a startup's resolved stage (I.F.-placed). Give the
   card badge a navy "checkpoint" pill so it reads as intentional, not unstyled. */
.stage-badge.stage-lt-align-1,.stage-badge.stage-lt-align-2{background:#0C2340;color:#fff}

#viewInnovationFramework{padding:0;overflow:auto}
.inno-shell{padding:24px 28px 48px;max-width:1280px;margin:0 auto}
.inno-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.inno-header h2{font-family:var(--serif);font-size:24px;font-weight:500;color:var(--ink);margin:0}
.inno-sub{font-size:12.5px;color:var(--ink-2);margin-top:4px;max-width:640px;line-height:1.5}
.inno-about-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--teal-dark);font-size:12px;font-weight:600;cursor:pointer;font-family:var(--sans);flex-shrink:0}
.inno-about-btn:hover{background:var(--bg-cream);border-color:var(--teal)}
.inno-loading,.inno-hint,.inno-empty{color:var(--ink-3);font-size:13px;padding:18px 0}
.inno-hint{background:var(--bg-cream);border:1px solid var(--line-soft);border-radius:10px;padding:14px 16px;margin-top:16px}
/* v3.14 — portfolio search (freq:a2c7ac08, P1) */
.inno-search{position:relative;display:flex;align-items:center;margin-bottom:14px;max-width:560px}
.inno-search-icon{position:absolute;left:12px;width:15px;height:15px;color:var(--ink-3);pointer-events:none}
.inno-search-input{width:100%;padding:9px 34px 9px 34px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font-size:13.5px;font-family:var(--sans)}
.inno-search-input:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(0,133,124,.12)}
.inno-search-input::-webkit-search-cancel-button{display:none}
.inno-search-clear{position:absolute;right:8px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border:none;background:var(--bg-cream);color:var(--ink-2);border-radius:50%;font-size:15px;line-height:1;cursor:pointer}
.inno-search-clear:hover{background:var(--line);color:var(--ink)}
.inno-search-summary{font-size:12px;color:var(--ink-2);padding:2px 0 10px;font-weight:600}
.inno-search-more{font-weight:400;color:var(--ink-3)}
.inno-search-list{display:flex;flex-direction:column;gap:2px}

/* Funnel flow */
.inno-funnel-wrap{overflow-x:auto;padding:6px 2px 10px}
.inno-flow{display:flex;align-items:center;gap:6px;min-width:max-content}
.inno-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:96px;padding:14px 12px;border-radius:14px;background:var(--teal-light);color:var(--teal-dark);cursor:pointer;border:2px solid transparent;transition:border-color .12s,transform .12s}
.inno-stage:hover{transform:translateY(-2px)}
.inno-stage.open{border-color:var(--teal-dark)}
.inno-stage.dim{background:var(--bg-cream-2);color:var(--ink-3);cursor:default}
.inno-stage.dim:hover{transform:none}
.inno-stage-label{font-size:11px;font-weight:600;text-align:center;letter-spacing:.01em}
.inno-stage-count{font-family:var(--serif);font-size:20px;font-weight:600;line-height:1}
/* stage-tinted nodes reuse the badge palette */
.inno-stage.stage-sensing{background:var(--sage-light);color:var(--sage)}
.inno-stage.stage-fit-check{background:var(--slate-light);color:var(--slate)}
.inno-stage.stage-explore{background:#0C2340;color:#fff}  /* v3.1 — MSD navy (was brown --warm) */
.inno-stage.stage-feasibility{background:var(--teal-light);color:var(--teal-dark)}
.inno-stage.stage-pilot{background:var(--teal);color:#fff}
.inno-stage.stage-adopt{background:var(--teal-dark);color:#fff}
.inno-stage.stage-exited{background:var(--bg-cream-2);color:var(--ink-3)}
.inno-gate{display:flex;align-items:center;justify-content:center;min-width:74px;padding:10px 8px;border:1.5px dashed var(--ink-3);border-radius:8px;color:var(--ink-2);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;text-align:center}
/* v3.58 — a gate (LT Alignment) that holds I.F.-placed startups: extends .inno-stage
   (clickable + shows a count) but keeps the dashed-gate look so it still reads as a gate. */
.inno-gate-holds{background:transparent;color:var(--ink-2);border:1.5px dashed var(--ink-3);min-width:84px;text-transform:uppercase;letter-spacing:.04em}
.inno-gate-holds .inno-stage-label{font-size:10px;font-weight:700}
.inno-gate-holds:hover{border-color:var(--ink-2)}
.inno-gate-holds.open{border-style:solid;border-color:var(--ink-2)}
.inno-flow-arrow{color:var(--ink-3);font-size:18px;flex-shrink:0}
.inno-baseline{display:flex;justify-content:space-between;align-items:center;margin:6px 2px 0;padding:6px 14px;border-radius:8px;background:linear-gradient(90deg,var(--teal) 0%,var(--teal-light) 100%);color:#fff;font-size:11px;font-weight:600;font-style:italic}
.inno-baseline-lcm{color:var(--teal-dark);background:#fff;padding:2px 10px;border-radius:6px}

/* Drill-in panel + board rows */
.inno-panel{margin-top:18px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow-sm);overflow:hidden}
.inno-panel-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line-soft);flex-wrap:wrap}
.inno-panel-count{font-size:12px;color:var(--ink-3)}
/* v3.15 — per-category search inside an open stage panel */
.inno-stage-search{margin-left:auto;min-width:180px;flex:0 1 240px;padding:7px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-size:12.5px;font-family:var(--sans)}
.inno-stage-search:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(0,133,124,.12)}
.inno-stage-search::-webkit-search-cancel-button{display:none}
.inno-stage-search-note{margin-top:6px;padding:6px 8px;font-size:11px;color:var(--ink-3);background:var(--bg-cream);border-radius:6px}
.inno-panel-list{padding:6px 8px;max-height:520px;overflow-y:auto}
.inno-row{display:flex;align-items:center;gap:8px;padding:6px;border-radius:8px}
.inno-row:hover{background:var(--bg-cream-2)}
.inno-row-avatar{flex-shrink:0;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:9px;font-weight:700}
.inno-row-name{flex:1;min-width:0;font-size:12.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;background:none;border:none;padding:0;font-family:var(--sans);cursor:pointer}
.inno-row-name:hover{color:var(--teal-dark);text-decoration:underline}
.inno-row-loc{color:var(--ink-3);font-size:11px}
.inno-row-src{flex-shrink:0;font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:1px 5px;border-radius:5px}
.inno-row-src.is-auto{background:var(--bg-cream-2);color:var(--ink-3)}
.inno-row-src.is-override{background:var(--teal-dark);color:#fff}  /* v3.1 — MSD teal (was brown --warm-light) */
.inno-assign{flex-shrink:0;font-family:var(--sans);font-size:11px;padding:3px 6px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);cursor:pointer;max-width:120px}
.inno-reset{flex-shrink:0;background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:14px;padding:0 4px;line-height:1}
.inno-reset:hover{color:var(--teal)}
.inno-showall{display:block;width:100%;margin-top:6px;padding:7px;background:var(--bg-cream-2);border:none;border-radius:8px;color:var(--teal-dark);font-size:11.5px;font-weight:600;cursor:pointer;font-family:var(--sans)}
.inno-showall:hover{background:var(--teal-light)}

/* Modals — About + startup detail (shared shell). */
.inno-modal{position:fixed;inset:0;z-index:2200;display:flex;align-items:center;justify-content:center;padding:24px}
.inno-modal[hidden]{display:none}
.inno-modal-backdrop{position:absolute;inset:0;background:rgba(27,32,39,.5);backdrop-filter:blur(3px)}
.inno-modal-card{position:relative;background:#fff;border-radius:14px;box-shadow:var(--shadow-md);max-width:760px;width:100%;max-height:86vh;overflow-y:auto;padding:24px 26px}
/* v3.0 — detail card scrolls its BODY (not the whole card) so long content is
   reachable and the close button stays pinned. flex column + min-height:0 is
   the canonical fix for "modal won't scroll". */
.inno-detail-card{max-width:860px;padding:0;display:flex;flex-direction:column;max-height:88vh;overflow:hidden}
.inno-modal-close{position:absolute;top:10px;right:12px;background:none;border:none;font-size:24px;line-height:1;color:var(--ink-3);cursor:pointer;z-index:2}
.inno-modal-close:hover{color:var(--ink)}
.inno-detail-card .inno-modal-close{background:#fff;border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px rgba(0,0,0,.12)}
.inno-detail-body{flex:1;min-height:0;overflow-y:auto;padding:16px 18px 24px}
/* About modal content */
.inno-about-title{font-family:var(--serif);font-size:22px;font-weight:500;color:var(--ink);margin:0 28px 8px 0}
.inno-about-intro{font-size:13px;color:var(--ink-2);line-height:1.55;margin:0 0 16px}
.inno-about-flow{display:flex;flex-direction:column;gap:0}
.inno-about-arrow{color:var(--ink-3);text-align:center;font-size:13px;line-height:1;margin:2px 0}
.inno-about-stage{border:1px solid var(--line-soft);border-radius:10px;padding:11px 13px;background:var(--bg-cream)}
.inno-about-stage.is-gate{background:#fff;border-style:dashed;border-color:var(--ink-3)}
.inno-about-stage-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.inno-about-gate{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2);border:1px dashed var(--ink-3);border-radius:11px;padding:2px 8px}
.inno-about-purpose{font-size:12.5px;color:var(--ink);font-weight:500}
.inno-about-items{margin:7px 0 0;padding-left:18px}
.inno-about-items li{font-size:12px;color:var(--ink-2);line-height:1.5}
.inno-about-foot{margin-top:16px;padding-top:12px;border-top:1px solid var(--line-soft);font-size:12px;color:var(--ink-2);line-height:1.55}
@media (max-width:640px){
  .inno-shell{padding:16px 14px 40px}
  .inno-modal{padding:12px}
  .inno-modal-card{padding:18px 16px}
}

/* ── I.F. (Beta) — Innovation Framework Analyzer (v3.19/3.20; redesigned v3.22) ── */
.if-shell{max-width:1140px;margin:0 auto;padding:8px 4px 48px}
.if-head{margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid var(--line-soft)}
.if-title{font-family:var(--sans);font-size:28px;font-weight:800;color:var(--ink);margin:0 0 6px;letter-spacing:-.02em;display:flex;align-items:center;gap:10px}
.if-beta{font-size:11px;font-weight:700;color:#fff;background:var(--teal-dark);padding:3px 9px;border-radius:999px;letter-spacing:.06em;text-transform:uppercase}
.if-sub{color:var(--ink-2);font-size:14.5px;line-height:1.55;margin:0;max-width:760px}
.if-grid{display:grid;grid-template-columns:minmax(330px,380px) 1fr;gap:26px;align-items:start}
/* Input panel — contained, elevated card */
.if-input{display:flex;flex-direction:column;gap:14px;background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 1px 2px rgba(12,35,64,.04),0 6px 16px rgba(12,35,64,.05);position:sticky;top:16px}
.if-drop{border:1.5px dashed var(--line);border-radius:12px;padding:28px 16px;text-align:center;color:var(--ink-2);cursor:pointer;background:var(--bg-cream);transition:border-color .15s,background .15s,transform .1s;display:flex;flex-direction:column;align-items:center;gap:9px}
.if-drop:hover,.if-drop:focus,.if-drop.drag{border-color:var(--teal);background:#f1faf8;outline:none}
.if-drop.drag{transform:scale(1.01)}
.if-drop svg{width:28px;height:28px;color:var(--teal);stroke-width:1.6}
.if-drop b{color:var(--teal-dark);font-weight:700}
.if-drop small{color:var(--ink-3);font-size:12px}
.if-files{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.if-file{display:flex;align-items:center;gap:9px;background:var(--bg-cream);border:1px solid var(--line-soft);border-radius:9px;padding:8px 10px;font-size:13px}
.if-file::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--teal-light);flex:none}
.if-file-name{flex:1;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.if-file-size{color:var(--ink-3);font-size:11.5px}
.if-file-rm{border:none;background:none;color:var(--ink-3);font-size:18px;line-height:1;cursor:pointer;padding:0 4px;min-width:28px;min-height:28px;border-radius:6px}
.if-file-rm:hover{color:var(--rose);background:var(--bg-cream-2)}
.if-ctx-label{font-size:12px;font-weight:700;color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}
.if-ctx{width:100%;border:1px solid var(--line);border-radius:9px;padding:11px 12px;font-family:var(--sans);font-size:14px;color:var(--ink);background:var(--bg-cream);resize:vertical;box-sizing:border-box;transition:border-color .15s,background .15s;line-height:1.5}
.if-ctx:focus{outline:none;border-color:var(--teal);background:var(--bg-elev);box-shadow:0 0 0 3px rgba(0,133,124,.1)}
.if-actions{display:flex;gap:10px;flex-wrap:wrap}
.if-btn-primary{background:var(--teal);color:#fff;border:none;border-radius:9px;padding:11px 22px;font-size:14px;font-weight:700;cursor:pointer;min-height:44px;box-shadow:0 1px 2px rgba(0,106,95,.25);transition:background .15s,box-shadow .15s,transform .1s}
.if-btn-primary:hover{background:var(--teal-dark);box-shadow:0 3px 10px rgba(0,106,95,.28)}
.if-btn-primary:active{transform:translateY(1px)}
.if-btn-primary:disabled{opacity:.55;cursor:default;box-shadow:none}
.if-btn-ghost{background:var(--bg-elev);border:1px solid var(--line);border-radius:9px;padding:11px 16px;font-size:14px;color:var(--ink-2);cursor:pointer;min-height:44px;transition:border-color .15s,color .15s}
.if-btn-ghost:hover{border-color:var(--ink-3);color:var(--ink)}
.if-btn-link{background:none;border:none;color:var(--ink-3);font-size:13px;cursor:pointer;padding:2px 0;text-decoration:underline}
.if-btn-link:hover{color:var(--rose)}
.if-disclaimer{font-size:12px;color:var(--ink-3);line-height:1.5;margin:2px 0 0}
/* Output */
.if-output{min-height:220px}
.if-empty,.if-loading,.if-error{border:1px solid var(--line);border-radius:14px;padding:40px 28px;color:var(--ink-2);font-size:14px;background:var(--bg-elev);line-height:1.6;text-align:center}
.if-empty{border-style:dashed;background:var(--bg-cream)}
.if-error{color:var(--rose);border-color:var(--rose);background:#fff;text-align:left}
.if-loading{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--ink-2);text-align:left}
.if-spin{width:18px;height:18px;border:2.5px solid var(--line);border-top-color:var(--teal);border-radius:50%;animation:if-spin .7s linear infinite;flex:none}
@keyframes if-spin{to{transform:rotate(360deg)}}
/* Placement card */
.if-result{display:flex;flex-direction:column;gap:18px}
.if-place{background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;padding:20px 22px 20px 26px;box-shadow:0 1px 2px rgba(12,35,64,.04),0 6px 16px rgba(12,35,64,.05);position:relative;overflow:hidden}
.if-place::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--teal)}
.if-place.exited::before{background:var(--ink-3)}
.if-place-main{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.if-place-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);font-weight:600}
.if-place-stage{font-size:26px;font-weight:800;color:var(--ink);letter-spacing:-.01em}
.if-conf{font-size:11px;font-weight:700;padding:4px 11px;border-radius:999px;text-transform:capitalize;letter-spacing:.02em}
.if-conf-high{background:#e3f3ef;color:var(--teal-dark)}
.if-conf-medium{background:#f5edda;color:var(--warm)}
.if-conf-low{background:#f9e7e6;color:var(--rose)}
.if-summary{margin:12px 0 0;color:var(--ink-2);font-size:14px;line-height:1.6}
/* Funnel stepper */
.if-funnel{display:flex;align-items:flex-start;gap:0;flex-wrap:wrap;background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;padding:18px 14px;box-shadow:0 1px 2px rgba(12,35,64,.04)}
.if-step{display:flex;flex-direction:column;align-items:center;gap:7px;flex:1;min-width:56px}
.if-step-dot{width:15px;height:15px;border-radius:50%;background:var(--bg-cream-2);border:2px solid var(--line);transition:all .2s;z-index:1}
.if-step.done .if-step-dot{background:var(--teal-light);border-color:var(--teal)}
.if-step.active .if-step-dot{background:var(--teal);border-color:var(--teal-dark);box-shadow:0 0 0 5px rgba(0,133,124,.16)}
.if-step-lbl{font-size:11px;color:var(--ink-3);text-align:center;line-height:1.25;font-weight:500}
.if-step.done .if-step-lbl{color:var(--ink-2)}
.if-step.active .if-step-lbl{color:var(--teal-dark);font-weight:700}
.if-step-sep{height:2px;background:var(--line);flex:1 1 8px;min-width:8px;align-self:flex-start;margin-top:24px;border-radius:1px}
.if-step-sep.done{background:var(--teal-light)}
/* Blocking gap */
.if-gap{background:#fcf6ec;border:1px solid var(--warm-light);border-left:3px solid var(--warm);border-radius:10px;padding:13px 16px;color:var(--ink);font-size:14px;line-height:1.55}
.if-gap b{color:var(--warm)}
/* Sections */
.if-section h3,.if-qcard h3,.if-refine h3{font-size:12px;font-weight:700;color:var(--ink-3);margin:0 0 10px;text-transform:uppercase;letter-spacing:.06em}
.if-ledger{width:100%;border-collapse:collapse;font-size:13px}
.if-ledger th{text-align:left;color:var(--ink-3);font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;padding:0 10px 8px;border-bottom:1px solid var(--line)}
.if-ledger td{padding:10px;border-bottom:1px solid var(--line-soft);vertical-align:top}
.if-ledger tr:last-child td{border-bottom:none}
.if-ledger tbody tr{transition:background .12s}
.if-ledger tbody tr:hover{background:var(--bg-cream)}
.if-led-crit{color:var(--ink);font-weight:500}
.if-led-stage{display:inline-block;font-size:10px;color:var(--ink-3);background:var(--bg-cream-2);border-radius:4px;padding:1px 6px;margin-left:6px;text-transform:capitalize;font-weight:600}
.if-led-ev{color:var(--ink-2);font-size:12px;line-height:1.5}
.if-muted{color:var(--ink-3)}
/* Verdict chips — leading dot for scannability */
.if-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.if-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.if-chip.vmet{background:#e3f3ef;color:var(--teal-dark)}
.if-chip.vpart{background:#f5edda;color:var(--warm)}
.if-chip.vmiss{background:var(--bg-cream-2);color:var(--ink-3)}
.if-chip.vcon{background:#f9e7e6;color:var(--rose)}
.if-chip.vass{background:#efe9f5;color:#6b4e9e}
/* Question / refine lists */
.if-qlist,.if-alist{margin:0;padding-left:18px;color:var(--ink-2);font-size:14px;line-height:1.65}
.if-qlist li,.if-alist li{margin-bottom:7px}
.if-sources{font-size:12px;color:var(--ink-3);border-top:1px solid var(--line-soft);padding-top:14px;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}
.if-src em{font-style:normal;color:var(--ink-2);opacity:.8}
/* Interview / refine */
.if-qcard{border:1px solid var(--line);border-radius:14px;padding:20px 22px;background:var(--bg-elev);box-shadow:0 1px 2px rgba(12,35,64,.04),0 6px 16px rgba(12,35,64,.05)}
.if-qrationale{font-size:13px;color:var(--ink-2);margin:0 0 16px;line-height:1.55;background:var(--bg-cream);border-radius:8px;padding:10px 12px}
.if-q{margin-bottom:16px}
.if-q-label{display:block;font-size:14px;color:var(--ink);font-weight:500;margin-bottom:6px;line-height:1.45}
.if-q-ans{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-family:var(--sans);font-size:14px;color:var(--ink);background:var(--bg-cream);resize:vertical;box-sizing:border-box;transition:border-color .15s,background .15s;line-height:1.5}
.if-q-ans:focus{outline:none;border-color:var(--teal);background:var(--bg-elev);box-shadow:0 0 0 3px rgba(0,133,124,.1)}
.if-qactions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:8px}
.if-qhint{font-size:12px;color:var(--ink-3);margin:12px 0 0}
.if-qcount{font-size:12px;color:var(--teal-dark);font-weight:600}
.if-refine{border-top:1px solid var(--line);padding-top:20px;margin-top:4px}
@media(max-width:860px){.if-grid{grid-template-columns:1fr}.if-input{position:static}.if-step-lbl{font-size:10px}.if-place-stage{font-size:22px}}

/* I.F. (Beta) — xV estimate card (v3.23) */
.if-xv{background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;padding:18px 20px;box-shadow:0 1px 2px rgba(12,35,64,.04),0 6px 16px rgba(12,35,64,.05)}
.if-xv-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.if-xv-score{display:flex;flex-direction:column;gap:2px}
.if-xv-score-val{font-size:30px;font-weight:800;color:var(--teal-dark);letter-spacing:-.02em;line-height:1}
.if-xv-score-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-weight:600}
.if-xv-eff{font-size:12px;font-weight:700;padding:5px 11px;border-radius:999px;white-space:nowrap}
.if-xv-eff-excellent,.if-xv-eff-good{background:#e3f3ef;color:var(--teal-dark)}
.if-xv-eff-fair{background:#f5edda;color:var(--warm)}
.if-xv-eff-poor{background:#f9e7e6;color:var(--rose)}
.if-xv-eff-na{background:var(--bg-cream-2);color:var(--ink-3)}
/* v3.66 — adopt-xV control under the analyzer's xV estimate */
.if-adoptxv{margin:8px 0 4px;display:flex;flex-direction:column;gap:2px}
.if-adoptxv-hint{font-size:11px;color:var(--ink-3);line-height:1.4}
.if-xv-factors{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.if-xv-factor{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2);background:var(--bg-cream);border:1px solid var(--line-soft);border-radius:8px;padding:5px 10px}
.if-xv-factor b{color:var(--ink);font-weight:700}
.if-xv-weak b{color:var(--warm)}
.if-xv-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 24px}
.if-xv-col-h{font-size:11px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:9px}
.if-xv-dim{display:flex;align-items:center;gap:10px;margin-bottom:7px;font-size:12.5px}
.if-xv-dim-lbl{flex:0 0 88px;color:var(--ink-2)}
.if-xv-dim-val{flex:0 0 32px;text-align:right;color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.if-xv-bar{flex:1;height:6px;background:var(--bg-cream-2);border-radius:999px;overflow:hidden}
.if-xv-bar-fill{display:block;height:100%;background:var(--teal);border-radius:999px}
.if-xv-rationale{font-size:13px;color:var(--ink-2);line-height:1.55;margin:16px 0 0;background:var(--bg-cream);border-radius:8px;padding:11px 13px}
.if-xv-formula{font-size:11px;color:var(--ink-3);line-height:1.5;margin:10px 0 0;font-style:italic}
@media(max-width:860px){.if-xv-grid{grid-template-columns:1fr}}

/* I.F. (Beta) — "Explain the score" trigger + cinematic player (v3.25; smooth keynote v3.27) */
.ife-cta-wrap{display:flex;justify-content:center;margin:2px 0}
.ife-cta{display:inline-flex;align-items:center;gap:10px;background:linear-gradient(135deg,var(--teal),var(--teal-dark));color:#fff;border:none;border-radius:999px;padding:11px 22px;font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 2px 10px rgba(0,106,95,.28);transition:transform .12s,box-shadow .15s}
.ife-cta:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(0,106,95,.34)}
.ife-cta-play{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:rgba(255,255,255,.22);font-size:10px}
.ife-cta-sub{font-weight:500;font-size:12px;opacity:.85;border-left:1px solid rgba(255,255,255,.35);padding-left:10px;margin-left:2px}

/* Overlay / stage — living, drifting brand backdrop */
.ife-overlay{position:fixed;inset:0;z-index:4000;display:none;align-items:center;justify-content:center;padding:28px;background:#071629;opacity:0;transition:opacity .5s ease;overflow:hidden;font-family:var(--sans)}
.ife-overlay.on{display:flex;opacity:1}
.ife-overlay::before{content:"";position:absolute;inset:-8%;z-index:0;background:radial-gradient(55% 50% at 22% 18%,rgba(0,133,124,.40),transparent 62%),radial-gradient(50% 50% at 82% 78%,rgba(110,206,178,.22),transparent 60%),radial-gradient(130% 120% at 50% 0%,#143963 0%,#0C2340 52%,#061325 100%);animation:ife-drift 26s ease-in-out infinite alternate;will-change:transform}
.ife-overlay::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(120% 100% at 50% 50%,transparent 55%,rgba(0,0,0,.45) 100%)}
@keyframes ife-drift{from{transform:scale(1) translate(0,0)}to{transform:scale(1.12) translate(-2.5%,-1.5%)}}
.ife-stage{position:relative;z-index:1;width:min(940px,100%);height:min(640px,92vh);display:flex;flex-direction:column;color:#eaf2f1}
.ife-brandbar{display:flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:rgba(234,242,241,.6);font-weight:600;margin-bottom:4px}
.ife-brandbar::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--teal-light);box-shadow:0 0 10px var(--teal-light)}
.ife-x{position:absolute;top:-2px;right:-2px;background:rgba(255,255,255,.08);border:none;color:#cfe0dd;font-size:22px;line-height:1;width:38px;height:38px;border-radius:50%;cursor:pointer;z-index:3;transition:background .15s}
.ife-x:hover{background:rgba(255,255,255,.2);color:#fff}
.ife-canvas{position:relative;flex:1;min-height:0;margin-top:6px}
/* Scenes cross-dissolve (opacity + subtle scale); children carry the motion */
.ife-scene{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;opacity:0;transform:scale(.992);transition:opacity .7s ease,transform .9s cubic-bezier(.22,1,.36,1);pointer-events:none;padding:10px}
.ife-scene.on{opacity:1;transform:none;pointer-events:auto}
/* Staggered "rise + unblur" entrance for any .ife-in element (delays set inline) */
.ife-in{opacity:0;transform:translateY(16px);filter:blur(6px);animation:ife-rise .85s cubic-bezier(.22,1,.36,1) forwards}
@keyframes ife-rise{to{opacity:1;transform:none;filter:none}}
/* intro / outro */
.ife-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.18em;color:var(--teal-light);margin-bottom:16px}
.ife-h{font-family:var(--sans);font-size:40px;font-weight:700;color:#fff;text-align:center;margin:0;letter-spacing:-.015em;line-height:1.1;display:flex;flex-direction:column;gap:12px;align-items:center}
.ife-out-stage{font-size:30px;font-weight:600;color:#fff}
.ife-out-xv{font-size:52px;font-weight:800;color:var(--teal-light);text-shadow:0 0 30px rgba(110,206,178,.35)}
/* funnel scene */
.ife-funnelscene{gap:30px}
.ife-funnel{display:flex;align-items:flex-start;gap:0;flex-wrap:wrap;justify-content:center;max-width:840px}
.ife-step{display:flex;flex-direction:column;align-items:center;gap:9px;flex:0 0 auto;width:82px}
.ife-dot{width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.1);border:2px solid rgba(255,255,255,.28);transition:all .6s cubic-bezier(.22,1,.36,1)}
.ife-step.done .ife-dot{background:var(--teal-light);border-color:var(--teal-light);box-shadow:0 0 16px rgba(110,206,178,.55)}
.ife-step.active .ife-dot{background:var(--teal-light);border-color:#fff;animation:ife-pulse 1.5s infinite}
@keyframes ife-pulse{0%,100%{box-shadow:0 0 0 0 rgba(110,206,178,.55)}50%{box-shadow:0 0 0 14px rgba(110,206,178,0)}}
.ife-slbl{font-size:11px;color:rgba(234,242,241,.5);text-align:center;line-height:1.2;transition:color .6s}
.ife-step.done .ife-slbl{color:rgba(234,242,241,.85)}
.ife-step.active .ife-slbl{color:#fff;font-weight:700}
.ife-sep{height:2px;width:18px;background:rgba(255,255,255,.16);align-self:flex-start;margin-top:28px;transition:background .6s ease}
.ife-sep.done{background:var(--teal-light)}
.ife-ledger{min-height:96px;display:flex;flex-direction:column;gap:9px;width:min(580px,92%)}
.ife-led-row{display:flex;align-items:center;gap:11px;font-size:13.5px;color:rgba(234,242,241,.92)}
.ife-led-crit{flex:1}
.ife-led-empty{font-size:13px;color:rgba(234,242,241,.5);font-style:italic}
.ife-gapcall{display:none;align-self:center;background:rgba(191,135,78,.18);border:1px solid var(--warm-light);color:#f0d9bd;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:7px 16px;border-radius:999px}
.ife-gapcall.on{display:inline-block}
/* xv scene */
.ife-xvhead{font-size:13px;color:rgba(234,242,241,.6);margin-bottom:30px;text-align:center;letter-spacing:.02em}
.ife-formula{display:flex;align-items:center;justify-content:center;gap:13px;flex-wrap:wrap;max-width:860px}
.ife-tile{display:flex;flex-direction:column;align-items:center;gap:7px;min-width:122px;padding:18px 15px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.12);border-radius:16px;transition:box-shadow .4s,background .4s,transform .4s}
.ife-tile.on{box-shadow:0 0 0 2px var(--teal-light),0 0 30px rgba(110,206,178,.4);background:rgba(110,206,178,.14);transform:translateY(-4px)}
.ife-tile.weak{box-shadow:0 0 0 2px var(--warm-light)}
.ife-tile-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:rgba(234,242,241,.6)}
.ife-tile-val{font-size:27px;font-weight:800;color:#fff}
.ife-op,.ife-eq{font-size:24px;color:rgba(234,242,241,.45)}
.ife-xvtotal{display:flex;flex-direction:column;align-items:center;gap:5px;opacity:0;transform:scale(.9);transition:opacity .6s ease,transform .7s cubic-bezier(.22,1,.36,1)}
.ife-xvtotal.shown{opacity:1;transform:none}
.ife-xvval{font-size:52px;font-weight:800;color:var(--teal-light);line-height:1;text-shadow:0 0 28px rgba(110,206,178,.35)}
.ife-xvlbl{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:rgba(234,242,241,.6)}
/* caption (broadcast lower-third) + controls */
.ife-caption{min-height:64px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:17px;line-height:1.55;color:#f1f7f6;max-width:780px;margin:10px auto 0;opacity:0;transform:translateY(8px);transition:opacity .55s ease,transform .55s cubic-bezier(.22,1,.36,1)}
.ife-caption.show{opacity:1;transform:none}
.ife-controls{display:flex;align-items:center;gap:13px;justify-content:center;margin-top:16px}
.ife-progress{display:flex;gap:5px;flex:1;max-width:420px}
.ife-tick{flex:1;height:4px;border-radius:2px;background:rgba(255,255,255,.16);cursor:pointer;transition:background .4s}
.ife-tick.done{background:var(--teal-light)}
.ife-ctl{background:rgba(255,255,255,.1);border:none;color:#dfeceb;width:40px;height:40px;border-radius:50%;font-size:15px;cursor:pointer;transition:background .15s,transform .12s}
.ife-ctl:hover{background:rgba(255,255,255,.22);color:#fff;transform:translateY(-1px)}
@media(max-width:760px){.ife-h{font-size:28px}.ife-step{width:60px}.ife-tile{min-width:94px;padding:13px 10px}.ife-tile-val{font-size:20px}.ife-xvval{font-size:38px}.ife-caption{font-size:14px}.ife-stage{height:94vh}}
@media(prefers-reduced-motion:reduce){.ife-overlay::before{animation:none}.ife-scene,.ife-in,.ife-tile,.ife-dot,.ife-sep,.ife-slbl,.ife-caption{transition:none!important;animation:none!important;opacity:1!important;transform:none!important;filter:none!important}}

/* I.F. (Beta) — required IP intake question (v3.27) */
.if-ip{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:2px 0 0;transition:border-color .2s,box-shadow .2s}
.if-ip legend{font-size:12px;font-weight:700;color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;padding:0 4px}
.if-req{color:var(--rose)}
.if-ip-opt{display:inline-flex;align-items:center;gap:6px;margin:6px 14px 0 0;font-size:14px;color:var(--ink);cursor:pointer}
.if-ip-opt input{accent-color:var(--teal);width:16px;height:16px;cursor:pointer}
.if-ip-missing{border-color:var(--rose);box-shadow:0 0 0 3px rgba(200,16,46,.12)}

/* I.F. (Beta) — explainer prep (ElevenLabs synthesis) state (v3.27) */
.ife-prep{display:flex;align-items:center;gap:12px;color:rgba(234,242,241,.85);font-size:16px;margin-top:18px}
.ife-prep .if-spin{width:20px;height:20px;border-color:rgba(255,255,255,.25);border-top-color:var(--teal-light)}

/* I.F. (Beta) explainer — v3.28 polish: one-row funnel, METI sub, richer motion */
.ife-sub{font-size:13px;color:rgba(234,242,241,.62);letter-spacing:.06em;text-transform:uppercase;margin-top:14px}
/* keep all 9 funnel stages on a single row (Adopt was wrapping) */
.ife-funnel{flex-wrap:nowrap;width:100%;max-width:900px}
.ife-step{flex:0 0 auto;width:auto;min-width:62px;padding:0 2px}
.ife-sep{flex:1 1 8px;min-width:8px}
@media(max-width:760px){.ife-step{min-width:40px}.ife-slbl{font-size:9px}}
/* drifting light orbs for depth/motion */
.ife-orb{position:absolute;z-index:0;border-radius:50%;filter:blur(60px);opacity:.5;pointer-events:none;will-change:transform}
.ife-orb1{width:420px;height:420px;background:radial-gradient(circle,rgba(0,133,124,.55),transparent 70%);top:-60px;left:-40px;animation:ife-orb-a 34s ease-in-out infinite alternate}
.ife-orb2{width:380px;height:380px;background:radial-gradient(circle,rgba(110,206,178,.4),transparent 70%);bottom:-80px;right:-30px;animation:ife-orb-b 40s ease-in-out infinite alternate}
.ife-orb3{width:300px;height:300px;background:radial-gradient(circle,rgba(84,80,228,.28),transparent 70%);top:40%;left:55%;animation:ife-orb-c 30s ease-in-out infinite alternate}
@keyframes ife-orb-a{from{transform:translate(0,0) scale(1)}to{transform:translate(60px,40px) scale(1.15)}}
@keyframes ife-orb-b{from{transform:translate(0,0) scale(1)}to{transform:translate(-50px,-40px) scale(1.2)}}
@keyframes ife-orb-c{from{transform:translate(0,0) scale(1)}to{transform:translate(-40px,30px) scale(.85)}}
/* connector light-sweep when a gate clears */
.ife-sep.done{background:linear-gradient(90deg,var(--teal-light),#bdeede,var(--teal-light));background-size:200% 100%;animation:ife-sweep 1.1s ease-out}
@keyframes ife-sweep{from{background-position:120% 0}to{background-position:0 0}}
/* active dot: add an expanding ring */
.ife-step.active .ife-dot{position:relative}
.ife-step.active .ife-dot::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:1.5px solid var(--teal-light);opacity:.6;animation:ife-ring 1.6s ease-out infinite}
@keyframes ife-ring{0%{transform:scale(.7);opacity:.7}100%{transform:scale(1.9);opacity:0}}
/* shimmer on the big numbers/title */
.ife-out-xv,.ife-xvval{background:linear-gradient(100deg,var(--teal-light) 30%,#d8fff2 50%,var(--teal-light) 70%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:ife-shimmer 4.5s linear infinite}
@keyframes ife-shimmer{from{background-position:160% 0}to{background-position:-60% 0}}
/* count-up reveal pop */
.ife-xvtotal.shown{animation:ife-pop .6s cubic-bezier(.22,1.4,.4,1)}
@keyframes ife-pop{0%{transform:scale(.86)}60%{transform:scale(1.04)}100%{transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.ife-orb,.ife-sep.done,.ife-step.active .ife-dot::after,.ife-out-xv,.ife-xvval,.ife-xvtotal.shown{animation:none!important}.ife-out-xv,.ife-xvval{-webkit-text-fill-color:initial;color:var(--teal-light)}}

/* ── concept scene: per-gate descriptor (v3.30) ───────────────────────────── */
.ife-concept{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.ife-cd-gate{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--teal-light);opacity:.85}
.ife-cd-stage{font-size:27px;font-weight:800;color:#fff;letter-spacing:-.01em;line-height:1.1}
.ife-cd-text{font-size:14.5px;color:rgba(234,242,241,.8)}
/* ── blocking-gap scene: locked gates + barrier + card (v3.30) ────────────── */
.ife-step.locked .ife-dot{background:rgba(191,135,78,.14);border-color:rgba(191,135,78,.55);box-shadow:none}
.ife-step.locked .ife-slbl{color:rgba(240,217,189,.5)}
.ife-step.locked{animation:ife-locked 2.4s ease-in-out infinite}
.ife-sep.barrier{background:linear-gradient(90deg,transparent,var(--warm-light),transparent);background-size:220% 100%;animation:ife-barrier 1.5s ease-in-out infinite}
.ife-gapcard{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;max-width:660px;margin:0 auto}
.ife-gc-tag{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#f0d9bd;background:rgba(191,135,78,.18);border:1px solid var(--warm-light);padding:7px 18px;border-radius:999px}
.ife-gc-blockers{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.ife-gc-unblock{font-size:15px;color:#eaf2f1;display:flex;align-items:center;gap:9px;max-width:600px}
.ife-gc-arrow{color:var(--teal-light);font-weight:800}
@keyframes ife-locked{0%,100%{opacity:.9}50%{opacity:.55}}
@keyframes ife-barrier{0%,100%{opacity:.45;background-position:140% 0}50%{opacity:1;background-position:0 0}}
@media(prefers-reduced-motion:reduce){.ife-step.locked,.ife-sep.barrier{animation:none!important}}

/* v3.34 fix-pass — card documents, I.F. startup picker, saved-result controls.
   Replaces the inline styles in the new app.js markup; uses the brand tokens. */
.sdoc-head{display:flex;align-items:center;justify-content:space-between}
.sdoc-list{margin-top:6px}
.sdoc-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:5px 0}
.sdoc-link{display:inline-flex;align-items:center;gap:5px;color:var(--blue-light);text-decoration:none}
.sdoc-link:hover{text-decoration:underline}
.sdoc-meta{color:var(--ink-3);font-size:12px}
.sdoc-acts{margin-left:auto;display:inline-flex;gap:6px}
.sdoc-empty,.sdoc-status{color:var(--ink-3);font-size:13px}
.sdoc-history{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}
.sdoc-row-old{opacity:.6}
.sdoc-hist-toggle{background:none;border:none;color:var(--blue-light);cursor:pointer;font-size:12px;padding:5px 0}
.ifc-list{margin-top:6px}
.ifc-row{display:flex;align-items:center;gap:8px;padding:5px 0;flex-wrap:wrap}
.ifc-meta{font-size:12px;color:var(--ink-3);margin-left:auto}
.if-opt{color:var(--ink-3);font-weight:400;font-size:13px}
.if-sp-box{position:relative}
.if-sp-box input{margin-bottom:0}
.if-sp-results{border:1px solid var(--line);border-radius:8px;margin-top:4px;background:var(--bg-elev);max-height:280px;overflow:auto}
.if-sp-opt{display:block;width:100%;text-align:left;padding:7px 9px;cursor:pointer;border:none;border-bottom:1px solid var(--line-soft);background:none;color:var(--ink);font:inherit}
.if-sp-opt:last-child{border-bottom:none}
.if-sp-opt:hover,.if-sp-opt:focus{background:var(--bg-cream);outline:none}
.if-sp-loc{color:var(--ink-3);font-size:12px}
.if-sp-none{padding:8px;color:var(--ink-3);font-size:13px}
.if-sp-sel{display:none;align-items:center;gap:8px;margin:6px 0}
.if-sp-sel.on{display:flex}
.if-sp-chip{display:inline-flex;align-items:center;gap:6px;background:var(--bg-cream);border:1px solid var(--line-soft);padding:4px 10px;border-radius:14px;font-size:13px}
.if-sp-savecard{display:none;align-items:center;gap:6px;font-size:13px;margin:6px 0}
.if-sp-savecard.on{display:flex}
.if-saverow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0;padding:10px;border:1px solid var(--line);border-radius:8px}
.if-saverow b{font-size:13px;font-weight:700}
.if-saverow label{font-size:13px;display:inline-flex;align-items:center;gap:4px}
.if-savemsg{font-size:12px;color:var(--ink-3)}
.if-hist-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--line)}
.if-hist-open{text-align:left;flex:1}
.if-hist-meta{font-size:12px;color:var(--ink-3)}
@media(max-width:760px){.if-grid{grid-template-columns:1fr}.if-input{position:static}}

/* v3.38 — I.F. Analysis three-subject picker */
.if-subjects{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:var(--bg-cream)}
.if-subj-head{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}
.if-subj{margin-bottom:8px}
.if-subj:last-child{margin-bottom:0}
.if-subj-name{display:block;font-size:11.5px;font-weight:600;color:var(--ink-2);margin-bottom:3px}
.if-subj-badge{display:inline-block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--teal);padding:2px 7px;border-radius:10px}
.if-opt{font-weight:400;color:var(--ink-3);font-size:11px}
.if-req{color:var(--red)}

/* v3.38 — new-idea classification confirm + save-as-idea */
.if-classify{border:1px solid var(--teal);border-radius:10px;padding:12px 14px;margin:10px 0;background:rgba(29,158,117,0.06)}
.if-classify-head{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:6px}
.if-classify-tag{display:inline-block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--teal);padding:2px 8px;border-radius:10px;margin-right:6px}
.if-classify-why{font-size:12.5px;color:var(--ink-2);line-height:1.5;margin:0 0 8px}
.if-classify-kinds{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.if-classify-kinds label{font-size:13px;display:flex;align-items:baseline;gap:6px;cursor:pointer}
.if-classify-kinds small{color:var(--ink-3)}
.if-classify-title{display:block;font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:8px}
.if-classify-title input{margin-top:4px}
.if-saveidea-msg{font-size:12px;color:var(--ink-3);margin-left:8px}
/* v3.41 — new-subject type gate (shown when no existing subject is picked) */
.if-newtype{border:1px dashed var(--line-strong,var(--line));border-radius:10px;padding:10px 12px;margin:0 0 10px;background:var(--bg-cream)}
.if-newtype[hidden]{display:none}
.if-newtype-head{font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:7px}
.if-nt-opt{display:inline-flex;align-items:center;gap:5px;font-size:13px;margin-right:14px;cursor:pointer}
.if-nt-missing{border-color:var(--red);background:rgba(217,64,82,0.07);animation:ifShake .4s}
@keyframes ifShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}

/* v3.38 — Internal / External ideas view */
.ideas-view{max-width:1000px;margin:0 auto}
.ideas-sub{font-size:13px;color:var(--ink-2);margin:0 0 14px;line-height:1.5}
.ideas-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.ideas-search{flex:1;min-width:180px;border:1px solid var(--line);border-radius:9px;padding:9px 12px;font-family:var(--sans);font-size:14px;color:var(--ink);background:var(--bg-cream);box-sizing:border-box}
.ideas-search:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px rgba(29,158,117,0.15)}
.ideas-loading,.ideas-empty{padding:24px;text-align:center;color:var(--ink-3);font-size:13.5px}
.ideas-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.idea-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--bg-elev);cursor:pointer;transition:border-color var(--dur),box-shadow var(--dur)}
.idea-card:hover{border-color:var(--teal);box-shadow:var(--shadow-1)}
.idea-card:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(29,158,117,0.15)}
.idea-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:6px}
.idea-card-title{font-size:14.5px;font-weight:700;color:var(--ink);line-height:1.3}
.idea-card-snip{font-size:12.5px;color:var(--ink-2);line-height:1.45;margin-bottom:8px}
.idea-card-meta{font-size:11px;color:var(--ink-3)}
.idea-status-badge{display:inline-block;font-size:10.5px;font-weight:600;color:var(--ink-2);background:var(--bg-cream-2,var(--bg-cream));border:1px solid var(--line-soft);padding:1px 8px;border-radius:10px;white-space:nowrap}
.idea-kind-badge{display:inline-block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#fff;padding:2px 8px;border-radius:10px}
.idea-kind-badge.idea-internal{background:var(--teal)}
.idea-kind-badge.idea-external{background:var(--blue)}
.idea-kind-badge.idea-usecase{background:#7a4fae}   /* v3.73 — Use case */
.idea-kind-badge.idea-priority{background:#a86a00}   /* v3.78 — Priority (amber, top-level/strategic) */
.idea-rel-kind{font-size:10px;opacity:.65;font-weight:600}   /* v3.78 — kind tag on a nesting chip */
.ideas-detail-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.ideas-detail-actions{display:flex;gap:8px}
.idea-detail-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.idea-detail-head h3{margin:0;font-size:19px;color:var(--ink)}
.idea-detail .detail-section{margin-bottom:10px}
.idea-badges{display:flex;gap:8px;flex-wrap:wrap}
.idea-chips{display:flex;flex-wrap:wrap;gap:6px}
.idea-rel-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink);background:var(--bg-cream);border:1px solid var(--line-soft);padding:3px 9px;border-radius:12px}
/* v3.76 — clickable candidate-startup chips → open that startup's own detail inline */
button.idea-rel-link{cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s}
button.idea-rel-link:hover{background:rgba(0,133,124,0.10);border-color:var(--teal,#00857C)}
button.idea-rel-link.active{background:rgba(0,133,124,0.14);border-color:var(--teal,#00857C);color:var(--teal-dark,#005f59)}
.idea-rel-arrow{font-size:10px;opacity:.6}
.idea-rel-detail{margin-top:8px;border:1px solid var(--line-soft);border-radius:var(--rs,8px);background:var(--bg-cream);overflow:hidden}
.idea-rel-detail:empty{display:none;margin-top:0;border:0}
/* v3.66 — empty-state hint pointing to the idea editor's related-startups linker */
.idea-rel-empty{font-size:12px;color:var(--ink-3);line-height:1.5;background:var(--bg-cream-2);border:1px dashed var(--line-soft);border-radius:8px;padding:8px 10px}
.idea-chip-x{background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:14px;line-height:1;padding:0}
.idea-chip-x:hover{color:var(--red)}
.idea-form{max-width:680px}
.idea-fl{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:12px}
/* v3.79 — upload-a-doc-to-auto-fill block at the top of the idea/priority editor */
.idea-prefill{border:1px dashed var(--line-soft);border-radius:var(--rs,8px);background:rgba(0,133,124,0.05);padding:10px 12px;margin-bottom:14px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.idea-prefill-head{flex:1 1 100%;font-size:12.5px;color:var(--ink-2)}
.idea-prefill-msg{font-size:12px;color:var(--text-muted)}
/* v3.80 — chooser when one document yields several priorities/use-cases */
.idea-prefill-choices:empty{display:none}
.idea-choice-bar{margin:8px 0}
.idea-choice{display:flex;align-items:flex-start;gap:10px;justify-content:space-between;padding:8px 10px;margin-top:6px;background:var(--bg-cream);border:1px solid var(--line-soft);border-radius:var(--rs,8px)}
.idea-choice-main{flex:1;min-width:0}
.idea-choice-title{font-size:13px;font-weight:600;color:var(--ink)}
.idea-choice-desc{font-size:12px;color:var(--text-muted);margin-top:2px}
.idea-choice-use{flex:0 0 auto;white-space:nowrap}
.idea-parent-note{display:block;font-weight:400;font-size:11.5px;color:var(--text-muted);margin-top:3px}
.idea-fl input[type=text],.idea-fl input[type=email],.idea-fl textarea,.idea-fl select{display:block;width:100%;margin-top:4px;border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-family:var(--sans);font-size:14px;color:var(--ink);background:var(--bg-cream);box-sizing:border-box;resize:vertical}
.idea-fl input:focus,.idea-fl textarea:focus,.idea-fl select:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px rgba(29,158,117,0.15)}
.idea-fl-row{display:flex;gap:12px;flex-wrap:wrap}
.idea-fl-row .idea-fl{flex:1;min-width:180px}
.idea-rel-pick{position:relative;margin-top:4px}
.idea-rs-chips,.idea-rp-chips{margin-top:6px}
.idea-form-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px}
.idea-form-msg{font-size:12px;color:var(--ink-3)}
@media(max-width:600px){.ideas-list{grid-template-columns:1fr}}

/* v3.39 — field-level version history (card detail collapsible) */
.fh-block{margin-top:6px}
.fh-toggle{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;padding:8px 0;cursor:pointer;font:inherit;font-size:13px;font-weight:700;color:var(--ink);text-align:left}
.fh-caret{color:var(--ink-3);font-size:11px;width:12px}
.fh-count{margin-left:auto;font-size:11px;font-weight:600;color:var(--ink-2);background:var(--bg-cream);border:1px solid var(--line-soft);border-radius:10px;padding:1px 8px}
.fh-empty-state{font-size:12.5px;color:var(--ink-3);line-height:1.5;padding:4px 0 8px}
.fh-list{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.fh-item{border:1px solid var(--line);border-radius:8px;padding:9px 11px;background:var(--bg-elev)}
.fh-item-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.fh-field{font-size:12.5px;font-weight:700;color:var(--ink)}
.fh-src{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-2);background:var(--bg-cream);border:1px solid var(--line-soft);border-radius:8px;padding:1px 7px;white-space:nowrap}
.fh-src-airtable-sync{color:#fff;background:var(--blue);border-color:var(--blue)}
.fh-src-manual-edit,.fh-src-custom-field,.fh-src-ai-profile,.fh-src-inno-stage{color:#fff;background:var(--teal);border-color:var(--teal)}
.fh-change{display:flex;align-items:flex-start;gap:7px;flex-wrap:wrap;font-size:12.5px;line-height:1.45;margin-bottom:4px}
.fh-old{color:var(--ink-2);text-decoration:line-through;text-decoration-color:var(--ink-3);opacity:.85;max-width:100%;overflow-wrap:anywhere}
.fh-arrow{color:var(--ink-3);flex-shrink:0}
.fh-new{color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.fh-empty{color:var(--ink-3);font-style:italic}
.fh-meta{font-size:11px;color:var(--ink-3)}

/* v3.40 — idea chip in the I.F. Recap funnel + search rows */
.inno-idea-badge{display:inline-block;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#fff;padding:1px 7px;border-radius:9px;white-space:nowrap;flex-shrink:0}
.inno-idea-badge.inno-idea-internal{background:var(--teal)}
.inno-idea-badge.inno-idea-external{background:var(--blue)}
.inno-idea-badge.inno-idea-usecase{background:#7a4fae}   /* v3.73 — Use case */
.inno-idea-badge.inno-idea-priority{background:#a86a00}   /* v3.78 — Priority */
