/* Polaris owner dashboard.
   ---------------------------------------------------------------------------
   RESPONSIVE SCALE. Every size below is expressed against three multipliers —
   --s-text (labels and body), --s-display (figures and headings) and
   --s-space (padding, gaps, panel rhythm). At the phone width all three are 1,
   so the mobile layout is exactly what it always was; at 1024 and again at
   1440 they step up, so figures, chart text and panel padding grow with the
   viewport instead of leaving a phone layout stretched wide. Add new sizes as
   calc() against these tokens, never as bare pixels. */
:root{
  --page:#f4f5f7;
  --surface:#ffffff;
  --surface-soft:#f8f9fb;
  --ink:#172033;
  --muted:#687184;
  --line:#e2e6ec;
  --primary:#233d78;
  --primary-soft:#eaf0fb;
  --accent:#d59a3b;
  --accent-soft:#fbf3e5;
  --positive:#26715d;
  --positive-soft:#e8f4ef;
  --danger:#b34f51;
  --danger-soft:#f9ebec;
  --shadow:0 16px 45px rgba(31,43,68,.07);
  --radius-xl:24px;
  --radius-lg:19px;
  --radius-md:14px;
  --font-body:"Manrope",system-ui,sans-serif;
  --font-data:"IBM Plex Mono",monospace;

  --s-text:1;
  --s-display:1;
  --s-space:1;

  --fs-micro:calc(7.5px * var(--s-text));
  --fs-mini:calc(8px * var(--s-text));
  --fs-tiny:calc(9px * var(--s-text));
  --fs-small:calc(10px * var(--s-text));
  --fs-body:calc(12px * var(--s-text));
  --fs-base:calc(13px * var(--s-text));
  --fs-h3:calc(15px * var(--s-display));
  --fs-h2:calc(16px * var(--s-display));
  --fs-kpi:calc(15px * var(--s-display));
  --fs-brief:calc(24px * var(--s-display));
  --fs-title:calc(29px * var(--s-display));

  --sp-1:calc(6px * var(--s-space));
  --sp-2:calc(9px * var(--s-space));
  --sp-3:calc(12px * var(--s-space));
  --sp-4:calc(16px * var(--s-space));
  --sp-5:calc(19px * var(--s-space));
  --sp-6:calc(24px * var(--s-space));
  --sp-7:calc(30px * var(--s-space));
  --gap:var(--sp-3);
  --pad-panel:var(--sp-5);
  --header-h:calc(68px * var(--s-space));
  --shell-max:1460px;
}
@media(min-width:1024px){:root{--s-text:1.16;--s-display:1.26;--s-space:1.18}}
@media(min-width:1440px){:root{--s-text:1.3;--s-display:1.5;--s-space:1.42;--shell-max:1560px}}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:var(--page);font:var(--fs-base)/1.55 var(--font-body);-webkit-font-smoothing:antialiased}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}

.variant-modern{
  --page:#f5f6f8;
  --surface-soft:#f7f8fa;
  --ink:#18202c;
  --muted:#6b7280;
  --line:#e4e7eb;
  --primary:#2458d3;
  --primary-soft:#eaf0ff;
  --accent:#2458d3;
  --accent-soft:#eaf0ff;
  --shadow:0 12px 36px rgba(23,32,48,.055);
  --font-body:"Inter",system-ui,sans-serif;
  --font-data:"IBM Plex Mono",monospace;
}

.concept-switcher{position:fixed;z-index:80;right:18px;bottom:18px;display:flex;align-items:center;gap:6px;padding:6px;border:1px solid rgba(23,32,51,.12);border-radius:999px;background:rgba(255,255,255,.92);box-shadow:0 10px 34px rgba(26,35,52,.13);backdrop-filter:blur(16px)}
.concept-switcher a{padding:7px 10px;border-radius:999px;color:var(--muted);font:600 var(--fs-tiny) var(--font-data);text-decoration:none;text-transform:uppercase;letter-spacing:.02em}
.concept-switcher a:hover,.concept-switcher a.active{color:#fff;background:var(--ink)}

.app-header{position:sticky;z-index:50;top:0;border-bottom:1px solid rgba(218,223,231,.82);background:rgba(244,245,247,.88);backdrop-filter:blur(18px)}
.variant-modern .app-header{background:rgba(245,246,248,.9)}
.app-header-inner{display:flex;align-items:center;max-width:var(--shell-max);height:var(--header-h);margin:auto;padding:0 var(--sp-7)}
.brand{display:flex;align-items:center;gap:10px;font-size:var(--fs-base);font-weight:750;letter-spacing:-.02em;text-decoration:none}
.brand-symbol{position:relative;width:calc(34px * var(--s-space));height:calc(34px * var(--s-space));overflow:hidden;border-radius:12px;background:#132754;box-shadow:0 8px 20px rgba(19,39,84,.17)}
.brand-symbol:before{content:"";position:absolute;left:44%;top:20%;width:12%;height:12%;transform:rotate(45deg);border-radius:1px;background:#f1c876;box-shadow:0 0 10px #f1c876}
.brand-symbol:after{content:"";position:absolute;left:18%;right:18%;bottom:20%;height:29%;border-top:1px solid rgba(255,255,255,.78);border-radius:50%}
.variant-modern .brand-symbol{background:var(--ink);box-shadow:none}
.variant-modern .brand-symbol:before{background:#fff;box-shadow:none}
.brand-text small{display:block;margin-top:1px;color:var(--muted);font:500 calc(7px * var(--s-text)) var(--font-data);letter-spacing:.04em;text-transform:uppercase}
.workspace{margin-left:var(--sp-6);padding-left:var(--sp-6);border-left:1px solid var(--line);color:var(--muted);font-size:var(--fs-small)}
.primary-nav{display:flex;gap:4px;margin-left:auto;padding:4px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.68)}
.primary-nav a{padding:calc(7px * var(--s-space)) calc(12px * var(--s-space));border-radius:999px;color:var(--muted);font-size:var(--fs-tiny);font-weight:650;text-decoration:none}
.primary-nav a.active{color:var(--ink);background:#fff;box-shadow:0 3px 10px rgba(25,34,50,.07)}
.header-tools{display:flex;align-items:center;gap:8px;margin-left:14px}
.icon-button,.avatar{display:grid;width:calc(34px * var(--s-space));height:calc(34px * var(--s-space));place-items:center;border:1px solid var(--line);border-radius:12px;background:#fff}
.icon-button{color:var(--muted)}
.avatar{border:0;color:#fff;background:var(--primary);font:600 var(--fs-tiny) var(--font-data)}

.shell{max-width:var(--shell-max);margin:auto;padding:var(--sp-7) var(--sp-7) 96px}
.welcome{display:flex;align-items:flex-end}
.eyebrow{margin:0;color:var(--muted);font:600 var(--fs-mini) var(--font-data);letter-spacing:.08em;text-transform:uppercase}
.welcome h1{margin:6px 0 0;font-size:var(--fs-title);line-height:1.12;letter-spacing:-.04em}
.sync-state{display:flex;align-items:center;gap:8px;margin-left:auto;padding:calc(8px * var(--s-space)) calc(11px * var(--s-space));border:1px solid var(--line);border-radius:999px;color:var(--muted);background:rgba(255,255,255,.74);font:500 var(--fs-mini) var(--font-data)}
.sync-state i{width:7px;height:7px;border-radius:50%;background:var(--positive);box-shadow:0 0 0 4px var(--positive-soft)}

.brief-grid{display:grid;grid-template-columns:1.18fr repeat(3,1fr);gap:var(--gap);margin-top:var(--sp-6)}
.brief-lead,.decision-card{position:relative;min-height:calc(184px * var(--s-space));overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--surface);box-shadow:var(--shadow)}
.brief-lead{display:flex;flex-direction:column;padding:var(--sp-6);color:#fff;background:linear-gradient(145deg,#132754,#1f3975 67%,#2d4b8b)}
.brief-lead:before{content:"";position:absolute;inset:-35% -15% 18% 34%;border:1px solid rgba(230,198,127,.24);border-radius:50%;transform:rotate(-12deg);box-shadow:0 0 0 28px rgba(255,255,255,.025),0 0 0 58px rgba(255,255,255,.018)}
.brief-lead:after{content:"";position:absolute;right:30px;top:27px;width:5px;height:5px;transform:rotate(45deg);border-radius:1px;background:#f4d081;box-shadow:0 0 14px #f4d081}
.variant-modern .brief-lead{color:var(--ink);background:var(--surface)}
.variant-modern .brief-lead:before{inset:auto -55px -74px auto;width:170px;height:170px;border-color:var(--primary-soft);box-shadow:0 0 0 24px rgba(36,88,211,.025)}
.variant-modern .brief-lead:after{background:var(--primary);box-shadow:none}
.brief-lead>*{position:relative;z-index:1}
.brief-lead .eyebrow{color:rgba(255,255,255,.66)}
.variant-modern .brief-lead .eyebrow{color:var(--muted)}
.brief-lead h2{max-width:14em;margin:var(--sp-6) 0 0;font-size:var(--fs-brief);line-height:1.12;letter-spacing:-.035em}
.brief-lead footer{display:flex;align-items:center;margin-top:auto;color:rgba(255,255,255,.65);font-size:var(--fs-mini)}
.variant-modern .brief-lead footer{color:var(--muted)}
.brief-lead button{margin-left:auto;border:0;color:inherit;background:none;font:600 var(--fs-mini) var(--font-data)}
.decision-card{padding:var(--pad-panel);transition:transform .2s,box-shadow .2s}
.decision-card:hover{transform:translateY(-2px);box-shadow:0 20px 52px rgba(31,43,68,.1)}
.decision-meta{display:flex;align-items:center;color:var(--muted);font:600 var(--fs-mini) var(--font-data);text-transform:uppercase}
.decision-number{display:grid;width:calc(25px * var(--s-space));height:calc(25px * var(--s-space));margin-right:8px;place-items:center;border-radius:9px;color:var(--primary);background:var(--primary-soft)}
.decision-meta span:last-child{margin-left:auto}
.decision-card h3{margin:var(--sp-6) 0 5px;font-size:var(--fs-h3);line-height:1.25;letter-spacing:-.02em}
.decision-card p{max-width:28em;margin:0;color:var(--muted);font-size:var(--fs-tiny)}
.decision-value{position:absolute;right:var(--sp-5);bottom:var(--sp-4);color:var(--primary);font:600 calc(11px * var(--s-display)) var(--font-data)}
.decision-card.customer .decision-number,.decision-card.customer .decision-value{color:#6d5fc7}.decision-card.customer .decision-number{background:#eeebff}
.decision-card.collections .decision-number,.decision-card.collections .decision-value{color:var(--positive)}.decision-card.collections .decision-number{background:var(--positive-soft)}
.variant-modern .decision-card.customer .decision-number,.variant-modern .decision-card.customer .decision-value,.variant-modern .decision-card.collections .decision-number,.variant-modern .decision-card.collections .decision-value{color:var(--primary)}
.variant-modern .decision-card.customer .decision-number,.variant-modern .decision-card.collections .decision-number{background:var(--primary-soft)}

.kpi-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--sp-2);margin-top:var(--gap)}
.kpi{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-4) var(--sp-4);border:1px solid var(--line);border-radius:var(--radius-md);background:rgba(255,255,255,.78)}
.kpi-label{color:var(--muted);font:600 var(--fs-micro) var(--font-data);letter-spacing:.08em;text-transform:uppercase}
.kpi b{font:500 var(--fs-kpi) var(--font-data)}
.kpi-foot{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:var(--fs-micro)}
.kpi-foot i{width:6px;height:6px;border-radius:50%;background:var(--positive)}
.kpi-spark{display:block;width:100%;height:calc(18px * var(--s-space))}.kpi-spark svg{display:block;width:100%;height:calc(18px * var(--s-space))}

.panel{border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--surface);box-shadow:var(--shadow)}
.panel-head{display:flex;align-items:center;padding:var(--pad-panel) var(--sp-5) var(--sp-3)}
.panel-head h2,.module h2{margin:4px 0 0;font-size:var(--fs-h2);letter-spacing:-.025em}
.count{margin-left:auto;padding:calc(6px * var(--s-space)) calc(9px * var(--s-space));border-radius:999px;color:var(--primary);background:var(--primary-soft);font:600 var(--fs-mini) var(--font-data)}
.supply-wrap{overflow:auto;padding:0 var(--sp-3) var(--sp-4)}
.supply-table{width:100%;border-collapse:separate;border-spacing:0 6px;font-size:var(--fs-tiny)}
.supply-table th{padding:5px var(--sp-2);color:var(--muted);font:600 calc(7px * var(--s-text)) var(--font-data);text-align:left;text-transform:uppercase}.supply-table th:not(:first-child){text-align:right}
.supply-table td{padding:var(--sp-3) var(--sp-2);border-top:1px solid #ebedf1;border-bottom:1px solid #ebedf1;background:var(--surface-soft)}
.supply-table td:first-child{border-left:1px solid #ebedf1;border-radius:11px 0 0 11px}
.supply-table td:last-child{border-right:1px solid #ebedf1;border-radius:0 11px 11px 0}
.supply-table .number-cell{text-align:right;font-family:var(--font-data)}
.supply-table .risk-cell,.negative-cell{color:var(--danger)}.supply-table .positive-cell{color:var(--positive)}
.supply-table .strong-cell{color:#fff;background:var(--primary);font-weight:600}

.schedule{padding:0 var(--sp-5) var(--sp-5)}
.date-row{display:flex;justify-content:space-between;margin-bottom:var(--sp-4)}
.date-pill{display:grid;width:calc(38px * var(--s-space));height:calc(47px * var(--s-space));place-items:center;border-radius:12px;color:var(--muted);font-size:calc(7px * var(--s-text))}
.date-pill b{display:block;color:var(--ink);font-size:var(--fs-small)}.date-pill.active{color:#fff;background:var(--primary)}.date-pill.active b{color:#fff}
.timeline{position:relative;margin-left:calc(32px * var(--s-space));border-left:1px solid var(--line)}
.event{position:relative;margin:0 0 var(--sp-2) var(--sp-3);padding:var(--sp-3) var(--sp-3);border-radius:13px;background:var(--surface-soft)}
.event:before{content:attr(data-time);position:absolute;right:calc(100% + var(--sp-6));top:var(--sp-3);width:calc(38px * var(--s-space));color:var(--muted);font:calc(7px * var(--s-text)) var(--font-data);text-align:right}
.event strong{display:block;font-size:var(--fs-tiny)}.event span{color:var(--muted);font-size:var(--fs-mini)}

.module{padding:var(--pad-panel)}
.customer-row{display:grid;grid-template-columns:calc(23px * var(--s-space)) 1fr auto;gap:var(--sp-2);padding:var(--sp-3) 0;border-top:1px solid var(--line)}
.customer-rank{color:var(--primary);font:600 var(--fs-mini) var(--font-data)}.customer-row strong{display:block;font-size:var(--fs-tiny)}.customer-row small{display:block;color:var(--muted);font-size:calc(7px * var(--s-text))}.customer-delta{color:var(--danger);font:600 var(--fs-tiny) var(--font-data)}

/* ---- Ask the analyst ---- */
.ask-head{display:flex;align-items:center;gap:var(--sp-3)}
.ask-body{margin-top:var(--sp-3)}
.ask-form{display:flex;gap:7px;margin-top:var(--sp-3);padding:var(--sp-1);border:1px solid var(--line);border-radius:14px;background:var(--surface-soft)}
.ask-form input{flex:1;min-width:0;padding:var(--sp-1);border:0;outline:0;background:none;font-size:var(--fs-tiny)}
.ask-form button{width:calc(33px * var(--s-space));border:0;border-radius:10px;color:#fff;background:var(--primary)}
.presets{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-top:var(--sp-2)}
.presets button{padding:calc(6px * var(--s-space)) calc(9px * var(--s-space));border:1px solid var(--line);border-radius:9px;color:var(--muted);background:#fff;font-size:var(--fs-micro)}
.presets button:hover{color:var(--primary);border-color:var(--primary)}
.presets-label{margin:var(--sp-3) 0 0;color:var(--muted);font:600 var(--fs-micro) var(--font-data);letter-spacing:.08em;text-transform:uppercase}
.assistant-response{min-height:calc(92px * var(--s-space));margin-top:var(--sp-3);padding:var(--sp-3);border-radius:14px;background:var(--surface-soft);white-space:pre-line;font-size:var(--fs-mini)}
.assistant-response:before{content:"POLARIS";display:block;margin-bottom:7px;color:var(--primary);font:600 calc(7px * var(--s-text)) var(--font-data)}
.assistant-response[data-state="thinking"]:before{content:"POLARIS · ANALYSING ●●●"}
.assistant-response p{margin:0}
.assistant-response small{display:block;margin-top:7px;color:var(--muted);font:calc(7px * var(--s-text)) var(--font-data)}

/* The scripted conversation: a real transcript, so a clarifying question and
   its answer chips have somewhere to live. */
.chat-log{display:flex;flex-direction:column;gap:var(--sp-2);max-height:62vh;overflow:auto;margin-top:var(--sp-3);padding:var(--sp-4);border-radius:var(--radius-md);background:var(--surface-soft)}
.chat-turn{max-width:min(64em,86%);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);font-size:var(--fs-tiny);line-height:1.65;white-space:pre-line}
.chat-turn p{margin:0}
.chat-turn.owner{align-self:flex-end;color:#fff;background:var(--primary);border-bottom-right-radius:6px}
.chat-turn.polaris{align-self:flex-start;background:#fff;border:1px solid var(--line);border-bottom-left-radius:6px}
.chat-turn .turn-who{display:block;margin-bottom:var(--sp-1);color:var(--primary);font:600 var(--fs-micro) var(--font-data);letter-spacing:.08em;text-transform:uppercase}
.chat-turn.owner .turn-who{color:rgba(255,255,255,.72)}
.chat-turn .turn-evidence{display:block;margin-top:var(--sp-3);padding-top:var(--sp-2);border-top:1px solid var(--line);color:var(--muted);font:var(--fs-micro)/1.6 var(--font-data)}
.chat-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1);align-self:flex-start;max-width:100%}
.chat-chips button{padding:calc(7px * var(--s-space)) calc(11px * var(--s-space));border:1px solid var(--primary);border-radius:999px;color:var(--primary);background:#fff;font-size:var(--fs-micro);font-weight:650}
.chat-chips button:hover{color:#fff;background:var(--primary)}
.chat-chips button:disabled{opacity:.45;cursor:default}
.chat-chart{width:100%;margin-top:var(--sp-3);padding:var(--sp-2) var(--sp-1) 0;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft)}
.chat-chart svg{display:block;width:100%;height:auto}
.thinking{display:inline-flex;align-items:center;gap:var(--sp-1);color:var(--muted)}
.thinking i{width:5px;height:5px;border-radius:50%;background:var(--muted);animation:think 1.1s ease-in-out infinite}
.thinking i:nth-child(2){animation-delay:.16s}
.thinking i:nth-child(3){animation-delay:.32s}
@keyframes think{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
@media(prefers-reduced-motion:reduce){.thinking i{animation:none;opacity:.6}}

.insight-head{display:flex;align-items:flex-start}
.insight-head h2{margin:4px 0 0;font-size:var(--fs-h2);letter-spacing:-.025em}
#aging-total{font:500 var(--fs-h2) var(--font-data)}
.chart-legend{display:inline-flex;align-items:center;gap:6px;margin-left:auto;padding-top:4px;color:var(--muted);font:600 var(--fs-micro) var(--font-data);letter-spacing:.05em;text-transform:uppercase}
.chart-legend i{width:14px;height:8px;border-radius:2px;background:#177b4b}
.chart-legend i.key-collections{height:0;border-top:2.5px solid #2a78d6;border-radius:0;background:none}
.chart-frame{margin-top:var(--sp-3);padding:var(--sp-2) var(--sp-1) 4px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft)}
.chart-frame p{margin:8px;color:var(--muted);font-size:var(--fs-tiny)}
.chart-frame svg{display:block;width:100%;height:auto}
.aging-bar{display:flex;gap:2px;height:calc(12px * var(--s-space));margin-top:var(--sp-4);border-radius:4px;overflow:hidden;background:var(--surface-soft)}
.aging-bar i{display:block;height:100%;min-width:2px}
.aging-rows{margin-top:var(--sp-3)}
.aging-row{display:flex;align-items:center;gap:8px;padding:var(--sp-1) 0;border-top:1px solid var(--line);font-size:var(--fs-tiny)}
.aging-row span{display:inline-flex;align-items:center;gap:7px;color:var(--muted)}
.aging-row i{width:9px;height:9px;border-radius:3px}
.aging-row b{margin-left:auto;font:600 var(--fs-small) var(--font-data)}

/* ---- board sections: one page, one clear section per nav pill ---- */
.board-section{margin-top:calc(38px * var(--s-space))}
.board-head{display:flex;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--line)}
.board-head h2{margin:0;font:750 calc(11px * var(--s-text)) var(--font-data);letter-spacing:.09em;text-transform:uppercase}
.board-head p{margin:0;color:var(--muted);font-size:var(--fs-body)}
.board-section .brief-grid,.board-section .kpi-strip{margin-top:var(--gap)}
.board-grid-2{display:grid;align-items:start;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--gap)}
/* Three modules abreast where the viewport can carry them; two (with the last
   spanning) in the middle band; stacked on a phone. */
.board-grid-3{display:grid;align-items:start;grid-template-columns:minmax(0,1fr);gap:var(--gap)}
@media(min-width:900px){.board-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.board-grid-3>:last-child{grid-column:1/-1}}
@media(min-width:1440px){.board-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.board-grid-3>:last-child{grid-column:auto}}
.board-section .board-grid-2,.board-section .board-grid-3,.board-section>.panel+.panel,.board-section .board-grid-2+.panel,.board-section .board-grid-3+.panel{margin-top:var(--gap)}
.report-meta{margin:var(--sp-3) 0 0;color:var(--muted);font:500 var(--fs-mini) var(--font-data)}
.supply-wrap+.report-meta{margin:0;padding:0 var(--sp-5) var(--sp-4)}
.ghost-button{padding:calc(6px * var(--s-space)) calc(10px * var(--s-space));border:1px solid var(--line);border-radius:9px;color:var(--muted);background:#fff;font:600 var(--fs-mini) var(--font-data)}
.ghost-button:hover{color:var(--primary);border-color:var(--primary)}
.approval-card{border-color:#e3d9bf;background:linear-gradient(155deg,#fdf9ee,#faf3e2)}
.approval-card+.approval-card{margin-top:var(--gap)}
.approval-card blockquote{margin:var(--sp-4) 0 var(--sp-2);font-size:var(--fs-h3);font-weight:700;letter-spacing:-.02em}
.approval-card footer{display:flex;align-items:center;margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid rgba(149,124,60,.18);color:var(--muted);font:var(--fs-mini) var(--font-data)}
.approval-actions{display:flex;gap:7px;margin-left:auto}
.approval-card footer button:not(.ghost-button){padding:calc(7px * var(--s-space)) calc(11px * var(--s-space));border:0;border-radius:9px;color:#fff;background:var(--primary);font:600 var(--fs-mini) var(--font-data)}
.job-card{padding:var(--sp-3) var(--sp-3);border:1px solid var(--line);border-radius:13px;background:var(--surface-soft)}
.job-card+.job-card{margin-top:var(--sp-2)}
.job-card strong{display:block;font-size:var(--fs-small)}
.job-card small{display:block;margin-top:3px;color:var(--muted);font-size:var(--fs-mini)}
.job-card footer{display:flex;align-items:center;gap:8px;margin-top:var(--sp-2);color:var(--muted);font:600 var(--fs-micro) var(--font-data)}
.job-status{padding:3px 8px;border-radius:99px;color:var(--positive);background:var(--positive-soft);text-transform:uppercase;letter-spacing:.06em}
.job-card button{margin-left:auto;padding:calc(6px * var(--s-space)) calc(9px * var(--s-space));border:0;border-radius:8px;color:#fff;background:var(--primary);font:600 var(--fs-mini) var(--font-data)}
.watcher-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2);margin-top:var(--sp-3)}
.watcher{padding:var(--sp-3) var(--sp-3);border:1px solid var(--line);border-radius:13px;background:var(--surface-soft)}
.watcher strong{display:block;font-size:var(--fs-tiny)}
.watcher small{display:block;margin-top:4px;color:var(--muted);font-size:var(--fs-mini);line-height:1.5}
.watcher-state{display:inline-flex;align-items:center;gap:5px;margin-top:var(--sp-2);font:600 var(--fs-micro) var(--font-data);letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.watcher-state i{width:6px;height:6px;border-radius:50%;background:var(--line)}
.watcher-state.fired{color:var(--danger)}.watcher-state.fired i{background:var(--danger)}
.watcher-state.quiet i{background:var(--positive)}
.memory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2)}
.memory-card{display:flex;flex-direction:column}
.memory-kind{align-self:flex-start;padding:3px 9px;border-radius:99px;color:var(--primary);background:var(--primary-soft);font:600 var(--fs-micro) var(--font-data);letter-spacing:.06em;text-transform:uppercase}
.memory-text{margin:var(--sp-3) 0 0;font-size:calc(10.5px * var(--s-text));font-weight:650;line-height:1.5}
.memory-card .report-meta{margin-top:var(--sp-2)}
.memory-card footer{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto;padding-top:var(--sp-3)}
.memory-card footer button:not(.ghost-button){padding:calc(6px * var(--s-space)) calc(10px * var(--s-space));border:0;border-radius:9px;color:#fff;background:var(--primary);font:600 var(--fs-mini) var(--font-data)}
.memory-card.pending{border-color:var(--accent);background:var(--accent-soft)}
.pin-mark{margin-right:5px}
.pin-mark:before{content:"★";color:var(--accent)}
.memory-how{margin:0 0 var(--sp-3);color:var(--muted);font-size:var(--fs-body)}
.memory-group+.memory-group{margin-top:var(--gap)}
.memory-group-head{margin:0 0 var(--sp-2);font:750 calc(9.5px * var(--s-text)) var(--font-data);letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.memory-note{margin:0;padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft);color:var(--muted);font-size:var(--fs-body)}
.memory-add-row{display:flex;gap:7px;margin-bottom:var(--sp-3);padding:var(--sp-1);border:1px solid var(--line);border-radius:14px;background:var(--surface-soft)}
.memory-add-row input{flex:1;min-width:0;padding:var(--sp-2);border:0;outline:0;background:none;font-size:var(--fs-tiny)}
.memory-add-row select{padding:var(--sp-1) var(--sp-2);border:1px solid var(--line);border-radius:9px;background:var(--surface);font:600 var(--fs-mini) var(--font-data)}
.memory-add-row button{padding:calc(6px * var(--s-space)) calc(12px * var(--s-space));border:0;border-radius:10px;color:#fff;background:var(--primary);font:600 var(--fs-mini) var(--font-data)}
.memory-error{margin:var(--sp-2) 0 var(--sp-2);color:var(--danger);font-size:var(--fs-mini)}
.memory-edit-box{width:100%;min-height:calc(58px * var(--s-space));margin:var(--sp-3) 0 0;padding:var(--sp-2);border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);color:inherit;font:650 calc(10.5px * var(--s-text))/1.5 var(--font-body);resize:vertical}
.pref-list{display:flex;flex-direction:column;gap:var(--sp-1);margin:0;padding:0;list-style:none}
.pref-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);font-size:var(--fs-tiny)}
.pref-key{font-weight:650}
.pref-value{margin-left:auto;color:var(--muted)}
@media(max-width:1023px){.watcher-grid,.memory-grid{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.watcher-grid,.memory-grid{grid-template-columns:1fr}}
/* In a single column of a three-abreast row the watchers stack. */
.board-grid-3 .watcher-grid{grid-template-columns:1fr}
@media(min-width:900px) and (max-width:1439px){.board-grid-3 .watcher-grid{grid-template-columns:repeat(4,1fr)}}
#today .ask{margin-top:var(--gap)}
#today .ask .ask-form{max-width:calc(640px * var(--s-space))}
@media(max-width:900px){.board-grid-2{grid-template-columns:1fr}.board-head{flex-direction:column;gap:3px}}

/* ---- expand: every module opens larger ---- */
.expandable{position:relative;cursor:pointer}
.expand-button{position:absolute;z-index:2;right:var(--sp-3);top:var(--sp-3);display:grid;width:calc(24px * var(--s-space));height:calc(24px * var(--s-space));place-items:center;padding:0;border:1px solid var(--line);border-radius:8px;color:var(--muted);background:rgba(255,255,255,.9);opacity:0;transition:opacity .16s,color .16s,border-color .16s}
.expandable:hover .expand-button,.expand-button:focus-visible{opacity:1}
.expand-button:hover{color:var(--primary);border-color:var(--primary)}
.expand-button svg{display:block;width:56%;height:56%}
.brief-lead .expand-button{position:absolute;border-color:rgba(255,255,255,.35);color:#fff;background:rgba(255,255,255,.14)}
.approval-card .expand-button{background:rgba(255,255,255,.75)}
/* Reserve the corner so a header's badge, legend or title never sits under it. */
.expandable>.panel-head,.expandable>.ask-head{padding-right:calc(40px * var(--s-space))}
.expandable .insight-head,.expandable>h2,.expandable>.memory-kind{padding-right:calc(32px * var(--s-space))}
.expandable.watcher strong,.expandable.job-card strong,.expandable.decision-card h3{padding-right:calc(28px * var(--s-space))}
.watcher .expand-button,.job-card .expand-button{right:var(--sp-2);top:var(--sp-2);width:calc(20px * var(--s-space));height:calc(20px * var(--s-space))}
@media(hover:none){.expand-button{opacity:.55}}

.modal-root{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:var(--sp-6)}
.modal-root[hidden]{display:none}
.modal-scrim{position:absolute;inset:0;background:rgba(17,24,39,.42);backdrop-filter:blur(3px)}
.modal-dialog{position:relative;display:flex;flex-direction:column;width:80vw;max-width:1280px;height:80vh;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--surface);box-shadow:0 40px 120px rgba(17,24,39,.32)}
.modal-head{display:flex;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-6) var(--sp-6) var(--sp-4);border-bottom:1px solid var(--line)}
.modal-head h2{margin:4px 0 0;font-size:calc(20px * var(--s-display));letter-spacing:-.03em}
.modal-close{flex:0 0 auto;width:calc(34px * var(--s-space));height:calc(34px * var(--s-space));margin-left:auto;border:1px solid var(--line);border-radius:10px;color:var(--muted);background:#fff;font-size:var(--fs-h3);line-height:1}
.modal-close:hover{color:var(--primary);border-color:var(--primary)}
.modal-body{flex:1;min-height:0;overflow:auto;padding:var(--sp-6)}
.modal-body>*+*{margin-top:var(--sp-5)}
.modal-figure{margin:0;font:600 calc(30px * var(--s-display)) var(--font-data);letter-spacing:-.02em}
.modal-note{margin:0;color:var(--muted);font-size:var(--fs-body);line-height:1.7}
.modal-text{margin:0;font-size:var(--fs-body);line-height:1.8;white-space:pre-line}
.modal-chart{padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft)}
.modal-chart svg{display:block;width:100%;height:auto}
.modal-scroll{overflow-x:auto}
.modal-table{width:100%;border-collapse:collapse;font-size:var(--fs-body)}
.modal-table td.num,.modal-table th.num{white-space:nowrap}
.modal-table th{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line);color:var(--muted);font:600 var(--fs-micro) var(--font-data);letter-spacing:.08em;text-align:left;text-transform:uppercase}
.modal-table td{padding:var(--sp-3);border-bottom:1px solid var(--line)}
.modal-table th.num,.modal-table td.num{text-align:right}.modal-table td.num{font-family:var(--font-data)}
.modal-section h3{margin:0 0 var(--sp-3);font-size:var(--fs-h3);letter-spacing:-.02em}
.modal-section>*+*{margin-top:var(--sp-4)}
.modal-section .modal-section h3{color:var(--muted);font:600 var(--fs-micro) var(--font-data);letter-spacing:.08em;text-transform:uppercase}
.modal-evidence{margin:0;padding:var(--sp-4);border-radius:var(--radius-md);background:var(--surface-soft);color:var(--muted);font:var(--fs-body)/1.8 var(--font-data)}
.evidence-records{margin-top:var(--sp-3)}
.evidence-records-open{padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--primary);font:600 var(--fs-micro) var(--font-data);letter-spacing:.02em;cursor:pointer}
.evidence-records-open:hover:not(:disabled){border-color:var(--primary)}
.evidence-records-open:disabled{color:var(--muted);cursor:default}
.evidence-record-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--sp-2)}
.evidence-record{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2) var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--radius-md);background:#fff;font-size:var(--fs-body);line-height:1.6}
.evidence-record b{font-weight:600}
.evidence-record span{color:var(--muted);font-family:var(--font-data)}
.evidence-record small{margin-left:auto;color:var(--muted);font:600 var(--fs-micro) var(--font-data);letter-spacing:.06em;text-transform:uppercase}
.turn-evidence+.evidence-records{margin-top:var(--sp-2)}
.modal-runs{display:flex;flex-direction:column;gap:var(--sp-3)}
.modal-run{padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft)}
.modal-run header{display:flex;align-items:center;gap:var(--sp-3);color:var(--muted);font:600 var(--fs-micro) var(--font-data);letter-spacing:.06em;text-transform:uppercase}
.modal-run header b{margin-left:auto;color:var(--positive);font-weight:600}
.modal-run p{margin:var(--sp-3) 0 0;font-size:var(--fs-body);line-height:1.7;white-space:pre-line}
.modal-diff{margin:var(--sp-3) 0 0;color:var(--muted);font:var(--fs-micro)/1.7 var(--font-data)}
@media(max-width:720px){
  .modal-root{padding:0}
  .modal-dialog{width:100vw;max-width:none;height:100vh;border:0;border-radius:0}
  .modal-head{padding:var(--sp-5) var(--sp-4) var(--sp-3)}
  .modal-body{padding:var(--sp-4)}
}

/* ---- the analyst orb: a quiet gradient sphere that stirs while it works ---- */
.orb{position:relative;flex:0 0 auto;width:calc(44px * var(--s-space));height:calc(44px * var(--s-space));overflow:hidden;border-radius:50%;
  background:radial-gradient(circle at 33% 28%,#f6f8ff 0 8%,rgba(246,248,255,0) 46%),#22386b;
  box-shadow:inset 0 0 12px rgba(255,255,255,.28),0 10px 24px rgba(31,43,68,.26);
  animation:orb-breathe 5.5s ease-in-out infinite}
.orb i{position:absolute;inset:-30%;border-radius:50%;filter:blur(8px);
  background:conic-gradient(from 220deg,#24407c,#3f6ac1 26%,#8ab2f2 40%,#d59a3b 55%,#6d5fc7 74%,#24407c);
  animation:orb-turn 9s linear infinite}
.orb:after{content:"";position:absolute;left:30%;top:24%;width:26%;height:18%;border-radius:50%;
  background:rgba(255,255,255,.65);filter:blur(3px)}
.orb[data-state="thinking"]{animation-duration:1.8s}
.orb[data-state="thinking"] i{animation-duration:2.4s}
.orb[data-state="error"] i{animation-play-state:paused;filter:blur(8px) grayscale(.6)}
@keyframes orb-turn{to{transform:rotate(360deg)}}
@keyframes orb-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
@media(prefers-reduced-motion:reduce){.orb,.orb i{animation:none}}

.evidence-drawer{position:fixed;z-index:70;right:18px;bottom:70px;width:min(calc(400px * var(--s-space)),calc(100vw - 36px));padding:var(--sp-6);border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 26px 80px rgba(27,38,60,.2)}
.evidence-drawer h3{margin:0;font-size:var(--fs-h3)}
.evidence-drawer p{color:var(--muted);font-size:var(--fs-tiny)}
.evidence-drawer code{display:block;padding:var(--sp-3);border-radius:12px;background:var(--surface-soft);font:var(--fs-mini)/1.75 var(--font-data)}

/* Below the desktop band the brief stacks two-up; from 1024 to 1279 the lead
   takes the full row and the three calls sit abreast under it; from 1280 all
   four sit on one line. */
@media(max-width:1023px){.brief-grid{grid-template-columns:1fr 1fr}.brief-lead{grid-row:span 2}.kpi-strip{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1024px) and (max-width:1279px){.brief-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.brief-lead{grid-column:1/-1;min-height:auto}.brief-lead h2{margin-top:var(--sp-4)}.brief-lead footer{margin-top:var(--sp-5)}}
@media(max-width:720px){.app-header-inner{padding:0 15px}.workspace,.primary-nav,.header-tools .icon-button{display:none}.header-tools{margin-left:auto}.shell{padding:22px 15px 86px}.welcome{align-items:flex-start;flex-direction:column}.sync-state{margin:13px 0 0}.brief-grid{grid-template-columns:1fr}.brief-lead{grid-row:auto}.kpi-strip{grid-template-columns:1fr 1fr}.kpi:first-child{grid-column:1/-1}.concept-switcher{left:10px;right:10px;justify-content:center;overflow:auto}.decision-card{min-height:160px}}
