:root{
--gold:#EF9F27;--gold-deep:#C68812;--gold-light:#FAEEDA;--gold-mid:#FAC775;
--ink:#2C2C2A;--ink-mid:#5F5E5A;--ink-light:#D3D1C7;--ink-pale:#F1EFE8;--ink-deep:#0A0A0A;
--white:#FFFFFF;--red:#A32D2D;--red-light:#FCEBEB;
--green:#3B6D11;--green-light:#EAF3DE;
--blue:#185FA5;--blue-light:#E6F1FB;
--purple:#534AB7;--purple-light:#EEEDFE;
--cream:#FAEEDA;--paper:#F5F0E8;
--r:10px;--rs:6px;--max:1200px;
--font-mono:ui-monospace,'SF Mono',Menlo,Consolas,'Liberation Mono',monospace;
}
*{box-sizing:border-box;margin:0;padding:0;}

/* Phase 2 — signed-in marketing hide. The `aw-signed-in` class is set on <html>
   by js/auth.js: synchronously pre-paint from awardly_cached_email (FOUC guard,
   zero hero flash for returning users), then kept authoritative by
   updateMarketingView on live login/logout. Hides the four pure-marketing blocks;
   the analyzer (#tool) is intentionally excluded. */
html.aw-signed-in #top,
html.aw-signed-in #proof,
html.aw-signed-in #how,
/* ⚠ REGISTRATION POINT 4 of 4 for #report-offer. The other three are the marketing-hide arrays in
   js/radar.js, js/forecast-vault.js and js/auth.js updateMarketingView. A marketing section that
   is missing from ANY of the four does not fail loudly — it bleeds through into Radar or the Vault,
   or never comes back after sign-out. Field report #4 was exactly this shape. */
html.aw-signed-in #report-offer,
html.aw-signed-in #profile-cta-banner{display:none;}
/* #top (section.hero) holds the acquisition hero + Try Free / See Demo CTAs. It used to
   be hidden only via the `#launch-hero + .hero` sibling rule; covering it directly makes
   the signed-in hide independent of DOM order (founder ruling 2026-07-22: the acquisition
   hero + CTAs never render for an authenticated session). #tool (analyzer) stays excluded
   — it's a free app at every auth state. */
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Inter',sans-serif;background:#F7F2E7;color:var(--ink);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;letter-spacing:.01em;}

/* Global input sharpening */
input,select,textarea{font-family:inherit;letter-spacing:normal;}
/* Card sharpening */
.card{border:1px solid #D8D4C8;box-shadow:0 1px 3px rgba(44,44,42,.04),0 8px 28px rgba(44,44,42,.08);}
.card:hover{box-shadow:0 2px 6px rgba(44,44,42,.06),0 12px 36px rgba(44,44,42,.10);}
/* Section headers tighter */
.ph h2{font-family:Georgia,serif;font-size:22px;font-weight:700;letter-spacing:-.4px;}
/* Analyzer header — editorial serif treatment */
#analyzer-heading{font-family:Georgia,'Times New Roman',serif;font-size:38px;font-weight:700;letter-spacing:-.9px;line-height:1.08;margin-bottom:10px;color:var(--cream);}
@media (max-width:640px){#analyzer-heading{font-size:30px;letter-spacing:-.6px;}}
/* Buttons sharper */
button{letter-spacing:.01em;}
.btn-parse{letter-spacing:.3px;box-shadow:0 4px 14px rgba(186,117,23,.3);}
.btn-save{transition:all .12s;}
/* Aria pulse */
@keyframes aria-pulse{0%,100%{box-shadow:0 0 0 0 rgba(239,159,39,.4);}60%{box-shadow:0 0 0 7px rgba(239,159,39,0);}}
.aria-header-btn{animation:aria-pulse 3.5s ease-in-out infinite;}
.snav-btn.aria-pulse{animation:aria-pulse 3.5s ease-in-out infinite;}
/* Stage 2c — sub-nav Aria slot pulse: scale 95↔105% + gentle gold glow, 3.5s loop */
@keyframes aria-pulse-2c{
  0%,100%{transform:scale(.95);box-shadow:0 0 0 0 rgba(239,159,39,.0);}
  50%{transform:scale(1.05);box-shadow:0 0 14px 2px rgba(239,159,39,.35);}
}
.snav-aria-label{animation:aria-pulse-2c 3.5s ease-in-out infinite;transform-origin:center;will-change:transform;}
.snav-aria-label:hover{animation-play-state:paused;}
@media (prefers-reduced-motion: reduce){.aria-header-btn,.snav-btn.aria-pulse,.snav-aria-label{animation:none;transform:none;}}
body::before{content:'';position:fixed;inset:0;background:radial-gradient(ellipse at 30% 0%,rgba(239,159,39,.04) 0%,transparent 60%);pointer-events:none;z-index:0;}

/* ── SCROLL-MARGIN — offset for the THREE-bar sticky stack so scrollIntoView /
   hash navigation lands sections cleanly below it. Stack measured 2026-05-20:
   top bar (logo/search/bell/help/Aria/avatar) 64px + nav bar (Forecast Vault /
   Opportunities / Pipeline / …) 42px + ticker bar (rotating tip) 41.5px =
   147.5px total. 150px gives ~2.5px breathing margin under the ticker.
   Applies to every section a nav target or hash link can reach, including
   marketing sections (so a deep link like awardly.app/#top still lands clean
   instead of having the hero hidden under the stack). scrollToEl was rewritten
   to use scrollIntoView in the same workstream so all 15+ call sites benefit. ── */
/* ── ANCHOR OFFSET — ONE RESPONSIVE RULE, REPLACING THREE THAT DISAGREED (2026-08-22) ────────
   Founder ruling: "one property, applied once, fixes the class." It replaces scroll-margin-top
   values of 150px, 110px and 50px that had been tuned separately, at different times, against
   different stacks — and therefore contradicted each other.

   ⚠ MEASURED ON PROD 2026-08-22, signed in AND signed out (identical in both, so auth state is
   not a variable here):
       /         #subnav bottom  106px @1280   146px @1024
       /pricing  .nav    bottom  105px @1280   105px @1024
   The 1024 figure is larger because the sub-nav still wraps to two rows at that width
   (NAV-1024-1, open). +24px clearance per the ruling.

   ⚠ scroll-padding-top ON THE SCROLLPORT, NOT scroll-margin-top ON EACH TARGET. Per-element
   margins are why this drifted: every new anchor had to remember to opt in, and #report-offer,
   #collab-hub-section and #federal-position-report never did. A scrollport rule covers anchors
   that do not exist yet.

   ⚠ AND THE TWO PROPERTIES ADD UP. A surviving scroll-margin-top would stack on top of this and
   overshoot, which is why the old rules are deleted rather than left in place — except where a
   target genuinely needs MORE, immediately below. ── */
html {
  scroll-padding-top: 130px;      /* 106 header + 24 clearance */
}
@media (max-width: 1279px) {
  /* ⚠ KEYED TO THE WRAP, NOT TO A DEVICE. The bar is 40px taller once the sub-nav wraps, and the
     exact wrap width is not pinned — so everything below the width measured as single-row gets
     the taller offset. Overshooting adds whitespace above a heading; undershooting hides it. */
  html {
    scroll-padding-top: 170px;    /* 146 header + 24 clearance */
  }
}

/* ⚠ #res AND #scorecard NEED MORE, AND THE REASON IS LOAD-BEARING. Both can carry
   #results-jumpbar (sticky, top:130px), so their stack is taller than the header alone. The
   2026-08-09 note on the rule this replaces recorded exactly this: tightening them globally
   "would tuck those headings UNDER the jumpbar — trading a reported bug for an unreported one on
   a surface nobody asked about." This value is ADDITIVE to the scroll-padding above, so it is the
   jumpbar allowance only, not a full stack height.
   ⚠ NOT INDEPENDENTLY MEASURED — carried forward from the 150px rule's headroom over a 106px
   header (150 - 106 = 44). recon/_check_anchor_offsets.cjs covers #res/#scorecard so a wrong
   value shows up as a failure rather than as a heading nobody can read. */
#res, #scorecard {
  scroll-margin-top: 44px;
}

/* ── COMMAND CENTER LANDING (2026-08-09) ────────────────────────────────────────────────
   MEASURED sticky stack: header 64px + #subnav 42px = 106px. The 150px above therefore
   overshoots by 44px, parking the heading BELOW the nav with a 44px strip of the previous
   section ("Back to top / Collapse pipeline", then the Bid Pipeline header) showing through.
   Identical at 820px and 1400px viewport heights, which is what proves it is a fixed offset
   rather than anything proportional.

   ⚠ SCOPED TO #home ONLY, NOT APPLIED TO THE SHARED RULE ABOVE. #res / #scorecard can also
   carry #results-jumpbar (sticky, top:130px), so their stack is TALLER than 106 and tightening
   them globally would tuck those headings UNDER the jumpbar — trading a reported bug for an
   unreported one on a surface nobody asked about.
   4px of breathing room so the heading is not flush against the nav's shadow. */
/* (The #home-only 110px override was folded into the responsive scroll-padding-top above.) */

/* ── TOP NAV — top strip (Stage 2a; right-side icons placeholder, settings Stage 5) ── */
header,#topnav{background:var(--ink-deep);padding:0 2rem;display:flex;align-items:center;justify-content:space-between;height:64px;position:sticky;top:0;z-index:100;box-shadow:0 2px 10px rgba(0,0,0,.22);}
.topnav-right{display:flex;align-items:center;gap:10px;}
.topnav-icon-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:1px solid rgba(250,232,218,0.18);color:rgba(250,232,218,0.65);border-radius:50%;cursor:pointer;padding:0;transition:color .15s,border-color .15s,background .15s;}
.topnav-icon-btn:hover{color:var(--gold);border-color:rgba(239,159,39,0.4);background:rgba(239,159,39,0.06);}
.topnav-avatar{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:1.5px solid rgba(239,159,39,0.4);border-radius:50%;cursor:pointer;padding:0;transition:border-color .15s,background .15s;}
.topnav-avatar:hover{border-color:var(--gold);background:rgba(239,159,39,0.08);}
.topnav-avatar-circle{font-size:12px;font-weight:700;color:var(--gold);letter-spacing:.5px;}

/* ── SUB-NAV — 7 top-level categories (Stage 2a; dropdowns Stage 2b) ── */
/* overflow:visible required so dropdowns can escape the sub-nav strip (overflow-x:auto silently promotes overflow-y to auto, which would clip them). Mobile horizontal scroll re-strategised in Stage 8. */
#subnav{background:#2C2C2A;border-bottom:2px solid #3D3D3A;padding:0 2rem;display:flex;align-items:center;gap:0;position:sticky;top:64px;z-index:99;overflow:visible;flex-wrap:wrap;}
.snav-cat{position:relative;display:flex;align-items:center;}
.snav-cat-label,.snav-cat-direct{display:inline-flex;align-items:center;gap:6px;padding:12px 18px;font-size:12px;font-weight:700;color:rgba(250,232,218,0.62);background:transparent;border:none;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s;letter-spacing:.3px;text-decoration:none;font-family:inherit;}
.snav-cat-label:hover,.snav-cat-direct:hover,.snav-cat:focus-within > .snav-cat-label{color:#FAC775;border-bottom-color:rgba(239,159,39,0.4);}
.snav-cat-aria .snav-cat-label{color:var(--gold);}
.snav-cat-aria .snav-cat-label:hover{color:#FAC775;}

/* ── Sub-nav dropdowns (Stage 2b — empty containers, 200ms delays via JS) ── */
.snav-dropdown{position:absolute;top:100%;left:0;min-width:220px;background:#1F1F1D;border:1px solid #3D3D3A;border-top:2px solid var(--gold);border-radius:0 0 8px 8px;box-shadow:0 12px 32px rgba(0,0,0,.45);padding:8px 0;display:none;z-index:200;}
.snav-cat.open > .snav-dropdown{display:block;}
.snav-cat.open > .snav-cat-label{color:#FAC775;border-bottom-color:rgba(239,159,39,0.4);}

/* ── Sub-nav dropdown items + section dividers (Stage 3a) ── */
.snav-dropdown{padding:6px 0;}
.snav-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 16px;font-size:13px;font-weight:600;color:#FAEEDA;background:transparent;border:none;cursor:pointer;text-align:left;letter-spacing:.2px;font-family:inherit;transition:background .12s,color .12s;}
.snav-item:hover,.snav-item:focus-visible{background:rgba(239,159,39,0.08);color:#FAC775;outline:none;}
/* Section dividers — ── Label ── format, dim cream, uppercase tracking */
.snav-section-divider{padding:9px 16px 4px;font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:rgba(250,232,218,0.42);user-select:none;pointer-events:none;}
.snav-section-divider + .snav-item{padding-top:7px;}

/* ── Tier badges + In-development pill + Aria-narrated mic indicator (Stage 3b) ── */
/* Tier badges — color-coded for instant recognition; subtle on dark dropdown bg #1F1F1D */
.snav-tier-badge{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;font-size:9px;font-weight:800;letter-spacing:.4px;padding:2px 6px;border-radius:8px;line-height:1;border:1px solid;flex-shrink:0;}
.snav-tier-badge.bronze{color:#A86E3D;background:rgba(168,110,61,0.10);border-color:rgba(168,110,61,0.36);}
.snav-tier-badge.silver{color:#C8C8CD;background:rgba(200,200,205,0.10);border-color:rgba(200,200,205,0.32);}
.snav-tier-badge.gold{color:#EF9F27;background:rgba(239,159,39,0.10);border-color:rgba(239,159,39,0.36);}
.snav-tier-badge.platinum{color:#C9A8E8;background:rgba(201,168,232,0.12);border-color:rgba(201,168,232,0.36);}
.snav-tier-badge.diamond{color:#67E8F9;background:rgba(103,232,249,0.10);border-color:rgba(103,232,249,0.34);}
/* "In development" pill — neutral grey, distinct from tier badges. Reused for "Building" / "Coming July 2026" labels — same primitive, different text. */
.snav-indev-pill{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;font-size:9px;font-weight:700;letter-spacing:.4px;padding:2px 6px;border-radius:8px;line-height:1;color:rgba(250,232,218,0.62);background:rgba(250,232,218,0.05);border:1px solid rgba(250,232,218,0.18);text-transform:uppercase;flex-shrink:0;}
/* When both a pill and a tier badge are present on the same item, only the first gets margin-left:auto — second sits 4px after it instead of splitting the spare space. */
.snav-indev-pill ~ .snav-tier-badge,.snav-tier-badge ~ .snav-indev-pill{margin-left:4px;}
/* "Live" pill — gold, for a shipped module that lives outside the app (GovCon Learning → govconlearning.com). Same primitive as .snav-indev-pill; gold instead of neutral grey so it reads as launched, not pending. */
.snav-live-pill{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;font-size:9px;font-weight:800;letter-spacing:.5px;padding:2px 6px;border-radius:8px;line-height:1;color:#EF9F27;background:rgba(239,159,39,0.12);border:1px solid rgba(239,159,39,0.42);text-transform:uppercase;flex-shrink:0;}
/* Tier badge / Live pill on a direct-link parent: sit inline after the label using the existing 6px gap from .snav-cat-direct, not flush-right via margin-left:auto. */
.snav-cat-direct .snav-tier-badge,.snav-cat-direct .snav-live-pill{margin-left:0;}
/* Adding the Recompete Radar top-nav item pushed the sub-nav row past the 1366px common-laptop
   width (it was overflowing the viewport → the "no longer auto-fits" regression, 2026-07-15).
   #subnav is flex-wrap:wrap so anything narrower wraps to a second line instead of overflowing
   (overflow-x:auto is out — it would clip the absolute .snav-dropdown menus). This just tightens
   the per-item + container padding on ≤1440 screens so the full row stays on ONE line at 1366. */
@media (max-width:1440px){
  #subnav{padding:0 1rem;}
  .snav-cat-label,.snav-cat-direct{padding:12px 11px;letter-spacing:.2px;}
}
/* Cover Designer parked "Coming Soon" 2026-06-24 — greys + disables the 3 entry points (nav
   item + scorecard #btn-proposal-cover + workspace #ow-cover-btn) so the in-progress designer
   can't be reached. Theme-neutral (opacity works on both the dark nav and the light action
   buttons). Remove this block together with the entry-point + openCoverGenerator changes when
   the capture rework ships. */
.coming-soon{opacity:.5;cursor:not-allowed !important;}
.coming-soon:hover{opacity:.5;}
.coming-soon-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:8px;background:rgba(0,0,0,0.12);color:inherit;font-size:9px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;line-height:1.4;vertical-align:middle;}
/* Aria-narrated mic indicator (Pipeline Briefing) */
.snav-item-aria-mic{color:var(--gold);opacity:.85;flex-shrink:0;margin-left:6px;}

/* ── Aria sub-nav slot — visual treatment (Stage 2c) ── */
.snav-aria-label{display:inline-flex;align-items:center;gap:6px;color:var(--gold);}
.snav-aria-label .snav-aria-mic{opacity:.95;}
.snav-aria-label .snav-aria-star{font-size:13px;line-height:1;color:var(--gold);}
.snav-aria-label .snav-aria-text{font-size:12px;font-weight:700;letter-spacing:.3px;color:var(--gold);}
.snav-aria-label:hover,.snav-aria-label:hover .snav-aria-text,.snav-aria-label:hover .snav-aria-star{color:#FAC775;}
.snav-cat-aria{padding-right:6px;}

/* ── TICKER SLOT (Section 12 — ticker live, see js/ticker.js) ── */
#ticker-slot{min-height:40px;}
.logo{display:flex;align-items:center;gap:12px;text-decoration:none;}
.lmark{width:52px;height:52px;background:#1E1A00;border-radius:12px;display:flex;align-items:center;justify-content:center;border:1.5px solid #EF9F27;flex-shrink:0;}
.lmark img{width:32px;height:32px;display:block;}
.ltext{font-family:Georgia,serif;font-size:34px;font-weight:700;color:#fff;letter-spacing:0.5px;}
/* Wordmark registered mark — small superscript at the upper-right of the wordmark,
   proportional (em) to the wordmark; inherits the white color, lighter weight. */
.ltext-reg{font-size:0.42em;font-weight:500;vertical-align:super;letter-spacing:normal;margin-left:.5px;}
.ltag{font-size:11px;color:#EF9F27;letter-spacing:4px;text-transform:uppercase;margin-top:2px;font-weight:700;}
.lsub{font-size:9px;color:rgba(250,232,218,0.5);font-style:italic;letter-spacing:.2px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.badge{background:var(--gold);color:var(--ink);font-size:10px;font-weight:700;letter-spacing:1.5px;padding:4px 10px;border-radius:20px;text-transform:uppercase;}
.elig-flag{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border-radius:6px;font-size:11px;line-height:1.5;cursor:pointer;transition:all .15s;}
.elig-flag:hover{filter:brightness(0.96);}
.elig-flag.pass{background:#E8F5E8;border-left:3px solid #2D6A2D;}
.elig-flag.fail{background:#FFF0F0;border-left:3px solid #A32D2D;}
.elig-flag.warn{background:#FFF8E1;border-left:3px solid #E65100;}
.elig-flag .ef-icon{font-size:14px;flex-shrink:0;margin-top:1px;}
.elig-flag .ef-label{font-weight:700;margin-right:4px;}
.elig-flag.pass .ef-label{color:#2D6A2D;}
.elig-flag.fail .ef-label{color:#A32D2D;}
.elig-flag.warn .ef-label{color:#E65100;}
.elig-flag .ef-expand{display:none;margin-top:6px;padding-top:6px;border-top:1px solid rgba(0,0,0,.08);font-size:11px;line-height:1.6;color:var(--ink-mid);}
.elig-flag.expanded .ef-expand{display:block;}
.elig-flag .ef-chevron{margin-left:auto;flex-shrink:0;font-size:10px;color:rgba(0,0,0,.3);transition:transform .2s;}
.elig-flag.expanded .ef-chevron{transform:rotate(180deg);}
.elig-flag .ef-main{flex:1;}
.gng-record-btn{padding:5px 12px;background:var(--ink-pale);border:1px solid var(--ink-light);border-radius:5px;font-size:11px;font-weight:700;cursor:pointer;color:var(--ink-mid);transition:all .15s;}
.gng-record-btn:hover{background:var(--gold);color:var(--ink);border-color:var(--gold);}
.gng-record-btn.has-record{background:#E8F5E8;border-color:#2D6A2D;color:#2D6A2D;}
/* Intel Panel */
#intel-panel{display:none;margin-top:1.5rem;border:2px solid var(--gold);border-radius:10px;overflow:hidden;background:#fff;}
#intel-panel.visible{display:block;animation:fadeIn .3s ease;}
.intel-header{background:var(--ink-deep);padding:14px 18px;display:flex;align-items:center;justify-content:space-between;}
.intel-header-left{display:flex;align-items:center;gap:10px;}
.intel-icon{width:32px;height:32px;border-radius:8px;background:rgba(239,159,39,.2);border:1px solid rgba(239,159,39,.4);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
.intel-title{font-size:13px;font-weight:800;color:#fff;}
.intel-sub{font-size:11px;color:rgba(250,232,218,.85);margin-top:2px;}
/* INTEL-FEEDBACK-1 (2026-07-23): .intel-badge was a gold pill on the dead
   "Re-analyze with intel" div — pill styling is exactly what made a non-control read as
   a control. Replaced by .intel-flow-label: plain descriptive text, NO border/pill/chip,
   so it cannot be mistaken for something to click. */
.intel-flow-label{font-size:11px;font-weight:500;font-style:italic;color:rgba(250,232,218,.75);max-width:230px;text-align:right;line-height:1.35;}
.intel-body{padding:16px 18px;}
.intel-field{margin-bottom:12px;}
.intel-field label{font-size:11px;font-weight:700;color:var(--ink-mid);text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:4px;}
.intel-field select,.intel-field input,.intel-field textarea{width:100%;padding:8px 10px;border:1.5px solid var(--ink-light);border-radius:6px;font-size:13px;font-family:inherit;background:var(--paper);color:var(--ink);transition:border-color .15s;}
.intel-field select:focus,.intel-field input:focus,.intel-field textarea:focus{border-color:var(--gold);outline:none;}
.intel-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.teaming-card{background:var(--paper);border:1px solid var(--ink-light);border-radius:8px;padding:12px;margin-bottom:8px;}
.teaming-card .tc-name{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:4px;}
.teaming-card .tc-meta{font-size:11px;color:var(--ink-mid);line-height:1.6;}
.teaming-gap{background:#FFF0F0;border:1px solid #FFCDD2;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:700;color:#A32D2D;display:inline-block;margin-top:4px;margin-right:4px;}
#profile-nudge{display:none;background:var(--ink-deep);border:1.5px solid var(--gold);border-radius:8px;padding:12px 16px;margin-bottom:12px;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
#profile-nudge.visible{display:flex;}
.pn-text{font-size:12px;color:rgba(250,232,218,.85);line-height:1.5;}
.pn-text strong{color:#EF9F27;display:block;margin-bottom:2px;font-size:13px;}
.pn-btn{padding:7px 18px;background:var(--gold);color:var(--ink);border:none;border-radius:6px;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap;flex-shrink:0;}
.pn-btn:hover{background:var(--gold-deep);color:#fff;}
.pn-dismiss{font-size:11px;color:rgba(250,232,218,.7);cursor:pointer;text-decoration:underline;margin-left:8px;}
.pn-dismiss:hover{color:rgba(250,232,218,.7);}
#upgrade-intent-banner{display:none;background:var(--ink-deep);border:1.5px solid var(--gold);border-radius:8px;padding:12px 16px;margin:12px 16px 0;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
#upgrade-intent-banner.visible{display:flex;}
.uib-text{font-size:12px;color:rgba(250,232,218,.85);line-height:1.5;flex:1;min-width:220px;}
.uib-text strong{color:#EF9F27;display:block;margin-bottom:2px;font-size:13px;}
.uib-actions{display:flex;align-items:center;gap:0;flex-shrink:0;}
.uib-btn{padding:7px 18px;background:var(--gold);color:var(--ink);border:none;border-radius:6px;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap;}
.uib-btn:hover{background:var(--gold-deep);color:#fff;}
.uib-dismiss{font-size:11px;color:rgba(250,232,218,.7);cursor:pointer;text-decoration:underline;margin-left:8px;background:none;border:none;padding:4px 8px;}
.uib-dismiss:hover{color:rgba(250,232,218,.7);}

/* ── HERO ── */
.hero{background:transparent;padding:5rem 2rem 4rem;overflow:hidden;position:relative;}

.hero-inner{max-width:1200px;margin:0 auto;display:flex;flex-direction:column;align-items:center;text-align:center;}
.hero-copy{max-width:680px;width:100%;}
.hero-copy h1{font-family:Georgia,serif;font-size:44px;font-weight:700;color:#2C2C2A;line-height:1.15;margin-bottom:1rem;letter-spacing:-.8px;}
.hero-copy h1 em{color:var(--gold);font-style:normal;}
.hero-copy p{font-size:16px;color:#5F5E5A;line-height:1.75;margin-bottom:1.75rem;max-width:560px;margin-left:auto;margin-right:auto;}
.hero-btns{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;max-width:520px;margin:0 auto;}
.hero-eyebrow{font-size:11px;font-weight:800;letter-spacing:3px;text-transform:uppercase;color:var(--gold-deep);margin-bottom:1rem;display:flex;align-items:center;justify-content:center;gap:8px;}
.hero-eyebrow::before{content:'';display:inline-block;width:24px;height:2px;background:var(--gold);}
.hero-eyebrow::after{content:'';display:inline-block;width:24px;height:2px;background:var(--gold);}
.hero-btn-hint{text-align:center;}
.hero-stats{display:flex;justify-content:center;gap:32px;margin-top:28px;padding-top:24px;border-top:1px solid rgba(44,44,42,0.12);}
.hero-stat-n{font-family:Georgia,serif;font-size:28px;font-weight:700;color:#2C2C2A;line-height:1;}
.hero-stat-l{font-size:11px;color:#888780;margin-top:4px;font-weight:600;letter-spacing:.3px;}
.btn-hero{padding:12px 14px;border-radius:var(--rs);font-size:13px;font-weight:700;cursor:pointer;transition:all .18s;display:flex;align-items:center;justify-content:center;gap:7px;text-align:center;line-height:1.3;border:2px solid transparent;letter-spacing:.1px;}

/* Feature 8: Federal = black, Local Gov = GOLD, Commercial = GOLD, Profile = white */
#hero-btn-gov{background:#2C2C2A;color:#fff;border-color:#2C2C2A;}
#hero-btn-gov:hover{background:#444441;border-color:#444441;}
#hero-btn-gov.active{outline:3px solid rgba(255,255,255,0.35);outline-offset:2px;}

#hero-btn-local{background:var(--gold);color:#2C2C2A;border-color:var(--gold);}
#hero-btn-local:hover{background:var(--gold-deep);color:#fff;border-color:var(--gold-deep);}
#hero-btn-local.active{outline:3px solid rgba(44,44,42,0.3);outline-offset:2px;}

#hero-btn-priv{background:var(--gold);color:#2C2C2A;border-color:var(--gold);}
#hero-btn-priv:hover{background:var(--gold-deep);color:#fff;border-color:var(--gold-deep);}
#hero-btn-priv.active{outline:3px solid rgba(44,44,42,0.3);outline-offset:2px;}

#hero-profile-btn{background:#FFFFFF;color:#2C2C2A;border-color:#2C2C2A;}
#hero-profile-btn:hover{background:#F5F3EE;color:#2C2C2A;border-color:#2C2C2A;}
.hero-btn-hint{font-size:12px;color:rgba(100,90,70,0.75);margin-top:10px;font-style:italic;text-align:left;}
@media(max-width:480px){.hero-btns{grid-template-columns:1fr;}}

/* ── HERO — dark bg, split layout. MARKETING-3 (2026-07-17): image LEFT, all copy RIGHT. The star is the LEFT
   hero-visual <img> (see .hero-visual below), NOT a right-anchored background — so NOTHING overlaps the copy. ── */
.hero{
  /* MARKETING-3 FINAL (2026-07-17), EDGE-FADE (2026-07-17): the star is no longer a hard-edged background RECTANGLE
     (its box boundary was standing out against --ink-deep and read as a disconnected right-side panel). It now
     lives on .hero::before and is RADIAL-MASKED so its rectangular edges DISSOLVE to transparent — the star fades
     into the exact same #0A0A0A the copy sits on, seamless, and the stardust spreads ACROSS the hero as one field
     instead of a boxed image on the right. .hero::after is the left legibility scrim (quiets dust under the copy). */
  background: var(--ink-deep);
  padding:5rem 2rem 4.5rem;
  position:relative;
  overflow:hidden;
}
.hero::before{
  content:''; position:absolute; inset:0; z-index:0; pointer-events:none;
  /* the STAR, sized to the hero HEIGHT (auto 88%) so it fits between ribbon and stat bar; anchored right-center */
  background: url('/images/hero-star.jpg') right center / auto 88% no-repeat;
  /* radial mask centered on the star core: fully opaque through the core, feathering to transparent BEFORE the
     image's rectangular edges (top/bottom/right seam gone) and reaching leftward so the dust bridges across. */
  -webkit-mask-image: radial-gradient(ellipse 94% 84% at 79% 50%, #000 0%, #000 40%, rgba(0,0,0,0.35) 66%, rgba(0,0,0,0) 82%);
          mask-image: radial-gradient(ellipse 94% 84% at 79% 50%, #000 0%, #000 40%, rgba(0,0,0,0.35) 66%, rgba(0,0,0,0) 82%);
}
.hero::after{
  content:''; position:absolute; inset:0; z-index:0; pointer-events:none;
  /* left scrim over the bridged dust so the copy stays legible; fades to 0 well before the star core. */
  background: linear-gradient(to right, rgba(10,10,10,0.92) 0%, rgba(10,10,10,0.6) 26%, rgba(10,10,10,0.18) 46%, rgba(10,10,10,0) 60%);
}
.hero-split{flex-direction:row;align-items:center;justify-content:space-between;gap:48px;text-align:left;}
.hero-split .hero-copy{max-width:600px;flex:1;text-align:left;}   /* stretched from 560, but capped so the copy clears the star's left arm (no overlap) */
.hero-split .hero-eyebrow{justify-content:flex-start;color:var(--gold);}
.hero-split .hero-eyebrow::before{display:none;}
.hero-split .hero-copy h1{font-size:52px;color:#fff;letter-spacing:-1px;margin-bottom:1rem;}
.hero-split .hero-copy h1 em{color:var(--gold);font-style:normal;}
/* MARKETING-3 FINAL: no hero-visual element — the star is the full-bleed .hero background (above); the copy
   sits LEFT over the dust. Keep the copy on its own stacking layer so it reads over the background. */
.hero-split .hero-copy{position:relative;z-index:1;}
/* Specificity note: `.hero-copy p{color:#5F5E5A}` (old light-theme gray) was WINNING over `.hero-sub` and made the
   subline near-invisible on the dark hero. `.hero-copy p.hero-sub` outranks it. Bright near-white + a dark glow so
   the credential + the 2M number read effortlessly over the dust. */
.hero-copy p.hero-sub{font-size:18px;color:rgba(255,249,240,0.98);line-height:1.6;margin-bottom:1.75rem;max-width:none;margin-left:0;margin-right:0;text-shadow:0 1px 10px rgba(0,0,0,0.75),0 0 2px rgba(0,0,0,0.6);}
.hero-cta-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap;}
.hero-cta-row .btn-sec{padding:14px 24px;font-size:14px;font-weight:700;color:rgba(250,232,218,0.85);border-color:rgba(250,232,218,0.35);text-decoration:none;display:inline-flex;align-items:center;}
.hero-cta-row .btn-sec:hover{border-color:var(--gold);color:var(--gold);}
.hero-cta-row .btn-gold{text-decoration:none;display:inline-flex;align-items:center;}
/* HERO-ACTIONS-1 (2026-08-21, second pass): TWO hero actions - Try Free and the position link.
   See Demo was removed, and .hero-textlink went with it rather than sitting here with no consumer;
   dead CSS reads as in-use to the next person.

   ⚠ DO NOT ASSUME THERE IS ROOM FOR A THIRD ACTION. The copy column is a FIXED 600px at 1280 and
   492px at 1024 - it does not track the viewport. Three BUTTONS overflowed it, which is why the
   third action was only ever possible as a text link. Measured with the current pair: 265px free at
   1280 but only 157px at 1024, and 1024 is the number that governs. Re-measure at 1024 before adding
   anything; recon/_check_hero_actions.cjs H5/H6 are the arbiter. */
.hero-cta-row .hero-poslink{font-size:13px;font-weight:700;color:var(--gold);text-decoration:none;white-space:nowrap;}
.hero-cta-row .hero-poslink:hover{text-decoration:underline;text-underline-offset:3px;}
@media(max-width:900px){
  .hero-split{flex-direction:column;text-align:center;gap:28px;}
  .hero-split .hero-copy{text-align:center;max-width:none;}
  .hero-split .hero-eyebrow{justify-content:center;}
  .hero-split .hero-eyebrow::before{display:inline-block;}
  .hero-split .hero-copy h1{font-size:36px;}
  .hero-cta-row{justify-content:center;}
  /* MOBILE full-bleed: the star sits in the UPPER band (its own room via top padding); the copy sits BELOW it.
     Same edge-fade approach — the star is on ::before, radial-masked so it dissolves into the ground; ::after is
     a BOTTOM scrim that quiets the dust under the copy. */
  .hero{
    padding-top:min(64vw,300px);   /* reserve the star band above the copy */
    background:var(--ink-deep);
  }
  .hero::before{
    background: url('/images/hero-star.jpg') 72% 6% / 150% auto no-repeat;
    -webkit-mask-image: radial-gradient(ellipse 92% 46% at 62% 20%, #000 0%, #000 34%, rgba(0,0,0,0.3) 62%, rgba(0,0,0,0) 80%);
            mask-image: radial-gradient(ellipse 92% 46% at 62% 20%, #000 0%, #000 34%, rgba(0,0,0,0.3) 62%, rgba(0,0,0,0) 80%);
  }
  .hero::after{
    background: linear-gradient(to bottom, rgba(10,10,10,0) 0%, rgba(10,10,10,0.1) 30%, rgba(10,10,10,0.5) 48%, rgba(10,10,10,0.88) 68%, rgba(10,10,10,0.97) 100%);
  }
}

/* ══ HERO-FULLBLEED-FIX (2026-07-18) — PREVIEW, flag-scoped to html.hero-fb ═══════════════════════
   Every rule below is gated on `html.hero-fb`, set ONLY by the ?preview=herofb cookie handshake in
   index.html. Flag OFF → not one selector matches → the hero above renders byte-identically to what
   is live today. Flag-off IS the rollback.

   ── WHAT WAS ACTUALLY BROKEN (measured on prod, Chrome CDP @1366x900, css 0098128d) ──
   The star was NOT placed as an <img> or a column — the markup was already correct. The defect was
   pure paint geometry on .hero::before:
     • `background-size: auto 88%` sized the star to 88% of the HERO HEIGHT (514px → 452px tall).
       The asset is 1456x816 (ratio 1.7843), so it painted 807px WIDE, anchored `100% 50%`.
     • 807px on a 1366px hero = a rectangle spanning x 559→1366, i.e. the right 59% — a boxed image
       with a hard left edge cutting straight through the brightest part of the dust field. That edge
       is the "vertical seam"; the copy to its left sat on bare --ink-deep. Exactly as reported.
     • The radial mask meant to dissolve that edge was calibrated to the HERO box, not the IMAGE box:
       `ellipse 94% 84% at 79% 50%` is fully opaque out to 40% → opaque from x≈565 to the right edge.
       The image's left edge is at x=559 — SIX PIXELS outside the feather. So the mask feathered empty
       ground and left the image rectangle 100% crisp. It never had a chance to work.
   The mask was the wrong instrument: it feathers a region measured in % of the hero, while the thing
   needing feathering is a background box whose size depends on the hero's height and the asset ratio.
   Those two only line up at one viewport. Hence: delete the mask, and remove the rectangle instead of
   trying to hide it.

   ── THE FIX: there is no rectangle to hide if the image IS the section ──
   `background-size: cover` makes the star the ground of the whole hero, edge to edge. No box, no seam,
   at any viewport, by construction.

   ── KEEPING THE STAR WHOLE (the constraint `cover` normally breaks) ──
   Measured from the asset by connected-component analysis (see recon/_hero_shot.cjs notes): the star
   body occupies y 10%–52% of the asset — 42% of its height. Under `cover` on a hero wider than the
   asset ratio, the visible band is Hh/Himg of the image, where Himg = W/1.7843. The star fits only if
     Hh/Himg >= 0.42   ⇔   Hh >= 0.2354 * W.
   The hero is content-sized (~514px), so this HOLDS at 1366 (514 >= 322) but FAILS by ~2100px wide
   (2560 would need 603px and has ~500) — the star would clip. So `min-height: 26vw` makes the
   invariant structural: 0.26 > 0.2354 with margin, at every width. It only binds above ~1970px
   (26vw < the natural 514px below that), so 1366/1440/1680 are geometrically untouched.
   Given that, the safe vertical-position window solves to p ∈ [0.104, 0.187] asymptotically;
   `100% 14%` sits mid-window and is verified non-clipping from 1024 through 3840.

   ── THE COPY CLEARING THE STAR ──
   Under `cover` the star's left edge lands at 54.2% of the hero width. The copy's right edge is
   632px while the 1200px container is un-centered (W <= 1264), which only clears 54.2% above ~1166px.
   `min(600px, 48vw)` caps the copy so it always clears, and is a NO-OP at 1250px+ (48vw >= 600).

   ── MOBILE (<=900px) ──
   Deliberately NOT re-engineered. The approved star-first stack keeps its own background/mask/scrim;
   the flag only re-states them so the desktop `cover` + un-masked ::before cannot leak in. The safest
   way to not regress an approved path is to not change it. ── */
html.hero-fb .hero{
  /* --hero-scrim is THE knob: one number drives the whole left-weighted scrim below. */
  --hero-scrim:0.94;
  min-height:26vw;                  /* structural guarantee the star is never vertically cropped */
  display:flex; flex-direction:column; justify-content:center;
}
html.hero-fb .hero-inner{width:100%;}
html.hero-fb .hero::before{
  /* THE star is now the FULL-BLEED ground of the section: edge to edge, no box, no seam. */
  background:url('/images/hero-star.jpg') 100% 14% / cover no-repeat;
  -webkit-mask-image:none; mask-image:none;   /* the mask is what boxed it; there is no edge left to hide */
}
html.hero-fb .hero::after{
  /* Left-weighted legibility scrim over the dust — contrast comes from HERE, never from cropping the
     image or reserving a black column.

     STOP PLACEMENT IS GEOMETRY, NOT TASTE. Two fixed landmarks bound this ramp:
       • the star's leading edge sits at 54.2% of the hero width (54.19% measured in the asset, and
         under `cover` the asset width == the hero width, so the % carries over exactly);
       • the copy's right edge sits at 50% of the width for any viewport >=1264px — the 1200px
         container is centered, so (W-1200)/2 + 600 == W/2 identically.
     So the scrim must still be doing real work at 50% and be fully spent by 54%. The first draft
     faded out by 52% with only 0.03a left at 50%, which read fine at 1366 (the copy happens to sit
     on a dark patch there) but left the 12px NIST line fighting bright dust at 2560, where the
     centered container pushes the copy right into the plume. Hence 0.22a at 50%.
     Zero at 54% keeps the star itself untouched at every width. */
  background:linear-gradient(to right,
    rgba(10,10,10,var(--hero-scrim)) 0%,
    rgba(10,10,10,calc(var(--hero-scrim) * 0.82)) 28%,
    rgba(10,10,10,calc(var(--hero-scrim) * 0.52)) 42%,
    rgba(10,10,10,calc(var(--hero-scrim) * 0.22)) 50%,
    rgba(10,10,10,0) 54%);
}
/* Cap the copy so its right edge always clears the star's leading edge. No-op at >=1250px. */
html.hero-fb .hero-split .hero-copy{max-width:min(600px,48vw);}
/* Second half of the contrast toolkit: a dark glow carried by the copy itself. text-shadow INHERITS,
   so this reaches the eyebrow, the h1, the subline AND the inline-styled NIST line (which has no class
   of its own to target and is the faintest text in the hero at rgba(250,232,218,0.55)). Reset on the
   buttons — they sit on solid gold/white fills where a dark glow would only muddy the label. */
html.hero-fb .hero-split .hero-copy{text-shadow:0 1px 10px rgba(0,0,0,.75), 0 0 3px rgba(0,0,0,.6);}
html.hero-fb .hero-split .hero-copy .btn-hero,
html.hero-fb .hero-split .hero-copy .hero-cta-row a{text-shadow:none;}
@media(max-width:900px){
  /* Approved star-first stack, preserved verbatim — re-stated so the desktop cover/mask-none above
     cannot leak into the mobile path. Values identical to the live mobile rules. */
  html.hero-fb .hero{min-height:0;display:block;padding-top:min(64vw,300px);}
  html.hero-fb .hero-split .hero-copy{max-width:none;}
  html.hero-fb .hero::before{
    background:url('/images/hero-star.jpg') 72% 6% / 150% auto no-repeat;
    -webkit-mask-image:radial-gradient(ellipse 92% 46% at 62% 20%, #000 0%, #000 34%, rgba(0,0,0,0.3) 62%, rgba(0,0,0,0) 80%);
            mask-image:radial-gradient(ellipse 92% 46% at 62% 20%, #000 0%, #000 34%, rgba(0,0,0,0.3) 62%, rgba(0,0,0,0) 80%);
  }
  html.hero-fb .hero::after{
    background:linear-gradient(to bottom, rgba(10,10,10,0) 0%, rgba(10,10,10,0.1) 30%, rgba(10,10,10,0.5) 48%, rgba(10,10,10,0.88) 68%, rgba(10,10,10,0.97) 100%);
  }
}
/* ══ end HERO-FULLBLEED-FIX ══════════════════════════════════════════════════════════════════════ */

/* ── PROOF BAR ── */
.proof{background:var(--ink);padding:2.25rem 2rem;}
.proof-inner{max-width:var(--max);margin:0 auto;display:flex;align-items:center;justify-content:center;gap:36px;flex-wrap:wrap;}
.proof-stat{text-align:center;flex:0 0 auto;min-width:140px;}
.proof-stat-n{font-family:Georgia,serif;font-size:24px;font-weight:700;color:var(--gold);line-height:1.1;letter-spacing:.3px;}
.proof-stat-l{font-size:11px;color:rgba(250,232,218,0.7);margin-top:8px;letter-spacing:1px;text-transform:uppercase;font-weight:600;}
.proof-divider{width:1px;height:48px;background:rgba(239,159,39,0.22);}
/* HERO-ACTIONS-1 (2026-08-21): the Federal Position Report line lives in the stats band, NOT the
   hero - founder ruling. The hero already carries three actions and a paragraph, and a fourth
   action there overflows the 492px copy column at 1024. Here it reads as a caption on the numbers
   directly above it, which is the argument it is making. */
.proof-report-line{max-width:var(--max);margin:22px auto 0;padding-top:18px;border-top:1px solid rgba(239,159,39,0.18);text-align:center;font-size:13px;line-height:1.6;color:rgba(250,232,218,0.72);}
.proof-report-line a{color:var(--gold);font-weight:700;text-decoration:none;}
.proof-report-line a:hover{text-decoration:underline;text-underline-offset:3px;}
@media(max-width:900px){
  .proof-inner{gap:20px;}
  .proof-divider{display:none;}
  .proof-stat-n{font-size:20px;}
  .proof-stat{min-width:120px;}
}
@media(max-width:480px){
  .proof-inner{flex-direction:column;gap:16px;}
  .proof-stat{min-width:auto;}
}

/* ── SIX STEPS — unified Find→Execute, replaces .how + .features ── */
.six-steps{background:var(--ink-deep);padding:4.5rem 2rem;}
.six-steps-inner{max-width:var(--max);margin:0 auto;text-align:center;}
.six-steps-eyebrow{font-size:11px;font-weight:800;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:2.75rem;display:flex;align-items:center;justify-content:center;gap:10px;}
.six-steps-eyebrow::before,.six-steps-eyebrow::after{content:'';display:inline-block;width:32px;height:2px;background:var(--gold);}
.six-steps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;text-align:left;}
.six-step{background:#FAEEDA;border:1px solid var(--gold-mid);border-radius:14px;padding:1.5rem 1.5rem 1.75rem;transition:transform .15s,box-shadow .2s;}
.six-step:hover{transform:translateY(-3px);box-shadow:0 14px 36px rgba(0,0,0,.45);}
.six-step-illus{width:100px;height:100px;margin:0 auto .5rem;display:flex;align-items:center;justify-content:center;}
.six-step-illus svg{display:block;}
.six-step-num{font-family:Georgia,serif;font-size:38px;font-weight:700;color:var(--gold-deep);line-height:1;text-align:center;margin-bottom:.15rem;}
.six-step-label{font-size:13px;font-weight:800;letter-spacing:2.5px;text-transform:uppercase;color:var(--ink);text-align:center;margin-bottom:.85rem;}
.six-step-desc{font-size:13px;color:var(--ink-mid);line-height:1.65;margin:0;}
@media(max-width:900px){.six-steps-grid{grid-template-columns:1fr;}.six-steps{padding:3rem 1.5rem;}}

/* ── MAIN CONTENT ── */
main{max-width:var(--max);margin:0 auto;padding:2rem;flex:1;min-width:0;}
main#tool{max-width:none;padding:2rem 0;}

/* ── PAGE WRAPPER (main + sidebar) ── */
.page-layout{max-width:var(--max);margin:0 auto;}
.page-layout main{padding:2rem;max-width:var(--max);margin:0 auto;}

/* Pipeline section breaks out handled via inline wrapper margin */
.analyzer-content{max-width:920px;margin:0 auto;}
@media(max-width:900px){.analyzer-content{max-width:100%;}}
.pipeline-breakout{}



/* ── RIGHT SIDEBAR ── */
#right-sidebar{display:none!important;}

/* Sidebar padding handled via content wrappers */


.sb-card{background:#fff;border-radius:10px;border:1.5px solid #CCC9BE;padding:1rem;box-shadow:0 1px 3px rgba(44,44,42,.05),0 4px 12px rgba(44,44,42,.07);}
.sb-card-hdr{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.sb-card-icon{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:13px;}
.sb-card-title{font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);}
.sb-deadline-item{display:flex;align-items:flex-start;gap:8px;padding:7px 0;border-bottom:1px solid var(--ink-pale);}
.sb-deadline-item:last-child{border-bottom:none;}
.sb-deadline-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:4px;}
.sb-deadline-dot.urgent{background:#E24B4A;}
.sb-deadline-dot.soon{background:#E67E22;}
.sb-deadline-dot.ok{background:#27AE60;}
.sb-deadline-name{font-size:12px;font-weight:600;color:var(--ink);line-height:1.3;flex:1;}
.sb-deadline-date{font-size:11px;color:var(--ink-mid);margin-top:2px;}
.sb-deadline-empty{font-size:12px;color:var(--ink-mid);font-style:italic;text-align:center;padding:8px 0;}
.sb-health-bar{height:8px;border-radius:4px;background:var(--ink-pale);overflow:hidden;margin-bottom:8px;}
.sb-health-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,#27AE60,#5CB85C);transition:width .6s ease;}
.sb-health-stats{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.sb-stat{text-align:center;background:var(--ink-pale);border-radius:6px;padding:6px 4px;}
.sb-stat-n{font-family:Georgia,serif;font-size:18px;font-weight:700;color:var(--ink);line-height:1;}
.sb-stat-l{font-size:9px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-mid);margin-top:2px;}
.sb-stat.pursuing .sb-stat-n{color:#1B7A42;}
.sb-stat.submitted .sb-stat-n{color:#1A5C8A;}
.sb-stat.monitoring .sb-stat-n{color:#6C3483;}
.sb-stat.awarded .sb-stat-n{color:#BA7517;}
.sb-qa-btn{width:100%;padding:9px 12px;border-radius:7px;border:1.5px solid var(--ink-light);background:transparent;font-size:12px;font-weight:700;color:var(--ink-mid);cursor:pointer;text-align:left;display:flex;align-items:center;gap:8px;margin-bottom:6px;transition:all .15s;}
.sb-qa-btn:last-child{margin-bottom:0;}
.sb-qa-btn:hover{background:var(--gold-light);border-color:var(--gold-mid);color:var(--ink);}
.sb-qa-btn svg{flex-shrink:0;opacity:.6;}
.sb-qa-btn:hover svg{opacity:1;}

/* ── ARIA AUDIO ASSISTANT — FLOATING ── */
/* FAB Button */







/* Overlay */
#aria-panel-overlay{display:none;position:fixed;inset:0;background:rgba(20,15,0,.55);z-index:9500;align-items:flex-end;justify-content:flex-end;padding:0 90px 90px 0;}
#aria-panel-overlay.open{display:flex;}

/* Panel — one continuous dark shell with cream body */
#aria-panel{width:420px;max-height:90vh;background:#1A1200;border-radius:16px;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.6),0 0 0 1px rgba(239,159,39,.18);display:flex;flex-direction:column;animation:ariaSlideUp .3s cubic-bezier(.25,.8,.25,1);}
@keyframes ariaSlideUp{from{opacity:0;transform:translateY(24px);}to{opacity:1;transform:translateY(0);}}

/* Panel header — calm, single surface */
#aria-panel-head{padding:18px 18px 14px;display:flex;align-items:center;gap:12px;border-bottom:1px solid rgba(239,159,39,.08);position:relative;}
#aria-panel-avatar-wrap{width:44px;height:44px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#8B5E00 0%,#2C2C2A 80%);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;}
#aria-panel-head-text{flex:1;min-width:0;}
#aria-panel-name{font-family:Georgia,serif;font-size:18px;font-weight:500;color:#FAEEDA;line-height:1.1;letter-spacing:.2px;}
#aria-panel-tagline{font-size:11px;color:rgba(250,232,218,.45);margin-top:3px;letter-spacing:.2px;}
#aria-panel-close{width:28px;height:28px;border-radius:50%;background:rgba(250,232,218,.06);border:1px solid rgba(250,232,218,.1);color:rgba(250,232,218,.55);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0;flex-shrink:0;transition:all .15s;}
#aria-panel-close:hover{background:rgba(250,232,218,.12);color:#FAEEDA;}

/* Status bar — still present, attached to dark header region */
#aria-panel-status-bar{background:rgba(0,0,0,.25);padding:8px 18px;border-bottom:1px solid rgba(239,159,39,.06);}
#aria-panel-status{font-size:11px;color:rgba(250,232,218,.5);line-height:1.4;min-height:15px;font-style:italic;}

/* Mode tabs — chat-first, on the dark strip */
#aria-mode-tabs{display:flex;background:rgba(0,0,0,.15);padding:0 12px;}
.aria-mode-tab{flex:1;padding:10px 8px;border:none;background:none;font-size:12px;font-weight:500;color:rgba(250,232,218,.5);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;border-bottom:1.5px solid transparent;transition:all .15s;font-family:inherit;}
.aria-mode-tab:hover{color:rgba(250,232,218,.8);}
.aria-mode-tab.active{color:#EF9F27;border-bottom-color:#EF9F27;}

/* Mode panels */
.aria-mode-panel{display:none;}
.aria-mode-panel.active{display:block;}

/* Body — single cream surface */
#aria-panel-body{background:#FAEEDA;padding:14px 16px 16px;overflow-y:auto;flex:1;}
#aria-topic-label{font-size:10px;font-weight:500;letter-spacing:1.8px;text-transform:uppercase;color:#5F5E5A;margin-bottom:8px;}

/* Topic grid (full Topics tab) — dark buttons with gold borders, matching app CTAs */
#aria-topic-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px;}
.aria-topic-btn{background:linear-gradient(135deg,#2C2C2A 0%,#1A1200 100%);border:1px solid rgba(239,159,39,.35);border-radius:6px;padding:9px 11px;cursor:pointer;display:flex;align-items:flex-start;gap:7px;text-align:left;transition:all .15s;font-family:inherit;}
.aria-topic-btn:hover{border-color:var(--gold);background:linear-gradient(135deg,#3D2E00 0%,#2C2C2A 100%);transform:translateY(-1px);}
.aria-topic-btn.active{border-color:var(--gold);background:linear-gradient(135deg,#8B5E00 0%,#3D2E00 100%);box-shadow:0 2px 8px rgba(186,117,23,.3);}
.aria-topic-icon{font-size:13px;flex-shrink:0;line-height:1;color:var(--gold);margin-top:1px;}
.aria-topic-text{display:flex;flex-direction:column;gap:1px;min-width:0;}
.aria-topic-name{font-size:11px;font-weight:600;color:var(--gold);line-height:1.3;letter-spacing:.2px;}
.aria-topic-loc{font-size:9px;font-weight:500;color:rgba(239,159,39,.55);line-height:1.3;letter-spacing:.2px;}
.aria-topic-loc.is-ref{color:rgba(239,159,39,.4);font-style:italic;}
.aria-topic-btn.active .aria-topic-name,.aria-topic-btn.active .aria-topic-icon{color:#FAEEDA;}
.aria-topic-btn.active .aria-topic-loc{color:rgba(250,238,218,.7);}

/* Support grid variant — slightly muted, same shape family */
#aria-support-grid .aria-topic-btn{background:linear-gradient(135deg,#3D2E00 0%,#2C2C2A 100%);border-color:rgba(250,232,218,.18);}
#aria-support-grid .aria-topic-btn .aria-topic-name,#aria-support-grid .aria-topic-btn .aria-topic-icon{color:rgba(250,232,218,.75);}
#aria-support-grid .aria-topic-btn:hover{border-color:rgba(250,232,218,.4);background:linear-gradient(135deg,#5F5E5A 0%,#3D2E00 100%);}
#aria-support-grid .aria-topic-btn:hover .aria-topic-name,#aria-support-grid .aria-topic-btn:hover .aria-topic-icon{color:#FAEEDA;}
#aria-support-grid .aria-topic-btn.active{background:linear-gradient(135deg,#2C2C2A 0%,#1A1200 100%);border-color:var(--gold);}
#aria-support-grid .aria-topic-btn.active .aria-topic-name,#aria-support-grid .aria-topic-btn.active .aria-topic-icon{color:var(--gold);}

/* Play button */
#aria-play-btn{background:linear-gradient(105deg,#EF9F27,#BA7517);color:#2C2C2A;border:none;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s;letter-spacing:.2px;padding:11px 16px;width:100%;}
#aria-play-btn:hover{background:linear-gradient(105deg,#8B5E00,#BA7517);color:#fff;transform:translateY(-1px);}
#aria-play-btn:disabled{opacity:.5;cursor:not-allowed;transform:none;}
#aria-play-btn.playing{background:var(--ink-deep);color:var(--gold);}
#aria-play-btn.playing:hover{background:linear-gradient(105deg,#1A1200,#2C2C2A);}

/* Q&A panel */
#aria-ask-panel{padding:0;}
#aria-chat-history{max-height:200px;overflow-y:auto;padding:6px 14px;display:flex;flex-direction:column;gap:8px;min-height:40px;}
#aria-chat-history:empty::after{content:'Ask me anything about Awardly or government contracting.';font-size:12px;color:var(--ink-mid);font-style:italic;}
.aria-chat-msg{max-width:88%;padding:10px 13px;border-radius:13px;font-size:13px;line-height:1.55;}
.aria-chat-msg.user{background:var(--gold);color:var(--ink);border-bottom-right-radius:4px;align-self:flex-end;font-weight:500;}
.aria-chat-msg.aria{background:var(--ink);color:#FAEEDA;border-bottom-left-radius:4px;align-self:flex-start;}
.aria-chat-msg.typing{background:var(--ink);color:rgba(250,232,218,.5);font-style:italic;align-self:flex-start;border-bottom-left-radius:4px;}
#aria-ask-row{display:flex;gap:8px;padding:8px 14px;border-top:1px solid rgba(44,44,42,.08);align-items:flex-end;}
#aria-ask-input{flex:1;padding:8px 12px;border:1px solid #D3D1C7;border-radius:10px;font-size:13px;font-family:inherit;resize:none;height:36px;background:#fff;color:var(--ink);outline:none;line-height:1.4;transition:border-color .15s;}
#aria-ask-input:focus{border-color:var(--gold);height:48px;}
#aria-ask-send{width:36px;height:36px;border-radius:10px;border:none;background:var(--gold);color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;}
#aria-ask-send:hover{background:var(--gold-deep);color:#fff;}
#aria-ask-send:disabled{opacity:.4;cursor:not-allowed;}
#aria-ask-hint{font-size:10px;color:var(--ink-mid);padding:2px 14px 6px;font-style:italic;}

/* Quick topics chip row (visible in Ask Aria view) */
#aria-quick-topics{padding:0 14px 10px;border-top:1px solid rgba(44,44,42,.08);}
#aria-quick-topics-label{font-size:10px;font-weight:500;color:#5F5E5A;letter-spacing:1.8px;text-transform:uppercase;margin:8px 0 6px;}
#aria-quick-topics-row{display:flex;flex-wrap:wrap;gap:5px;}
.aria-quick-chip{padding:5px 10px;background:var(--ink);border:1px solid rgba(239,159,39,.25);border-radius:5px;font-size:11px;font-weight:600;color:var(--gold);cursor:pointer;font-family:inherit;transition:all .15s;line-height:1.2;letter-spacing:.2px;display:inline-flex;align-items:center;gap:5px;}
.aria-quick-chip:hover{border-color:var(--gold);background:#3D3D3A;transform:translateY(-1px);}

/* Waveform */
.aria-wave{display:none;align-items:center;justify-content:center;gap:3px;height:20px;}
.aria-wave.active{display:flex;}
.aria-wave-bar{width:3px;border-radius:2px;background:var(--gold);animation:ariaWave .8s ease-in-out infinite;}
.aria-wave-bar:nth-child(1){animation-delay:0s;height:8px;}
.aria-wave-bar:nth-child(2){animation-delay:.1s;height:14px;}
.aria-wave-bar:nth-child(3){animation-delay:.2s;height:18px;}
.aria-wave-bar:nth-child(4){animation-delay:.3s;height:14px;}
.aria-wave-bar:nth-child(5){animation-delay:.4s;height:8px;}
@keyframes ariaWave{0%,100%{transform:scaleY(.5);opacity:.6;}50%{transform:scaleY(1);opacity:1;}}
@media(max-width:520px){#aria-panel{width:calc(100vw - 24px);}#aria-panel-overlay{padding:0 12px 12px;}}




.ph{margin-bottom:1.5rem;}
.ph h2{font-family:Georgia,serif;font-size:24px;font-weight:700;margin-bottom:6px;letter-spacing:-.3px;}
.ph p{font-size:13px;color:var(--ink-mid);line-height:1.65;}
.grule{height:2px;background:linear-gradient(90deg,var(--gold) 0%,var(--gold-mid) 40%,transparent 100%);border-radius:2px;margin:10px 0 18px;}

/* ── SECTOR TOGGLE ── */
.sector-toggle{display:flex;background:#FAEEDA;flex-wrap:wrap;gap:10px;margin-bottom:1.5rem;}
.sec-btn{padding:10px 22px;font-size:13px;font-weight:700;cursor:pointer;border:2px solid var(--ink-light);border-radius:var(--rs);background:transparent;color:var(--ink-mid);transition:all .15s;display:flex;align-items:center;gap:7px;}
.sec-btn.active{background:var(--gold);color:var(--ink);border-color:var(--gold);}
.sec-btn:not(.active):hover{background:var(--ink-pale);}

/* ── CARDS ── */
.card{background:#fff;border-radius:var(--r);border:1px solid #D8D4C8;padding:1.5rem;margin-bottom:1.25rem;box-shadow:0 1px 3px rgba(44,44,42,.04),0 8px 28px rgba(44,44,42,.08);}
.ch{display:flex;align-items:center;gap:10px;margin-bottom:1rem;}
.ci{width:32px;height:32px;background:var(--gold-light);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
.ct{font-size:14px;font-weight:700;color:var(--ink);letter-spacing:-.1px;}
.cs{font-size:12px;color:var(--ink-mid);margin-top:1px;}

/* ── STEPS ── */
.steps{display:flex;gap:12px;margin-top:1rem;}
.step{flex:1;background:var(--ink-pale);border-radius:var(--rs);padding:14px;}
.sn{width:24px;height:24px;background:var(--gold);color:var(--ink);border-radius:50%;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;margin-bottom:8px;}
.stitle{font-size:12px;font-weight:700;color:var(--ink);margin-bottom:4px;}
.sdesc{font-size:11px;color:var(--ink-mid);line-height:1.5;}

/* ── API KEY ── */
.api-row{display:flex;gap:8px;align-items:center;}
.api-in{flex:1;padding:9px 12px;border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:13px;font-family:monospace;background:var(--ink-pale);color:var(--ink);outline:none;transition:border-color .15s;}
.api-in:focus{border-color:var(--gold);}
.btn-save{padding:9px 18px;background:var(--gold);color:var(--ink);border:none;border-radius:var(--rs);font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap;}
.btn-save:hover{background:var(--gold-deep);color:#fff;}
.kstatus{font-size:12px;margin-top:8px;padding:6px 10px;border-radius:var(--rs);display:none;}
.kstatus.ok{background:var(--gold-light);color:var(--gold-deep);display:block;}
.kstatus.err{background:var(--ink-pale);color:var(--ink);border:1px solid var(--ink-light);display:block;}

/* ── PASTE AREA ── */
.iwarn{background:#FFFBF0;border:1px solid var(--gold-mid);border-radius:var(--rs);padding:8px 14px;margin-bottom:12px;font-size:11px;color:#7A5A00;line-height:1.6;}
.iwarn strong{color:#5A4200;}
.rta{width:100%;height:260px;padding:14px;border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:14px;font-family:inherit;resize:vertical;background:#FDFCF9;color:var(--ink);outline:none;transition:border-color .15s,box-shadow .15s;line-height:1.6;box-shadow:inset 0 1px 2px rgba(44,44,42,.04);}
.rta:focus{border:1.5px solid transparent;background-image:linear-gradient(#FDFCF9,#FDFCF9),linear-gradient(135deg,var(--gold-deep) 0%,var(--gold) 50%,var(--gold-deep) 100%);background-origin:border-box;background-clip:padding-box,border-box;box-shadow:inset 0 1px 2px rgba(44,44,42,.04),0 0 0 4px rgba(239,159,39,.14);}
.rta::placeholder{color:#9B9A94;}
.arow{display:flex;gap:10px;margin-top:12px;align-items:center;flex-wrap:wrap;}
.btn-parse{padding:14px 36px;background:linear-gradient(105deg,#BA7517,#EF9F27);color:#2C2C2A;border:none;border-radius:8px;font-size:15px;font-weight:800;cursor:pointer;display:flex;align-items:center;gap:10px;letter-spacing:.3px;box-shadow:0 4px 14px rgba(186,117,23,.35),0 1px 3px rgba(186,117,23,.2);transition:all .2s;}
.btn-parse:hover{background:linear-gradient(105deg,#8B5E00,#BA7517);color:#fff;box-shadow:0 8px 22px rgba(186,117,23,.45),0 2px 6px rgba(186,117,23,.25);transform:translateY(-1px);}
.btn-parse:active{transform:translateY(0);box-shadow:0 2px 8px rgba(186,117,23,.3);}
.btn-parse:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none;}
.btn-gold{padding:14px 28px;background:linear-gradient(135deg,var(--gold) 0%,var(--gold-deep) 100%);color:#1A1208;border:1px solid #A87010;border-radius:8px;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap;box-shadow:0 2px 8px rgba(245,181,40,0.3),inset 0 1px 0 rgba(255,255,255,0.3);transition:all 0.2s ease;}
.btn-gold:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(245,181,40,0.45),inset 0 1px 0 rgba(255,255,255,0.4);}
.btn-gold:active{transform:translateY(0);box-shadow:0 1px 4px rgba(245,181,40,0.3),inset 0 1px 0 rgba(255,255,255,0.3);}
.btn-gold:disabled{opacity:0.5;cursor:not-allowed;transform:none;}
.btn-sec{padding:11px 18px;background:transparent;color:var(--ink-mid);border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:13px;cursor:pointer;}
.btn-sec:hover{border-color:var(--gold);color:var(--ink);}
.btn-reset{padding:11px 18px;background:transparent;color:var(--ink-mid);border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .15s;}
.btn-reset:hover{background:var(--ink-pale);border-color:var(--ink-mid);}
.back-to-top-link{display:block;text-align:center;padding:12px;font-size:11px;font-weight:700;color:var(--ink-mid);text-decoration:none;letter-spacing:.5px;cursor:pointer;border-top:1px solid var(--ink-light);margin-top:8px;transition:color .15s;}
.back-to-top-link:hover{color:var(--gold-deep);}
.cc{font-size:12px;color:var(--ink-mid);margin-left:auto;}
.spin-wrap{display:none;flex-direction:column;align-items:center;gap:12px;padding:2rem;}
.spin{width:36px;height:36px;border:3px solid var(--ink-light);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
.spin-lbl{font-size:13px;color:var(--ink-mid);}

/* ── EXPORT SUCCESS ── */
.esuccess{display:none;background:var(--gold-light);border:1.5px solid var(--gold-mid);border-radius:var(--rs);padding:10px 14px;font-size:13px;color:var(--gold-deep);font-weight:600;margin-top:10px;width:100%;}

/* ── RESULTS ── */
#res{display:none;}
.rhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;}
.rtitle{font-family:Georgia,serif;font-size:20px;font-weight:500;color:var(--ink);}
/* Higher-specificity override — .rhead .rtitle ("Opportunity Brief",
   "Extracted Parameters") renders inside <main id="tool"> which has
   background:var(--ink-deep) (#0A0A0A). Light cream matches the
   #analyzer-heading convention used in the same section. */
.rhead .rtitle{font-family:Georgia,serif;font-size:22px;font-weight:700;color:var(--cream);letter-spacing:.2px;}
.btn-clr{padding:7px 14px;background:transparent;border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:12px;color:var(--ink-mid);cursor:pointer;}
.btn-clr:hover{border-color:var(--gold);color:var(--gold-deep);}
.rg{margin-bottom:1rem;background:#fff;border-radius:var(--rs);border:1px solid var(--ink-light);}
.rgt{font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--ink);padding:10px 16px;border-bottom:1px solid #D3D1C7;display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;border-radius:var(--rs) var(--rs) 0 0;background:var(--ink-pale);}
.rgt:hover{background:var(--ink-pale);}
.rgt-chevron{transition:transform .2s;font-size:10px;color:var(--ink-mid);margin-left:6px;}
.rg.rg-collapsed .rgt{border-bottom:none;border-radius:var(--rs);}
.rg.rg-collapsed .rgt-chevron{transform:rotate(-90deg);}
.rg-body{padding:1rem;}
.rg.rg-collapsed .rg-body{display:none;}
/* Results jump bar */
#results-jumpbar{display:none;position:sticky;top:130px;z-index:90;background:var(--ink);border-bottom:2px solid #3D3D3A;padding:0 2rem;overflow-x:auto;scrollbar-width:none;}
#results-jumpbar::-webkit-scrollbar{display:none;}
#results-jumpbar.visible{display:flex;}
.rjb-btn{font-size:11px;font-weight:700;color:rgba(250,232,218,0.55);background:transparent;border:none;cursor:pointer;padding:8px 12px;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;}
.rjb-btn:hover{color:#EF9F27;border-bottom-color:rgba(239,159,39,0.4);}
.rgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.ri{background:#fff;border:1px solid #D3D1C7;border-radius:var(--rs);padding:11px 14px;display:flex;flex-direction:column;gap:4px;transition:border-color .15s;}
.rit{display:flex;justify-content:space-between;align-items:flex-start;}
.rl{font-size:10px;color:var(--ink-mid);font-weight:700;letter-spacing:.4px;text-transform:uppercase;}
.rcr{font-size:10px;font-family:monospace;font-weight:700;padding:2px 6px;border-radius:4px;}
.rv{font-size:14px;font-weight:700;color:var(--ink);word-break:break-word;line-height:1.3;}
.rib{display:flex;justify-content:space-between;align-items:center;}
.cb{font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;}
.cf{background:#EF9F27;color:var(--ink);}
.ci2{background:var(--gold-light);color:var(--ink);}
.ce{background:var(--ink-light);color:var(--ink-mid);}
.btn-copy{padding:4px 10px;background:var(--ink-pale);border:1px solid var(--ink-light);border-radius:4px;font-size:11px;font-weight:600;color:var(--ink-mid);cursor:pointer;}
.btn-copy:hover{background:var(--gold);color:var(--ink);border-color:var(--gold);}
.btn-copy.copied{background:var(--gold-light);color:var(--gold-deep);border-color:var(--gold);}
.anotes{background:var(--gold-light);border:1px solid var(--gold-mid);border-left:3px solid var(--gold);border-radius:var(--rs);padding:14px 16px;margin-top:1rem;}
.ant{font-size:11px;font-weight:700;color:var(--gold-deep);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:8px;}
.anb{font-size:13px;color:var(--ink);line-height:1.7;}

/* ── FEATURE 9: DOCUMENT TYPE BANNER ── */
#doc-type-banner{display:none;margin-bottom:1.25rem;}
.doc-type-box{border-radius:var(--r);padding:1rem 1.25rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;}
.doc-type-left{display:flex;align-items:center;gap:14px;}
.doc-type-icon{width:40px;height:40px;border-radius:8px;background:rgba(0,0,0,0.12);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.doc-type-label{font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;opacity:0.7;margin-bottom:3px;}
.doc-type-name{font-family:Georgia,serif;font-size:18px;font-weight:500;}
.doc-type-desc{font-size:12px;opacity:0.75;margin-top:2px;}
.doc-type-badge-wrap{text-align:right;}
.doc-type-contract{font-size:11px;font-weight:700;padding:4px 10px;border-radius:20px;background:rgba(0,0,0,0.12);margin-bottom:4px;display:inline-block;}
.doc-type-outcomes{font-size:10px;opacity:0.65;}

/* ── FEATURE 10: CRITICAL DATES ── */
.date-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.date-item{background:#fff;border:1px solid #D3D1C7;border-radius:var(--rs);padding:11px 14px;transition:border-color .15s;}
.date-label{font-size:10px;color:var(--ink-mid);font-weight:700;letter-spacing:.4px;text-transform:uppercase;margin-bottom:5px;}
.date-value{font-size:14px;font-weight:700;color:var(--ink);}
.date-flag{display:inline-block;font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;margin-top:4px;}
.date-flag-red{background:var(--red-light);color:var(--red);}
.date-flag-yellow{background:#FFF8E1;color:#8B6914;}
.date-flag-green{background:var(--green-light);color:var(--green);}
.date-not-stated{font-size:13px;font-style:italic;color:var(--ink-mid);}
.date-item.urgent-red{border-color:var(--red);background:var(--red-light);}
.date-item.urgent-yellow{border-color:#FAC775;background:#FFF8E1;}
/* ── PIPELINE TILE DEADLINE URGENCY (active statuses only — Considering/Pursuing/Submitted) ── */
.pipe-card.urgency-warn{box-shadow:inset 0 0 0 1px rgba(186,117,23,.45),0 1px 3px rgba(44,44,42,.04),0 8px 28px rgba(44,44,42,.08);}
.pipe-card.urgency-alert{box-shadow:inset 0 0 0 2px rgba(163,45,45,.6),0 1px 3px rgba(44,44,42,.04),0 8px 28px rgba(163,45,45,.10);}
@keyframes urgency-critical-pulse{0%,100%{box-shadow:inset 0 0 0 2px var(--red),0 0 0 0 rgba(163,45,45,.4);}60%{box-shadow:inset 0 0 0 2px var(--red),0 0 0 6px rgba(163,45,45,0);}}
.pipe-card.urgency-critical{animation:urgency-critical-pulse 2.2s ease-in-out infinite;}
@media (prefers-reduced-motion: reduce){.pipe-card.urgency-critical{animation:none;box-shadow:inset 0 0 0 2px var(--red),0 1px 3px rgba(44,44,42,.04),0 8px 28px rgba(163,45,45,.18);}}

/* ── FEATURE 11: SUBMISSION REQUIREMENTS ── */
.sub-req-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.sub-req-item{background:#fff;border:1px solid var(--ink-light);border-radius:var(--rs);padding:12px 14px;}
.sub-req-label{font-size:11px;color:var(--ink-mid);font-weight:600;margin-bottom:5px;}
.sub-req-value{font-size:13px;font-weight:600;color:var(--ink);word-break:break-word;}
.sub-req-item.highlight{border-color:var(--gold-mid);background:var(--gold-light);}
.sub-req-url{font-size:12px;word-break:break-all;color:var(--blue);font-family:monospace;}

/* ── FEATURE 12: CO CONTACT ── */
.co-card{background:#fff;border:1px solid var(--ink-light);border-radius:var(--rs);padding:16px;}
.co-name{font-family:Georgia,serif;font-size:17px;color:var(--ink);margin-bottom:4px;}
.co-role{font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:12px;}
.co-details{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.co-row{display:flex;flex-direction:column;gap:2px;}
.co-row-label{font-size:10px;color:var(--ink-mid);font-weight:600;text-transform:uppercase;letter-spacing:.5px;}
.co-row-val{font-size:13px;font-weight:600;color:var(--ink);}
.co-row-val a{color:var(--blue);text-decoration:none;}
.co-row-val a:hover{text-decoration:underline;}
.co-info-note{font-size:12px;color:var(--ink-mid);margin-top:10px;padding-top:10px;border-top:1px solid var(--ink-light);font-style:italic;}

/* ── FEATURE 13: PRE-BID WALKTHROUGH ── */
.prebid-box{background:#fff;border:1px solid var(--ink-light);border-radius:var(--rs);padding:16px;}
.prebid-status{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.prebid-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.prebid-dot.yes{background:#27AE60;}
.prebid-dot.no{background:var(--ink-light);}
.prebid-dot.unknown{background:var(--gold-mid);}
.prebid-status-text{font-size:15px;font-weight:700;color:var(--ink);}
.prebid-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.prebid-row{display:flex;flex-direction:column;gap:3px;}
.prebid-row-label{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-mid);}
.prebid-row-val{font-size:13px;font-weight:600;color:var(--ink);}
.prebid-mandatory-yes{display:inline-block;background:var(--red-light);color:var(--red);font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;}
.prebid-mandatory-no{display:inline-block;background:var(--green-light);color:var(--green);font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;}
.prebid-not-stated{color:var(--ink-mid);font-style:italic;font-size:13px;}

/* ── OPPORTUNITY WORKSPACE ── */
#opp-workspace{display:none;position:fixed;inset:0;background:rgba(44,44,42,.55);z-index:10000;overflow-y:auto;padding:20px;}
#opp-workspace.open{display:flex;align-items:flex-start;justify-content:center;}
.ow-modal{background:var(--paper);border-radius:14px;width:100%;max-width:960px;min-height:90vh;box-shadow:0 20px 60px rgba(0,0,0,.25);display:flex;flex-direction:column;overflow:hidden;}
.ow-topbar{background:var(--ink-deep);padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.ow-topbar-left{flex:1;min-width:0;}
.ow-opp-name{font-family:Georgia,serif;font-size:18px;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px;}
.ow-meta{display:flex;gap:14px;flex-wrap:wrap;}
.ow-meta-item{font-size:11px;color:rgba(250,232,218,.8);display:flex;align-items:center;gap:4px;}
.ow-meta-item strong{color:rgba(250,232,218,.9);}
.ow-meta-clickable{cursor:pointer;padding:2px 6px;margin:-2px -6px;border-radius:5px;transition:background .15s ease;}
.ow-meta-clickable:hover{background:rgba(239,159,39,.12);}
.ow-meta-clickable:hover strong{color:var(--gold);}
.ow-topbar-right{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.ow-status-select{padding:6px 10px;border-radius:6px;border:1.5px solid rgba(239,159,39,.4);background:rgba(239,159,39,.1);color:var(--gold);font-size:12px;font-weight:700;cursor:pointer;}
.ow-close{background:rgba(255,255,255,.1);border:none;border-radius:6px;padding:6px 10px;cursor:pointer;color:rgba(250,232,218,.7);font-size:18px;line-height:1;}
.ow-close:hover{background:rgba(255,255,255,.2);}
.ow-decision-band{padding:16px 20px;display:flex;align-items:stretch;gap:0;border-bottom:1px solid var(--ink-light);}
.ow-verdict{padding:14px 20px;border-radius:8px;min-width:160px;display:flex;flex-direction:column;justify-content:center;gap:2px;margin-right:16px;}
.ow-verdict.pursue{background:linear-gradient(135deg,#EAF3DE,#C0DD97);border:2px solid #3B6D11;}
.ow-verdict.evaluate{background:linear-gradient(135deg,#FEF3DC,#FAC775);border:2px solid #BA7517;}
.ow-verdict.decline{background:linear-gradient(135deg,#FCEBEB,#F09595);border:2px solid #A32D2D;}
.ow-verdict.monitor{background:linear-gradient(135deg,#F3E5F5,#CE93D8);border:2px solid #8E44AD;}
.ow-verdict.refer{background:linear-gradient(135deg,#0D3B6B,#2E86C1);border:2px solid #0D3B6B;color:#fff;}
.ow-verdict.unknown{background:linear-gradient(135deg,#F0EFEB,#D8D6CE);border:2px solid #888780;}
.ow-verdict-label{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);}
.ow-verdict-rec{font-size:22px;font-weight:800;color:var(--ink);}
.ow-prob{font-size:28px;font-weight:800;color:var(--ink);}
.ow-why{flex:1;padding:0 16px;border-left:1px solid var(--ink-light);}
.ow-why-title{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:8px;}
.ow-why-item{display:flex;align-items:flex-start;gap:7px;font-size:13px;color:var(--ink);margin-bottom:5px;line-height:1.4;}
.ow-action-strip{padding:12px 20px;border-bottom:2px solid var(--ink-light);background:var(--paper);display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.ow-action-strip-label{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--ink-mid);margin-right:4px;}
.ow-action-btn{display:flex;align-items:center;gap:6px;padding:9px 16px;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;border:1.5px solid var(--ink-light);background:var(--paper);color:var(--ink);transition:all .15s;}
.ow-action-btn:hover{border-color:var(--gold);color:var(--gold-deep);}
.ow-action-btn.primary{background:var(--ink-deep);color:var(--gold);border-color:transparent;}
.ow-action-btn.primary:hover{opacity:.9;}
.ow-action-btn:disabled,.ow-action-btn:disabled:hover{opacity:.45;cursor:not-allowed;border-color:var(--ink-light);color:var(--ink-mid);}
.ow-action-btn.primary:disabled,.ow-action-btn.primary:disabled:hover{background:var(--ink-deep);color:var(--gold);opacity:.45;}
/* AI-drafter entry points in CMMC / bring-your-own-AI mode: SHOWN (a Diamond
   customer should see they own the feature) but visibly not usable-with-our-AI
   yet — relabeled "Available with your own AI" by decorateDrafterEntrypoints().
   Applies across nav (.snav-item), scorecard (.sc-ta-btn), pipeline (.ow-action-btn). */
.is-byo-pending{opacity:.72;font-style:italic;font-weight:600;cursor:help;}
.ow-action-btn.primary.is-byo-pending{background:var(--ink-light);color:var(--ink);}
.ow-tabs{display:flex;border-bottom:2px solid var(--ink-light);padding:0 20px;}
.ow-tab{padding:10px 16px;font-size:13px;font-weight:700;color:var(--ink-mid);background:none;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;}
.ow-tab.active{color:var(--gold-deep);border-bottom-color:var(--gold);}
.ow-tab-panel{display:none;padding:20px;}
.ow-tab-panel.active{display:block;}
.ow-section-title{font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:12px;margin-top:20px;}
.ow-section-title:first-child{margin-top:0;}
.ow-field-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:16px;}
.ow-field{background:var(--ink-pale);border-radius:6px;padding:10px 14px;}
.ow-field-label{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:3px;}
.ow-field-val{font-size:14px;font-weight:600;color:var(--ink);}
.ow-notes-ta{width:100%;min-height:80px;padding:10px;border:1.5px solid var(--ink-light);border-radius:8px;font-size:13px;font-family:inherit;background:var(--paper);resize:vertical;}
.ow-notes-ta[style*="height:32px"],.ow-notes-ta[style*="height:36px"],.ow-notes-ta[style*="height:38px"]{min-height:auto;padding:6px 8px;font-size:12px;resize:none;line-height:1.4;}
select.ow-notes-ta{padding:4px 8px;font-size:12px;line-height:1.4;}
.ow-capture-task{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--ink-light);}
.ow-capture-task:last-child{border-bottom:none;}
.ow-intel-card{background:var(--ink-pale);border-radius:8px;padding:14px;margin-bottom:10px;}
.ow-intel-card-title{font-size:12px;font-weight:800;color:var(--ink);margin-bottom:6px;}
.ow-intel-card-val{font-size:13px;color:var(--ink-mid);line-height:1.6;}
.ow-contact-card{display:flex;align-items:flex-start;gap:12px;padding:12px;background:var(--ink-pale);border-radius:8px;margin-bottom:10px;}
.ow-contact-avatar{width:36px;height:36px;border-radius:50%;background:var(--gold);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;flex-shrink:0;}
.ow-contact-info{flex:1;}
.ow-contact-name{font-size:14px;font-weight:700;color:var(--ink);}
.ow-contact-role{font-size:12px;color:var(--ink-mid);}
.ow-contact-actions{display:flex;gap:6px;margin-top:6px;}
.ow-contact-btn{padding:4px 10px;border-radius:6px;font-size:11px;font-weight:700;cursor:pointer;border:1px solid var(--ink-light);background:var(--paper);color:var(--ink);}

/* ── PROCESS BAR ── */
.proc-bar{display:flex;align-items:center;gap:0;margin-bottom:1.25rem;padding:10px 16px;background:var(--paper);border-radius:8px;border:1px solid var(--ink-light);}
.proc-step{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:var(--ink-mid);white-space:nowrap;}
.proc-step.done{color:#3B6D11;}
.proc-step.active{color:var(--gold-deep);}
.proc-step.done .proc-dot{background:#3B6D11;color:#fff;}
.proc-step.active .proc-dot{background:var(--gold);color:var(--ink);}
.proc-step.upcoming .proc-dot{background:var(--ink-light);color:var(--ink-mid);}
.proc-dot{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;flex-shrink:0;}
.proc-arrow{color:var(--ink-light);margin:0 8px;font-size:12px;}

/* ── SCORECARD ── */
#scorecard{display:none;margin-bottom:1.25rem;}
.sc-card{background:#fff;border-radius:var(--r);border:1.5px solid var(--ink-light);padding:0;margin-bottom:1rem;overflow:hidden;box-shadow:0 4px 20px rgba(44,44,42,.08);}
.sc-card-body{padding:1.5rem;}
.sc-hdr{display:flex;align-items:flex-start;gap:24px;margin-bottom:1.5rem;flex-wrap:wrap;justify-content:space-between;}
.sc-verdict-band{width:100%;padding:16px 20px;margin-bottom:20px;border-radius:8px 8px 0 0;display:flex;align-items:center;justify-content:space-between;gap:16px;}
.sc-verdict-band.pursue{background:linear-gradient(105deg,#1B5E20,#2D6A2D);}
.sc-verdict-band.evaluate{background:linear-gradient(105deg,#5D3A00,#8B5E00);}
.sc-verdict-band.decline{background:linear-gradient(105deg,#5D0000,#8B0000);}
.sc-verdict-band.refer{background:linear-gradient(105deg,#0D2B4A,#1A4A7A);}
.sc-verdict-band.monitor{background:linear-gradient(105deg,#2D0046,#4A007A);}
.sc-verdict-band .vb-label{font-size:10px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:rgba(255,255,255,.6);}
.sc-verdict-band .vb-rec{font-family:Georgia,serif;font-size:24px;font-weight:700;color:#fff;letter-spacing:2px;}
.sc-verdict-band .vb-prob{font-family:Georgia,serif;font-size:42px;font-weight:700;color:rgba(255,255,255,.95);line-height:1;}
.sc-verdict-band .vb-prob-lbl{font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:rgba(255,255,255,.6);}
.sc-verdict-band .vb-agency{font-size:11px;font-weight:600;letter-spacing:.2px;color:rgba(255,255,255,.72);margin-top:5px;}
/* ── Competitive Pressure Chip (separate from Win Probability — market context, not internal fit) ── */
.cp-chip{display:inline-flex;flex-direction:column;align-items:flex-start;padding:8px 14px;border-radius:8px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);margin-right:12px;cursor:pointer;transition:background .15s;min-width:128px;}
.cp-chip:hover{background:rgba(255,255,255,.22);}
.cp-chip .cp-lbl{font-size:9px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:rgba(255,255,255,.65);margin-bottom:2px;}
.cp-chip .cp-val{font-family:Georgia,serif;font-size:18px;font-weight:700;color:#fff;line-height:1.1;display:flex;align-items:center;gap:6px;}
.cp-chip .cp-dot{width:8px;height:8px;border-radius:50%;display:inline-block;}
.cp-chip .cp-dot.high{background:#FF6B6B;box-shadow:0 0 6px rgba(255,107,107,.6);}
.cp-chip .cp-dot.medium{background:#FFD166;box-shadow:0 0 6px rgba(255,209,102,.6);}
.cp-chip .cp-dot.low{background:#80D88A;box-shadow:0 0 6px rgba(128,216,138,.6);}
.cp-chip .cp-dot.unknown{background:rgba(255,255,255,.3);}
.cp-chip .cp-why{font-size:9px;color:rgba(255,255,255,.55);margin-top:2px;text-decoration:underline;text-underline-offset:2px;}
.cp-chip .cp-sublbl{font-size:9px;color:rgba(255,255,255,.5);margin-top:1px;letter-spacing:.3px;font-style:italic;}
/* Workspace variant — lives on paper background, not gradient */
.cp-chip-ow{display:inline-flex;flex-direction:column;align-items:flex-start;padding:8px 14px;border-radius:8px;background:var(--ink-pale);border:1.5px solid var(--ink-light);margin-top:8px;cursor:pointer;transition:all .15s;}
.cp-chip-ow:hover{border-color:var(--gold);}
.cp-chip-ow .cp-lbl{font-size:9px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:2px;}
.cp-chip-ow .cp-val{font-family:Georgia,serif;font-size:16px;font-weight:700;color:var(--ink);line-height:1.1;display:flex;align-items:center;gap:6px;}
.cp-chip-ow .cp-why{font-size:9px;color:var(--ink-mid);margin-top:2px;}
.cp-chip-ow .cp-sublbl{font-size:9px;color:var(--ink-mid);margin-top:1px;letter-spacing:.3px;font-style:italic;opacity:.8;}
/* Methodology modal signal rows */
.cp-sig-row{display:grid;grid-template-columns:1fr auto;gap:14px;padding:12px 0;border-bottom:1px solid var(--ink-pale);align-items:start;}
.cp-sig-row:last-child{border-bottom:none;}
.cp-sig-name{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:3px;}
.cp-sig-source{font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:4px;}
.cp-sig-detail{font-size:12px;color:var(--ink);line-height:1.55;}
.cp-sig-unavailable{font-size:12px;color:var(--ink-mid);font-style:italic;}
.cp-sig-pts{font-size:13px;font-weight:800;color:var(--ink);padding:4px 10px;border-radius:6px;background:var(--ink-pale);white-space:nowrap;min-width:56px;text-align:center;}
.cp-sig-pts.pos{background:#FCEBEB;color:#A32D2D;}
.cp-sig-pts.neu{background:var(--ink-pale);color:var(--ink-mid);}
.cp-sig-pts.na{background:transparent;color:var(--ink-mid);font-weight:600;}
@keyframes scReveal{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:translateY(0);}}
.sc-verdict-band{animation:scReveal .4s ease;}
.sc-badge{padding:12px 32px;border-radius:8px;font-family:Georgia,serif;font-size:30px;font-weight:700;color:#fff;letter-spacing:2px;display:inline-block;box-shadow:0 4px 12px rgba(0,0,0,.2);}
.sc-badge.pursue{background:linear-gradient(135deg,#1B5E20,#27AE60);}
.sc-badge.respond{background:linear-gradient(135deg,#1B5E20,#27AE60);}
.sc-badge.evaluate{background:linear-gradient(135deg,#8B5E00,#E67E22);}
.sc-badge.decline{background:linear-gradient(135deg,#7B0D0D,#C0392B);}
.sc-badge.refer{background:linear-gradient(135deg,#0D3B6B,#2E86C1);}
.sc-badge.monitor{background:linear-gradient(135deg,#4A148C,#8E44AD);}
.sc-badge.pass{background:linear-gradient(135deg,#4A4A4A,#7F8C8D);}
.sc-prob-wrap{display:flex;flex-direction:column;justify-content:center;}
.sc-prob{font-family:Georgia,serif;font-size:64px;font-weight:700;color:var(--ink);line-height:1;letter-spacing:-2px;}
.sc-prob-lbl{font-size:11px;color:var(--ink-mid);letter-spacing:1.5px;text-transform:uppercase;margin-top:4px;}
.sc-sec{font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--ink-light);}
.sc-cats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:1.25rem;}
.sc-cat{display:flex;justify-content:space-between;align-items:center;background:var(--ink-pale);border-radius:var(--rs);padding:8px 12px;}
.sc-cat-name{font-size:13px;color:var(--ink);}
.sc-score{font-size:10px;font-weight:700;padding:3px 10px;border-radius:20px;}
.sc-score.strong{background:var(--gold);color:var(--ink);}
.sc-score.moderate{background:var(--gold-light);color:var(--gold-deep);}
.sc-score.weak{background:var(--ink-light);color:var(--ink);}
.sc-score.unknown{background:var(--ink-light);color:var(--ink-mid);}
.sc-lists{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:1.25rem;}
.sc-list-title{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px;}
.sc-list-item{font-size:13px;color:var(--ink-mid);padding:5px 0;border-bottom:1px solid var(--ink-light);line-height:1.5;}
.sc-list-item:last-child{border-bottom:none;}
.sc-summary{font-size:14px;color:var(--ink);line-height:1.7;margin-bottom:1.25rem;}
.sc-addl-lbl{font-size:12px;font-weight:600;color:var(--ink);margin-bottom:4px;}
.sc-addl-warn{font-size:11px;color:var(--ink-mid);margin-bottom:8px;}
/* CUI compliance disclaimer shown above every persisted free-text field
   (ISSUES 4.21 ext). Generic (NOT scoped to scorecard, unlike .sc-addl-warn
   which is hidden in the print/compact media query above). */
.cui-field-warn{font-size:11px;color:var(--ink-mid);margin-bottom:6px;line-height:1.35;}
/* Live, non-blocking "this note contains CUI and won't be saved" indicator shown
   UNDER a notes field while a marking is present (ISSUES 4.21 ext). Amber, matches
   the app's other CUI notices. Replaces the blur modal for notes fields. */
.cui-inline-flag{font-size:11px;color:#633806;background:#FFF8E1;border:1px solid #EF9F27;border-radius:5px;padding:5px 8px;margin:4px 0 8px;line-height:1.35;}
.sc-ta{width:100%;height:90px;padding:10px 12px;border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:13px;font-family:inherit;resize:vertical;background:var(--ink-pale);color:var(--ink);outline:none;transition:border-color .15s;}
.sc-ta:focus{border-color:var(--gold);}
.btn-finalize{padding:11px 28px;background:var(--gold);color:var(--ink);border:none;border-radius:var(--rs);font-size:14px;font-weight:800;cursor:pointer;margin-top:1rem;transition:background .15s;}
.btn-finalize:hover{background:var(--gold-deep);color:#fff;}
.btn-finalize:disabled{opacity:.6;cursor:not-allowed;}
.sc-actions{display:none;gap:10px;flex-wrap:wrap;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--ink-light);}
.btn-act{padding:10px 20px;border:none;border-radius:var(--rs);font-size:13px;font-weight:700;cursor:pointer;transition:opacity .15s;display:flex;align-items:center;gap:6px;}
.btn-act:hover{opacity:.85;}
.btn-act.save{background:var(--ink);color:#fff;}
.btn-act.email{background:var(--ink);color:#fff;}
.btn-act.print{background:var(--ink-light);color:var(--ink);}
.btn-act.export{background:var(--gold);color:var(--ink);}
.btn-act.checklist{background:var(--gold);color:var(--ink);border:1.5px solid var(--gold);}
.btn-act.checklist:hover{background:var(--gold-deep);color:#fff;}

/* ── SCORE BREAKDOWN ── */
.sc-breakdown{margin-top:1rem;border-top:1px solid var(--ink-light);padding-top:1rem;}
.sc-bd-toggle{background:none;border:none;font-size:12px;color:var(--ink-mid);cursor:pointer;display:flex;align-items:center;gap:5px;padding:0;font-family:inherit;}
.sc-bd-toggle:hover{color:var(--ink);}
.sc-bd-rows{display:none;margin-top:10px;}
.sc-bd-rows.open{display:block;}
.sc-bd-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid var(--ink-light);font-size:12px;}
.sc-bd-row:last-child{border-bottom:none;}
.sc-bd-factor{color:var(--ink-mid);}
.sc-bd-pts{font-weight:700;color:var(--ink);}
.sc-bd-note{font-size:11px;color:var(--ink-mid);margin-top:8px;font-style:italic;}

/* ── SCORECARD LAYOUT v2 — assessment / gates / evaluation / recommendation / decision / take-action / contract-detail ── */
.sc-assessment{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0 10px;}
@media (max-width:900px){.sc-assessment{grid-template-columns:1fr;}}
.sc-assess-card{background:var(--paper);border:1.5px solid var(--ink-light);border-radius:10px;overflow:hidden;transition:border-color .15s;}
.sc-assess-card:hover{border-color:var(--gold);}
.sc-assess-card > summary{list-style:none;cursor:pointer;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:10px;transition:background .15s;}
.sc-assess-card > summary:hover{background:rgba(239,159,39,.07);}
.sc-assess-card > summary::-webkit-details-marker{display:none;}
.sc-assess-card > summary::after{content:"Expand ▾";font-size:11px;font-weight:800;letter-spacing:.5px;color:var(--gold-deep);background:rgba(239,159,39,.12);padding:4px 10px;border-radius:14px;white-space:nowrap;flex-shrink:0;transition:background .15s;}
.sc-assess-card > summary:hover::after{background:rgba(239,159,39,.22);}
.sc-assess-card[open] > summary::after{content:"Collapse ▴";}
.sc-assess-title{font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);}
.sc-assess-headline{font-family:Georgia,serif;font-size:16px;color:var(--ink);margin-top:2px;line-height:1.2;}
.sc-assess-context{font-size:11px;color:var(--ink-mid);margin-top:3px;line-height:1.35;}
.sc-assess-body{padding:0 14px 14px;border-top:1px solid var(--ink-light);}

.sc-gates{display:flex;flex-direction:column;gap:6px;margin:14px 0 6px;padding:10px 12px;background:var(--ink-pale);border-radius:8px;}
.sc-gates-label{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:4px;}
/* Reskin existing .elig-flag pass/warn output inside the gates container so a
   verified gate reads as "verified ✓" rather than a bland green box. */
.sc-gates .elig-flag.pass .ef-label::before{content:"verified ✓ — ";font-weight:800;letter-spacing:.3px;}
.sc-gates .elig-flag.warn .ef-label::before{content:"passed — ";font-weight:800;letter-spacing:.3px;}
.sc-gates .elig-flag.fail .ef-label::before{content:"failed — ";font-weight:800;letter-spacing:.3px;}

.sc-evaluation{margin:14px 0;border:1.5px solid var(--ink-light);border-radius:10px;overflow:hidden;}
.sc-evaluation > summary{list-style:none;cursor:pointer;padding:12px 14px;background:var(--ink-pale);font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);display:flex;justify-content:space-between;align-items:center;transition:background .15s;}
.sc-evaluation > summary:hover{background:rgba(239,159,39,.10);}
.sc-evaluation > summary::-webkit-details-marker{display:none;}
.sc-evaluation > summary::after{content:"Expand ▾";font-size:11px;font-weight:800;letter-spacing:.5px;color:var(--gold-deep);background:rgba(239,159,39,.18);padding:4px 10px;border-radius:14px;white-space:nowrap;flex-shrink:0;text-transform:none;}
.sc-evaluation[open] > summary::after{content:"Collapse ▴";}
.sc-evaluation-body{padding:14px;background:#fff;}

.sc-recommendation{margin:18px 0 14px;padding:16px 18px;background:linear-gradient(180deg,#FFF8E7,#FAEEDA);border:1.5px solid var(--gold);border-radius:10px;}
.sc-rec-label{font-size:10px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--gold-deep);margin-bottom:6px;}
.sc-rec-headline{font-family:Georgia,serif;font-size:20px;color:var(--ink);line-height:1.3;margin-bottom:8px;}
.sc-rec-body{font-size:13px;color:var(--ink);line-height:1.6;margin-bottom:10px;}
.sc-rec-disclaimer{font-size:11px;font-style:italic;color:var(--ink-mid);border-top:1px solid rgba(184,134,11,.25);padding-top:8px;}

.sc-your-decision{margin:16px 0;padding:14px 16px;background:var(--ink-pale);border-radius:10px;border:1.5px solid var(--ink-light);}
.sc-yd-label{font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:10px;}
.sc-yd-row{display:flex;flex-wrap:wrap;gap:8px;}
.fd-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;background:#fff;transition:transform .1s,box-shadow .15s;font-family:inherit;}
.fd-btn:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(0,0,0,.08);}
.fd-btn--pursue{border:1.5px solid #27AE60;color:#27AE60;}
.fd-btn--evaluate{border:1.5px solid #E6A817;color:#8B6800;}
.fd-btn--monitor{border:1.5px solid #8E44AD;color:#8E44AD;}
.fd-btn--refer{border:1.5px solid #5B8DD9;color:#2C5FA8;}
.fd-btn--pass{border:1.5px solid #ccc;color:var(--ink-mid);}
/* Selected disposition: explicit filled background per decision + white label.
   (Was `background:currentColor` with `color:#fff !important` — currentColor then
   resolved to the forced-white color, so bg AND text both went white = invisible
   label. Set the fill explicitly to the decision color instead.) */
.fd-btn.is-selected{color:#fff !important;}
.fd-btn.is-selected svg{stroke:#fff;}
.fd-btn--pursue.is-selected{background:#27AE60;border-color:#27AE60;}
.fd-btn--evaluate.is-selected{background:#E6A817;border-color:#E6A817;}
.fd-btn--monitor.is-selected{background:#8E44AD;border-color:#8E44AD;}
.fd-btn--refer.is-selected{background:#5B8DD9;border-color:#5B8DD9;}
.fd-btn--pass.is-selected{background:#8A8A8A;border-color:#8A8A8A;}

.sc-take-action{margin-top:14px;padding-top:12px;border-top:1px solid var(--ink-light);}
.sc-ta-label{font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);margin-bottom:8px;}
.sc-ta-row{display:flex;flex-wrap:wrap;gap:8px;}
.sc-ta-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;background:var(--paper);color:var(--ink);border:1.5px solid var(--ink-light);border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;transition:border-color .15s,background .15s;}
.sc-ta-btn:hover{border-color:var(--gold);background:#fff;}
.sc-ta-btn--primary{background:var(--ink-deep);color:var(--gold);border-color:var(--ink-deep);}
.sc-ta-btn--primary:hover{background:var(--ink);color:var(--gold);}
.sc-ta-btn:disabled{opacity:.5;cursor:not-allowed;}
/* Scorecard v2.2 — grouped action zone (one contextual primary + Build/Act groups + More) */
.sc-ta-group{margin-top:2px;}
.sc-ta-grp-label{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);margin:4px 0 6px;}
.sc-primary-slot{margin-bottom:2px;}
.sc-primary-slot:empty{display:none;}
.sc-primary-slot .sc-ta-btn{padding:11px 18px;font-size:14px;}
.sc-saved-state{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:#3B6D11;background:var(--green-light,#EAF3DE);border:1px solid rgba(59,109,17,.28);border-radius:8px;padding:7px 12px;}
.sc-saved-link{background:none;border:none;color:#3B6D11;font-weight:800;font-size:12px;cursor:pointer;padding:0 0 0 2px;text-decoration:underline;font-family:inherit;}
.sc-ta-more{position:relative;align-self:flex-start;}
.sc-ta-more-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:40;background:#fff;border:1.5px solid var(--ink-light);border-radius:10px;box-shadow:0 8px 28px rgba(44,44,42,.16);padding:6px;min-width:200px;display:flex;flex-direction:column;gap:2px;}
.sc-ta-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;background:none;border:none;border-radius:6px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;font-family:inherit;text-align:left;}
.sc-ta-menu-item:hover{background:var(--ink-pale);}

.sc-contract-detail{margin-top:14px;border:1.5px solid var(--ink-light);border-radius:10px;overflow:hidden;}
.sc-contract-detail > summary{list-style:none;cursor:pointer;padding:12px 14px;background:var(--ink-pale);font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-mid);display:flex;justify-content:space-between;align-items:center;transition:background .15s;}
.sc-contract-detail > summary:hover{background:rgba(239,159,39,.10);}
.sc-contract-detail > summary::-webkit-details-marker{display:none;}
.sc-contract-detail > summary::after{content:"Expand ▾";font-size:11px;font-weight:800;letter-spacing:.5px;color:var(--gold-deep);background:rgba(239,159,39,.18);padding:4px 10px;border-radius:14px;white-space:nowrap;flex-shrink:0;text-transform:none;}
.sc-contract-detail[open] > summary::after{content:"Collapse ▴";}
.sc-cd-body{padding:12px 14px;background:#fff;}
.sc-cd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:6px;}
.sc-cd-link{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 12px;background:var(--paper);border:1px solid var(--ink-light);border-radius:6px;font-size:12px;font-weight:600;color:var(--ink);cursor:pointer;text-decoration:none;font-family:inherit;text-align:left;}
.sc-cd-link:hover{border-color:var(--gold);background:#fff;}
.sc-cd-link[disabled],.sc-cd-link.is-locked{opacity:.55;cursor:not-allowed;}
.sc-cd-link .sc-cd-hint{font-size:10px;color:var(--ink-mid);font-weight:500;font-style:italic;}

/* ── REFER SECTION ── */
#refer-section{display:none;margin-top:1.5rem;padding-top:1.5rem;border-top:2px solid #2E86C1;}
.refer-title{font-family:Georgia,serif;font-size:17px;color:#2E86C1;margin-bottom:4px;}
.refer-sub{font-size:13px;color:var(--ink-mid);margin-bottom:1.25rem;}
.refer-form{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:1rem;}
.refer-field{display:flex;flex-direction:column;gap:5px;}
.refer-field label{font-size:12px;font-weight:600;color:var(--ink);}
.refer-input{padding:9px 12px;border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:13px;font-family:inherit;background:var(--ink-pale);color:var(--ink);outline:none;}
.refer-input:focus{border-color:#2E86C1;}
.refer-select{padding:9px 12px;border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:13px;font-family:inherit;background:var(--ink-pale);color:var(--ink);outline:none;cursor:pointer;}
.refer-select:focus{border-color:#2E86C1;}
.refer-preview{background:#EBF5FB;border:1.5px solid #AED6F1;border-radius:var(--rs);padding:12px 14px;font-size:12px;color:#1A5276;line-height:1.7;font-family:monospace;white-space:pre-wrap;margin-bottom:1rem;}
.refer-preview-label{font-size:11px;font-weight:700;color:#2E86C1;letter-spacing:1px;text-transform:uppercase;margin-bottom:6px;}
.refer-status{font-size:13px;font-weight:600;border-radius:var(--rs);padding:10px 14px;margin-bottom:1rem;}
.refer-status.success{background:#E8F5E9;border:1.5px solid #66BB6A;color:#1B5E20;}
.refer-status.error{background:#FBEAEA;border:1.5px solid #E4B7B7;color:#9A2A2A;}
.btn-send-referral{padding:11px 24px;background:#2E86C1;color:#fff;border:none;border-radius:var(--rs);font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:8px;}
.btn-send-referral:hover{background:#1A6FA8;}

/* ── EXPORT BUTTONS ── */
.export-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:1rem;}
.btn-export{padding:11px 22px;background:var(--gold);color:var(--ink);border:none;border-radius:var(--rs);font-size:14px;font-weight:800;cursor:pointer;display:flex;align-items:center;gap:8px;white-space:nowrap;}
.btn-export:hover{background:var(--gold-deep);color:#fff;}

/* ── GOLD TIER OVERLAY ── */
.rg-tier-wrap{position:relative;overflow:hidden;border-radius:var(--rs);}
.rg-tier-blur{filter:blur(3px);opacity:0.45;pointer-events:none;user-select:none;}
.rg-tier-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(250,232,218,0.92);border-radius:var(--rs);z-index:2;gap:10px;padding:1rem;}
.rg-tier-badge{background:var(--gold);color:var(--ink);font-family:Georgia,serif;font-size:14px;padding:8px 20px;border-radius:var(--rs);font-weight:500;display:flex;align-items:center;gap:7px;}
.rg-tier-sub{font-size:12px;color:var(--ink-mid);text-align:center;max-width:300px;}
.btn-tier-upgrade{padding:8px 20px;background:var(--ink);color:#fff;border:none;border-radius:var(--rs);font-size:13px;font-weight:700;cursor:pointer;}
.btn-tier-upgrade:hover{background:var(--gold-deep);color:#fff;}

/* ── FEATURE 14: COMPLIANCE CHECKLIST MODAL ── */
#checklist-overlay{display:none;position:fixed;inset:0;background:rgba(44,44,42,0.7);z-index:4000;align-items:flex-start;justify-content:center;padding:1rem;overflow-y:auto;}
#checklist-overlay.open{display:flex;}
.cl-box{background:#FAEEDA;border-radius:14px;width:100%;max-width:680px;margin:auto;box-shadow:0 24px 60px rgba(0,0,0,0.4);}
.cl-head{background:var(--ink-deep);border-radius:14px 14px 0 0;padding:1.5rem 2rem;}
.cl-head-top{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.75rem;}
.cl-title{font-family:Georgia,serif;font-size:22px;color:#fff;display:flex;align-items:center;gap:10px;}
.cl-close-btn{background:none;border:none;color:rgba(250,232,218,0.7);font-size:22px;cursor:pointer;padding:0;line-height:1;flex-shrink:0;}
.cl-close-btn:hover{color:#fff;}
.cl-opp-info{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.cl-opp-field{display:flex;flex-direction:column;gap:2px;}
.cl-opp-label{font-size:9px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--gold);}
.cl-opp-val{font-size:13px;font-weight:600;color:#FAEEDA;}
.cl-body{padding:1.5rem 2rem;}
.cl-section{margin-bottom:1.5rem;}
.cl-section-title{font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--gold-deep);margin-bottom:10px;padding-bottom:6px;border-bottom:2px solid var(--gold-mid);}
.cl-item{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid var(--ink-light);}
.cl-item:last-child{border-bottom:none;}
.cl-checkbox{width:18px;height:18px;border:2px solid var(--gold-mid);border-radius:4px;cursor:pointer;flex-shrink:0;margin-top:1px;background:#fff;appearance:none;-webkit-appearance:none;}
.cl-checkbox:checked{background:var(--gold);border-color:var(--gold);}
.cl-checkbox:checked::after{content:'✓';display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:900;color:var(--ink);}
.cl-item-text{font-size:13px;color:var(--ink);line-height:1.5;flex:1;}
.cl-item-note{font-size:11px;color:var(--gold-deep);font-weight:600;margin-top:2px;}
.cl-foot{padding:1rem 2rem 1.5rem;border-top:1px solid var(--ink-light);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;}
.cl-generated{font-size:11px;color:var(--ink-mid);}
.cl-foot-actions{display:flex;gap:10px;}
.btn-cl-print{padding:10px 22px;background:var(--gold);color:var(--ink);border:none;border-radius:var(--rs);font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:7px;}
.btn-cl-print:hover{background:var(--gold-deep);color:#fff;}
.btn-cl-close{padding:10px 18px;background:transparent;color:var(--ink-mid);border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:13px;cursor:pointer;}
.btn-cl-close:hover{border-color:var(--ink);color:var(--ink);}

/* ── GOLD TIER UPGRADE MODAL ── */
#tier-upgrade-modal{display:none;position:fixed;inset:0;background:rgba(44,44,42,0.65);z-index:2000;align-items:center;justify-content:center;padding:1rem;}
#tier-upgrade-modal.open{display:flex;}
.tier-modal-box{background:#fff;border-radius:12px;max-width:420px;width:100%;padding:2rem;text-align:center;box-shadow:0 20px 50px rgba(0,0,0,0.35);}
.tier-modal-star{font-size:40px;margin-bottom:.75rem;}
.tier-modal-title{font-family:Georgia,serif;font-size:22px;color:var(--ink);margin-bottom:.5rem;}
.tier-modal-sub{font-size:14px;color:var(--ink-mid);line-height:1.6;margin-bottom:.75rem;}
/* Stage 5 Chunk 6: feature description + tier price; both hidden when empty */
.tier-modal-desc{font-size:13px;color:var(--ink-mid);line-height:1.5;margin-bottom:1rem;font-style:italic;}
.tier-modal-desc:empty{display:none;}
.tier-modal-price{font-size:18px;font-weight:800;color:var(--gold);margin-bottom:1.25rem;}
.tier-modal-price:empty{display:none;}
.btn-tier-cta{padding:12px 32px;background:var(--gold);color:var(--ink);border:none;border-radius:var(--rs);font-size:15px;font-weight:800;cursor:pointer;display:block;width:100%;margin-bottom:10px;}
.btn-tier-cta:hover{background:var(--gold-deep);color:#fff;}
.btn-tier-dismiss{font-size:13px;color:var(--ink-mid);background:none;border:none;cursor:pointer;text-decoration:underline;}

/* ── PROFILE MODAL ── */
#profile-overlay{display:none;position:fixed;inset:0;background:rgba(44,44,42,0.6);z-index:1000;align-items:center;justify-content:center;padding:1rem;}
#profile-overlay.open{display:flex;}
.pmodal{background:#FAEEDA;border-radius:16px;width:100%;max-width:580px;max-height:90vh;overflow-y:auto;box-shadow:0 24px 60px rgba(0,0,0,0.4);}
.pmodal-head{background:var(--ink-deep);border-radius:16px 16px 0 0;padding:1.5rem 2rem;display:flex;justify-content:space-between;align-items:center;}
.pmodal-title{font-family:Georgia,serif;font-size:22px;color:#fff;}
.pmodal-step{font-size:12px;color:var(--gold);margin-top:2px;}
.pmodal-close{background:none;border:none;color:rgba(250,232,218,0.7);font-size:22px;cursor:pointer;padding:0;line-height:1;}
.pmodal-close:hover{color:#fff;}
.pmodal-body{padding:1.75rem 2rem;}
.psteps{display:flex;gap:0;margin-bottom:1.75rem;}
.pstep-dot{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;}
.pstep-dot:not(:last-child)::after{content:'';position:absolute;top:12px;left:50%;width:100%;height:2px;background:var(--ink-light);}
.pstep-dot.active::after,.pstep-dot.done::after{background:var(--gold);}
.psdot{width:24px;height:24px;border-radius:50%;border:2px solid var(--ink-light);background:#FAEEDA;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:var(--ink-mid);z-index:1;position:relative;}
.pstep-dot.active .psdot{background:var(--gold);border-color:var(--gold);color:var(--ink);}
.pstep-dot.done .psdot{background:var(--gold);border-color:var(--gold);color:var(--ink);}
.pstep-lbl{font-size:10px;color:var(--ink-mid);margin-top:4px;text-align:center;max-width:70px;}
.pstep-dot.active .pstep-lbl{color:var(--gold-deep);font-weight:600;}
.pfield{margin-bottom:1rem;}
.pfield label{display:block;font-size:12px;font-weight:600;color:var(--ink);margin-bottom:4px;}
.pfield input,.pfield select{width:100%;padding:9px 12px;border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:13px;font-family:inherit;background:#fff;color:var(--ink);outline:none;}
.pfield input:focus,.pfield select:focus{border-color:var(--gold);}
.pgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.pcheck-group{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;}
.pcheck-label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink);cursor:pointer;background:#fff;border:1.5px solid var(--ink-light);border-radius:var(--rs);padding:5px 10px;}
.pcheck-label input{width:auto;padding:0;border:none;background:none;}
.pcheck-label:has(input:checked){border-color:var(--gold);background:var(--gold-light);}
.btn-find{padding:9px 18px;background:var(--gold);color:var(--ink);border:none;border-radius:var(--rs);font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:7px;margin-top:6px;}
.btn-find:hover{background:var(--gold-deep);color:#fff;}
.find-result{background:#fff;border:1.5px solid var(--ink-light);border-radius:var(--rs);padding:12px 14px;margin-top:10px;font-size:12px;color:var(--ink);display:none;}
.find-row{display:flex;align-items:center;gap:8px;padding:3px 0;border-bottom:1px solid var(--ink-light);}
.find-row:last-child{border-bottom:none;}
.find-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.find-dot.found{background:#27AE60;}
.find-dot.miss{background:#E67E22;}
.pmodal-foot{padding:1rem 2rem 1.5rem;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--ink-light);}
.btn-pnext{padding:11px 28px;background:var(--gold);color:var(--ink);border:none;border-radius:var(--rs);font-size:14px;font-weight:700;cursor:pointer;}
.btn-pnext:hover{background:var(--gold-deep);color:#fff;}
.btn-pback{padding:9px 18px;background:transparent;color:var(--ink-mid);border:1.5px solid var(--ink-light);border-radius:var(--rs);font-size:13px;cursor:pointer;}
.btn-pback:hover{border-color:var(--ink);color:var(--ink);}
.btn-pskip{font-size:12px;color:var(--ink-mid);background:none;border:none;cursor:pointer;text-decoration:underline;}
.btn-pskip:hover{color:var(--ink);}

/* ── RESPONSIVE ── */
@media(max-width:700px){
  .hero-copy h1{font-size:26px;}
  .feat-grid{grid-template-columns:1fr;}
  .steps{flex-direction:column;}
  .rgrid,.sc-cats,.sc-lists,.date-grid,.sub-req-grid,.co-details,.prebid-grid,.cl-opp-info{grid-template-columns:1fr;}
}

/* ── PRINT ── */
@media print{
  header{position:static;box-shadow:none;background:#2C2C2A !important;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  .hero,.features,.ph,.card,.sector-wrap,.btn-export,.btn-clr,.btn-reset,.btn-finalize,.sc-actions,.arow,.spin-wrap,.esuccess,.export-row,#profile-cta-banner,#gold-tier-vp,#post-parse-prompt,#checklist-overlay{display:none !important;}
  #res{display:block !important;}
  #scorecard{display:block !important;}
  main{padding:.5rem 1rem;}
  body{background:white !important;}
  .sc-card,.rg,.ri{page-break-inside:avoid;}
  .ltext{font-size:24px;}
  .ltag,.lsub,.badge{display:none;}
  footer{padding:4px 1rem;background:white !important;border-top:1px solid #EF9F27;color:#2C2C2A !important;}
  footer *{color:#2C2C2A !important;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  .sc-ta,.sc-addl-warn,.sc-addl-lbl{display:none !important;}
}

/* Print ONLY the checklist */
body.print-checklist-mode > *:not(#checklist-overlay){display:none !important;}
body.print-checklist-mode #checklist-overlay{position:static !important;background:transparent !important;display:block !important;padding:0 !important;}
body.print-checklist-mode .cl-box{max-width:100% !important;border-radius:0 !important;box-shadow:none !important;}
body.print-checklist-mode .cl-foot-actions{display:none !important;}
body.print-checklist-mode .cl-close-btn{display:none !important;}
@media print{
  body.print-checklist-mode .cl-head{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
}
#tool{background:var(--ink-deep);}
@media (max-width:900px){#pipeline-section .pl-callouts{display:none;}}
/* Pipeline mockup feature tabs (marketing card) */
.pl-tab{display:inline-flex;align-items:center;gap:6px;padding:10px 14px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--ink-mid);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;margin-bottom:-1px;letter-spacing:.2px;font-family:inherit;transition:color .15s,border-color .15s;}
.pl-tab:hover{color:var(--ink);border-bottom-color:var(--ink-light);}
.pl-tab.pl-tab-active{color:var(--ink);font-weight:700;border-bottom-color:var(--gold);}
.pl-tier-pill{display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;letter-spacing:.4px;padding:2px 6px;border-radius:8px;line-height:1;}
.pl-tier-pill.gold{background:linear-gradient(135deg,#BA7517,#EF9F27);color:#2C2C2A;}
.pl-tier-pill.platinum{background:linear-gradient(135deg,#4A148C,#8E44AD);color:#fff;}
footer{background:var(--ink);border-top:2px solid var(--gold);padding:14px 2rem;text-align:center;}
/* ── DOCUMENT COMPLETENESS CHECK ────────────────────────────────── */
#doc-completeness{display:none;margin-bottom:1.25rem;}
.dc-box{background:#fff;border-radius:var(--r);border:1.5px solid var(--ink-light);overflow:hidden;}
.dc-head{background:#2C2C2A;padding:14px 18px;display:flex;align-items:center;gap:10px;}
.dc-head-title{font-size:14px;font-weight:700;color:#EF9F27;}
.dc-head-sub{font-size:12px;color:rgba(250,232,218,.6);margin-top:2px;}
.dc-items{padding:12px 16px;display:flex;flex-direction:column;gap:8px;}
.dc-item{display:flex;align-items:flex-start;gap:12px;padding:10px 12px;border-radius:8px;border:1px solid var(--ink-light);}
.dc-item.ok{background:#F5F0E8;border-color:var(--ink-light);}
.dc-item.warning{background:#FAEEDA;border-color:var(--gold-mid);}
.dc-item.needed{background:#FFF5F5;border-color:#C62828;}
.dc-item.info{background:#F5F0E8;border-color:var(--ink-light);}
.dc-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;}
.dc-item.ok .dc-icon{background:var(--ink);}
.dc-item.warning .dc-icon{background:var(--gold-deep);}
.dc-item.needed .dc-icon{background:#C62828;}
.dc-item.info .dc-icon{background:var(--ink);}
.dc-item-title{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:3px;}
.dc-item-desc{font-size:12px;color:var(--ink-mid);line-height:1.5;}
.dc-item-action{margin-top:6px;}
.dc-upload-btn{font-size:12px;padding:5px 12px;background:var(--gold);color:var(--ink);border:none;border-radius:6px;font-weight:700;cursor:pointer;}
.dc-upload-btn:hover{background:var(--gold-deep);color:#fff;}
.dc-reanalyze-btn{font-size:12px;padding:5px 12px;background:var(--ink);color:#fff;border:none;border-radius:6px;font-weight:700;cursor:pointer;margin-left:6px;}

/* ── PROFILE SELECTOR ───────────────────────────────────────────── */
#profile-selector-overlay{display:none;position:fixed;inset:0;background:rgba(44,44,42,.7);z-index:5000;align-items:center;justify-content:center;padding:1rem;}
#profile-selector-overlay.open{display:flex;}
.ps-box{background:#FAEEDA;border-radius:12px;width:100%;max-width:500px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.4);}
.ps-head{background:var(--ink-deep);padding:1.25rem 1.75rem;display:flex;justify-content:space-between;align-items:flex-start;border-radius:12px 12px 0 0;}
.ps-head-left{display:flex;align-items:center;gap:12px;}
.ps-head-icon{width:40px;height:40px;background:var(--gold);border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.ps-head-title{font-family:Georgia,serif;font-size:20px;color:#fff;margin-bottom:2px;}
.ps-head-sub{font-size:12px;color:rgba(250,232,218,.85);}
.ps-close{background:none;border:none;color:rgba(250,232,218,.75);font-size:24px;cursor:pointer;padding:0;line-height:1;margin-top:-2px;}
.ps-close:hover{color:#fff;}
.ps-body{padding:1.5rem 2rem;}
.ps-subtitle{font-size:13px;color:var(--ink-mid);margin-bottom:14px;}
.ps-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;}
.ps-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-radius:8px;border:1px solid var(--ink-light);background:#fff;cursor:pointer;transition:all .15s;gap:12px;}
.ps-item:hover{border-color:var(--gold);box-shadow:0 2px 12px rgba(239,159,39,.15);}
.ps-item.active{border-color:var(--gold);background:linear-gradient(135deg,#FFFBF0,#FFF8E8);}
.ps-item-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0;}
.ps-item-avatar{width:36px;height:36px;border-radius:10px;background:var(--ink);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:Georgia,serif;font-size:14px;font-weight:700;color:var(--gold);}
.ps-item.active .ps-item-avatar{background:var(--gold);color:var(--ink);}
.ps-item-text{min-width:0;}
.ps-item-name{font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ps-item-certs{font-size:11px;color:var(--ink-mid);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ps-active-badge{font-size:10px;font-weight:800;background:var(--gold);color:var(--ink);padding:2px 8px;border-radius:20px;letter-spacing:.5px;white-space:nowrap;}
.ps-item-actions{display:flex;gap:6px;flex-shrink:0;}
.ps-btn{font-size:12px;padding:5px 12px;border-radius:8px;border:1.5px solid var(--ink-light);background:transparent;cursor:pointer;color:var(--ink-mid);font-weight:600;transition:all .15s;}
.ps-btn:hover{background:var(--ink);color:#fff;border-color:var(--ink);}
.ps-btn.edit-btn{border-color:var(--gold-mid);}
.ps-btn.edit-btn:hover{background:var(--gold);color:var(--ink);border-color:var(--gold);}
.ps-btn.delete-btn:hover{background:#C62828;color:#fff;border-color:#C62828;}
.ps-add-btn{width:100%;padding:12px;background:#fff;border:1px solid #D4C5A9;border-radius:8px;color:var(--ink-mid);font-size:13px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;transition:all .15s;}
.ps-add-btn:hover{background:var(--gold-light);border-color:var(--gold);color:var(--ink);}
.ps-footer{padding:10px 2rem 1.25rem;display:flex;align-items:center;justify-content:space-between;}
.ps-limit{font-size:12px;color:var(--ink-mid);}
.ps-tier-badge{font-size:11px;font-weight:700;color:var(--gold-deep);}

/* ── SOQ BUILDER ─────────────────────────────────────────────────── */
#soq-overlay{display:none;position:fixed;inset:0;background:rgba(44,44,42,.7);z-index:9000;overflow-y:auto;padding:20px;}
#soq-overlay.open{display:block;}
.soq-box{background:#FAEEDA;max-width:780px;margin:0 auto;border-radius:16px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.4);}
.soq-head{background:var(--ink-deep);padding:1.5rem 2rem;display:flex;justify-content:space-between;align-items:flex-start;}
.soq-head-title{font-family:Georgia,serif;font-size:22px;color:#fff;}
.soq-head-sub{font-size:13px;color:rgba(250,232,218,.7);margin-top:4px;}
.soq-close{background:none;border:none;color:rgba(250,232,218,.75);font-size:22px;cursor:pointer;}
.soq-body{padding:1.75rem 2rem;}
.soq-section{margin-bottom:20px;}
.soq-section-title{font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--gold-deep);border-bottom:2px solid var(--gold-mid);padding-bottom:6px;margin-bottom:12px;}
.soq-field{margin-bottom:12px;}
.soq-field label{display:block;font-size:12px;font-weight:600;color:var(--ink);margin-bottom:4px;}
.soq-field input,.soq-field textarea,.soq-field select{width:100%;padding:9px 12px;border:1.5px solid var(--ink-light);border-radius:8px;font-size:13px;font-family:inherit;background:#fff;color:var(--ink);outline:none;box-sizing:border-box;}
.soq-field textarea{height:100px;resize:vertical;}
.soq-field input:focus,.soq-field textarea:focus{border-color:var(--gold);}
.soq-preview{background:#fff;border:1.5px solid var(--ink-light);border-radius:8px;padding:20px;font-size:13px;line-height:1.8;color:var(--ink);white-space:pre-wrap;font-family:Georgia,serif;margin-bottom:16px;max-height:400px;overflow-y:auto;}
.soq-actions{display:flex;gap:10px;flex-wrap:wrap;padding:1rem 2rem;border-top:1px solid var(--ink-light);background:#fff;}
.soq-btn{padding:10px 20px;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;border:none;display:flex;align-items:center;gap:6px;}
.soq-btn-primary{background:var(--gold);color:var(--ink);font-weight:800;}
.soq-btn-secondary{background:var(--ink);color:#FAEEDA;border:none;}
.soq-btn-outline{background:transparent;border:1.5px solid var(--ink);color:var(--ink);}
.soq-tab{padding:8px 16px;border-radius:8px 8px 0 0;border:1px solid var(--ink-light);border-bottom:none;background:#F5F0E8;font-size:13px;font-weight:600;cursor:pointer;color:var(--ink-mid);}
.soq-tab.active{background:#fff;color:var(--ink);}
.soq-tabs{display:flex;gap:4px;margin-bottom:-1px;}

/* ── AUTH MODAL ──────────────────────────────────────────────────── */
#auth-modal{display:none;position:fixed;inset:0;background:rgba(44,44,42,.7);z-index:9999;align-items:center;justify-content:center;padding:1rem;}
#auth-modal.open{display:flex;}
.auth-box{background:#FAEEDA;border-radius:16px;width:100%;max-width:420px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.4);}
.auth-head{background:var(--ink-deep);padding:1.5rem 2rem;display:flex;justify-content:space-between;align-items:center;}
.auth-head-title{font-family:Georgia,serif;font-size:22px;color:#fff;}
.auth-head-sub{font-size:12px;color:rgba(250,232,218,.85);margin-top:3px;}
.auth-close{background:none;border:none;color:rgba(250,232,218,.6);font-size:22px;cursor:pointer;padding:0;line-height:1;}
.auth-body{padding:1.75rem 2rem;}
.auth-field{margin-bottom:14px;}
.auth-field label{display:block;font-size:12px;font-weight:600;color:var(--ink);margin-bottom:4px;}
.auth-field input{width:100%;padding:10px 12px;border:1.5px solid var(--ink-light);border-radius:8px;font-size:14px;font-family:inherit;background:#fff;color:var(--ink);outline:none;box-sizing:border-box;}
.auth-field input:focus{border-color:var(--gold);}
.auth-submit{width:100%;padding:13px;background:var(--gold);color:var(--ink);border:none;border-radius:8px;font-size:15px;font-weight:800;cursor:pointer;margin-top:4px;}
.auth-submit:hover{background:var(--gold-deep);color:#fff;}
.auth-submit:disabled{opacity:.6;cursor:not-allowed;}
.auth-switch{text-align:center;margin-top:14px;font-size:13px;color:var(--ink-mid);}
.auth-switch a{color:var(--gold-deep);font-weight:700;cursor:pointer;text-decoration:underline;}
.auth-error{background:#FCEBEB;border:1px solid #A32D2D;border-radius:8px;padding:10px 14px;font-size:13px;color:#A32D2D;margin-bottom:14px;display:none;}
.auth-success{background:#EAF3DE;border:1px solid #3B6D11;border-radius:8px;padding:10px 14px;font-size:13px;color:#3B6D11;margin-bottom:14px;display:none;}
.auth-verify{display:none;}
.auth-divider{display:flex;align-items:center;gap:10px;margin:16px 0;}
.auth-divider span{font-size:12px;color:var(--ink-mid);}
.auth-divider::before,.auth-divider::after{content:'';flex:1;height:1px;background:var(--ink-light);}

/* ── HELP CHATBOT ────────────────────────────────────────────────── */
#help-chat-btn{display:none;}
#help-chat-overlay{display:none;}

.hc-header{background:var(--ink);padding:14px 16px;display:flex;align-items:center;justify-content:space-between;}
.hc-title{color:var(--gold);font-weight:800;font-size:14px;}
.hc-sub{color:rgba(250,232,218,.5);font-size:11px;}
.hc-close{background:none;border:none;color:rgba(250,232,218,.5);cursor:pointer;font-size:18px;padding:0;}
.hc-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;min-height:200px;max-height:340px;background:#FAEEDA;}
.hc-msg{max-width:85%;padding:10px 13px;border-radius:12px;font-size:13px;line-height:1.5;}
.hc-msg.bot{background:#2C2C2A;color:#FAEEDA;border-bottom-left-radius:4px;align-self:flex-start;}
.hc-msg.user{background:var(--gold);color:var(--ink);border-bottom-right-radius:4px;align-self:flex-end;font-weight:600;}
.hc-msg.typing{background:var(--ink);color:rgba(250,232,218,.5);font-style:italic;}
.hc-input-row{padding:12px;border-top:1px solid var(--ink-light);display:flex;gap:8px;}
.hc-input{flex:1;padding:9px 12px;border:1.5px solid #D4C5A9;border-radius:8px;font-size:13px;background:#fff;color:#2C2C2A;}
.hc-input:focus{outline:none;border-color:var(--gold);}
.hc-send{padding:9px 14px;background:var(--gold);color:var(--ink);border:none;border-radius:8px;font-weight:700;cursor:pointer;font-size:13px;}
.hc-quick{padding:12px 16px 0;display:flex;flex-wrap:wrap;gap:6px;}
.hc-quick-btn{font-size:11px;padding:4px 10px;border-radius:12px;border:1px solid var(--ink-light);background:transparent;cursor:pointer;color:var(--ink-mid);}
.hc-quick-btn:hover{background:#2C2C2A;color:#FAEEDA;}
footer div{font-size:12px;color:rgba(250,232,218,0.5);letter-spacing:0.5px;}
/* ── PIPELINE DASHBOARD ─────────────────────────────────────────── */
#pipeline-section{margin-top:2rem;}
.pl-section-tabs{display:flex;border-bottom:2px solid var(--ink-light);margin-bottom:14px;gap:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;}
.pl-section-tabs::-webkit-scrollbar{display:none;}
.pl-section-tab{padding:7px 9px;font-size:11px;font-weight:700;color:var(--ink-mid);background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;white-space:nowrap;display:flex;align-items:center;gap:4px;flex-shrink:0;}
.pl-section-tab:hover{color:var(--ink);}
.pl-section-tab.active{color:var(--gold-deep);border-bottom-color:var(--gold);}
.pl-tab-panel{display:none;}
.pl-tab-panel.active{display:block;}
.pl-coming-soon{text-align:center;padding:3rem 1rem;color:var(--ink-mid);}
.cap-layout{display:grid;grid-template-columns:260px 1fr;gap:0;min-height:400px;border:1px solid var(--ink-light);border-radius:var(--rs);overflow:hidden;}
.cap-list{border-right:1px solid var(--ink-light);background:var(--ink-pale);overflow-y:auto;max-height:520px;}
.cap-list-item{padding:10px 14px;border-bottom:1px solid var(--ink-light);cursor:pointer;transition:background .15s;position:relative;}
.cap-list-item:hover{background:#EDE5D5;}
.cap-list-item.active{background:var(--ink);color:#fff;}
.cap-list-item.active .cap-li-name{color:#fff;}
.cap-list-item.active .cap-li-meta{color:rgba(250,232,218,.6);}
.cap-li-name{font-size:12px;font-weight:700;color:var(--ink);line-height:1.3;margin-bottom:3px;padding-right:22px;}
.cap-li-meta{font-size:10px;color:var(--ink-mid);}
.cap-li-badge{font-size:9px;font-weight:700;padding:1px 6px;border-radius:8px;margin-left:4px;vertical-align:middle;}
/* Remove control — hover-revealed so a long list doesn't shout × at every row. */
.cap-li-delete{position:absolute;top:50%;right:8px;transform:translateY(-50%);background:none;border:none;color:var(--ink-mid);font-size:16px;line-height:1;cursor:pointer;padding:4px 8px;border-radius:4px;opacity:0;transition:opacity .12s,background .12s,color .12s;font-family:inherit;}
.cap-list-item:hover .cap-li-delete{opacity:.55;}
.cap-li-delete:hover{opacity:1 !important;background:#FCEBEB;color:#A32D2D;}
.cap-list-item.active .cap-li-delete{color:rgba(250,232,218,.55);}
.cap-list-item.active .cap-li-delete:hover{background:rgba(255,255,255,.12);color:#FCEBEB;}
.cap-detail{padding:16px;background:#fff;overflow-y:auto;max-height:520px;}
.cap-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--ink-mid);font-size:13px;text-align:center;padding:2rem;}
.cap-opp-title{font-size:14px;font-weight:800;color:var(--ink);margin-bottom:2px;}
.cap-opp-agency{font-size:12px;color:var(--ink-mid);margin-bottom:14px;}
.cap-section{margin-bottom:16px;}
.cap-section-title{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold-deep);margin-bottom:8px;padding-bottom:5px;border-bottom:1.5px solid var(--gold-mid);}
.cap-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.cap-field{display:flex;flex-direction:column;gap:3px;}
.cap-field.full{grid-column:1/-1;}
.cap-field label{font-size:10px;font-weight:700;color:var(--ink-mid);text-transform:uppercase;letter-spacing:.4px;}
.cap-field input,.cap-field select,.cap-field textarea{width:100%;padding:6px 10px;border:1px solid var(--ink-light);border-radius:var(--rs);font-size:12px;font-family:inherit;background:#fff;color:var(--ink);outline:none;transition:border-color .15s;box-sizing:border-box;}
.cap-field input:focus,.cap-field select:focus,.cap-field textarea:focus{border-color:var(--gold);}
.cap-field textarea{height:72px;resize:vertical;}
.cap-save-btn{padding:7px 20px;background:var(--gold);color:var(--ink);border:none;border-radius:var(--rs);font-size:12px;font-weight:700;cursor:pointer;margin-top:8px;}
.cap-save-btn:hover{background:var(--gold-deep);color:#fff;}
.cap-saved-toast{font-size:11px;color:var(--green);font-weight:700;margin-left:8px;opacity:0;transition:opacity .3s;}
.cap-empty-list{padding:16px;font-size:12px;color:var(--ink-mid);text-align:center;}
.pa-layout{display:grid;grid-template-columns:240px 1fr;gap:0;min-height:400px;border:1px solid var(--ink-light);border-radius:var(--rs);overflow:hidden;}
.pa-list{border-right:1px solid var(--ink-light);background:var(--ink-pale);overflow-y:auto;max-height:560px;}
.pa-list-item{padding:10px 14px;border-bottom:1px solid var(--ink-light);cursor:pointer;transition:background .15s;}
.pa-list-item:hover{background:#EDE5D5;}
.pa-list-item.active{background:var(--ink);color:#fff;}
.pa-list-item.active .pa-li-name{color:#fff;}
.pa-list-item.active .pa-li-meta{color:rgba(250,232,218,.6);}
.pa-li-name{font-size:12px;font-weight:700;color:var(--ink);line-height:1.3;margin-bottom:3px;}
.pa-li-meta{font-size:10px;color:var(--ink-mid);}
.pa-li-progress{height:3px;background:var(--ink-light);border-radius:2px;margin-top:5px;}
.pa-li-progress-bar{height:3px;background:var(--gold);border-radius:2px;transition:width .3s;}
.pa-detail{padding:16px;background:#fff;overflow-y:auto;max-height:560px;}
.pa-opp-title{font-size:14px;font-weight:800;color:var(--ink);margin-bottom:2px;}
.pa-opp-meta{font-size:12px;color:var(--ink-mid);margin-bottom:10px;}
.pa-progress-bar{background:var(--ink-pale);border-radius:20px;height:8px;margin-bottom:14px;overflow:hidden;}
.pa-progress-fill{height:8px;background:linear-gradient(90deg,var(--gold),var(--gold-deep));border-radius:20px;transition:width .3s;}
.pa-progress-label{font-size:11px;color:var(--ink-mid);margin-bottom:6px;font-weight:700;}
.pa-category{margin-bottom:14px;}
.pa-cat-title{font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--gold-deep);padding:6px 0;border-bottom:1.5px solid var(--gold-mid);margin-bottom:8px;}
.pa-item{display:grid;grid-template-columns:20px 1fr auto auto;gap:8px;align-items:start;padding:6px 0;border-bottom:1px solid var(--ink-pale);}
.pa-item:last-child{border-bottom:none;}
.pa-item input[type=checkbox]{margin-top:2px;width:15px;height:15px;accent-color:var(--gold);cursor:pointer;flex-shrink:0;}
.pa-item-label{font-size:12px;font-weight:600;color:var(--ink);line-height:1.4;}
.pa-item-label.done{text-decoration:line-through;color:var(--ink-mid);}
.pa-item-assignee{font-size:11px;padding:3px 6px;border:1px solid var(--ink-light);border-radius:4px;font-family:inherit;color:var(--ink);background:#fff;width:90px;}
.pa-item-date{font-size:11px;padding:3px 6px;border:1px solid var(--ink-light);border-radius:4px;font-family:inherit;color:var(--ink);background:#fff;}
.pa-item-notes{grid-column:2/-1;font-size:11px;padding:3px 8px;border:1px solid var(--ink-light);border-radius:4px;font-family:inherit;color:var(--ink);background:#fff;width:100%;box-sizing:border-box;}
.pa-add-other{display:flex;gap:8px;margin-top:8px;}
.pa-add-other input{flex:1;padding:6px 10px;border:1px solid var(--ink-light);border-radius:var(--rs);font-size:12px;font-family:inherit;}
.pa-add-btn{padding:6px 14px;background:var(--gold);color:var(--ink);border:none;border-radius:var(--rs);font-size:12px;font-weight:700;cursor:pointer;}
.pa-saved-msg{font-size:11px;color:var(--green);font-weight:700;}
/* BD Events */
.ev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:4px;}
.ev-card{background:#fff;border:1px solid var(--ink-light);border-radius:var(--rs);padding:14px;cursor:pointer;transition:box-shadow .15s,border-color .15s;position:relative;}
.ev-card:hover{box-shadow:0 2px 12px rgba(44,44,42,.1);border-color:var(--gold-mid);}
.ev-card.upcoming{border-left:4px solid var(--gold);}
.ev-card.past{border-left:4px solid var(--ink-light);}
.ev-card.urgent{border-left:4px solid #E24B4A;}
.ev-card-type{font-size:9px;font-weight:800;letter-spacing:1px;text-transform:uppercase;padding:2px 7px;border-radius:8px;display:inline-block;margin-bottom:6px;}
.ev-card-name{font-size:13px;font-weight:800;color:var(--ink);margin-bottom:3px;line-height:1.3;}
.ev-card-meta{font-size:11px;color:var(--ink-mid);margin-bottom:6px;}
.ev-card-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px;}
.ev-tag{font-size:10px;font-weight:600;padding:2px 7px;border-radius:8px;background:var(--ink-pale);color:var(--ink-mid);}
.ev-date-flag{font-size:10px;font-weight:700;padding:2px 8px;border-radius:8px;position:absolute;top:10px;right:10px;}
.ev-flag-soon{background:#FCEBEB;color:#A32D2D;}
.ev-flag-upcoming{background:#FFF8E8;color:#8B5E00;}
.ev-flag-past{background:var(--ink-pale);color:var(--ink-mid);}
/* Modal overlay */
.ev-modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:9998;overflow-y:auto;padding:20px;}
.ev-modal-overlay.open{display:flex;align-items:flex-start;justify-content:center;}
.ev-modal{background:#fff;border-radius:var(--r);width:100%;max-width:680px;padding:24px;position:relative;margin:auto;}
.ev-modal-title{font-family:Georgia,serif;font-size:20px;font-weight:700;color:var(--ink);margin-bottom:16px;}
.ev-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.ev-field{display:flex;flex-direction:column;gap:3px;}
.ev-field.full{grid-column:1/-1;}
.ev-field label{font-size:10px;font-weight:700;color:var(--ink-mid);text-transform:uppercase;letter-spacing:.4px;}
.ev-field input,.ev-field select,.ev-field textarea{width:100%;padding:7px 10px;border:1px solid var(--ink-light);border-radius:var(--rs);font-size:12px;font-family:inherit;background:#fff;color:var(--ink);outline:none;transition:border-color .15s;box-sizing:border-box;}
.ev-field input:focus,.ev-field select:focus,.ev-field textarea:focus{border-color:var(--gold);}
.ev-field textarea{resize:vertical;min-height:70px;}
.ev-note-entry{display:flex;gap:8px;margin-bottom:8px;}
.ev-note-entry textarea{flex:1;padding:7px 10px;border:1px solid var(--ink-light);border-radius:var(--rs);font-size:12px;font-family:inherit;resize:none;height:60px;}
.ev-note-item{background:var(--ink-pale);border-radius:var(--rs);padding:8px 12px;margin-bottom:6px;font-size:12px;line-height:1.5;}
.ev-note-ts{font-size:10px;color:var(--ink-mid);font-weight:700;margin-bottom:3px;}
/* Team directory */
.team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:4px;}
.team-card{background:#fff;border:1px solid var(--ink-light);border-radius:var(--rs);padding:14px;}
.team-card-name{font-size:13px;font-weight:800;color:var(--ink);margin-bottom:2px;}
.team-card-role{font-size:11px;color:var(--gold-deep);font-weight:700;margin-bottom:6px;}
.team-card-meta{font-size:11px;color:var(--ink-mid);line-height:1.6;}
.team-card-actions{display:flex;gap:6px;margin-top:10px;}
.pl-coming-soon-icon{font-size:32px;margin-bottom:12px;}
.pl-coming-soon h3{font-family:Georgia,serif;font-size:18px;color:var(--ink);margin-bottom:8px;}
.pl-coming-soon p{font-size:13px;line-height:1.6;max-width:400px;margin:0 auto;}
.pl-search-global{display:flex;gap:8px;margin-bottom:14px;align-items:center;}
.pl-search-global input{flex:1;padding:9px 12px 9px 34px;border:1.5px solid var(--ink-light);border-radius:8px;font-size:13px;background:var(--paper);color:var(--ink);}
/* Pipeline collapse toggle */
#pipeline-collapse-btn svg{transition:transform .25s cubic-bezier(.4,0,.2,1);}
#pipeline-collapse-btn.collapsed svg{transform:rotate(-90deg);}
#pipeline-body{overflow:hidden;transition:max-height .3s cubic-bezier(.4,0,.2,1),opacity .25s;max-height:4000px;opacity:1;}
#pipeline-body.collapsed{max-height:0;opacity:0;pointer-events:none;}
#pipeline-summary-bar{display:none;border-radius:0 0 10px 10px;cursor:pointer;background:var(--ink-deep);border:none;transition:all .2s;}
#pipeline-summary-bar.visible{display:block;}
#pipeline-summary-bar:hover{background:var(--ink);}
.psb-inner{display:flex;align-items:center;gap:0;padding:0;flex-wrap:wrap;}
.psb-left{display:flex;align-items:center;gap:10px;padding:14px 18px;border-right:1px solid rgba(255,255,255,.06);flex-shrink:0;}
.psb-icon{width:32px;height:32px;border-radius:8px;background:rgba(239,159,39,.15);border:1px solid rgba(239,159,39,.3);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.psb-title{font-size:13px;font-weight:800;color:#fff;letter-spacing:.2px;}
.psb-subtitle{font-size:10px;color:rgba(250,232,218,.4);font-weight:600;margin-top:1px;}
/* Collapsed-state summary bar — same flex layout as the expanded
   #sb-pipeline-stats-widget so the .pipe-seg segments rendered by
   buildPipelineSummary lay out identically (gap:6px, padding:8px 12px,
   align-items:center). Legacy .psb-stat per-status color rules are gone;
   styling now lives entirely on .pipe-seg / .pipe-seg-due above. */
.psb-stats{display:flex;flex:1;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;}

/* Neutral pill — light-bg generic filter buttons. The pipeline filter
   row moved to .pipe-seg on the dark stat strip; .pipe-tab now serves only
   the Capture Center Events panel filter (index.html:1824-1828). */
.pipe-tab{padding:5px 10px;border-radius:6px;border:1.5px solid var(--ink-light);background:#fff;font-size:11px;font-weight:600;cursor:pointer;color:var(--ink-mid);transition:all .15s;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-family:inherit;}
.pipe-tab:hover{background:var(--ink-pale);color:var(--ink);border-color:#B5B2A7;}
.pipe-tab.active{background:var(--gold);border-color:var(--gold-deep);color:var(--ink);font-weight:800;}
.psb-right{display:flex;align-items:center;padding:0 16px;margin-left:auto;flex-shrink:0;border-left:1px solid rgba(255,255,255,.06);}
.psb-expand{font-size:10px;font-weight:800;color:rgba(239,159,39,.8);letter-spacing:1px;text-transform:uppercase;display:flex;align-items:center;gap:5px;white-space:nowrap;}
.psb-expand svg{transition:transform .2s;}
.psb-expand:hover{color:#EF9F27;}
.pipeline-tabs{display:flex;gap:6px;margin-bottom:1rem;flex-wrap:wrap;}
.pipeline-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--ink-light);}
/* Pipeline filter strip — the stat-strip totals ARE the filter. Bordered
   segments live on the dark #sb-pipeline-card (and the collapsed
   #pipeline-summary-bar); Due Soon sits alongside as a KPI readout, not a
   filter. The legacy .pipe-tab pill row was removed (rewired into this strip);
   filter logic lives in setPipelineFilter() (pipeline.js). */
.psf-num{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-weight:700;font-feature-settings:'lnum';}
.pipe-seg{flex:1;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px 12px;min-width:68px;background:transparent;border:1px solid rgba(255,255,255,.16);border-radius:7px;cursor:pointer;transition:background .15s,border-color .15s,color .15s;font-family:inherit;color:rgba(250,232,218,.92);white-space:nowrap;}
.pipe-seg:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.34);}
.pipe-seg .pipe-seg-n{font-size:18px;color:rgba(250,232,218,.92);line-height:1;}
.pipe-seg .pipe-seg-l{font-size:8px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:rgba(250,232,218,.5);}
.pipe-seg.dim{border-color:rgba(255,255,255,.07);}
.pipe-seg.dim .pipe-seg-n{color:rgba(250,232,218,.32);}
.pipe-seg.dim .pipe-seg-l{color:rgba(250,232,218,.28);}
.pipe-seg.active{background:var(--gold);border-color:var(--gold-deep);}
.pipe-seg.active .pipe-seg-n{color:var(--ink);}
.pipe-seg.active .pipe-seg-l{color:var(--ink);opacity:.7;}
/* Due Soon variant — red count + red outline accent, content-width (not
   flex:1) so it sits compact on the right. Filters to the 7-day window via
   isDueSoon() in pipeline.js. Active state uses the same gold fill as the
   status segments — consistent across the strip. */
.pipe-seg.pipe-seg-due{flex:0 0 auto;border-color:rgba(255,107,107,.35);}
.pipe-seg.pipe-seg-due .pipe-seg-n{color:#FF6B6B;}
.pipe-seg.pipe-seg-due .pipe-seg-l{color:#FF6B6B;opacity:.85;}
.pipe-seg.pipe-seg-due:hover{background:rgba(255,107,107,.08);border-color:rgba(255,107,107,.6);}
.pipe-seg.pipe-seg-due.dim{border-color:rgba(255,107,107,.12);}
.pipe-seg.pipe-seg-due.dim .pipe-seg-n,.pipe-seg.pipe-seg-due.dim .pipe-seg-l{color:rgba(255,107,107,.4);}
.pipe-seg.pipe-seg-due.active{background:var(--gold);border-color:var(--gold-deep);}
.pipe-seg.pipe-seg-due.active .pipe-seg-n,.pipe-seg.pipe-seg-due.active .pipe-seg-l{color:var(--ink);opacity:1;}
.pipeline-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
@media(max-width:900px){.pipeline-board{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:600px){.pipeline-board{grid-template-columns:1fr;}}
.pipe-card{background:#fff;border:1px solid #D8D5CC;border-radius:12px;cursor:pointer;transition:box-shadow .18s,border-color .18s,transform .18s;position:relative;overflow:hidden;display:flex;flex-direction:column;min-width:0;}
.pipe-card:hover{box-shadow:0 8px 28px rgba(44,44,42,.14);border-color:var(--gold-mid);transform:translateY(-2px);}
.pipe-card.urgent{border-color:#E24B4A;}
.pipe-card.has-amendment{border-color:#E67E22;border-width:2px;}
.amendment-badge{display:inline-flex;align-items:center;gap:4px;background:linear-gradient(105deg,#8B5E00,#E67E22);color:#fff;font-size:9px;font-weight:800;padding:2px 7px;border-radius:8px;letter-spacing:.5px;animation:amendPulse 2s infinite;}
@keyframes amendPulse{0%,100%{opacity:1;}50%{opacity:.7;}}
.amend-log{background:#FFF3E0;border-left:3px solid #E67E22;border-radius:0 6px 6px 0;padding:8px 12px;margin-bottom:6px;font-size:11px;line-height:1.6;}
.amend-log-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:3px;}
.amend-log-type{font-weight:800;color:#C26B00;}
.amend-log-date{font-size:10px;color:var(--ink-mid);}
.amend-log-detail{color:var(--ink);margin-bottom:4px;}
.amend-log-ack{font-size:10px;color:#2D6A2D;font-weight:700;}
.amend-log.acknowledged{background:#F1F8F1;border-left-color:#2D6A2D;opacity:.75;}
.pipe-card.warning{border-color:#EF9F27;}
.pipe-card-header{display:flex;align-items:stretch;min-height:44px;}
.pipe-card-status-bar{width:4px;flex-shrink:0;}
.pipe-card-status-bar.monitoring{background:linear-gradient(180deg,#8E44AD,#6C3483);}
.pipe-card-status-bar.considering{background:linear-gradient(180deg,#E67E22,#CA6F1E);}
.pipe-card-status-bar.pursuing{background:linear-gradient(180deg,#27AE60,#1E8449);}
.pipe-card-status-bar.submitted{background:linear-gradient(180deg,#2E86C1,#1A6FA8);}
.pipe-card-status-bar.awarded{background:linear-gradient(180deg,#EF9F27,#BA7517);}
.pipe-card-status-bar.nobid{background:#D3D1C7;}
.pipe-card-status-bar.referred{background:linear-gradient(180deg,#0E7C7B,#095C5B);}
.pipe-card-content{flex:1;min-width:0;padding:8px 10px 5px;}
.pipe-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:4px;margin-bottom:1px;}
.pipe-card-name{font-size:11px;font-weight:800;color:var(--ink);line-height:1.3;letter-spacing:-.1px;flex:1;min-width:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;overflow-wrap:anywhere;white-space:normal;}
.pipe-card-agency{font-size:10px;color:var(--ink-mid);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pipe-card-meta{display:flex;gap:4px;align-items:center;flex-wrap:wrap;padding-bottom:4px;}
.pipe-card-due{font-size:10px;color:var(--ink-mid);}
.pipe-card-amendment{display:inline-flex;align-items:center;gap:3px;background:#FFF3E0;border:1px solid #E67E22;color:#C26B00;font-size:9px;font-weight:800;padding:1px 6px;border-radius:8px;cursor:pointer;}
.pipe-card-prob{font-size:10px;font-weight:800;color:var(--gold-deep);background:var(--gold-light);padding:1px 6px;border-radius:5px;border:1px solid var(--gold-mid);}
.pipe-status{font-size:9px;font-weight:800;padding:2px 6px;border-radius:5px;white-space:nowrap;letter-spacing:.2px;}
.pipe-status.monitoring{background:#F3E5F5;color:#6C3483;border:1px solid #CE93D8;}
.pipe-status.considering{background:#FFF3E0;color:#C26B00;border:1px solid #FFCC80;}
.pipe-status.pursuing{background:#E8F5E9;color:#1B7A42;border:1px solid #81C784;font-weight:800;}
.pipe-status.submitted{background:#E3F2FD;color:#1A5C8A;border:1px solid #90CAF9;}
.pipe-status.awarded{background:var(--gold-light);color:#8B5E00;border:1px solid #EF9F27;font-weight:800;}
.pipe-status.nobid{background:#F5F3EE;color:#888780;border:1px solid #D3D1C7;}
.pipe-status.referred{background:#E0F2F1;color:#0E7C7B;border:1px solid #80CBC4;}
.pipe-empty{text-align:center;padding:40px;color:var(--ink-mid);font-size:14px;}
.pipe-empty-cta{display:inline-block;padding:9px 16px;background:var(--gold);color:#2C2C2A;border-radius:8px;font-size:13px;font-weight:700;text-decoration:none;transition:filter .15s;}
.pipe-empty-cta:hover,.pipe-empty-cta:focus-visible{filter:brightness(1.05);outline:none;}

/* ── PIPE CARD ACTIONS — clean 2-row layout ── */
.pipe-card-actions{
  display:flex;
  flex-direction:column;
  gap:3px;
  padding:6px 8px 8px;
  border-top:1px solid #F0EDE6;
  background:#FAFAF8;
  border-radius:0 0 12px 12px;
}
.pipe-btn-row{
  display:flex;
  gap:4px;
}
.pipe-card-btn{
  font-size:10px;font-weight:700;
  padding:5px 3px;
  border-radius:5px;
  border:1px solid #DDD9CF;
  background:#fff;
  cursor:pointer;
  color:var(--ink-mid);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  text-align:center;
  transition:all .12s;
  flex:1;
}
.pipe-card-btn:hover{background:var(--ink);color:#FAEEDA;border-color:var(--ink);}
.pipe-card-btn.view-btn{border-color:var(--gold-mid);color:var(--gold-deep);background:var(--gold-light);}
.pipe-card-btn.view-btn:hover{background:var(--gold);color:var(--ink);border-color:var(--gold);}
.pipe-card-btn.remove-btn:hover{background:#A32D2D;color:#fff;border-color:#A32D2D;}
.pipe-card-btn.has-record{background:#E8F5E8;border-color:#2D6A2D;color:#2D6A2D;}
.status-select{
  font-size:11px;font-weight:700;
  padding:4px 6px;
  border-radius:5px;
  border:1px solid #DDD9CF;
  background:#fff;color:var(--ink);
  cursor:pointer;width:100%;
  font-size:10px;
  margin-bottom:0;
}
.co-contact-store{background:#fff;border-radius:10px;border:1px solid var(--ink-light);margin-top:1rem;}
.co-contact-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:8px;padding:8px 12px;border-bottom:1px solid var(--ink-pale);font-size:12px;align-items:center;}
.co-contact-row:last-child{border-bottom:none;}
.co-contact-hdr{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-mid);background:var(--ink-pale);border-radius:10px 10px 0 0;}

/* ── FILE UPLOAD ─────────────────────────────────────────────────── */
.upload-zone{border:2px dashed var(--gold);border-radius:10px;padding:28px;text-align:center;cursor:pointer;transition:background .2s;margin-bottom:12px;}
.upload-zone:hover,.upload-zone.dragover{background:rgba(239,159,39,.08);}
.upload-zone-icon{font-size:28px;margin-bottom:8px;}
.upload-zone-text{font-size:14px;font-weight:600;color:var(--ink);}
.upload-zone-sub{font-size:12px;color:var(--ink-mid);margin-top:4px;}
.upload-files-list{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;}
.upload-file-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--paper);border:1px solid var(--ink-light);border-radius:8px;font-size:13px;}
.upload-file-name{font-weight:600;color:var(--ink);}
.upload-file-size{color:var(--ink-mid);font-size:11px;}
.upload-file-remove{background:none;border:none;cursor:pointer;color:var(--ink-mid);font-size:16px;padding:0 4px;}
.upload-tabs{display:flex;gap:0;margin-bottom:12px;border:1px solid var(--ink-light);border-radius:8px;overflow:hidden;background:#FAF7F0;}
.upload-tab{flex:1;padding:9px 12px;text-align:center;font-size:13px;font-weight:600;cursor:pointer;background:transparent;border:none;color:#8A8884;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:4px;}
.upload-tab.active{background:var(--gold);color:var(--ink);font-weight:700;}
.upload-tab.active svg{stroke:var(--ink);}
.upload-tab:hover:not(.active){background:rgba(44,44,42,.05);color:var(--ink);}

/* ── EXEC SUMMARY ────────────────────────────────────────────────── */
/* ── BID BRIEF (#exec-summary-overlay) — document-grade restyle. Paper/ink/serif
   document language, print-clean (no dark fills) so it forwards + prints as a proper
   client-ready artifact. DOM ids are unchanged; openBidBrief() is untouched. Print
   isolation mirrors the checklist/docbuilder body-class pattern. ── */
#exec-summary-overlay{display:none;position:fixed;inset:0;background:rgba(10,10,10,.55);z-index:10001;overflow-y:auto;padding:28px 20px;}
.exec-box{background:var(--white);max-width:820px;margin:0 auto;border:1px solid var(--ink-light);border-radius:12px;overflow:hidden;font-family:Georgia,'Times New Roman',serif;box-shadow:0 8px 40px rgba(44,44,42,.22);}

/* Letterhead — light paper + gold rule, no dark fill */
.exec-cover{background:var(--paper);padding:36px 44px 28px;color:var(--ink);border-top:5px solid var(--gold);border-bottom:1px solid var(--ink-light);}
.exec-cover-logo{font-size:26px;font-weight:800;font-family:Georgia,serif;color:var(--ink);letter-spacing:.5px;margin-bottom:2px;}
.exec-cover-tag{font-size:10.5px;color:var(--gold-deep);font-weight:700;letter-spacing:3px;text-transform:uppercase;font-family:Arial,sans-serif;margin-bottom:20px;}
.exec-cover-title{font-size:26px;font-weight:700;color:var(--ink);margin-bottom:6px;line-height:1.22;letter-spacing:-.3px;}
.exec-cover-agency{font-size:14px;color:var(--ink-mid);margin-bottom:4px;font-family:Arial,sans-serif;}
.exec-cover-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px 22px;margin-top:22px;padding-top:20px;border-top:1px solid var(--ink-light);}
.exec-cover-item label{font-size:9.5px;color:var(--gold-deep);letter-spacing:1.5px;text-transform:uppercase;display:block;margin-bottom:3px;font-family:Arial,sans-serif;font-weight:700;}
.exec-cover-item span{font-size:14px;color:var(--ink);font-weight:600;font-family:Arial,sans-serif;}
.exec-rec-badge{display:inline-block;padding:7px 18px;border-radius:6px;font-size:12px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;margin-top:18px;font-family:Arial,sans-serif;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
.exec-rec-badge.pursue{background:var(--green-light);color:var(--green);border:1px solid var(--green);}
.exec-rec-badge.evaluate{background:#FBEEDD;color:#B5610E;border:1px solid #B5610E;}
.exec-rec-badge.monitor{background:var(--blue-light);color:var(--blue);border:1px solid var(--blue);}
.exec-rec-badge.decline{background:var(--red-light);color:var(--red);border:1px solid var(--red);}

.exec-body{padding:30px 44px;}
.exec-section{margin-bottom:26px;}
.exec-section:last-child{margin-bottom:0;}
.exec-section-title{font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--gold-deep);border-bottom:1.5px solid var(--gold);padding-bottom:6px;margin-bottom:13px;font-family:Arial,sans-serif;}
.exec-body p{font-size:14px;line-height:1.7;color:var(--ink);margin-bottom:10px;}
.exec-pro-con{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.exec-pro-con-col{background:var(--ink-pale);border:1px solid var(--ink-light);border-radius:8px;padding:14px 16px;}
.exec-pro-con-col.pros{border-left:3px solid var(--green);}
.exec-pro-con-col.cons{border-left:3px solid var(--red);}
.exec-pro-con-col h4{font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;margin-bottom:9px;font-family:Arial,sans-serif;}
.exec-pro-con-col.pros h4{color:var(--green);}
.exec-pro-con-col.cons h4{color:var(--red);}
.exec-pro-con-col ul{list-style:none;padding:0;margin:0;}
.exec-pro-con-col li{font-size:13px;color:var(--ink);margin-bottom:6px;line-height:1.5;padding-left:15px;position:relative;}
.exec-pro-con-col li:before{content:'';position:absolute;left:2px;top:7px;width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.45;}
.exec-pro-con-col.pros li:before{background:var(--green);opacity:.7;}
.exec-pro-con-col.cons li:before{background:var(--red);opacity:.7;}
#exec-dates div,#exec-co div{font-family:Arial,sans-serif;color:var(--ink);}
#exec-dates strong,#exec-co strong{color:var(--ink-mid);}
.exec-footer{background:var(--paper);border-top:1px solid var(--ink-light);padding:14px 44px;display:flex;justify-content:space-between;align-items:center;font-family:Arial,sans-serif;}
.exec-footer-brand{font-size:11px;color:var(--gold-deep);letter-spacing:1px;font-weight:700;}
.exec-footer-date{font-size:11px;color:var(--ink-mid);}
.exec-actions{display:flex;gap:10px;padding:16px 44px;background:var(--white);border-top:1px solid var(--ink-light);justify-content:flex-end;}
.exec-btn{padding:10px 20px;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;border:none;font-family:Arial,sans-serif;transition:background .12s,color .12s,border-color .12s;}
.exec-btn-primary{background:var(--gold);color:var(--ink);}
.exec-btn-primary:hover{background:var(--gold-deep);color:#fff;}
.exec-btn-secondary{background:transparent;border:1.5px solid var(--ink);color:var(--ink);}
.exec-btn-secondary:hover{background:var(--ink);color:#fff;}
.exec-btn-close{background:transparent;border:1.5px solid var(--ink-light);color:var(--ink-mid);}
.exec-btn-close:hover{border-color:var(--ink-mid);color:var(--ink);}

/* Print ONLY the brief — isolate the document, hide the app behind it (mirrors
   body.print-checklist-mode / body.print-docbuilder-mode). The whole brief is now
   light-on-white, so the print view needs no dark-fill overrides. */
body.print-exec-mode > *:not(#exec-summary-overlay){display:none !important;}
@media print{
  *{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important;}
  body.print-exec-mode #exec-summary-overlay{display:block !important;position:static !important;padding:0 !important;background:none !important;overflow:visible !important;}
  body.print-exec-mode .exec-box{box-shadow:none !important;border:none !important;border-radius:0 !important;max-width:100% !important;}
  body.print-exec-mode .exec-actions,body.print-exec-mode .exec-btn{display:none !important;}
  body.print-exec-mode .exec-section{page-break-inside:avoid;}
  body.print-exec-mode .exec-pro-con-col{page-break-inside:avoid;}
  body.print-exec-mode .exec-cover{padding:28px 40px 22px !important;}
  body.print-exec-mode .exec-body{padding:22px 40px !important;}
  body.print-exec-mode p,body.print-exec-mode li{font-size:12.5px !important;line-height:1.65 !important;}
}


/* ── PROPOSAL COVER GENERATOR (additive; cloned from .exec-*; print mirrors the
   Compliance Checklist body-class pattern — only the cover sheet prints) ── */
#cover-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:10001;overflow-y:auto;padding:20px;}
.cover-box{background:#fff;max-width:860px;margin:0 auto;border-radius:12px;overflow:hidden;font-family:Arial,Helvetica,sans-serif;}
.cover-form{padding:20px 24px;background:#F9F6F0;border-bottom:1px solid #eee;}
.cover-form-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;}
.cover-form-title{font-family:Georgia,serif;font-size:18px;font-weight:700;color:#2C2C2A;}
.cover-close-x{background:transparent;border:none;font-size:24px;line-height:1;color:#888;cursor:pointer;padding:0 4px;}
.cover-form-sub{font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:#8B5E00;margin:16px 0 8px;}
.cover-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;}
.cover-fld{display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:#666;}
.cover-fld input,.cover-fld select{font-family:Arial,sans-serif;font-size:13px;font-weight:400;text-transform:none;letter-spacing:0;color:#2C2C2A;padding:7px 9px;border:1.5px solid #D9D2C5;border-radius:6px;background:#fff;outline:none;}
.cover-fld-inline{flex-direction:row;align-items:center;gap:8px;}
.cover-fld-full{margin-bottom:10px;}
.cv-ta{font-family:Arial,sans-serif;font-size:13px;color:#2C2C2A;padding:8px 10px;border:1.5px solid #D9D2C5;border-radius:6px;background:#fff;outline:none;width:100%;box-sizing:border-box;resize:none;overflow:hidden;line-height:1.5;min-height:46px;}
.cover-fld-hint{font-size:11px;font-weight:400;text-transform:none;letter-spacing:0;color:#888;line-height:1.45;margin:0 0 5px;}
.cover-img-row{display:flex;gap:24px;flex-wrap:wrap;}
.cover-img-ctl{display:flex;gap:8px;align-items:center;}
.cover-mini-btn{font-size:12px;font-weight:700;padding:7px 12px;border-radius:6px;border:1.5px solid #2C2C2A;background:#fff;color:#2C2C2A;cursor:pointer;}
.cover-mini-clear{border-color:#ccc;color:#888;}
.cover-type-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;}
.cover-type-toggles{display:flex;gap:6px;}
.cover-tg{width:34px;height:34px;border-radius:6px;border:1.5px solid #D9D2C5;background:#fff;color:#2C2C2A;cursor:pointer;font-size:14px;}
.cover-tg.active{background:#EF9F27;border-color:#EF9F27;color:#2C2C2A;}
.cover-sheet-wrap{padding:24px;background:#e9e6e0;display:flex;justify-content:center;}
.cover-sheet{background:#fff;width:100%;max-width:680px;min-height:880px;padding:64px 56px;box-shadow:0 2px 12px rgba(0,0,0,.15);color:#000;box-sizing:border-box;position:relative;overflow:hidden;}
.cover-sheet .cv-title{font-size:1.7em;font-weight:700;text-align:center;line-height:1.3;margin-bottom:16px;}
.cover-sheet .cv-sub{text-align:center;font-size:1em;margin-bottom:6px;}
.cover-sheet .cv-rule{border:none;border-top:2px solid #000;margin:36px 0;}
.cover-sheet .cv-block{font-size:1em;line-height:1.8;}
.cover-sheet .cv-block .cv-label{font-weight:700;}
.cover-sheet .cv-body{font-size:1em;line-height:1.7;margin:14px 0;white-space:pre-wrap;}
.cover-sheet .cv-section-head{font-size:1.05em;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin:22px 0 8px;padding-bottom:4px;border-bottom:1px solid currentColor;}
.cover-actions{display:flex;gap:10px;padding:16px 24px;background:#fff;border-top:1px solid #eee;justify-content:flex-end;}
.cover-btn{padding:9px 20px;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;border:none;}
.cover-btn-primary{background:#EF9F27;color:#2C2C2A;}
.cover-btn-close{background:transparent;border:1.5px solid #ccc;color:#888;}
/* Wedge band layer — the structured cover band (inline SVG <polygon>), BEHIND the freeform
   shapes. Full-width bands at the top/bottom edge; bottom = top scaleY-flipped. */
.cover-wedge-layer{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;}
.cover-wedge{position:absolute;left:0;width:100%;}
.cover-wedge svg{display:block;width:100%;height:100%;}
.cover-wedge-top{top:0;}
.cover-wedge-bottom{bottom:0;transform:scaleY(-1);}
/* Wedge placement control (None/Top/Bottom/Top+Bottom) + style row. */
.cover-wedge-ctl{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
.cover-wedge-place.active{background:#2C2C2A;color:#fff;border-color:#2C2C2A;}
.cover-wedge-style{display:flex;flex-direction:column;gap:8px;margin-bottom:10px;}
.cover-wedge-h{display:flex;align-items:center;gap:10px;font-size:12px;color:#5F5E5A;}
.cover-wedge-h input{flex:1;}
/* Shape layer — decorative shapes render BEHIND the content (lower z-index).
   Content layer is pointer-transparent so shapes underneath stay clickable. */
.cover-shape-layer{position:absolute;inset:0;z-index:1;overflow:hidden;}
.cover-content-layer{position:relative;z-index:2;pointer-events:none;}
.cover-shape{position:absolute;pointer-events:auto;cursor:move;}
.cover-shape.selected{outline:2px dashed #EF9F27;outline-offset:2px;}
.cover-shape-fill{position:absolute;inset:0;pointer-events:none;}
.cover-shape-handle{position:absolute;right:-7px;bottom:-7px;width:14px;height:14px;background:#fff;border:2px solid #EF9F27;border-radius:3px;cursor:nwse-resize;display:none;pointer-events:auto;z-index:3;}
.cover-shape.selected .cover-shape-handle{display:block;}
.cover-shape-palette{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px;}
.cover-shape-hint{font-size:12px;color:#888;line-height:1.5;}
.cover-shape-selctl{display:flex;flex-direction:column;gap:10px;margin-top:4px;}
.cover-shape-swatches{display:flex;flex-wrap:wrap;gap:6px;}
.cover-shape-sw{width:26px;height:26px;border-radius:6px;border:2px solid #D9D2C5;cursor:pointer;padding:0;}
.cover-shape-sw.active{border-color:#2C2C2A;box-shadow:0 0 0 2px #EF9F27;}
.cover-shape-orderbtns{display:flex;gap:8px;flex-wrap:wrap;}
/* Image layer — logo + optional image render ABOVE shapes; draggable/resizable
   via the same engine as shapes. Layer is pointer-transparent; objects are not. */
.cover-image-layer{position:absolute;inset:0;z-index:3;overflow:hidden;pointer-events:none;}
.cover-img-obj{position:absolute;pointer-events:auto;cursor:move;}
.cover-img-obj.selected{outline:2px dashed #EF9F27;outline-offset:2px;}
.cover-img-el{width:100%;height:100%;object-fit:contain;pointer-events:none;display:block;}
.cover-img-handle{position:absolute;right:-7px;bottom:-7px;width:14px;height:14px;background:#fff;border:2px solid #EF9F27;border-radius:3px;cursor:nwse-resize;display:none;pointer-events:auto;z-index:4;}
.cover-img-obj.selected .cover-img-handle{display:block;}
/* Print isolation — same idiom as body.print-checklist-mode. */
body.print-cover-mode > *:not(#cover-overlay){display:none !important;}
body.print-cover-mode #cover-overlay{position:static !important;background:transparent !important;display:block !important;padding:0 !important;overflow:visible !important;}
body.print-cover-mode .cover-box{max-width:100% !important;border-radius:0 !important;box-shadow:none !important;}
body.print-cover-mode .cover-form,body.print-cover-mode .cover-actions{display:none !important;}
body.print-cover-mode .cover-sheet-wrap{padding:0 !important;background:none !important;}
/* min-height is 9.5in, NOT auto: a cover page is short, so an auto sheet collapses to a
   couple of inches of content and every bottom-anchored thing collapses with it. 9.5in
   matches the page-1 cap the design layers are pinned to, so the sheet IS the page.
   (box-sizing is border-box, so the 48px padding is inside the 9.5in — it cannot push a
   blank second page.) */
body.print-cover-mode .cover-sheet{box-shadow:none !important;max-width:100% !important;width:100% !important;min-height:9.5in !important;padding:48px 56px !important;}
/* Shapes print BEHIND content (z-order preserved); selection chrome is dropped. */
body.print-cover-mode .cover-shape{outline:none !important;cursor:default !important;}
body.print-cover-mode .cover-shape-handle{display:none !important;}
/* Images print ABOVE shapes; selection outline + resize handle are dropped. */
body.print-cover-mode .cover-img-obj{outline:none !important;cursor:default !important;}
body.print-cover-mode .cover-img-handle{display:none !important;}
@media print{
  body.print-cover-mode *{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important;}
}
/* ── Multi-page PRINT flow (additive; print-cover-mode ONLY — screen view, design
   tools, and cover.js are untouched). Text flows onto page 2+; the design layers
   (shapes/images) stay anchored to PAGE 1 and are NOT paginated. No @page rule —
   pages use the browser's default print margins, so other print paths
   (scorecard / checklist) are left exactly as they were. ── */
/* (1) Let the sheet flow instead of clipping at one page (base rule is overflow:hidden). */
body.print-cover-mode .cover-sheet{overflow:visible !important;}
/* (2) Design layers stay on PAGE 1 only: top-anchored + capped to ~one page, clip the
   rest (absolute inset:0 would otherwise stretch down a multi-page sheet and drop
   decoration onto page 2). 9.5in is a conservative one-page cap that holds across
   typical browser-default margins (Letter 11in minus up to ~0.75in margins) with NO
   @page rule; it biases slightly short so decoration never bleeds onto page 2.

   EVERY design layer belongs in this selector list. The wedge layer was added later
   (the cover band) and was left out, so it alone kept inset:0 and stretched to the
   sheet — and .cover-wedge-bottom anchors to the bottom of its LAYER, which meant the
   bottom band printed wherever the sheet happened to end (mid-cover on a short page,
   page 2+ on a long one). The designer never showed it, because on SCREEN the sheet is
   min-height:880px and the band sat right where the user put it. Only the print lied.
   If you add a fourth layer, add it HERE. */
body.print-cover-mode .cover-wedge-layer,
body.print-cover-mode .cover-shape-layer,
body.print-cover-mode .cover-image-layer{bottom:auto !important;height:9.5in !important;overflow:hidden !important;}
/* (3) Keep a content section intact across a page boundary. */
body.print-cover-mode .cover-content-layer .cv-block,
body.print-cover-mode .cover-content-layer .cv-title{page-break-inside:avoid;break-inside:avoid;}

/* ── DOCUMENT BUILDER overlay (additive; SEPARATE tool from the cover). Reuses the
   cover's .cover-* chrome classes, so only the id-keyed overlay base + a parallel
   print-isolation block are needed. No shapes/images. ── */
#docbuilder-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:10001;overflow-y:auto;padding:20px;}
/* Print isolation — mirrors body.print-cover-mode, scoped to #docbuilder-overlay. */
body.print-docbuilder-mode > *:not(#docbuilder-overlay){display:none !important;}
body.print-docbuilder-mode #docbuilder-overlay{position:static !important;background:transparent !important;display:block !important;padding:0 !important;overflow:visible !important;}
body.print-docbuilder-mode .cover-box{max-width:100% !important;border-radius:0 !important;box-shadow:none !important;}
body.print-docbuilder-mode .cover-form,body.print-docbuilder-mode .cover-actions{display:none !important;}
body.print-docbuilder-mode .cover-sheet-wrap{padding:0 !important;background:none !important;}
body.print-docbuilder-mode .cover-sheet{box-shadow:none !important;max-width:100% !important;width:100% !important;min-height:auto !important;padding:48px 56px !important;overflow:visible !important;}
/* Keep a content section intact across a page boundary (multi-page text docs). */
body.print-docbuilder-mode .cover-content-layer .cv-block,
body.print-docbuilder-mode .cover-content-layer .cv-title{page-break-inside:avoid;break-inside:avoid;}
@media print{
  body.print-docbuilder-mode *{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important;}
}


/* ── TOOLTIPS ── */
.tt-wrap{position:relative;display:inline-flex;align-items:center;gap:4px;}
.tt-icon{width:15px;height:15px;border-radius:50%;background:#D4A827;color:#2C2C2A;font-size:9px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;cursor:help;flex-shrink:0;line-height:1;border:none;padding:0;}
.tt-box{display:none;position:fixed;background:#2C2C2A;color:#FAEEDA;font-size:12px;line-height:1.6;padding:12px 16px;border-radius:8px;width:300px;z-index:99999;box-shadow:0 8px 32px rgba(0,0,0,0.4);pointer-events:none;font-weight:400;text-align:left;}
.tt-box::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:#2C2C2A;}
.tt-box.tt-visible{display:block;}
.tt-label{font-weight:700;color:#EF9F27;display:block;margin-bottom:4px;font-size:10px;letter-spacing:.5px;text-transform:uppercase;}
/* ── NAV-2: one-line hover hint below a top-nav item (desktop only; touch/tap untouched) ──
   A single shared, JS-positioned tip (js/shell.js) so it can clamp to the viewport with a 12px
   inset and never clip at the first/last nav item (a pure-CSS centered tip overflows the edges).
   Screen readers + touch get the same copy via each item's aria-label; the JS is gated on
   (hover:hover)+(pointer:fine) so tap devices never trigger it. */
.navtip{
  position:fixed;z-index:9999;display:none;pointer-events:none;
  background:#2C2C2A;color:#FAEEDA;font-size:12px;line-height:1.4;font-weight:400;letter-spacing:.2px;
  padding:6px 11px;border-radius:7px;box-shadow:0 6px 20px rgba(0,0,0,.38);
  white-space:nowrap;max-width:calc(100vw - 24px);
  opacity:0;transition:opacity .14s ease;
}
.navtip.navtip-show{display:block;opacity:1;}
/* ── SCORING DISCLAIMER ── */
.prob-disclaimer{font-size:10px;color:var(--ink-mid);font-style:italic;margin-top:4px;line-height:1.5;text-align:center;}
/* ── NO-BID REASON ON CARD ── */
.pipe-nobid-reason{font-size:11px;color:#888;font-style:italic;margin-top:5px;padding:4px 8px;background:#F5F5F5;border-radius:4px;border-left:2px solid #ccc;}
/* ── WELCOME PANEL (right-side slide-in, non-blocking) ── */
#welcome-modal{position:fixed;top:80px;right:-360px;width:320px;max-height:calc(100vh - 120px);z-index:9000;transition:right .4s cubic-bezier(.25,.8,.25,1);overflow-y:auto;border-radius:14px;box-shadow:-4px 8px 32px rgba(0,0,0,0.22);pointer-events:none;opacity:0;}
#welcome-modal.open{right:16px;pointer-events:auto;opacity:1;}
.wm-box{background:#FAEEDA;border-radius:14px;overflow:hidden;}
.wm-head{background:var(--ink-deep);padding:1.1rem 1.25rem .9rem;display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.wm-head-text{flex:1;}
.wm-close-x{background:none;border:none;color:rgba(250,232,218,.8);font-size:20px;cursor:pointer;padding:0;line-height:1;flex-shrink:0;margin-top:-2px;}
.wm-close-x:hover{color:#fff;}
.wm-dots{display:flex;gap:5px;margin-bottom:.6rem;}
.wm-dot{width:7px;height:7px;border-radius:50%;background:rgba(250,232,218,.5);cursor:pointer;transition:all .2s;border:none;padding:0;}
.wm-dot.active{background:#EF9F27;width:18px;border-radius:4px;}
.wm-slide-title{font-family:Georgia,serif;font-size:16px;color:#fff;margin-bottom:2px;}
.wm-slide-sub{font-size:11px;color:rgba(250,232,218,.85);}
.wm-body{padding:1rem 1.25rem .75rem;max-height:340px;overflow-y:auto;}
.wm-slide{display:none;}
.wm-slide.active{display:block;}
.wm-step{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px;}
.wm-step-num{width:24px;height:24px;border-radius:50%;background:#EF9F27;color:#2C2C2A;font-weight:800;font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;}
.wm-step-text{font-size:12px;color:#2C2C2A;line-height:1.55;}
.wm-step-text strong{display:block;margin-bottom:1px;font-size:13px;}
.wm-foot{padding:.6rem 1.25rem 1rem;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #D4C5A9;}
.wm-btn-next{padding:7px 18px;background:#EF9F27;color:#2C2C2A;border:none;border-radius:7px;font-size:12px;font-weight:800;cursor:pointer;}
.wm-btn-next:hover{background:#D4891E;}
.wm-btn-skip{font-size:11px;color:#aaa;background:none;border:none;cursor:pointer;text-decoration:underline;}

/* ── PIPELINE CARD EXPAND ── */
.pipe-card-expand{display:none;margin-top:10px;padding-top:10px;border-top:1px solid var(--ink-light);}
.pipe-card.expanded .pipe-card-expand{display:block;}
.pipe-card-expand-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px;}
.pce-field{font-size:12px;line-height:1.5;}
.pce-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-mid);margin-bottom:1px;}
.pce-val{color:var(--ink);word-break:break-word;}
.pce-val a{color:var(--gold-deep);text-decoration:none;font-weight:600;}
.pce-val a:hover{text-decoration:underline;}
.pce-notes{grid-column:1/-1;margin-top:4px;}
.pipe-card-expand-toggle{font-size:11px;color:var(--ink-mid);background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;gap:4px;margin-top:6px;}
.pipe-card-expand-toggle:hover{color:var(--ink);}
.pce-chevron{transition:transform .2s;display:inline-block;}
.pipe-card.expanded .pce-chevron{transform:rotate(180deg);}

/* ── MEETING COCKPIT TABLE (Dashboard go/no-go view) ──────────────────────
   Two grouped tables (Needs a decision / In progress). Tight columns so the
   whole list scans on a shared screen without horizontal scroll; click a row
   to open a full-width detail sub-row. */
/* ⚠ THE WRAP MUST SCROLL, OR OVERFLOW IS SILENTLY CUT OFF. It was width:100% with no overflow
   rule, so once the Solicitation and NAICS columns pushed the table past its container, Capture
   Mgr and Writer ran off the right edge with no way to reach them — not narrow, GONE. A table
   this wide has to be reachable at laptop and iPad widths, and scrolling is the honest answer:
   hiding columns at a breakpoint would drop data the founder just asked to see. */
.mtg-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
/* min-width keeps the columns at readable widths and hands the overflow to the wrap above, rather
   than letting the browser crush 13 columns into whatever space it has. */
/* ⚠ table-layout:FIXED, AND THE min-width STAYS. Under the previous `auto`, a `width` on a <th> was
   only a hint: NAICS was declared 54px but a cell carrying "541715 Research and Development in the
   Physical, Engineering, and Life Sciences (except …)" pushed the column to 796px — measured — and
   shoved the DUE column 526px outside the container. Fixed layout makes the declared widths
   binding, so no single long value can ever reflow the table again.
   The min-width is NOT redundant with it and must not be removed: fixed layout alone would happily
   squeeze all 13 columns into a 1024px container, which is precisely the crushing the founder ruled
   against above. Fixed = deterministic columns; min-width = the floor below which the wrap scrolls
   instead. Both, or the ruling is half-kept.
   Widths below are percentages of the table box and SUM TO EXACTLY 100. Changing one means changing
   another — recon/_check_mtg_table_layout.cjs asserts nothing overflows without an ellipsis. */
.mtg-table{width:100%;min-width:1180px;border-collapse:collapse;font-size:12.5px;table-layout:fixed;}
.mtg-table .mtg-th-chev  {width:2.0%;}
.mtg-table .mtg-th-name  {width:15.5%;}
.mtg-table .mtg-th-agency{width:11.5%;}
.mtg-table .mtg-th-stage {width:10.5%;}
.mtg-table .mtg-th-cm    {width:8.0%;}
.mtg-table .mtg-th-writer{width:6.0%;}
.mtg-table .mtg-th-due   {width:9.5%;text-align:right;}
.mtg-table .mtg-th-gng   {width:8.0%;}
.mtg-table .mtg-th-open  {width:6.5%;}
/* Dashboard tab widens its container past the 920px analyzer column so all
   meeting columns fit on a shared screen without horizontal clipping. CSS-only,
   keyed off the active Dashboard panel (no JS class toggle → can't desync from a
   stale cache); reverts automatically when any other pipeline tab is active. */
#pipeline .analyzer-content:has(#pl-panel-bdcc.active){max-width:1280px;}
.mtg-table thead th{
  text-align:left;font-size:10px;font-weight:800;text-transform:uppercase;
  letter-spacing:.6px;color:var(--ink-mid);padding:6px 8px;border-bottom:2px solid var(--ink-light);
  white-space:nowrap;
}
.mtg-table .mtg-th-chev{width:22px;padding-left:4px;padding-right:0;}
.mtg-table .mtg-th-pwin{text-align:right;}
.mtg-table .mtg-th-link{text-align:center;}
/* Solicitation + NAICS (founder ruling 2026-08-18: solicitation number, NOT contract number --
   a contract number does not exist pre-award and would be blank on every row). Both are
   identifiers, so they are monospaced and clipped rather than allowed to push the title column
   narrow; table-layout is auto and the title is the column that must stay readable. */
.mtg-table .mtg-th-sol{width:8.5%;}
.mtg-table .mtg-th-naics{width:5.5%;}
.mtg-sol{font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;font-size:11.5px;
         color:var(--ink-mid);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* ⚠ NAICS GETS THE SAME CLAMP .mtg-sol HAS ALWAYS HAD. It had `nowrap` and nothing else — no
   max-width, no overflow, no ellipsis — which is the single declaration that let one cell size the
   whole column. The collapsed cell now renders the CODE ONLY (js/pipeline.js _mtgNaicsCode); the
   description lives in the expanded detail row, which every row already has a chevron for. */
.mtg-naics{font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;font-size:11.5px;
           color:var(--ink-mid);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* DUE: one format, right-aligned so the days-left suffix lines up down the column, tabular figures
   so the digits do not jitter row to row, and clipped like every other text cell. */
.mtg-due{text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
         font-variant-numeric:tabular-nums;}
/* Tightened to buy back the ~196px the two new columns cost, so the table still fits a 1280px
   laptop container without scrolling. Below that the wrap scrolls rather than clipping. */
.mtg-table thead th{padding:6px 6px;}
.mtg-table .mtg-row>td{padding:8px 6px;}
.mtg-row{cursor:pointer;border-bottom:1px solid var(--ink-light);transition:background .12s;}
.mtg-row:hover{background:rgba(239,159,39,.07);}
.mtg-row>td{padding:8px 8px;vertical-align:middle;color:var(--ink);}
.mtg-chev{width:22px;padding-left:4px !important;padding-right:0 !important;color:var(--ink-mid);}
.mtg-chev-icon{display:inline-block;transition:transform .15s;font-size:11px;}
/* ⚠ NO px max-width UNDER FIXED LAYOUT. The column percentage is the width now; a 190px ceiling on
   a cell in a 15.5% column would just waste the difference at wide viewports. Ellipsis still needs
   overflow:hidden + nowrap, which is what actually does the truncating. */
.mtg-title{font-weight:700;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mtg-agency{color:var(--ink-mid);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* ⚠ THE ASSIGNEE CELLS WERE THE ONES RUNNING OFF THE EDGE. They had no width ceiling at all, so a
   long name pushed the columns to its right out of the container — and with no overflow rule on
   the wrap, out of reach entirely. Clamped and ellipsised like every other text column. */
.mtg-assignee-cell{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mtg-pwin{text-align:right;font-weight:700;font-variant-numeric:tabular-nums;}
.mtg-link-cell{text-align:center;white-space:nowrap;}
.mtg-link-btn{font-size:11px;font-weight:800;color:var(--blue);text-decoration:none;white-space:nowrap;}
.mtg-link-btn:hover{text-decoration:underline;}
.mtg-status-sel{
  font-size:11.5px;font-family:inherit;padding:4px 6px;border:1px solid var(--ink-light);
  border-radius:6px;background:var(--paper);color:var(--ink);cursor:pointer;width:100%;max-width:100%;box-sizing:border-box;
}
/* Click-to-edit assignee cells (Capture Mgr up to 2, Writer single). Shows the
   name(s) as plain text; click swaps in roster dropdown(s). Blank when empty. */
.mtg-assignee-cell{max-width:100%;cursor:pointer;}
.mtg-assignee{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;vertical-align:bottom;border-bottom:1px dashed transparent;}
.mtg-assignee-cell:hover .mtg-assignee{border-bottom-color:var(--ink-light);}
.mtg-assignee-empty{min-width:54px;min-height:15px;}
.mtg-assignee-cell:hover .mtg-assignee-empty::after{content:'+ assign';color:var(--ink-mid);
  font-size:10.5px;font-style:italic;}
.mtg-assignee-edit{display:flex;flex-direction:column;gap:0;}
.mtg-assignee-sel{font-size:11.5px;font-family:inherit;padding:3px 5px;border:1px solid var(--ink-light);
  border-radius:6px;background:var(--paper);color:var(--ink);width:100%;max-width:100%;box-sizing:border-box;}
.mtg-assignee-hint{font-size:10.5px;font-style:italic;color:var(--ink-mid);cursor:default;}
.mtg-gng-pill{
  font-size:11px;font-weight:800;padding:4px 10px;border-radius:12px;border:1.5px solid;
  cursor:pointer;white-space:nowrap;font-family:inherit;line-height:1.1;
}
.mtg-open-btn{
  font-size:11.5px;font-weight:800;padding:5px 14px;border-radius:7px;cursor:pointer;
  border:1px solid transparent;background:var(--ink-deep);color:var(--gold);font-family:inherit;white-space:nowrap;
}
.mtg-open-btn:hover{filter:brightness(1.12);}
/* Detail sub-row */
.mtg-detail-cell{padding:0 10px 14px 32px;background:rgba(44,44,42,.025);border-bottom:1px solid var(--ink-light);}
.mtg-chips{display:flex;flex-wrap:wrap;gap:5px;padding:10px 0 4px;}
.mtg-chip{
  font-size:10.5px;font-weight:600;color:var(--ink-mid);background:rgba(44,44,42,.05);
  border:1px solid var(--ink-light);border-radius:10px;padding:2px 8px;
}
.mtg-dgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 18px;padding:6px 0 10px;}
.mtg-dfield{font-size:12px;line-height:1.5;min-width:0;}
.mtg-dlabel{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-mid);margin-bottom:1px;}
.mtg-dval{color:var(--ink);word-break:break-word;}
.mtg-notes-wrap{padding-top:2px;}
/* Notes-field label hint (normal-case, light) clarifying the meeting comment
   is shared + saved to Capture Intel. */
.mtg-notes-hint{font-weight:400;font-size:9.5px;color:var(--ink-mid);text-transform:none;letter-spacing:0;}
.mtg-notes-ta{
  width:100%;box-sizing:border-box;margin-top:3px;min-height:46px;padding:7px 9px;
  border:1.5px solid var(--ink-light);border-radius:7px;font-size:12.5px;font-family:inherit;
  background:var(--paper);color:var(--ink);resize:vertical;
}
/* Clickable Dashboard summary tiles → jump to the filtered Pipeline view. */
.bdcc-tile{cursor:pointer;transition:box-shadow .12s,transform .08s;}
.bdcc-tile:hover{box-shadow:0 5px 16px rgba(44,44,42,.13);transform:translateY(-1px);}
.bdcc-tile:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}

/* ── Round-trip upsert confirmation diff ── */
.uc-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;}
.uc-chip{font-size:11px;font-weight:800;padding:4px 10px;border-radius:12px;border:1px solid;}
.uc-chip-upd{background:#E6F1FB;color:#185FA5;border-color:#185FA5;}
.uc-chip-new{background:#E8F5E8;color:#2D6A2D;border-color:#2D6A2D;}
.uc-chip-cf{background:#FFF3D1;color:#8B5E00;border-color:#8B5E00;}
.uc-chip-bl{background:#FCEBEB;color:#A32D2D;border-color:#A32D2D;}
.uc-chip-un{background:rgba(44,44,42,.06);color:var(--ink-mid);border-color:var(--ink-light);}
.uc-sec-title{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-mid);margin:14px 0 6px;}
.uc-sec-title.uc-cf{color:#8B5E00;text-transform:none;font-size:12.5px;}
.uc-sec-title.uc-bl{color:#A32D2D;}
.uc-card{background:#fff;border:1px solid var(--ink-light);border-radius:8px;padding:10px 12px;margin-bottom:8px;}
.uc-card-cf{border-color:#E9C46A;background:#FFFDF5;}
.uc-card-bl{border-color:#E8A4A3;background:#FFF7F7;}
.uc-name{font-size:13px;font-weight:700;color:var(--ink);}
.uc-note{font-size:10.5px;font-weight:600;color:var(--ink-mid);font-style:italic;}
.uc-meta{font-size:10.5px;color:var(--ink-mid);margin:2px 0 6px;}
.uc-reason{font-size:11.5px;color:#A32D2D;margin-top:3px;line-height:1.45;}
.uc-diffs{margin-top:6px;display:flex;flex-direction:column;gap:3px;}
.uc-diff{display:grid;grid-template-columns:88px 1fr 16px 1fr;gap:6px;align-items:center;font-size:12px;}
.uc-dlabel{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-mid);}
.uc-old{color:#A32D2D;text-decoration:line-through;opacity:.8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.uc-arrow{color:var(--ink-mid);text-align:center;}
.uc-new{color:#2D6A2D;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.uc-res{display:flex;gap:8px;margin-top:8px;}
.uc-res-btn{font-size:11.5px;font-weight:700;padding:5px 12px;border-radius:7px;border:1.5px solid var(--ink-light);background:#fff;color:var(--ink-mid);cursor:pointer;}
.uc-res-btn.active[data-val="keep"]{border-color:#2D6A2D;background:#E8F5E8;color:#2D6A2D;}
.uc-res-btn.active[data-val="take"]{border-color:#8B5E00;background:#FFF3D1;color:#8B5E00;}
.uc-footer-note{font-size:11px;color:var(--ink-mid);font-style:italic;margin-top:12px;padding-top:10px;border-top:1px dashed var(--ink-light);}
@media(max-width:820px){
  .mtg-dgrid{grid-template-columns:1fr 1fr;}
  .mtg-title{max-width:100%;}
  .mtg-agency{max-width:100%;}
}

/* ── ANALYSIS PROFILE PICKER ── */
#apick-overlay{display:none;position:fixed;inset:0;background:rgba(44,44,42,.65);z-index:9998;align-items:center;justify-content:center;padding:1rem;}
#apick-overlay.open{display:flex;}
#apick-box{background:#FAEEDA;border-radius:12px;width:100%;max-width:420px;padding:1.75rem;box-shadow:0 16px 48px rgba(0,0,0,.35);}
#apick-box h3{font-family:Georgia,serif;font-size:20px;color:#2C2C2A;margin-bottom:5px;}
#apick-box p{font-size:13px;color:#5F5E5A;margin-bottom:1.25rem;line-height:1.6;}
.apick-list{display:flex;flex-direction:column;gap:9px;margin-bottom:1.25rem;}
.apick-item{padding:13px 15px;border:2px solid #D3D1C7;border-radius:8px;cursor:pointer;background:#fff;transition:all .15s;}
.apick-item:hover{border-color:#EF9F27;background:#FEF3DC;}
.apick-item.selected{border-color:#EF9F27;background:#FEF3DC;}
.apick-name{font-size:14px;font-weight:700;color:#2C2C2A;}
.apick-detail{font-size:11px;color:#5F5E5A;margin-top:2px;}
.apick-btns{display:flex;gap:10px;justify-content:flex-end;}
.apick-cancel{padding:9px 18px;background:transparent;border:1.5px solid #D3D1C7;border-radius:6px;font-size:13px;font-weight:600;color:#5F5E5A;cursor:pointer;}
.apick-cancel:hover{border-color:#2C2C2A;}
.apick-go{padding:9px 22px;background:#EF9F27;border:none;border-radius:6px;font-size:13px;font-weight:700;color:#2C2C2A;cursor:pointer;}
.apick-go:hover{background:#BA7517;color:#fff;}
.apick-go:disabled{opacity:.4;cursor:not-allowed;}

/* ── AWARD-TO-PROJECT BRIDGE ── */
#bridge-overlay{display:none;position:fixed;inset:0;background:rgba(44,44,42,.75);z-index:10500;overflow-y:auto;padding:20px;}
#bridge-overlay.open{display:block;}
#bridge-box{background:#FAEEDA;max-width:820px;margin:0 auto;border-radius:14px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.4);}
.bridge-head{background:var(--ink-deep);padding:1.1rem 1.5rem;display:flex;align-items:flex-start;justify-content:space-between;}
.bridge-head-title{font-family:Georgia,serif;font-size:20px;color:#EF9F27;margin-bottom:3px;}
.bridge-head-sub{font-size:11px;color:rgba(250,232,218,.8);}
.bridge-close{background:none;border:none;color:rgba(250,232,218,.7);font-size:24px;cursor:pointer;line-height:1;padding:0;}
.bridge-body{padding:1.25rem 1.5rem;background:#FAEEDA;}
.bridge-cui{background:#FFF8E1;border:1px solid #EF9F27;border-radius:8px;padding:8px 12px;font-size:11px;color:#633806;margin-bottom:1rem;line-height:1.5;}
.bridge-sec{margin-bottom:1.25rem;}
.bridge-sec-title{font-size:9px;font-weight:700;letter-spacing:1.8px;text-transform:uppercase;color:#fff;background:#2C2C2A;padding:4px 10px;border-radius:20px;display:inline-block;margin-bottom:10px;}
.bridge-sec-title.gold{background:#EF9F27;color:#2C2C2A;}
.bridge-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px;}
.bridge-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:8px;}
.bridge-field{display:flex;flex-direction:column;gap:3px;}
.bridge-field.full{grid-column:1/-1;}
.bridge-field label{font-size:11px;font-weight:600;color:#5F5E5A;}
.bridge-field label .req{color:#A32D2D;}
.bridge-field input,.bridge-field textarea,.bridge-field select{width:100%;padding:7px 10px;border:1.5px solid #D3D1C7;border-radius:6px;font-size:12px;font-family:inherit;background:#fff;color:#2C2C2A;outline:none;box-sizing:border-box;}
.bridge-field input:focus,.bridge-field textarea:focus,.bridge-field select:focus{border-color:#EF9F27;}
.bridge-field.prefilled input,.bridge-field.prefilled textarea,.bridge-field.prefilled select{background:#FEF3DC;font-weight:600;color:#2C2C2A;border-color:#EF9F27;}
.bridge-prefill-note{font-size:11px;color:#BA7517;margin-bottom:8px;font-style:italic;}
.bridge-check-group{display:flex;flex-direction:column;gap:5px;margin-bottom:8px;}
.bridge-check-row{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;background:#fff;border-radius:6px;border:1px solid #D3D1C7;}
.bridge-check-row input[type=checkbox]{margin-top:2px;flex-shrink:0;accent-color:#EF9F27;width:14px;height:14px;}
.bridge-check-label{font-size:12px;font-weight:600;color:#2C2C2A;}
.bridge-check-sub{font-size:11px;color:#5F5E5A;margin-top:1px;}
.bridge-check-detail{margin-top:5px;}
.bridge-check-detail input,.bridge-check-detail textarea{width:100%;padding:5px 8px;border:1px solid #D3D1C7;border-radius:5px;font-size:11px;font-family:inherit;background:#F5F0E8;color:#2C2C2A;outline:none;box-sizing:border-box;}
.bridge-check-detail input:focus{border-color:#EF9F27;}
.bridge-staff-hdr{display:grid;grid-template-columns:2fr 1.5fr 2fr 1fr 1fr;gap:6px;margin-bottom:4px;}
.bridge-staff-hdr span{font-size:10px;font-weight:700;color:#5F5E5A;text-transform:uppercase;letter-spacing:.3px;}
.bridge-staff-row{display:grid;grid-template-columns:2fr 1.5fr 2fr 1fr 1fr;gap:6px;margin-bottom:5px;}
.bridge-staff-row input,.bridge-staff-row select{width:100%;padding:6px 8px;border:1px solid #D3D1C7;border-radius:5px;font-size:11px;font-family:inherit;background:#fff;color:#2C2C2A;outline:none;box-sizing:border-box;}
.bridge-sub-hdr{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:4px;}
.bridge-sub-hdr span{font-size:10px;font-weight:700;color:#5F5E5A;text-transform:uppercase;letter-spacing:.3px;}
.bridge-sub-row{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:5px;}
.bridge-sub-row input{width:100%;padding:6px 8px;border:1px solid #D3D1C7;border-radius:5px;font-size:11px;font-family:inherit;background:#fff;color:#2C2C2A;outline:none;box-sizing:border-box;}
.bridge-divider{height:1px;background:#D3D1C7;margin:1rem 0;}
.bridge-risk-row{display:flex;gap:8px;margin-bottom:8px;}
.bridge-risk-opt{flex:1;padding:7px;border:1.5px solid #D3D1C7;border-radius:6px;text-align:center;cursor:pointer;font-size:11px;font-weight:700;background:#fff;color:#5F5E5A;transition:all .15s;}
.bridge-risk-opt.low{background:#EAF3DE;color:#3B6D11;border-color:#639922;}
.bridge-risk-opt.med{background:#FFF8E1;color:#633806;border-color:#EF9F27;}
.bridge-risk-opt.high{background:#FCEBEB;color:#A32D2D;border-color:#E24B4A;}
.bridge-foot{padding:1rem 1.5rem;background:#F5F0E8;border-top:1px solid #D3D1C7;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;}
.bridge-foot-note{font-size:11px;color:#5F5E5A;font-style:italic;}
.bridge-btn-row{display:flex;gap:8px;}
.bridge-btn-cancel{padding:9px 16px;background:transparent;color:#5F5E5A;border:1.5px solid #D3D1C7;border-radius:7px;font-size:12px;cursor:pointer;}
.bridge-btn-cancel:hover{border-color:#2C2C2A;color:#2C2C2A;}
.bridge-btn-excel{padding:9px 18px;background:#EF9F27;color:#2C2C2A;border:none;border-radius:7px;font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:6px;}
.bridge-btn-excel:hover{background:#BA7517;color:#fff;}
.bridge-btn-pdf{padding:9px 18px;background:#2C2C2A;color:#EF9F27;border:none;border-radius:7px;font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:6px;}
.bridge-btn-pdf:hover{background:#444;}
.bridge-won-trigger{font-size:11px;padding:3px 8px;border-radius:6px;border:none;background:#EF9F27;color:#2C2C2A;cursor:pointer;font-weight:700;display:inline-flex;align-items:center;justify-content:center;}
.bridge-won-trigger:hover{background:#BA7517;color:#fff;}

/* ── CUI BLOCK MODAL ── */
#cui-block-modal{display:none;position:fixed;inset:0;background:rgba(44,44,42,0.78);z-index:10002;align-items:center;justify-content:center;padding:1rem;}
.cui-box{background:#fff;border-radius:14px;width:100%;max-width:520px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.45);}
.cui-head{background:linear-gradient(105deg,#7B0000 0%,#A32D2D 100%);padding:1.5rem 1.75rem;display:flex;align-items:flex-start;gap:14px;}
.cui-head-icon{width:44px;height:44px;background:rgba(255,255,255,0.15);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;}
.cui-head-title{font-family:Georgia,serif;font-size:20px;color:#fff;font-weight:500;line-height:1.3;}
.cui-head-sub{font-size:12px;color:rgba(255,255,255,0.7);margin-top:4px;line-height:1.5;}
.cui-body{padding:1.5rem 1.75rem;}
.cui-section-title{font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:#A32D2D;margin-bottom:8px;}
#cui-hit-list{list-style:none;padding:0;margin:0 0 1.25rem;font-size:13px;color:#2C2C2A;line-height:1.5;}
.cui-snippet-box{background:#FFF5F5;border:1px solid rgba(163,45,45,0.25);border-radius:8px;padding:10px 14px;margin-bottom:1.25rem;}
.cui-snippet-label{font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#A32D2D;margin-bottom:4px;}
#cui-snippet{font-size:12px;color:#5F5E5A;font-family:monospace;line-height:1.6;word-break:break-word;}
.cui-note{background:#F9F6F0;border-radius:8px;padding:12px 14px;font-size:12px;color:#5F5E5A;line-height:1.7;margin-bottom:1.25rem;}
.cui-note strong{color:#2C2C2A;}
.cui-actions{display:flex;gap:10px;justify-content:flex-end;}
.cui-btn-primary{padding:10px 22px;background:#2C2C2A;color:#FAEEDA;border:none;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;}
.cui-btn-primary:hover{background:#444441;}
.cui-btn-secondary{padding:10px 18px;background:transparent;border:1.5px solid #D3D1C7;border-radius:8px;font-size:13px;color:#5F5E5A;cursor:pointer;}
.cui-btn-secondary:hover{border-color:#A32D2D;color:#A32D2D;}
/* Sub-tab active state — drives switchSubTab() in js/shell.js. !important
   wins over inline border-bottom-color on the button (HTML inline style sets
   border-bottom to transparent for layout; class toggles the color). */
.team-subtab.active,.cap-subtab.active{border-bottom-color:var(--gold-deep) !important;color:var(--gold-deep) !important;}
/* ── Team Hub destination (PR B) ─────────────────────────────────────────── */
.teamhub-panel{display:none;background:#fff;border:1px solid var(--ink-light);border-radius:10px;padding:18px;margin:16px 0;}
.teamhub-panel.visible{display:block;}
.teamhub-search-wrap{position:relative;margin-bottom:14px;}
.teamhub-search-wrap .teamhub-search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--ink-mid);pointer-events:none;}
.teamhub-search{width:100%;padding:9px 36px 9px 34px;border:1.5px solid var(--ink-light);border-radius:8px;font-size:13px;background:var(--paper);color:var(--ink);box-sizing:border-box;font-family:inherit;}
.teamhub-search:focus{outline:none;border-color:var(--gold);}
.teamhub-search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--ink-mid);font-size:18px;cursor:pointer;padding:2px 9px;line-height:1;display:none;}
.teamhub-search-wrap.has-query .teamhub-search-clear{display:inline-block;}
/* NETWORK-GROUPS-1 — the station switch above the tab strip. Deliberately a DIFFERENT shape from
   .teamhub-tab (pill vs underline): two controls stacked in the same idiom read as one six-item
   list wrapped onto two rows, which is the confusion this split exists to remove. */
.teamhub-groups{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap;}
.teamhub-group-tab{padding:7px 16px;font-size:12px;font-weight:800;letter-spacing:.2px;color:var(--ink-mid);background:var(--ink-pale);border:1px solid transparent;border-radius:999px;cursor:pointer;transition:all .15s;white-space:nowrap;}
.teamhub-group-tab:hover{color:var(--ink);}
.teamhub-group-tab.active{background:var(--ink);color:var(--gold);border-color:var(--ink);}
.teamhub-tabs-hidden{display:none;}
.teamhub-tabs{display:flex;border-bottom:2px solid var(--ink-light);margin-bottom:14px;gap:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;}
.teamhub-tabs::-webkit-scrollbar{display:none;}
.teamhub-tab{padding:8px 14px;font-size:12px;font-weight:700;color:var(--ink-mid);background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;flex-shrink:0;}
.teamhub-tab:hover{color:var(--ink);}
.teamhub-tab.active{color:var(--gold-deep);border-bottom-color:var(--gold);}
.teamhub-tab-count{background:var(--ink-pale);color:var(--ink-mid);font-size:10px;font-weight:800;padding:2px 7px;border-radius:10px;min-width:18px;text-align:center;line-height:1.4;}
.teamhub-tab.active .teamhub-tab-count{background:var(--gold);color:var(--ink);}
.teamhub-content{min-height:120px;}
.teamhub-tab-panel{display:none;}
.teamhub-tab-panel.active{display:block;}
.teamhub-actions{display:flex;justify-content:flex-end;gap:8px;margin-bottom:12px;}
.teamhub-empty-state{text-align:center;padding:3rem 1rem;color:var(--ink-mid);font-size:13px;line-height:1.6;}
.teamhub-empty-state .teamhub-empty-cta{margin-top:10px;display:inline-flex;align-items:center;gap:5px;padding:7px 14px;background:var(--ink);color:var(--gold);border:none;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;}
.teamhub-empty-state .teamhub-empty-cta:hover{background:var(--ink-deep);}
.teamhub-type-badge{display:inline-block;font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;background:var(--ink-pale);color:var(--ink-mid);margin-left:6px;vertical-align:middle;letter-spacing:.2px;}
.teamhub-type-badge.t-jv{background:#E3F0FB;color:#185FA5;}
.teamhub-type-badge.t-consultant{background:#F1EEFE;color:#534AB7;}
.teamhub-type-badge.t-mp{background:#FFF3D1;color:#8B5E00;}
.teamhub-type-badge.t-sub{background:#F1EFE8;color:#5F5E5A;}
@media(max-width:640px){
  .teamhub-panel{padding:12px;margin:12px 0;}
  .teamhub-tab{padding:7px 10px;font-size:11px;}
  .teamhub-group-tab{padding:6px 12px;font-size:11px;}
  .teamhub-actions{justify-content:flex-start;flex-wrap:wrap;}
}
/* ── Capture Center destination (PR C2) ──────────────────────────────────── */
.capcenter-panel{display:none;background:#fff;border:1px solid var(--ink-light);border-radius:10px;padding:18px;margin:16px 0;}
.capcenter-panel.visible{display:block;}
.capcenter-search-wrap{position:relative;margin-bottom:14px;}
.capcenter-search-wrap .capcenter-search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--ink-mid);pointer-events:none;}
.capcenter-search{width:100%;padding:9px 36px 9px 34px;border:1.5px solid var(--ink-light);border-radius:8px;font-size:13px;background:var(--paper);color:var(--ink);box-sizing:border-box;font-family:inherit;}
.capcenter-search:focus{outline:none;border-color:var(--gold);}
.capcenter-search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--ink-mid);font-size:18px;cursor:pointer;padding:2px 9px;line-height:1;display:none;}
.capcenter-search-wrap.has-query .capcenter-search-clear{display:inline-block;}
.capcenter-tabs{display:flex;border-bottom:2px solid var(--ink-light);margin-bottom:14px;gap:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;}
.capcenter-tabs::-webkit-scrollbar{display:none;}
.capcenter-tab{padding:8px 14px;font-size:12px;font-weight:700;color:var(--ink-mid);background:transparent;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;flex-shrink:0;}
.capcenter-tab:hover{color:var(--ink);}
.capcenter-tab.active{color:var(--gold-deep);border-bottom-color:var(--gold);}
.capcenter-tab-count{background:var(--ink-pale);color:var(--ink-mid);font-size:10px;font-weight:800;padding:2px 7px;border-radius:10px;min-width:18px;text-align:center;line-height:1.4;}
.capcenter-tab.active .capcenter-tab-count{background:var(--gold);color:var(--ink);}
.capcenter-content{min-height:120px;}
.capcenter-tab-panel{display:none;}
.capcenter-tab-panel.active{display:block;}
.capcenter-actions{display:flex;justify-content:flex-end;gap:8px;margin-bottom:12px;}
.capcenter-empty-state{text-align:center;padding:3rem 1rem;color:var(--ink-mid);font-size:13px;line-height:1.6;}
.capcenter-empty-state .capcenter-empty-cta{margin-top:10px;display:inline-flex;align-items:center;gap:5px;padding:7px 14px;background:var(--ink);color:var(--gold);border:none;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;}
.capcenter-empty-state .capcenter-empty-cta:hover{background:var(--ink-deep);}
@media(max-width:640px){
  .capcenter-panel{padding:12px;margin:12px 0;}
  .capcenter-tab{padding:7px 10px;font-size:11px;}
  .capcenter-actions{justify-content:flex-start;flex-wrap:wrap;}
}

/* ── Settings destination — avatar dropdown + Notifications/Billing panels (Phase 2 #3) ── */
.topnav-avatar-wrap{position:relative;display:inline-flex;}
.settings-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:240px;background:#1F1F1D;border:1px solid #3D3D3A;border-top:2px solid var(--gold);border-radius:8px;box-shadow:0 12px 32px rgba(0,0,0,.45);padding:6px 0;display:none;z-index:201;}
.settings-dropdown.visible,.topnav-avatar-wrap.open > .settings-dropdown{display:block;}
.settings-header{padding:10px 14px 8px;border-bottom:1px solid #3D3D3A;margin-bottom:4px;}
.settings-email{font-size:12px;color:rgba(250,232,218,.62);font-weight:500;line-height:1.3;word-break:break-word;}
.settings-tier-pill{font-size:11px;font-weight:800;color:var(--gold);margin-top:3px;letter-spacing:.3px;}
.settings-item{display:block;width:100%;padding:9px 14px;background:transparent;border:none;font-family:inherit;font-size:12px;font-weight:600;color:rgba(250,232,218,.78);text-align:left;cursor:pointer;letter-spacing:.2px;transition:background .12s,color .12s;}
.settings-item:hover,.settings-item:focus{background:rgba(239,159,39,.10);color:#FAC775;outline:none;}
.settings-divider{height:1px;background:#3D3D3A;margin:4px 0;}
.settings-signout{color:rgba(250,232,218,.55);}
.settings-signout:hover,.settings-signout:focus{color:#FAC775;background:rgba(239,159,39,.08);}

/* Full-page Settings panels (Notification Preferences, Account & Billing) */
.settings-panel{background:#fff;border:1px solid var(--ink-light);border-radius:10px;padding:20px 24px;margin:16px 0;}
.settings-panel-heading{font-family:Georgia,serif;font-size:20px;font-weight:700;color:var(--ink);margin-bottom:4px;}
.settings-panel-sub{font-size:12px;color:var(--ink-mid);margin-bottom:14px;}
.settings-panel-section{margin-top:18px;padding-top:18px;border-top:1px solid var(--ink-pale);}
.settings-panel-section:first-of-type{margin-top:0;padding-top:0;border-top:none;}
.settings-field{margin-bottom:14px;}
.settings-field > label{display:block;font-size:11px;font-weight:700;color:var(--ink-mid);text-transform:uppercase;letter-spacing:.5px;margin-bottom:5px;}
.settings-field select,.settings-field input[type="text"],.settings-field input[type="email"]{width:100%;max-width:360px;padding:8px 10px;border:1.5px solid var(--ink-light);border-radius:6px;font-size:13px;font-family:inherit;background:var(--paper);color:var(--ink);}
.settings-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;padding-top:14px;border-top:1px solid var(--ink-pale);}

@media(max-width:640px){
  .settings-dropdown{position:fixed;top:64px;right:8px;left:8px;min-width:0;}
  .settings-panel{padding:14px 16px;margin:12px 0;}
  .settings-field select,.settings-field input[type="text"],.settings-field input[type="email"]{max-width:none;}
  .settings-actions{flex-direction:column-reverse;}
  .settings-actions > *{width:100%;}
}

/* ── Empty-box guard for on-demand-populated styled containers ─────────────────
   These containers carry their OWN box styling (background / border / padding)
   but are filled by JS on demand. Until content arrives — or if a populate path
   shows them while empty — they render as bare styled rectangles ("empty white
   boxes"; the .settings-panel case was the reported root cause). Hiding each one
   while it is :empty makes it appear ONLY once populated: the instant JS injects
   any child node or text the :empty match drops and full styling returns, so the
   populated state is untouched. !important is required to beat the inline
   display:block/flex toggles the populating JS sets on these elements.
   Scope: only containers with their own visible box. Pure grid/flex wrappers
   (.sc-cats, .ev-grid, .ow-field-grid, .rgrid, .upload-files-list, result lists)
   collapse to zero height when empty, so they need no guard. Modal list sidebars
   (.cap-list/.pa-list) are intentionally left out — they live in 2-col modal
   grids and want an empty-state message, not a hidden track. */
.settings-panel:empty,
#ticker-slot:empty,
#co-request-preview:empty,
#sector-info-bar:empty,
#wd-decision-flag:empty,
#sc-pricing-implication:empty,
#sc-vault-history:empty,
#ev-upcoming-banner:empty,
#ow-intel-signal:empty,
#ow-notes-preview:empty,
#aria-transcript:empty{display:none !important;}

/* ── Post-signup capture modal (js/signup-capture.js) ──────────────────────── */
.suc-overlay{position:fixed;inset:0;z-index:9999;background:rgba(10,10,10,.78);
  display:flex;align-items:center;justify-content:center;padding:24px;
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);overflow-y:auto;}
.suc-card{background:#fff;border-radius:14px;border-top:4px solid var(--gold);
  width:100%;max-width:560px;padding:30px 32px;box-shadow:0 24px 64px rgba(0,0,0,.45);
  margin:auto;position:relative;}
/* UNIVERSAL ESCAPE (2026-07-23) — the × and the Skip link give every user a way out of
   what was a blocking, undismissable gate. */
.suc-close{position:absolute;top:12px;right:14px;width:30px;height:30px;border:none;background:transparent;
  color:var(--ink-mid);font-size:16px;line-height:1;cursor:pointer;border-radius:7px;display:flex;
  align-items:center;justify-content:center;transition:background .15s,color .15s;}
.suc-close:hover{background:var(--ink-pale);color:var(--ink);}
.suc-skip{align-self:center;margin-top:2px;background:none;border:none;color:var(--ink-mid);
  font-size:12.5px;font-family:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:2px;padding:6px;}
.suc-skip:hover{color:var(--ink);}
.suc-title{font-size:22px;font-weight:800;color:var(--ink);margin:0 0 6px;letter-spacing:-.01em;}
.suc-sub{font-size:13px;color:var(--ink-mid);margin:0 0 20px;line-height:1.5;}
.suc-form{display:flex;flex-direction:column;gap:16px;}
.suc-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.suc-field{display:flex;flex-direction:column;}
.suc-label{font-size:11px;font-weight:700;color:var(--ink-mid);text-transform:uppercase;
  letter-spacing:.5px;margin-bottom:5px;}
.suc-req{color:var(--gold-deep);}
.suc-input{width:100%;padding:9px 11px;border:1.5px solid var(--ink-light);border-radius:7px;
  font-size:14px;font-family:inherit;background:var(--paper);color:var(--ink);
  transition:border-color .15s;box-sizing:border-box;}
.suc-input:focus{border-color:var(--gold);outline:none;}
select.suc-input{cursor:pointer;}
.suc-newsletter-row{display:flex;align-items:flex-start;gap:9px;font-size:12.5px;
  color:var(--ink-mid);line-height:1.5;background:var(--ink-pale);
  border:1px solid var(--ink-light);border-radius:8px;padding:11px 13px;cursor:pointer;}
.suc-check{margin-top:1px;width:16px;height:16px;flex-shrink:0;accent-color:var(--gold-deep);cursor:pointer;}
.suc-newsletter-row a{color:var(--gold-deep);font-weight:600;}
.suc-error{background:#FBEAEA;border:1px solid #E4B7B7;color:#9A2A2A;
  font-size:12.5px;font-weight:600;border-radius:7px;padding:9px 12px;}
.suc-submit{background:var(--gold);color:var(--ink);border:none;border-radius:8px;
  padding:12px 20px;font-size:14px;font-weight:800;cursor:pointer;
  transition:background .15s,opacity .15s;letter-spacing:.01em;}
.suc-submit:hover:not(:disabled){background:var(--gold-deep);}
.suc-submit:disabled{opacity:.6;cursor:default;}
@media (max-width:540px){
  .suc-card{padding:24px 20px;}
  .suc-grid{grid-template-columns:1fr;}
}

/* ── Homepage ticker — rotating GovCon content band (js/ticker.js) ── */
#ticker-slot{background:#fff;border-bottom:1px solid var(--ink-light);}
.ticker{max-width:1120px;margin:0 auto;padding:9px 20px;}
.ticker-inner{text-align:center;font-size:15px;line-height:1.5;opacity:1;transition:opacity .38s ease;}
.ticker-inner.is-fading{opacity:0;}
.ticker-star{display:inline-block;color:var(--gold);font-size:14px;animation:tickerStarPulse 2.8s ease-in-out infinite;}
.ticker-cat{color:var(--gold-deep);font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;}
.ticker-sep{color:var(--ink-light);}
.ticker-text{color:var(--ink);}
.ticker-link{color:var(--gold-deep);font-weight:700;text-decoration:none;white-space:nowrap;}
.ticker-link:hover{text-decoration:underline;text-underline-offset:2px;}
@keyframes tickerStarPulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.5;transform:scale(.84);}}
@media (max-width:600px){
  .ticker{padding:8px 12px;}
  .ticker-inner{font-size:13px;}
  .ticker-cat{font-size:11px;}
}
@media (prefers-reduced-motion:reduce){
  .ticker-star{animation:none;}
  .ticker-inner{transition:none;}
}

/* ── Pursuit Lifecycle section (replaces orphan .six-steps) ─────────── */
/* Mobile-first defaults: vertical stack of stages, inline accordion detail.
   Desktop override (min-width:769px) flips timeline to a horizontal row
   with the active detail panel absolutely positioned beneath the row. */
.lifecycle{background:var(--ink-deep);color:#fff;padding:3rem 1.25rem 2.5rem;}
.lifecycle-inner{max-width:1100px;margin:0 auto;}
.lifecycle-heading{font-family:Georgia,serif;font-size:22px;font-weight:700;color:var(--gold);text-align:center;letter-spacing:-.3px;margin:0 0 8px;line-height:1.3;}
.lifecycle-sub{text-align:center;font-size:12px;color:rgba(255,255,255,.55);letter-spacing:.4px;margin:0 0 24px;}

.lc-timeline{display:flex;flex-direction:column;position:relative;}
.lc-stage-wrap{display:flex;flex-direction:column;}
.lc-stage{display:flex;align-items:center;gap:14px;padding:14px 12px;background:transparent;border:none;color:inherit;cursor:pointer;font:inherit;text-align:left;border-radius:8px;position:relative;z-index:1;transition:background .18s;width:100%;}
.lc-stage:hover,.lc-stage[aria-expanded="true"]{background:rgba(239,159,39,.06);}
.lc-stage:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.lc-node{width:14px;height:14px;border-radius:50%;background:var(--ink-deep);border:2px solid var(--gold);flex-shrink:0;transition:background .18s,transform .18s,box-shadow .18s;}
.lc-stage:hover .lc-node,.lc-stage[aria-expanded="true"] .lc-node{background:var(--gold);transform:scale(1.2);box-shadow:0 0 0 5px rgba(239,159,39,.18);}
.lc-name{font-size:14px;font-weight:800;letter-spacing:1.1px;color:#fff;text-transform:uppercase;transition:color .18s;}
.lc-stage:hover .lc-name,.lc-stage[aria-expanded="true"] .lc-name{color:var(--gold);}
.lc-chev{margin-left:auto;color:rgba(255,255,255,.45);font-size:14px;transition:transform .18s,color .18s;flex-shrink:0;}
.lc-stage[aria-expanded="true"] .lc-chev{transform:rotate(90deg);color:var(--gold);}

.lc-detail{display:none;margin:4px 0 12px 36px;background:rgba(0,0,0,.45);border:1px solid rgba(239,159,39,.4);border-left:3px solid var(--gold);border-radius:10px;padding:16px 20px;color:#fff;animation:lcFadeIn .22s ease-out;}
.lc-detail:not([hidden]){display:block;}
.lc-detail-head{display:flex;align-items:baseline;gap:10px;margin-bottom:8px;flex-wrap:wrap;}
.lc-detail-stage{font-size:12px;font-weight:800;letter-spacing:1.4px;color:var(--gold);text-transform:uppercase;}
.lc-detail-tier{font-size:11px;color:rgba(255,255,255,.55);letter-spacing:.5px;text-transform:uppercase;}
.lc-detail-body{font-size:13.5px;line-height:1.6;color:rgba(255,255,255,.9);margin:0 0 10px;}
.lc-detail-features{list-style:none;padding:0;margin:0 0 12px;font-size:13px;line-height:1.55;color:rgba(255,255,255,.88);}
.lc-detail-features li{padding:6px 0 6px 18px;position:relative;}
.lc-detail-features li+li{border-top:1px solid rgba(255,255,255,.06);}
.lc-detail-features li::before{content:"";position:absolute;left:4px;top:14px;width:5px;height:5px;background:var(--gold);border-radius:50%;}
.lc-detail-features strong{color:#fff;font-weight:700;}
.lc-detail-loop{font-size:12.5px;line-height:1.55;color:var(--gold);background:rgba(239,159,39,.08);border:1px solid rgba(239,159,39,.22);border-radius:6px;padding:9px 12px;margin:0;}
.lc-detail-loop strong{color:#fff;font-weight:700;}

.lc-timeline::before{content:"";position:absolute;top:24px;bottom:24px;left:19px;width:2px;background:rgba(239,159,39,.22);z-index:0;}

@keyframes lcFadeIn{from{opacity:0;transform:translateY(-3px);}to{opacity:1;transform:translateY(0);}}

.lc-learning-band{margin-top:36px;text-align:center;font-size:12px;font-weight:600;letter-spacing:.5px;color:rgba(255,255,255,.6);position:relative;padding:14px 0;}
.lc-learning-band::before,.lc-learning-band::after{content:"";position:absolute;top:50%;height:1px;background:rgba(255,255,255,.18);}
.lc-learning-band::before{left:5%;width:25%;}
.lc-learning-band::after{right:5%;width:25%;}
.lc-learning-band strong{color:var(--gold);font-weight:700;}

@media (min-width:769px){
  .lifecycle{padding:4.5rem 2rem 4rem;}
  .lifecycle-heading{font-size:34px;}
  .lifecycle-sub{margin-bottom:36px;}
  .lc-timeline{flex-direction:row;align-items:flex-start;justify-content:space-between;padding-bottom:260px;}
  .lc-stage-wrap{flex:1 1 0;align-items:center;position:static;}
  .lc-stage{flex-direction:column;gap:10px;padding:6px 4px;text-align:center;justify-content:center;}
  .lc-stage:hover,.lc-stage[aria-expanded="true"]{background:transparent;}
  .lc-name{font-size:11px;}
  .lc-chev{display:none;}
  .lc-detail{position:absolute;left:50%;top:96px;transform:translateX(-50%);width:min(680px,calc(100% - 60px));margin:0;}
  .lc-timeline::before{top:13px;left:8%;right:8%;bottom:auto;height:2px;width:auto;background:rgba(239,159,39,.35);}
  .lc-learning-band{margin-top:0;}
}

@media (prefers-reduced-motion:reduce){
  .lc-node,.lc-name,.lc-chev,.lc-stage{transition:none;}
  .lc-detail{animation:none;}
}

/* ── ANALYZER DEVICE — matches scorecard chassis ─────────────────────────
   White-bordered housing on the dark #tool bg, dark nameplate header,
   light readable body. One device — input state and processing state
   share the same shell. */
.analyzer-device{
  background:#fff;
  border:1.5px solid var(--ink-light);
  border-radius:14px;
  overflow:hidden;
  margin-bottom:1.25rem;
  box-shadow:
    0 0 0 6px rgba(239,159,39,.18),
    0 0 0 18px rgba(239,159,39,.08),
    0 14px 48px rgba(239,159,39,.25),
    0 40px 110px rgba(239,159,39,.15),
    0 1px 3px rgba(44,44,42,.06);
}
/* Dark nameplate — title + status across the top of the chassis */
.sa-nameplate{
  background:var(--ink-deep);
  display:flex;align-items:center;gap:10px;
  padding:11px 18px;
  border-bottom:1px solid rgba(255,255,255,.06);
}
.sa-name{
  font-family:var(--font-mono);
  font-size:12px;font-weight:700;letter-spacing:1.8px;
  color:var(--cream);
  flex:1;min-width:0;
}
.sa-status{
  font-family:var(--font-mono);
  font-size:11px;font-weight:500;letter-spacing:.6px;
  color:rgba(250,238,218,.6);
  white-space:nowrap;
}
.sa-dot{
  width:9px;height:9px;border-radius:50%;
  background:#80D88A;
  box-shadow:0 0 0 0 rgba(128,216,138,.6);
  flex-shrink:0;
}
.sa-dot--ready{background:#80D88A;}
.sa-dot--active{background:#EF9F27;animation:adPulse 1.4s ease-in-out infinite;}
.sa-dot--done{background:#80D88A;}
@keyframes adPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(239,159,39,.55);}
  50%    {box-shadow:0 0 0 6px rgba(239,159,39,0);}
}
/* Light body — matches .sc-card-body */
.sa-body{
  background:#fff;
  padding:1.5rem;
}
/* Tabs flush with chassis (override .upload-tabs only inside the body) */
.sa-body .upload-tabs{
  background:transparent;border:none;border-radius:0;
  border-bottom:1px solid var(--ink-light);
  margin:0 0 16px;gap:4px;
}
.sa-body .upload-tab{
  border-bottom:2px solid transparent;
  border-radius:0;padding:10px 14px;color:var(--ink-mid);
}
.sa-body .upload-tab.active{
  background:transparent;color:var(--ink);font-weight:800;
  border-bottom-color:var(--gold);
}
.sa-body .upload-tab.active svg{stroke:var(--ink);}
/* System labels — mono, letter-spaced, dark for legibility on white body */
.sa-section-label{
  font-family:var(--font-mono);
  font-size:11px;font-weight:700;letter-spacing:1.5px;
  color:var(--ink-mid);
  display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  margin:14px 0 6px;text-transform:uppercase;
}
.sa-section-meta{
  font-family:var(--font-mono);
  font-size:10px;font-weight:500;letter-spacing:.5px;
  color:var(--ink-mid);
  text-transform:none;font-style:normal;
}
/* Hide the legacy heading + subtitle — nameplate carries the title now */
.sa-hide-legacy{display:none !important;}

/* Status feed — appears inside #spinner during processing */
.sa-feed{
  margin-top:14px;
  display:flex;flex-direction:column;gap:6px;
}
.sa-feed-row{
  display:flex;align-items:center;gap:10px;
  font-family:var(--font-mono);
  font-size:12px;letter-spacing:.4px;
  color:var(--ink-mid);
  transition:color .25s ease;
}
.sa-feed-icon{
  width:16px;text-align:center;
  font-size:13px;font-weight:700;
  color:var(--ink-light);
  transition:color .25s ease;
}
.sa-feed-row.is-active{color:var(--ink);}
.sa-feed-row.is-active .sa-feed-icon{color:var(--gold);}
.sa-feed-row.is-done{color:var(--ink);}
.sa-feed-row.is-done .sa-feed-icon{color:#3B6D11;}
.sa-feed-almost{
  font-family:var(--font-mono);
  font-size:11px;letter-spacing:.5px;
  color:var(--gold-deep);
  margin-top:8px;text-align:center;
  opacity:0;transition:opacity .3s ease;
}
.sa-feed-almost.is-visible{opacity:1;}

/* CX2 — Portal Link teaming alert: pulsing gold star on the Teaming tab while an unread teaming
   request waits (stops when the tab is opened). One precise gold accent; honors reduced-motion. */
@keyframes inboxStarPulse { 0%,100%{opacity:1;transform:scale(1);} 50%{opacity:.4;transform:scale(1.18);} }
.inbox-star-pulse{ display:inline-block; animation:inboxStarPulse 2s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce){ .inbox-star-pulse{ animation:none; } }

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   SCORECARD-1 IA v3 (mock eb1db8e1) — ALL rules scoped under .sc-ia-v3 / body.sc-ia-*, applied only
   by js/scorecard-ia.js when window.SCORECARD_IA_V3 is on. Flag off → none of this matches → the
   live scorecard is unchanged. Uses the app's existing design tokens.
   ══════════════════════════════════════════════════════════════════════════════════════════════ */

/* ══ THE WORKBOOK — one connected surface: strip → tabs → one panel → rail ══════════════════════
   FINAL SPEC v2 (founder 2026-07-18): "a document, but tabbed." The whole thing is ONE light document
   card sitting on the dark #tool ground — which also fixes the contrast bug (dark section titles were
   dying on the black page; here they sit on a light workbook). Attached edges, no gaps: it reads as a
   single Excel-like sheet with tabs on top and action tabs on the bottom edge. */
.sc-ia-v3 #sc-wb{ background:#F7F3EA; border:1px solid var(--ink-light); border-radius:14px;
  box-shadow:0 1px 2px rgba(44,44,42,.06),0 10px 30px rgba(44,44,42,.10); overflow:hidden; margin:1.25rem 0 0;
  display:flex; flex-direction:column; color:var(--ink); }
.sc-ia-v3 #sc-wb *{ box-sizing:border-box; }

/* 1) identity strip — thin, one line: opportunity + score chip */
.sc-ia-v3 .sc-wb-strip{ display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:10px 18px; background:#FFFFFF; border-bottom:1px solid var(--ink-light); font-size:13px; min-height:44px; }
.sc-ia-v3 .sc-wb-strip-id{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sc-ia-v3 .sc-wb-strip-id strong{ font-family:Georgia,serif; font-weight:700; color:var(--ink); }
.sc-ia-v3 .sc-wb-strip-sub{ color:var(--ink-mid); }
.sc-ia-v3 .sc-wb-strip-score{ display:flex; align-items:center; gap:6px; flex:none; }
.sc-ia-v3 .sc-wb-chip{ display:inline-flex; align-items:center; font-size:11px; font-weight:800; letter-spacing:.03em;
  text-transform:uppercase; padding:3px 10px; border-radius:20px; white-space:nowrap; }
.sc-ia-v3 .sc-wb-chip.g{ background:rgba(59,109,17,.12); color:#3B6D11; }
.sc-ia-v3 .sc-wb-chip.r{ background:rgba(163,45,45,.11); color:#A32D2D; }
.sc-ia-v3 .sc-wb-chip.a{ background:rgba(186,117,23,.13); color:#8a5a12; }
.sc-ia-v3 .sc-wb-chip.m{ background:rgba(142,68,173,.13); color:#6d2f86; }
.sc-ia-v3 .sc-wb-chip.b{ background:rgba(46,134,193,.13); color:#1f5f88; }
.sc-ia-v3 .sc-wb-chip.prob{ background:var(--ink-deep); color:var(--gold); }

/* 2) Excel-style section tab row — attached to the top of the sheet; active tab merges into the panel */
.sc-ia-v3 .sc-wb-tabs{ display:flex; gap:3px; align-items:flex-end; padding:7px 10px 0; background:var(--ink-pale);
  border-bottom:1px solid var(--ink-light); overflow-x:auto; -webkit-overflow-scrolling:touch; }
.sc-ia-v3 .sc-wb-tab{ border:1px solid transparent; border-bottom:none; background:transparent; color:var(--ink-mid);
  font-family:inherit; font-weight:700; font-size:13.5px; padding:9px 15px; border-radius:9px 9px 0 0;
  white-space:nowrap; cursor:pointer; margin-bottom:-1px; }
.sc-ia-v3 .sc-wb-tab:hover{ color:var(--ink); background:rgba(255,255,255,.5); }
.sc-ia-v3 .sc-wb-tab[aria-selected="true"]{ background:#F7F3EA; color:var(--ink);
  border-color:var(--ink-light); border-bottom:1px solid #F7F3EA; position:relative; z-index:1; }

/* 3) the single panel — active section ONLY (THE HEIGHT TEST: inactive panels take no space) */
.sc-ia-v3 .sc-wb-body{ background:#F7F3EA; }
.sc-ia-v3 .sc-wb-panel{ display:none; padding:22px 22px 26px; }
.sc-ia-v3 .sc-wb-panel.active{ display:block; }
.sc-ia-v3 .sc-wb-lead{ font-size:13px; color:var(--ink-mid); max-width:660px; margin:0 0 20px; line-height:1.55; }
.sc-ia-v3 .sc-wb-sec{ margin-bottom:24px; }
.sc-ia-v3 .sc-wb-sec:last-child{ margin-bottom:0; }
.sc-ia-v3 .sc-wb-sec-h{ display:flex; align-items:center; gap:10px; margin-bottom:11px; }
.sc-ia-v3 .sc-wb-sec-h h4{ font-family:Georgia,serif; font-size:16px; font-weight:700; margin:0; color:var(--ink); }
.sc-ia-v3 .sc-wb-tag{ margin-left:auto; font-size:10.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  color:var(--ink-mid); background:#FFFFFF; border:1px solid var(--ink-light); border-radius:20px; padding:2px 9px; }
/* the Verdict panel leads with the band; keep its inner blocks spaced as one answer screen */
.sc-ia-v3 #sc-ia-p-verdict > #sc-recommendation,
.sc-ia-v3 #sc-ia-p-verdict > #eligibility-flags{ margin-top:14px; }
.sc-ia-v3 #sc-ia-p-verdict > #sc-verdict-band{ border-radius:10px; }

/* reparented <details> render OPEN as chapters — the collapse chrome is redundant inside a section */
.sc-ia-v3 .sc-wb-panel .sc-assess-card,
.sc-ia-v3 .sc-wb-panel .sc-evaluation{ border:1px solid var(--ink-light); border-radius:12px; background:#FFFFFF; }
.sc-ia-v3 .sc-wb-panel .sc-assess-card > summary,
.sc-ia-v3 .sc-wb-panel .sc-evaluation > summary{ list-style:none; }
.sc-ia-v3 .sc-wb-panel .sc-evaluation > summary::-webkit-details-marker{ display:none; }

/* DISCOVERABILITY (refinement 2) — a one-line whisper under the tab row; dismissable forever */
.sc-ia-v3 .sc-wb-hint{ display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:8px 22px; background:rgba(239,159,39,.09); border-bottom:1px solid var(--ink-light);
  font-size:12px; color:var(--ink-mid); }
.sc-ia-v3 .sc-wb-hint-x{ border:none; background:none; color:var(--ink-mid); font-size:17px; line-height:1;
  cursor:pointer; padding:0 2px; flex:none; }
.sc-ia-v3 .sc-wb-hint-x:hover{ color:var(--ink); }

/* BUILD STAMP — flag-on-only corner watermark; a preview screenshot self-identifies its JS/CSS version */
.sc-ia-v3 .sc-wb-build{ position:fixed; bottom:6px; right:8px; z-index:2147483647; pointer-events:none;
  font:700 10px/1.3 ui-monospace,Menlo,Consolas,monospace; letter-spacing:.02em; color:#fff;
  background:rgba(163,45,45,.94); padding:3px 8px; border-radius:6px; box-shadow:0 2px 8px rgba(0,0,0,.3); }
@media print{ .sc-ia-v3 .sc-wb-build{ display:none; } }

/* HONEST-EMPTY (refinement 1) — a section whose data is genuinely absent says so, plainly */
.sc-ia-v3 .sc-wb-empty{ font-size:13px; color:var(--ink-mid); font-style:italic; line-height:1.5;
  padding:12px 15px; background:#FFFFFF; border:1px dashed var(--ink-light); border-radius:10px; }

/* THE SUMMARY IS A MAP (refinement 3) — every Verdict claim is a clickable link to its evidence.
   Subtle affordance: a gold chevron + hover, discoverable without being busy. */
.sc-ia-v3 .sc-wb-jump{ cursor:pointer; transition:opacity .15s; }
.sc-ia-v3 .sc-wb-jump:hover{ opacity:.82; }
.sc-ia-v3 .sc-wb-jump::after{ content:'\203A'; margin-left:5px; color:var(--gold-deep); font-weight:800; opacity:.65; }
.sc-ia-v3 #eligibility-flags .sc-wb-jump{ box-shadow:inset 0 -1px 0 rgba(176,122,18,.35); }
.sc-ia-v3 .sc-wb-inline-jump{ display:inline-block; margin-top:10px; padding:0; border:none; background:none;
  color:var(--gold-deep); font-family:inherit; font-weight:700; font-size:13px; cursor:pointer; }
.sc-ia-v3 .sc-wb-inline-jump:hover{ text-decoration:underline; }
/* the score chip in the identity strip is a jump too — keep its chevron light on the dark chip */
.sc-ia-v3 .sc-wb-strip-score .sc-wb-jump::after{ color:var(--gold); opacity:.8; }

/* 4) BOTTOM RAIL — attached below the panel (the workbook's bottom edge). Decision set + output set,
   one compact row, Excel-bottom-tab grammar. Scrolls horizontally rather than wrapping or floating. */
body.sc-ia-has-bar{ padding-bottom:0; }
.sc-ia-v3 #sc-ia-actionbar{ background:#FFFFFF; border-top:1px solid var(--ink-light); }
.sc-ia-v3 .sc-wb-rail-wrap{ display:flex; align-items:center; gap:10px; padding:10px 16px; overflow-x:auto;
  flex-wrap:nowrap; -webkit-overflow-scrolling:touch; }
.sc-ia-v3 .sc-wb-rail-wrap > *{ flex:none; }
.sc-ia-v3 .sc-wb-rail-note{ font-size:12px; color:var(--ink-mid); white-space:nowrap; }
.sc-ia-v3 #sc-ia-actionbar #sc-primary-slot:empty{ display:none; }
.sc-ia-v3 #sc-ia-actionbar #sc-primary-slot{ display:flex; align-items:center; }
/* flatten the reparented decision panel + take-action stack into ONE compact row; drop the chrome that
   makes them tall — the "Your Decision" label, the redundant black Scorecard-Complete band (mock: MERGE
   into the verdict band, which already carries the win %), and the group/section labels. */
.sc-ia-v3 #sc-ia-actionbar #final-decision-panel{ display:flex; align-items:center; gap:8px; margin:0; padding:0;
  border:none; flex:none; }
.sc-ia-v3 #sc-ia-actionbar .sc-yd-row{ display:flex; flex-direction:row; align-items:center; gap:8px;
  flex-wrap:nowrap; margin:0; }
.sc-ia-v3 #sc-ia-actionbar #sc-actions{ display:flex; flex-direction:row; align-items:center; gap:8px;
  flex-wrap:nowrap; margin:0; flex:none; border-left:1px solid var(--ink-light); padding-left:10px; }
.sc-ia-v3 #sc-ia-actionbar .sc-yd-label,
.sc-ia-v3 #sc-ia-actionbar #advance-score-panel,
.sc-ia-v3 #sc-ia-actionbar #final-decision-note,
.sc-ia-v3 #sc-ia-actionbar .sc-ta-label,
.sc-ia-v3 #sc-ia-actionbar .sc-ta-grp-label,
.sc-ia-v3 #sc-ia-actionbar .sc-saved-state{ display:none !important; }
.sc-ia-v3 #sc-ia-actionbar .sc-ta-group{ display:contents; }
.sc-ia-v3 #sc-ia-actionbar .sc-ta-row{ display:flex; flex-direction:row; gap:8px; flex-wrap:nowrap; margin:0; }
.sc-ia-v3 #sc-ia-actionbar .fd-btn,
.sc-ia-v3 #sc-ia-actionbar .sc-ta-btn,
.sc-ia-v3 #sc-ia-actionbar .export-row{ white-space:nowrap; margin:0; }

/* ══ DOCUMENT DUALITY — PRINT/EXPORT: the WHOLE document, linear, ruled order (RR-7c Pursuit Brief).
   Print ignores the tabs and prints the document the tabs view: every panel expands in order; the
   strip, tab row, and bottom rail (interactive chrome) drop out. ══════════════════════════════════ */
@media print{
  .sc-ia-v3 #sc-wb{ box-shadow:none; border:none; background:#fff; }
  .sc-ia-v3 .sc-wb-panel{ display:block !important; page-break-inside:auto; padding:0 0 18px; }
  .sc-ia-v3 .sc-wb-body{ background:#fff; }
  .sc-ia-v3 .sc-wb-strip,
  .sc-ia-v3 .sc-wb-tabs,
  .sc-ia-v3 .sc-wb-hint,
  .sc-ia-v3 .sc-wb-inline-jump,
  .sc-ia-v3 #sc-ia-actionbar,
  .sc-ia-v3 .sc-wb-lead .why,
  .sc-ia-v3 #sc-ia-actionbar #sc-actions,
  .sc-ia-v3 .export-row, .sc-ia-v3 #results-jumpbar,
  .sc-ia-v3 button[onclick*="openScoreExplainer"],
  .sc-ia-v3 .sc-ta-more, .sc-ia-v3 .sc-cd-link{ display:none !important; }
  .sc-ia-v3 .sc-wb-jump::after{ display:none; }
  .sc-ia-v3 .sc-wb-sec{ page-break-inside:avoid; }
  .sc-ia-v3 .sc-wb-sec-h h4{ font-family:Georgia,"Times New Roman",serif; }
  .sc-ia-v3 #sc-ia-p-verdict{ page-break-after:avoid; }
  .sc-ia-v3 .sc-wb-panel details{ display:block; }
  .sc-ia-v3 .sc-wb-panel details > *{ display:revert; }
}

/* ══ MOBILE-FIX (2026-07-18) — PREVIEW, flag-scoped to html.mobile-fix ════════════════════════════
   Two founder-approved changes only. NOT a responsive redesign — the target is "usable, nothing
   clipped, nothing overlapping, signup completes". Flag OFF → not one selector matches.

   ── WHAT IS BROKEN (measured on live prod, Chrome CDP) ──
   `.topnav-right` (main.css:72) is `display:flex` with NO wrap and no phone rule. It measures a
   constant 392px starting at x=260, so its right edge lands at **652px at EVERY viewport width**.
   That makes `document.scrollWidth` a constant 652: every viewport under 652 CSS px overflows —
   i.e. every phone in portrait, both browser families. Measured: 390→scrollWidth 652,
   430→652, 768→768 (clean), 1366→1366 (clean). It is the SOLE scrollWidth driver on every app
   section. Two independent reports ("renders as desktop on my phone") trace to this one rule.

   Consequences that look like separate bugs but are not:
     • The inflated scroll width expands the fixed-position containing block, so `.suc-overlay`
       (inset:0) renders 652 wide and `.suc-card` (max-width:560px) centres at x=46 → right=606.
       At 390px that puts **216px of the signup card — including the submit button — off-screen.**
       That is why the reporting user could not complete signup.
     • The newsletter checkbox row is NOT misaligned (measured centerDelta 0.00px); it is simply
       clipped by the same overflow. Fixing the overflow fixes the "misalignment".
     • `#subnav` (main.css:81) is `flex-wrap:wrap` with 11 items → 162px tall at 390px, and it is
       `position:sticky; top:64px`, so on scroll it overlays page content (the founder's screenshot
       shows it covering a form control).

   ── WHY THESE SPECIFIC RULES ──
   `#topnav` is `height:64px` FIXED. Simply allowing `.topnav-right` to wrap would push its second
   row outside a 64px box and paint over the page, trading a horizontal overflow for a vertical
   overlap. So the header must also be allowed to grow — hence `height:auto` + `min-height`.

   `#subnav` is deliberately left as `flex-wrap:wrap` rather than converted to a horizontal
   scroller. main.css:80 warns that `overflow-x:auto` silently promotes `overflow-y` to `auto`,
   which would CLIP the category dropdowns. Making it `position:static` on phones removes the
   overlay (it then occupies normal flow and pushes content down) without touching overflow at all,
   so no dropdown can be clipped. Taller nav, but nothing hidden and nothing overlapping — the
   stated acceptance bar. A real mobile nav is explicitly out of scope this weekend.

   Breakpoint is 700px, not 652: 652 is exactly where it breaks, so a rule AT the failure point
   leaves no margin. 700 covers every phone in portrait and stays clear of the 768 tablet width
   that already measures clean. ── */
@media (max-width:700px){
  /* Header may grow so a wrapped action row cannot paint over the page. */
  html.mobile-fix header,
  html.mobile-fix #topnav{
    height:auto; min-height:56px; padding:8px 12px;
    flex-wrap:wrap; row-gap:8px; column-gap:8px;
  }
  /* The actual fix: the action cluster wraps instead of forcing a 652px content width. */
  html.mobile-fix .topnav-right{
    flex-wrap:wrap; justify-content:flex-end; gap:6px; min-width:0;
  }
  /* Sticky + 4 wrapped rows = the overlay the founder screenshotted. Normal flow instead. */
  html.mobile-fix #subnav{
    position:static; top:auto; padding:0 8px;
  }
  /* Signup modal: pin to the REAL screen, never to an inflated containing block. Defence in
     depth — with the overflow gone this is already satisfied, but it keeps the campaign's
     signup path safe if any future element re-introduces overflow. */
  html.mobile-fix .suc-overlay{ width:100vw; max-width:100vw; padding:16px; }
  html.mobile-fix .suc-card{ max-width:min(560px, 100vw - 32px); }

  /* SECOND DRIVER, revealed only after the first was fixed. `.ch` (main.css:627) is the card
     header action row — on #pipeline-section it carries Import / Brief Me / Clear all /
     Collapse and, being a nowrap flex row, measured x=168 → right=493 with every ancestor
     `overflow-x:visible`. So once .topnav-right stopped forcing 652, THIS became the element
     setting scrollWidth to 493, and the page still overflowed at both 390 and 430.
     Worth recording: the triage called .topnav-right the SOLE driver, and that was true — but
     only at 652. A single measurement of "the" overflow element is really a measurement of the
     WIDEST one; narrower offenders hide behind it and surface one at a time. Re-measure after
     every fix rather than assuming the list was complete.
     (The Team Hub tabs are NOT a driver despite reaching 753px — `.teamhub-tabs` is
     `overflow-x:auto` (main.css:2166), so they scroll inside their own container. Verified by
     ancestor-aware probing; an earlier naive probe wrongly blamed them.) */
  html.mobile-fix .ch{ flex-wrap:wrap; row-gap:8px; }
}
/* ══ end MOBILE-FIX ══════════════════════════════════════════════════════════════════════════════ */

/* ══ NAV-HAMBURGER (2026-07-18) — PREVIEW, flag-scoped to html.nav-menu ═══════════════════════════
   Layers ON TOP of MOBILE-FIX. Every rule is inside BOTH `html.nav-menu` AND a max-width:651px
   media query, so desktop (>=652px) cannot match a single selector — that is what makes the
   1366px "pixel-identical before/after" guarantee structural rather than hoped for.

   The hamburger button itself is hidden by default and only revealed inside the media query, so
   even with the flag on it can never appear on desktop. */
.navmenu-btn{ display:none; }

@media (max-width:651px){
  /* The link rows go away entirely — that is the point of the pattern. #subnav is the 11-item
     strip that MOBILE-FIX could only un-stick and wrap (4 rows, ~162px of nav above the fold). */
  html.nav-menu #subnav{ display:none; }

  /* Top bar becomes ONE clean row. MOBILE-FIX allowed the action cluster to wrap; with the
     hamburger absorbing the destinations there is far less to fit, so we go back to nowrap
     for a tidy single row. */
  html.nav-menu header,
  html.nav-menu #topnav{ flex-wrap:nowrap; min-height:56px; padding:8px 12px; gap:8px; }
  html.nav-menu .topnav-right{ flex-wrap:nowrap; gap:6px; }

  /* 44px minimum touch target (WCAG 2.5.5 / iOS HIG). */
  html.nav-menu .navmenu-btn{
    display:flex; flex-direction:column; justify-content:center; align-items:center; gap:4px;
    width:44px; height:44px; flex:0 0 44px; padding:0; cursor:pointer;
    background:transparent; border:1px solid rgba(250,232,218,0.18); border-radius:8px;
  }
  html.nav-menu .navmenu-btn span{
    display:block; width:18px; height:2px; border-radius:2px;
    background:rgba(250,232,218,0.85); transition:background .15s;
  }
  html.nav-menu .navmenu-btn:hover span{ background:var(--gold); }
  html.nav-menu .navmenu-btn:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }

  /* Backdrop. Only painted while open, so it cannot intercept taps when closed. */
  html.nav-menu .navmenu-overlay{
    position:fixed; inset:0; z-index:1000; background:rgba(10,10,10,.6);
    opacity:0; pointer-events:none; transition:opacity .22s ease;
    -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
  }
  html.navmenu-open.nav-menu .navmenu-overlay{ opacity:1; pointer-events:auto; }

  /* Slide-in panel. translateX keeps it off-screen when closed WITHOUT contributing to
     document scrollWidth — `right:-86vw` would re-introduce the exact horizontal overflow
     MOBILE-FIX just removed. This is why the closed state is a transform, not an offset. */
  html.nav-menu .navmenu-panel{
    position:fixed; top:0; right:0; bottom:0; z-index:1001;
    width:min(86vw,340px); max-width:100vw;
    background:var(--ink-deep); border-left:1px solid rgba(239,159,39,.28);
    box-shadow:-14px 0 40px rgba(0,0,0,.5);
    transform:translateX(100%); transition:transform .24s ease;
    display:flex; flex-direction:column; overflow-y:auto; -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;                 /* stops scroll chaining to the page behind */
  }
  html.navmenu-open.nav-menu .navmenu-panel{ transform:translateX(0); }

  html.nav-menu .navmenu-head{
    display:flex; align-items:center; justify-content:space-between;
    padding:14px 14px 10px; border-bottom:1px solid rgba(250,232,218,.12); flex:0 0 auto;
  }
  html.nav-menu .navmenu-title{
    font-size:11px; font-weight:800; letter-spacing:2px; text-transform:uppercase; color:var(--gold);
  }
  html.nav-menu .navmenu-close{
    width:44px; height:44px; flex:0 0 44px; display:flex; align-items:center; justify-content:center;
    background:transparent; border:1px solid rgba(250,232,218,.18); border-radius:8px;
    color:rgba(250,232,218,.85); font-size:24px; line-height:1; cursor:pointer; padding:0;
  }
  html.nav-menu .navmenu-close:hover{ color:var(--gold); border-color:rgba(239,159,39,.45); }
  html.nav-menu .navmenu-close:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }

  html.nav-menu .navmenu-list{ display:flex; flex-direction:column; padding:8px 0 20px; }

  /* Rows are cloned desktop nodes, so they arrive carrying desktop layout. Reset hard and
     restate for touch: full-width, >=44px, comfortable hit area. */
  html.nav-menu .navmenu-row{
    display:flex; align-items:center; gap:10px;
    width:100%; min-height:48px; padding:12px 16px; margin:0;
    background:transparent; border:none; border-radius:0;
    font-size:15px; font-weight:600; text-align:left; text-decoration:none;
    color:rgba(250,232,218,.92); cursor:pointer; letter-spacing:.1px;
  }
  html.nav-menu .navmenu-row:hover,
  html.nav-menu .navmenu-row:focus-visible{ background:rgba(239,159,39,.10); color:var(--gold); }
  html.nav-menu .navmenu-row:focus-visible{ outline:2px solid var(--gold); outline-offset:-2px; }
  html.nav-menu .navmenu-row svg{ flex:0 0 auto; width:16px; height:16px; margin-right:0; }
  /* Same 16px slot an icon would occupy, so every label starts on the same x. */
  html.nav-menu .navmenu-icon-spacer{ display:block; flex:0 0 16px; width:16px; height:16px; }
  /* Divider between destinations and the relocated bar controls. */
  html.nav-menu .navmenu-sep{ height:1px; margin:8px 16px; background:rgba(250,232,218,.14); }
  /* Tier badges / Live pills come along in the clone — keep them legible, push them right. */
  html.nav-menu .navmenu-row .snav-tier-badge,
  html.nav-menu .navmenu-row .snav-live-pill{ margin-left:auto; flex:0 0 auto; }

  @media (prefers-reduced-motion: reduce){
    html.nav-menu .navmenu-panel,
    html.nav-menu .navmenu-overlay{ transition:none; }
  }
}

/* ── NAV-HAMBURGER round 2 (2026-07-19): the phone top bar is ONE row ──────────────────────────────
   Founder's iPhone at 440px showed the bar's own contents colliding — wordmark over the icon row,
   tagline through the search/bell/help cluster, Sign in/Sign up squeezed into two-line pills —
   while the chip read "440/440 ok".

   WHY THE OVERFLOW CHECK MISSED IT: scrollWidth === clientWidth says the DOCUMENT is not wider than
   the viewport. It says nothing about STACKING. `.topnav-right` was nowrap, so its items shrank
   below their min-content width and painted over the logo block instead of extending the page.
   Measured before this fix: header 115px tall, 47 colliding pairs at 390 and 59 at 440. Overlap
   detection is now a permanent harness assertion (recon/_navmenu_verify.cjs) precisely because
   "no overflow" provably does not catch this class of bug.

   THE BAR NOW CARRIES ONLY:  [star mark] [Awardly™] [spacer] [Sign in] [☰]
   Everything hidden here is RELOCATED into the ☰ panel by navmenu.js, not removed — the panel's
   utility rows proxy-click these very elements, so their wiring is untouched (which is also why
   they are hidden with display:none rather than deleted: a hidden button still takes .click()). */
@media (max-width:651px){
  html.nav-menu #topnav,
  html.nav-menu header{
    flex-wrap:nowrap; align-items:center; gap:10px;
    min-height:56px; height:auto; padding:6px 12px;
  }

  /* Logo: mark + wordmark only, on one line, allowed to shrink before anything else does. */
  html.nav-menu .logo{ display:flex; align-items:center; gap:9px; min-width:0; flex:0 1 auto; }
  html.nav-menu .lmark{ flex:0 0 auto; }
  html.nav-menu .lmark img{ width:28px; height:28px; display:block; }
  html.nav-menu .ltext{
    font-size:19px; line-height:1.1; white-space:nowrap;
    overflow:hidden; text-overflow:ellipsis;      /* sized to fit rather than colliding */
  }
  /* The two tagline lines are the main colliders — they belong to the desktop bar. */
  html.nav-menu .ltag,
  html.nav-menu .lsub{ display:none; }

  /* Spacer, then the only two controls the bar keeps. */
  html.nav-menu .topnav-right{
    margin-left:auto; flex:0 0 auto; flex-wrap:nowrap; gap:8px; min-width:0;
  }

  /* Relocated into the ☰ panel — hidden, NOT removed, so their handlers stay live for the
     panel's proxy rows. */
  html.nav-menu #topnav-search,
  html.nav-menu #topnav-notifications,
  html.nav-menu #topnav-help,
  html.nav-menu #topnav-aria{ display:none !important; }

  /* Sign in stays (the one action an email recipient needs from the bar); Sign up is the
     SECOND button in #auth-status and moves to the panel — the Try Free CTA already carries
     it in the page body. */
  html.nav-menu #auth-status{ display:flex; align-items:center; gap:8px; flex:0 0 auto; }
  html.nav-menu #auth-status button + button{ display:none !important; }
  html.nav-menu #auth-status button{ white-space:nowrap; }

  /* The avatar is a SIXTH element the spec did not list, and signed out it renders as a
     meaningless dash. It moves to the panel as an Account row rather than being dropped —
     dropping it would strand signed-in phone users with no route to settings or sign-out. */
  html.nav-menu .topnav-avatar-wrap{ display:none !important; }
}
/* ══ end NAV-HAMBURGER ═══════════════════════════════════════════════════════════════════════════ */

/* ══ PROFILE-FIX (2026-07-19) — the wizard step rail at phone width ═══════════════════════════════
   Flag-scoped to html.profile-fix. Flag off → no selector matches.

   THIS IS THE BUG A USER ACTUALLY PHOTOGRAPHED. She reported the brand-theme panel; the panel is
   clean (3002 text nodes measured across 190 combos, 0 word-per-line). What she saw was the step
   rail directly above it: `.pstep-lbl` (main.css:1173) carries `max-width:70px`, and MOBILE-SWEEP-1
   measured 846 of 1140 rail labels wrapping one word per line — "Capability & Capacity" at 45px
   across 3 lines. The cap is width-independent, which is why sweeping viewports never reproduced it.

   WHY NOT JUST RAISE THE CAP: six labels sharing a 390px row get ~65px each. No cap value makes
   "Capability & Capacity" fit six-across on a phone — the space genuinely is not there.

   WHY NOT HIDE THE LABELS ENTIRELY: panes 2, 3, 5 and 6 have no heading of their own, so the rail
   label is the ONLY thing telling the user which step they are on. Hiding all six would trade a
   cosmetic problem for a navigational one.

   SO: show only the ACTIVE label and give it room by widening the active step's flex share
   (3 of 8 ≈ 146px at 390, comfortably one line at 11px). Deliberately kept in normal flow — an
   absolutely-positioned label would be centred on its dot and would run off-screen at steps 1 and 6,
   re-introducing the overflow class this whole pass exists to remove. In flow with min-width:0 it
   can only wrap, never overflow. The wider active step also reads as useful "you are here" emphasis.
   Dots keep position:relative so the ::after connector lines are untouched. */
@media (max-width:700px){
  html.profile-fix .pstep-lbl{ display:none; }
  html.profile-fix .pstep-dot.active .pstep-lbl{
    display:block; max-width:none; font-size:11px; line-height:1.25;
  }
  html.profile-fix .pstep-dot.active{ flex:3 1 0; min-width:0; }
}

/* ══ FEDERAL POSITION REPORT — the acquisition block (#report-offer) ═══════════════════════════
   Sits between #proof and #how. Both neighbours are DARK (--ink and --ink-deep), so this one is
   cream on purpose: three dark bands in a row read as one section, and this is not another
   platform feature — it is a separate thing you can buy without an account. The contrast is the
   signal that the page changed subject.
   ⚠ Registered in FOUR places, see the hide rule near the top of this file. */
.ro{background:var(--cream);padding:3rem 1.25rem;border-top:3px solid var(--gold);}
.ro-inner{max-width:1000px;margin:0 auto;}
.ro-eyebrow{font-size:11px;font-weight:800;letter-spacing:3px;text-transform:uppercase;color:var(--gold-deep);text-align:center;margin-bottom:10px;}
.ro-h{font-family:Georgia,serif;font-size:26px;font-weight:700;color:var(--ink);text-align:center;margin:0 0 10px;line-height:1.25;}
.ro-lede{font-size:15.5px;line-height:1.6;color:var(--ink-mid);text-align:center;max-width:640px;margin:0 auto 26px;}
.ro-parts{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:24px;}
.ro-part{background:var(--white);border:1px solid var(--ink-light);border-radius:var(--r);padding:16px 18px;}
.ro-part h3{font-family:Georgia,serif;font-size:15px;font-weight:700;color:var(--ink);margin:0 0 6px;}
.ro-part p{font-size:13.5px;line-height:1.55;color:var(--ink-mid);margin:0;}
/* ⚠ .ro-terms / .ro-fee-l / .ro-fee / .ro-deliv / .ro-why WERE DELETED HERE (2026-08-21).
   Founder ruling: the homepage block carries no price — that belongs on the report screen, where
   someone is deciding — and the three italic paragraphs were byte-identical to /pricing's, so the
   block sends people onward rather than restating the pricing page. The rules went with their
   markup instead of sitting here unused; dead CSS reads as in-use to whoever comes next.
   The fee styling that still matters lives on .rpt-fee (pricing.html) and .price (report.html). */
.ro-cta{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;align-items:center;}
.ro-btn{display:inline-block;background:linear-gradient(105deg,var(--gold-deep),var(--gold));color:#fff;
        text-decoration:none;font-weight:700;font-size:15px;padding:14px 26px;border-radius:var(--r);}
.ro-btn:hover{background:linear-gradient(105deg,#8B5E00,var(--gold-deep));}
.ro-sample{display:none;font-size:14px;font-weight:600;color:var(--blue);text-decoration:none;
           border:1px solid var(--ink-light);border-radius:var(--r);padding:13px 22px;background:var(--white);}
.ro-sample:hover{border-color:var(--gold);}
.ro-basis{font-size:12px;font-style:italic;color:var(--ink-mid);text-align:center;margin-top:16px;line-height:1.5;}
@media (max-width:640px){
  .ro{padding:2.25rem 1rem;}
  .ro-h{font-size:21px;}
  .ro-cta{flex-direction:column;align-items:stretch;}
  .ro-btn,.ro-sample{text-align:center;}
}

/* ══ POSITION MODEL v1 ══════════════════════════════════════════════════════════════════════════
   Rebuilt against these tokens rather than ported from the React app. The ranked table follows
   .mtg-table's hard-won conventions: fixed layout, explicit column widths, every text cell
   ellipsised AND carrying a title with the full value.
   ⚠ .pm-src is the provenance chip and it is NOT decoration — every displayed figure carries one,
   and a value with no source is never rendered at all (js/portfolio-model.js cell() throws). */
.pm-panel{background:var(--white);border:1.5px solid var(--ink-light);border-radius:var(--r);padding:22px;margin:0 0 28px;}
.pm-heading{font-family:Georgia,serif;font-size:22px;font-weight:700;color:var(--ink);margin-bottom:4px;}
.pm-block-h{font-size:13px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-mid);margin:22px 0 8px;padding-top:14px;border-top:1px solid var(--ink-pale);}
.pm-engine{float:right;font-weight:600;text-transform:none;letter-spacing:0;color:var(--ink-mid);}
.pm-denom{font-size:12px;color:var(--ink-mid);line-height:1.6;margin-bottom:10px;}
.pm-modebar{display:flex;gap:2px;border-bottom:1px solid var(--ink-light);margin-bottom:12px;}
.pm-mode{background:none;border:none;border-bottom:2.5px solid transparent;color:var(--ink-mid);font-weight:700;font-size:13px;padding:8px 14px;cursor:pointer;}
.pm-mode.active{border-bottom-color:var(--gold);color:var(--ink);}
.pm-modehead{font-family:Georgia,serif;font-size:18px;font-weight:700;color:var(--ink);margin-bottom:2px;}
/* the storage notice is rendered in the panel, not a tooltip — losing CFO data on sign-out is not a footnote */
.pm-storage{background:var(--gold-light);border:1px solid var(--gold-mid);border-radius:var(--rs);padding:10px 12px;font-size:12px;line-height:1.6;color:var(--ink);margin:12px 0;}
.pm-linkbtn{background:none;border:none;padding:0;color:var(--blue);font-weight:700;font-size:12px;text-decoration:underline;cursor:pointer;}
.pm-ueis{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
.pm-uei{display:inline-flex;align-items:center;gap:6px;background:var(--ink-pale);border-radius:var(--rs);padding:4px 8px;font-family:var(--font-mono);font-size:12px;}
.pm-uei button{background:none;border:none;cursor:pointer;color:var(--ink-mid);font-size:14px;line-height:1;padding:0;}
.pm-uei-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.pm-uei-add input{font-family:var(--font-mono);font-size:12px;padding:7px 9px;border:1px solid var(--ink-light);border-radius:var(--rs);text-transform:uppercase;width:190px;}
.pm-err{font-size:12px;color:var(--red);font-weight:600;}
.pm-intake-row{display:grid;grid-template-columns:1fr 1.6fr auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--ink-pale);}
.pm-intake-name{font-size:13px;font-weight:700;color:var(--ink);}
.pm-count{font-weight:600;color:var(--ink-mid);margin-left:8px;font-size:11px;}
.pm-intake-cols{font-size:11px;color:var(--ink-mid);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* ⚠ SPANS THE WHOLE ROW ON ITS OWN LINE. .pm-intake-row is a 3-column grid (1fr 1.6fr auto);
   adding a 4th child would have dropped it into column 1 of a new implicit row, under the label. */
/* The rows themselves. They had no surface at all before 2026-08-22: intake printed a count and
   the only row renderer sat behind the entitlement gate, so an imported table looked empty. */
.pm-rows-wrap{grid-column:1/-1;overflow-x:auto;margin:6px 0 2px;}
.pm-rows{border-collapse:collapse;font-size:11.5px;width:100%;min-width:520px;}
.pm-rows th{text-align:left;font-weight:700;color:var(--ink-mid);padding:4px 10px 4px 0;
  border-bottom:1px solid var(--ink-pale);white-space:nowrap;font-family:var(--font-mono);}
.pm-rows td{padding:4px 10px 4px 0;border-bottom:1px solid var(--ink-pale);color:var(--ink);vertical-align:top;}
/* Shown only when a file is genuinely thin against this schema - a line on every import
   is a line nobody reads. */
.pm-imp-thin{display:block;margin-top:5px;color:var(--ink);font-size:11.5px;line-height:1.6;}
.pm-cell-absent{color:var(--ink-light);}
.pm-intake-feed{grid-column:1/-1;font-size:11.5px;color:var(--ink-mid);line-height:1.6;padding-top:2px;}
.pm-award{border:1px solid var(--ink-pale);border-left:3px solid var(--gold);border-radius:var(--rs);
  padding:11px 13px;margin:12px 0;font-size:12.5px;line-height:1.7;color:var(--ink);}
.pm-award .pm-imp-map{display:block;margin-top:5px;}
.pm-import input{display:none;}
.pm-import span{display:inline-block;font-size:12px;font-weight:700;color:var(--blue);border:1px solid var(--ink-light);border-radius:var(--rs);padding:6px 12px;cursor:pointer;white-space:nowrap;}
.pm-import span:hover{border-color:var(--gold);}
.pm-weights{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 18px;}
.pm-weight{display:grid;grid-template-columns:1fr 100px 32px;gap:8px;align-items:center;font-size:12px;color:var(--ink);}
.pm-weight output{font-family:var(--font-mono);font-size:12px;color:var(--ink-mid);text-align:right;}
.pm-table-wrap{overflow-x:auto;}
.pm-table{width:100%;min-width:640px;border-collapse:collapse;table-layout:fixed;font-size:12.5px;}
.pm-table th{text-align:left;font-size:10.5px;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-mid);border-bottom:1.5px solid var(--ink-light);padding:7px 8px;}
.pm-table td{padding:7px 8px;border-bottom:1px solid var(--ink-pale);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pm-c-rank{width:7%;} .pm-c-name{width:38%;} .pm-c-num{width:16%;text-align:right;font-variant-numeric:tabular-nums;} .pm-c-src{width:7%;text-align:center;}
.pm-table th.pm-c-num{text-align:right;}
/* absent is rendered as absent — never as zero, which would read as a measurement */
.pm-absent{color:var(--ink-light);font-style:italic;}
.pm-src{display:inline-block;min-width:15px;text-align:center;font-size:9.5px;font-weight:800;line-height:15px;border-radius:3px;vertical-align:1px;}
.pm-src-award-record{background:var(--green-light);color:var(--green);}
.pm-src-opportunity-record{background:var(--blue-light);color:var(--blue);}
.pm-src-user{background:var(--ink-pale);color:var(--ink-mid);}
.pm-excluded{background:var(--red-light);border-left:3px solid var(--red);padding:9px 11px;font-size:12px;line-height:1.6;color:var(--ink);border-radius:var(--rs);margin-bottom:10px;}
.pm-unscored{margin-top:12px;font-size:12px;line-height:1.6;color:var(--ink-mid);}
.pm-unscored ul{margin:6px 0 0 18px;}
.pm-legend{margin-top:18px;padding-top:12px;border-top:1px solid var(--ink-pale);font-size:11.5px;color:var(--ink-mid);line-height:1.7;}
@media(max-width:720px){
  .pm-intake-row{grid-template-columns:1fr;}
  .pm-weight{grid-template-columns:1fr 80px 30px;}
}

/* Portfolio Model — the non-purchaser state (PRICING-ZENOBIA-1). It is a separately purchased
   engagement, so the default surface at every tier is this, not the model. */
.pm-upsell{max-width:640px;margin:14px 0 4px;font-size:13.5px;line-height:1.7;color:var(--ink);}
.pm-upsell p{margin:0 0 12px;}
.pm-upsell-proof{color:var(--ink-mid);border-left:3px solid var(--gold);padding-left:12px;}
.pm-upsell-buy{font-weight:700;color:var(--ink);}
.pm-upsell-buy a{color:var(--blue);text-decoration:none;}
.pm-upsell-buy a:hover{text-decoration:underline;}
.pm-soon{font-family:Georgia,serif;font-size:17px;font-weight:700;color:var(--gold-deep);margin:0 0 10px;}
/* Import result. Rendered ALWAYS, success or failure - the absence of this panel is what let a
   silent no-op and then a throw-on-attach both reach a user with no message. */
.pm-import-result{border-radius:var(--rs);padding:10px 12px;margin:12px 0;font-size:12.5px;line-height:1.65;}
.pm-imp-ok{background:var(--green-light);border-left:3px solid var(--green);color:var(--ink);}
.pm-imp-bad{background:var(--red-light);border-left:3px solid var(--red);color:var(--ink);}
.pm-imp-map{color:var(--ink-mid);font-size:11.5px;}
.pm-demo{margin-top:10px;padding-top:10px;border-top:1px dashed var(--ink-light);font-size:12px;}
