/* ============================================================
   FEATURE LINES — index2 experiment (#agents section only)
   The raised card boxes around each feature (video + text/quote)
   are replaced with a drafting-table grid: dashed hairlines (same
   stroke as the hero trustband) run in from the left viewport
   edge and terminate on a dashed vertical rail at the feature
   column's right edge. The chat pane to the right sits outside
   the grid and is untouched. Pixel-plus markers pin every
   intersection; the grid closes on the brand pixel star.
   Loaded after unify.css — overrides its card-box styling.
   ============================================================ */

.framer-PKhsd{
  --fl-rule:rgba(33,26,20,.30);
  --fl-rule-soft:rgba(33,26,20,.18);
  --fl-pad:48px; /* right inset between cell content and the rail */
  --fl-plus:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path fill="%23211a14" fill-opacity=".5" d="M3 0h1v7H3zM0 3h7v1H0z"/></svg>');
  --fl-plus-soft:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path fill="%23211a14" fill-opacity=".3" d="M3 0h1v7H3zM0 3h7v1H0z"/></svg>');
  --fl-star:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path fill="%23d83a12" d="M3 0h1v2H3zM2 2h3v1H2zM0 3h7v1H0zM2 4h3v1H2zM3 5h1v2H3z"/></svg>');
}

/* the section wrapper clips by default — let the rules bleed to the
   viewport edge (.mv-sections overflow-x:clip catches them there) */
.framer-PKhsd .framer-1psahvp{overflow:visible!important}

/* ── table column: rows touch so the rules read as one ruled surface ── */
.framer-PKhsd .framer-10i0o7{gap:0!important}

/* closing rule at the very bottom of the grid — ends on the brand star */
.framer-PKhsd .framer-10i0o7::after{
  content:"";position:absolute;left:-100vw;right:-13px;bottom:-7px;height:13px;
  z-index:4;pointer-events:none;
  background-image:var(--fl-star),
    repeating-linear-gradient(90deg,var(--fl-rule) 0 4px,transparent 4px 9px);
  background-repeat:no-repeat,repeat-x;
  background-position:right 6px top 50%,left top 6px;
  background-size:13px 13px,9px 1px;
  image-rendering:pixelated;
}

/* ── de-box the feature cards ── */
.framer-PKhsd .framer-16hbs57,
.framer-PKhsd .framer-11596mk,
.framer-PKhsd .framer-nv2ev6,
.framer-PKhsd .framer-efx4pb,
.framer-PkSaB .framer-1mmise4{
  background-color:transparent!important;
  --border-color:transparent!important;
  border-radius:0!important;
  box-shadow:none!important;
  height:auto!important;
  padding:56px var(--fl-pad) 64px 0!important;
  gap:0!important;
}
.framer-PkSaB.framer-g0q2rs{height:auto!important}

/* row rule at the top of each feature — bleeds in from the left,
   overshoots the rail, plus-marker pinned on the rail */
.framer-PKhsd .framer-16hbs57::before,
.framer-PKhsd .framer-11596mk::before,
.framer-PKhsd .framer-nv2ev6::before,
.framer-PKhsd .framer-efx4pb::before,
.framer-PkSaB .framer-1mmise4::before{
  content:"";position:absolute;top:-7px;left:-100vw;right:-13px;height:13px;
  z-index:4;pointer-events:none;
  background-image:var(--fl-plus),
    repeating-linear-gradient(90deg,var(--fl-rule) 0 4px,transparent 4px 9px);
  background-repeat:no-repeat,repeat-x;
  background-position:right 6px top 50%,left top 6px;
  background-size:13px 13px,9px 1px;
  image-rendering:pixelated;
}

/* vertical rail segment on each card's right edge — replaces the Framer
   data-border ::after (the box border those pseudos drew is gone anyway).
   Stacked cards with gap:0 make one continuous dashed rail that stops
   before the chat pane. */
.framer-PKhsd .framer-16hbs57::after,
.framer-PKhsd .framer-11596mk::after,
.framer-PKhsd .framer-nv2ev6::after,
.framer-PKhsd .framer-efx4pb::after,
.framer-PkSaB .framer-1mmise4::after{
  content:"";border:none;box-sizing:border-box;pointer-events:none;
  position:absolute;top:0;left:auto;right:0;width:1px;height:100%;
  background:repeating-linear-gradient(180deg,var(--fl-rule) 0 4px,transparent 4px 9px);
}
/* first card: rail overshoots above the opening rule */
.framer-PKhsd .framer-16hbs57::after{top:-14px;height:calc(100% + 14px)}
/* last card: rail overshoots past the closing rule */
.framer-PkSaB .framer-1mmise4::after{height:calc(100% + 14px)}
@media (max-width:809.98px){
  .framer-PKhsd .framer-efx4pb::after{height:calc(100% + 14px)}
}

/* ── media wells: square drafting cells instead of rounded insets ── */
.framer-PKhsd .framer-1g1ma8g,
.framer-PKhsd .framer-17cygph,
.framer-PKhsd .framer-s46uf,
.framer-PkSaB .framer-1ywvyej{
  flex:none!important;
  width:100%;
  height:auto!important;
  aspect-ratio:16/9;
  border-radius:0!important;
  corner-shape:unset!important;
  background-color:var(--paper-inset,#f4f1ea)!important;
  box-shadow:none!important;
  outline:1px solid rgba(33,26,20,.14);
  outline-offset:-1px;
  overflow:hidden!important;
}
.framer-p36991 .u-demo-video{border-radius:0}

/* ── text/quote row: its own cell under a soft separator rule ── */
.framer-PKhsd div.framer-kj4vlm,
.framer-PKhsd div.framer-bthuc5,
.framer-PKhsd div.framer-137dhb5,
.framer-PkSaB div.framer-d3ggdi{
  position:relative;
  width:100%;
  margin-top:36px;
  padding:32px 0 0 0!important;
  overflow:visible!important;
}
.framer-PKhsd div.framer-kj4vlm::before,
.framer-PKhsd div.framer-bthuc5::before,
.framer-PKhsd div.framer-137dhb5::before,
.framer-PkSaB div.framer-d3ggdi::before{
  content:"";position:absolute;top:-7px;left:-100vw;
  right:calc(-1 * var(--fl-pad) - 13px);height:13px;
  z-index:4;pointer-events:none;
  background-image:var(--fl-plus-soft),
    repeating-linear-gradient(90deg,var(--fl-rule-soft) 0 4px,transparent 4px 9px);
  background-repeat:no-repeat,repeat-x;
  background-position:right 6px top 50%,left top 6px;
  background-size:13px 13px,9px 1px;
  image-rendering:pixelated;
}

/* quote column becomes a full-height cell behind a dashed divider */
@media (min-width:810px){
  .framer-PKhsd .framer-kj4vlm .mv-feat-quote,
  .framer-PKhsd .framer-bthuc5 .mv-feat-quote,
  .framer-PKhsd .framer-137dhb5 .mv-feat-quote,
  .framer-PkSaB .framer-d3ggdi .mv-feat-quote{
    align-self:stretch;
    justify-content:flex-end;
    padding-left:28px;
    background:repeating-linear-gradient(180deg,var(--fl-rule-soft) 0 4px,transparent 4px 9px) left top/1px 100% no-repeat;
  }
}

/* ── breakpoints ── */
@media (max-width:1199.98px){
  .framer-PKhsd{--fl-pad:40px}
  /* phone/tablet visuals inside the cards: square them too */
  .framer-PKhsd .framer-fkayhg,
  .framer-PKhsd .framer-igszz5,
  .framer-PKhsd .framer-1k4t5g8,
  .framer-PKhsd .framer-1s6q07n{
    border-radius:0!important;
    outline:1px solid rgba(33,26,20,.14);
    outline-offset:-1px;
  }
  .framer-PKhsd .framer-16hbs57,
  .framer-PKhsd .framer-11596mk,
  .framer-PKhsd .framer-nv2ev6,
  .framer-PKhsd .framer-efx4pb,
  .framer-PkSaB .framer-1mmise4{padding:48px var(--fl-pad) 56px 0!important}
}
@media (max-width:809.98px){
  .framer-PKhsd{--fl-pad:20px}
  .framer-PKhsd .framer-16hbs57,
  .framer-PKhsd .framer-11596mk,
  .framer-PKhsd .framer-nv2ev6,
  .framer-PKhsd .framer-efx4pb,
  .framer-PkSaB .framer-1mmise4{padding:40px var(--fl-pad) 48px 0!important}
  .framer-PKhsd div.framer-kj4vlm,
  .framer-PKhsd div.framer-bthuc5,
  .framer-PKhsd div.framer-137dhb5,
  .framer-PkSaB div.framer-d3ggdi{margin-top:24px;padding-top:24px!important}
  .framer-PKhsd .mv-feat-quote{
    margin-top:20px;padding-left:20px;
    background:repeating-linear-gradient(180deg,var(--fl-rule-soft) 0 4px,transparent 4px 9px) left top/1px 100% no-repeat;
  }
}

/* ============================================================
   PART 2 — THE WORKSHEET (whole-page line system, index2 only)
   One continuous drafting sheet from the trustband to the
   footer: two dashed rails at the content edges, a full-width
   dashed boundary rule opening every section (.lg-rule, real
   elements inserted in index2.html) with pixel-plus markers
   pinned where it crosses the rails. Ruled sections replace
   their card boxes with table cells. The channel runs light-
   on-ink through the FAQ band and closes on two gold pixel
   stars; the ember CTA slab below stays un-ruled on purpose.
   Buttons and pills stay soft — controls sit ON the sheet.
   ============================================================ */

html{overflow-x:clip}

:root{
  --lg-inset:124px;                       /* rail inset — matches .css-t1wuou metric */
  --lg-rule-c:rgba(33,26,20,.30);
  --lg-soft-c:rgba(33,26,20,.16);
  --lg-rule-d:rgba(247,244,239,.25);      /* dark-band variant */
  --lg-plus:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path fill="%23211a14" fill-opacity=".5" d="M3 0h1v7H3zM0 3h7v1H0z"/></svg>');
  --lg-star-gold:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path fill="%23d83a12" d="M3 0h1v2H3zM2 2h3v1H2zM0 3h7v1H0zM2 4h3v1H2zM3 5h1v2H3z"/></svg>');
  --lg-l:calc(max(0px,(100% - 1512px)/2) + var(--lg-inset) - 6.5px);
}
@media (max-width:1199.98px){:root{--lg-inset:64px}}

/* ── section boundary rule: full width of its wrapper, markers on the rails ── */
.lg-rule{
  position:relative;width:100%;height:13px;flex:none;align-self:stretch;
  pointer-events:none;
  background:repeating-linear-gradient(90deg,var(--lg-rule-c) 0 4px,transparent 4px 9px) left top 6px/9px 1px repeat-x;
}
.lg-rule::before,.lg-rule::after{
  content:"";position:absolute;top:0;width:13px;height:13px;
  background:var(--lg-plus) center/contain no-repeat;image-rendering:pixelated;
}
.lg-rule::before{left:var(--lg-l)}
.lg-rule::after{right:var(--lg-l)}
@media (max-width:809.98px){
  .lg-rule::before,.lg-rule::after{display:none}
}

/* ── the rails: dashed verticals on every full-width band wrapper ──
   The hero and the #canvas band joined the grid 07-14: the page is
   one continuous channel from the rule under the nav to the FAQ,
   Profound-style — nothing bleeds to the viewport edges anymore. */
.mv-ui.mv-library,.mv-sections,.mv-base #faq{position:relative}
.dpf2-hero-orbit.dho-v3::before,.dpf2-hero-orbit.dho-v3::after,
.mv-canvas::before,.mv-canvas::after,
.mv-ui.mv-library::before,.mv-ui.mv-library::after,
.framer-p36991::before,.framer-p36991::after,
.mv-sections::before,.mv-sections::after,
.mv-base #faq::before,.mv-base #faq::after{
  content:"";position:absolute;top:0;bottom:0;width:13px;z-index:3;pointer-events:none;
  background:repeating-linear-gradient(180deg,var(--lg-rule-c) 0 4px,transparent 4px 9px) center top/1px 100% no-repeat;
}
.dpf2-hero-orbit.dho-v3::before,.mv-canvas::before,
.mv-ui.mv-library::before,.framer-p36991::before,.mv-sections::before,.mv-base #faq::before{left:var(--lg-l)}
.dpf2-hero-orbit.dho-v3::after,.mv-canvas::after,
.mv-ui.mv-library::after,.framer-p36991::after,.mv-sections::after,.mv-base #faq::after{right:var(--lg-l)}

/* agents section is padded 20px, not full-width-aligned: compensate */
.framer-p36991::before{left:calc(var(--lg-l) - 0px)}

/* the hero band's rails (hero copy → trustband → #canvas, one band —
   the canvas's own rails are display:none below) draw SOLID: the
   opening rectangle reads as a finished frame, the dashed channel
   starts at the sections below */
.dpf2-hero-orbit.dho-v3::before,
.dpf2-hero-orbit.dho-v3::after{
  background:linear-gradient(180deg,var(--lg-rule-c),var(--lg-rule-c)) center top/1px 100% no-repeat;
}

/* rails run light through the dark FAQ band and close on gold stars */
.mv-base #faq::before,.mv-base #faq::after{
  background:
    var(--lg-star-gold) center bottom 24px/13px 13px no-repeat,
    repeating-linear-gradient(180deg,var(--lg-rule-d) 0 4px,transparent 4px 9px) center top/1px calc(100% - 44px) no-repeat;
  image-rendering:pixelated;
}

@media (max-width:809.98px){
  .dpf2-hero-orbit.dho-v3::before,.dpf2-hero-orbit.dho-v3::after,
  .mv-canvas::before,.mv-canvas::after,
  .mv-ui.mv-library::before,.mv-ui.mv-library::after,
  .framer-p36991::before,.framer-p36991::after,
  .mv-sections::before,.mv-sections::after,
  .mv-base #faq::before,.mv-base #faq::after{display:none}
}

/* ── hero copy: the globe's ring lines must not run through the words.
   Same-color halos behind each text block — invisible rectangles on the
   flat ground with a soft blurred falloff, so the rings dissolve before
   they reach the glyphs but still show in the air between the lines ── */
.dho-v3 .dho3-line,
.dho-v3 .dho-sub{
  background:var(--dho-halo,#f7f4ef);
  box-shadow:0 0 18px 14px var(--dho-halo,#f7f4ef);
  border-radius:12px;
}
html[data-theme="dark"] .dpf2-hero-orbit{--dho-halo:#14100c}

/* ── hero trustband: close the hero with the same dashed stroke ── */
.dho-v3 .dho2-trustband{border-bottom:1px dashed rgba(33,26,20,.25)}

/* ── hero joins the channel: globe clipped to the rectangle between
   the rails instead of bleeding to the viewport edges ── */
/* the channel hangs off the nav (Profound-style): bare page ground
   between the header and the band's first rule, snug below */
main > .lg-rule:first-child{margin:48px 0 0}
@media (max-width:809.98px){
  main > .lg-rule:first-child{margin:32px 0 0}
}
.mv-canvas + .lg-rule,.dpf2-hero-orbit + .lg-rule{margin:0}
/* the canvas band joined the hero (07-14): the hero's rails span the
   whole band now, so the canvas's own rails would double-draw — off */
.dpf2-hero-orbit .mv-canvas::before,
.dpf2-hero-orbit .mv-canvas::after{display:none}
@media (min-width:810px){
  .dho-v3 .dho3-viewport{
    margin-inline:calc(var(--lg-l) + 7px);
    overflow:clip;
  }
  .dho-v3 .dho2-trustband{padding:26px calc(var(--lg-l) + 39px)}
}

/* ── hero rectangle (Profound-style): the copy band is content-sized,
   not a full screen — the globe-hero-v3 100vh viewport is flattened so
   the canvas below peeks above the fold, and the intra-copy air
   tightens to match. (Kept here rather than globe-hero-v3.css from
   when the old index.html shared that file with its full-screen hero;
   the worksheet page replaced it at root 2026-07-15.) ── */
.dho-v3 .dho3-viewport{
  min-height:0;
  padding:68px 32px 76px;
}
.dho-v3 .dho3-line--2{margin-top:clamp(28px,5vh,48px)}
.dho-v3 .dho-sub{margin:clamp(24px,4vh,40px) 0 30px}
@media (max-width:809.98px){
  .dho-v3 .dho3-viewport{padding:72px 20px 64px}
}

/* ── canvas etched into the channel (Profound-style): the window is
   not a card floating in the band — it spans rail to rail, flush
   under the trustband, square corners, no shadow: the channel's own
   strokes are its frame. Exact-fit scale: tan(atan2()) casts the
   channel width (100cqw of the padded container) to the unitless
   ratio the 1200px fixed design needs. The trig override MUST stay
   inside the @supports gate: a custom property parses in every
   browser, so without the gate it wins the cascade even where the
   engine can't evaluate it (Firefox can't resolve cqw inside
   atan2), goes invalid-at-computed-value-time in the width/height/
   transform that consume it, and the unscaled 1200×680 window
   bursts out of the band (prod bug 2026-07-19). Gated, those
   browsers keep canvas-audit.css's stepped --cva-s. Mobile
   (<810px, rails hidden) keeps the floating-card presentation. ── */
@media (min-width:810px){
  .dpf2-hero-orbit .mv-canvas{
    padding:0 calc(var(--lg-l) + 7px);
    container-type:inline-size;
  }
  @supports (width:calc(1px * tan(atan2(100cqw,1200px)))){
    .dpf2-hero-orbit .mv-canvas{--cva-s:tan(atan2(100cqw,1200px))}
  }
  /* window border sits on the trustband's border-bottom, not under it */
  .dpf2-hero-orbit .cva-fit{margin-top:-1px}
  .dpf2-hero-orbit .cva-win{border-radius:0;box-shadow:none}
  /* the band's old padding-bottom used to give the caption air above
     the closing rule — the caption owns that space now */
  .dpf2-hero-orbit .mvc-caption{margin-bottom:56px}
}

/* ── channel alignment: bring every container onto the same metric ── */
@media (min-width:1200px){
  .framer-PKhsd .framer-aq84pi,
  .framer-PKhsd .framer-bc5yxf{max-width:min(1264px,calc(100% - 208px))}
  .mv-sections .mv-proof{max-width:1512px;padding:0 124px}
}
@media (min-width:810px) and (max-width:1199.98px){
  .framer-PKhsd .framer-aq84pi,
  .framer-PKhsd .framer-bc5yxf{max-width:min(1264px,calc(100% - 88px))}
  .mv-sections .mv-proof{max-width:1512px;padding:0 64px}
}

/* ── platform (#platform): 3×2 screenshot grid becomes a ruled table ── */
.mv-sections .css-1gzsdyh{gap:0}
.mv-sections .css-1gzsdyh > .css-klisov{
  border-left:1px dashed var(--lg-soft-c);
  border-top:1px dashed var(--lg-soft-c);
  padding:40px 32px 44px 40px;
}
@media (min-width:1200px){
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(3n+1){border-left:none}
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(-n+3){border-top:none;padding-top:0}
}
@media (min-width:810px) and (max-width:1199.98px){
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(2n+1){border-left:none}
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(-n+2){border-top:none;padding-top:0}
}
@media (max-width:809.98px){
  .mv-sections .css-1gzsdyh > .css-klisov{border-left:none;padding:32px 0 8px}
  .mv-sections .css-1gzsdyh > .css-klisov:first-child{border-top:none;padding-top:0}
}
/* de-box the screenshot wells */
.mv-sections .css-1n1s56s{background-color:transparent;border:none;border-radius:0}

/* ── shift (#shift): the three counter-stats read as one ruled row ── */
.mv-sections .css-1u7v73t{grid-template-columns:repeat(3,1fr);column-gap:0}
.mv-sections .css-1u7v73t > *{border-left:1px dashed var(--lg-soft-c);padding:8px 24px 12px var(--lg-gutter)}
.mv-sections .css-1u7v73t > *:first-child{border-left:none;padding-left:0}
@media (max-width:809.98px){
  .mv-sections .css-1u7v73t{grid-template-columns:1fr}
  .mv-sections .css-1u7v73t > *{border-left:none;border-top:1px dashed var(--lg-soft-c);padding:24px 0}
  .mv-sections .css-1u7v73t > *:first-child{border-top:none;padding-top:0}
}

/* ── personas: the list becomes a ledger — dashed row separators ── */
.mv-sections [data-persona]{border-top:1px dashed var(--lg-soft-c)}
.mv-sections [data-persona]:last-child{border-bottom:1px dashed var(--lg-soft-c)}
.mv-sections [data-persona] .css-ph3dvh{padding:14px 0}

/* ── proof: stat cards → ruled cells (ember + ink stay filled), voices slab goes dashed ── */
.mv-sections .mv-proof-cards{gap:0}
.mv-sections .mv-proof-card{
  border-radius:0;border:1px dashed transparent;border-left-color:var(--lg-soft-c);
  background:transparent;padding:28px 24px;
}
.mv-sections .mv-proof-card:first-child{border-left-color:transparent}
.mv-sections .mv-proof-card:not(.is-ember):not(.is-ink):first-child{padding-left:0}
.mv-sections .mv-proof-card.is-ember{background:#d83a12;border-color:transparent}
.mv-sections .mv-proof-card.is-ink{background:#211a14;border-color:transparent}
@media (max-width:809.98px){
  .mv-sections .mv-proof-card{border-left-color:var(--lg-soft-c)}
  .mv-sections .mv-proof-card:not(.is-ember):not(.is-ink){padding-left:20px}
}

.mv-sections .mv-proof-voices{border:1px dashed var(--lg-rule-c);border-radius:0;overflow:visible;position:relative}
.mv-sections .mv-proof-voices::before,.mv-sections .mv-proof-voices::after{
  content:"";position:absolute;top:-7px;width:13px;height:13px;z-index:4;
  background:var(--lg-plus) center/contain no-repeat;image-rendering:pixelated;
}
.mv-sections .mv-proof-voices::before{left:-7px}
.mv-sections .mv-proof-voices::after{right:-7px}
.mv-sections .mv-proof-slides{overflow:hidden}
.mv-sections .mv-proof-slide-left{border-right:1px dashed var(--lg-soft-c)}
.mv-sections .mv-proof-tabs{border-top:1px dashed var(--lg-rule-c)}
.mv-sections .mv-proof-tab{border-left:1px dashed var(--lg-soft-c)}
@media (max-width:809.98px){
  .mv-sections .mv-proof-tab:nth-child(n+3){border-top:1px dashed var(--lg-soft-c)}
}

/* ── FAQ (dark band): dashed light rows ── */
.mv-base #faq [data-faq]{border-bottom:1px dashed var(--lg-rule-d)}

/* platform screenshot wells: finish the de-box (unify adds shadow-card,
   12px padding and 16px image radius) — square drafting cells instead */
.mv-sections .css-1n1s56s{box-shadow:none;padding:0}
.mv-sections .css-1n1s56s img{
  border-radius:0;
  outline:1px solid rgba(33,26,20,.14);outline-offset:-1px;
}

/* ============================================================
   PART 3 — polish pass: gutters + snug boundaries
   Content never touches the rails: a consistent gutter insets
   prose from the channel edges. Media and table frames may sit
   flush; text may not.
   ============================================================ */

:root{--lg-gutter:48px}
@media (max-width:1199.98px){:root{--lg-gutter:28px}}

/* agents: header + feature text rows breathe off the left rail */
@media (min-width:810px){
  .framer-PKhsd .framer-bc5yxf{
    padding-left:var(--lg-gutter);padding-right:var(--lg-gutter);
    box-sizing:border-box;
  }
  .framer-PKhsd div.framer-kj4vlm,
  .framer-PKhsd div.framer-bthuc5,
  .framer-PKhsd div.framer-137dhb5,
  .framer-PkSaB div.framer-d3ggdi{padding-left:var(--lg-gutter)!important}
  /* chat pane floats just inside the right rail */
  .framer-PKhsd .framer-aq84pi{padding-right:24px;box-sizing:border-box}
}

/* platform: every cell keeps equal inner padding (no rail-hugging first
   column) and the section header sits off the rail */
@media (min-width:810px){
  .mv-sections .css-1gzsdyh > .css-klisov{padding:40px var(--lg-gutter) 44px}
}


/* shift + personas + brand-brain + CTA containers: unify.css already pins
   them to the channel (max-width:1264, padding-inline:32) — the 32px is
   the gutter; no extra inset needed. */
@media (min-width:810px){
  .mv-sections .css-1u7v73t > *:first-child{padding-left:0}
}

/* proof: every stat cell keeps inner padding — no rail-hugging text */
.mv-sections .mv-proof-card:not(.is-ember):not(.is-ink):first-child{padding-left:24px}
@media (max-width:809.98px){
  .mv-sections .mv-proof-card:not(.is-ember):not(.is-ink){padding-left:20px}
}


/* ── snug boundaries: uniform band rhythm around every rule ──
   Space above/below a boundary comes from the rule itself; the
   sections' own 192px margins are neutralized so bands read as
   content → 128 → rule → 112 → next title. */
.lg-rule{margin:128px 0 112px}
.lg-rule + *{margin-top:0!important}
@media (max-width:809.98px){
  .lg-rule{margin:64px 0 56px}
}
/* agents carried its own 160px bottom padding — the rule owns that space now */
.framer-PKhsd .framer-p36991{padding-bottom:24px!important}
/* the section wrappers' own vertical padding predates the rules — the
   lg-rule margins own the band rhythm now */
.mv-sections{padding-top:0!important;padding-bottom:0!important}
/* library ("while you slept") + agents section paddings: the rule margins
   own the boundary space, so these intrinsic paddings shrink */
.mv-ui.mv-library .framer-196cvtj{padding-bottom:24px!important}
.framer-PKhsd .framer-p36991{padding-top:40px!important}
/* closing CTA band: its trailing padding doubled the rule margin */
.mv-sections .css-1y9l2ec{padding-bottom:16px!important}

/* ============================================================
   PART 4 — snug + worksheet coherence pass
   Tighter rhythm (the lines carry the structure, so whitespace
   stops doing that job), seam artifacts removed, chat panel
   redrawn in the sheet's language, rail gaps bridged, header
   joins the grid.
   ============================================================ */

/* tighter global rhythm */
.lg-rule{margin:96px 0 72px}
@media (max-width:809.98px){.lg-rule{margin:48px 0 40px}}
:root{--lg-gutter:32px}
@media (max-width:1199.98px){:root{--lg-gutter:20px}}

/* dotted seam decorations are artifacts of the old design */
.dho-stitch--seam{display:none!important}

/* the sticky header sits on the same grid — dashed base line */
header.nv-root{border-bottom:1px dashed rgba(33,26,20,.25)}

/* agents: no closing rule — the next section's boundary already draws it */
.framer-PKhsd .framer-10i0o7::after{content:none}
.framer-PkSaB .framer-1mmise4::after{height:100%}
@media (max-width:809.98px){
  .framer-PKhsd .framer-efx4pb::after{height:100%}
}

/* tighter section interiors */
.mv-sections .css-t1wuou{gap:56px}
.mv-sections .css-wd3a5f{gap:56px}
.framer-PKhsd .framer-p36991{padding-top:16px!important}
.framer-PKhsd .framer-16hbs57,
.framer-PKhsd .framer-11596mk,
.framer-PKhsd .framer-nv2ev6,
.framer-PKhsd .framer-efx4pb,
.framer-PkSaB .framer-1mmise4{padding-top:44px!important;padding-bottom:52px!important}
.framer-PKhsd div.framer-kj4vlm,
.framer-PKhsd div.framer-bthuc5,
.framer-PKhsd div.framer-137dhb5,
.framer-PkSaB div.framer-d3ggdi{margin-top:28px;padding-top:28px!important}
@media (min-width:810px){
  .mv-base #faq > div{padding-top:72px;padding-bottom:72px}
}

/* bridge the rail gaps at the two boundaries that sit between rail hosts
   (library → agents inside <main>, CTA → FAQ inside .mv-base): the rule's
   own markers stretch into rail stubs spanning the rule margins */
main.framer-1xjqbme > .lg-rule::before,
main.framer-1xjqbme > .lg-rule::after,
.mv-base > .lg-rule::before,
.mv-base > .lg-rule::after{
  top:-96px;bottom:-72px;height:auto;
  background:
    var(--lg-plus) center top 96px/13px 13px no-repeat,
    repeating-linear-gradient(180deg,var(--lg-rule-c) 0 4px,transparent 4px 9px) center top/1px 100% no-repeat;
  image-rendering:pixelated;
}

/* ── chat panel: redrawn as a sheet fixture — square, dashed frame,
      pinned corners, flush against the right rail ── */
.framer-PKhsd .framer-aq84pi{padding-right:0}
.framer-XhG7C.framer-o3jmk3{
  background-color:var(--paper,#f7f4ef)!important;
  border-radius:0!important;
  box-shadow:none!important;
  --border-color:rgba(33,26,20,.30)!important;
  --border-style:dashed!important;
}
.framer-XhG7C.framer-o3jmk3::before{
  content:"";position:absolute;inset:-7px;z-index:4;pointer-events:none;
  background-image:var(--lg-plus),var(--lg-plus),var(--lg-plus),var(--lg-plus);
  background-repeat:no-repeat;
  background-position:left top,right top,left bottom,right bottom;
  background-size:13px 13px;
  image-rendering:pixelated;
}
.framer-XhG7C .u-winhead{border-bottom:1px dashed rgba(33,26,20,.18)}
.u-agents-rail{border-top:1px dashed rgba(33,26,20,.18)}
.framer-oosF9.framer-oollii{border-radius:6px!important}
.framer-XhG7C .framer-1c3nizm{border-radius:10px 10px 4px 10px!important}
/* panel rides above the section rail — its own dashed edge continues the line */
.framer-PKhsd .framer-4w0zd9{z-index:5}

/* ============================================================
   PART 5 — solid-line band + fixes
   Profound mixes strokes: dashed for the page channel, SOLID
   hairlines for boxed bands. The platform grid becomes a solid
   boxed table; the chat panel frame goes solid; quote
   attributions get a pixel avatar; personas sticky viewport
   stops clipping its kicker.
   ============================================================ */

/* personas: never clip the top of the sticky content */
.mv-sections .css-eczfnh{align-items:safe center}
.mv-sections [data-persona] .css-ph3dvh{padding:10px 0}

/* chat panel: solid hairline frame (plus corners stay) */
.framer-XhG7C.framer-o3jmk3{
  --border-style:solid!important;
  --border-color:rgba(33,26,20,.22)!important;
}
.framer-XhG7C .u-winhead{border-bottom:1px solid rgba(33,26,20,.12)}
.u-agents-rail{border-top:1px solid rgba(33,26,20,.12)}

/* platform boundary rule: solid stroke */
.lg-rule--solid{
  background:linear-gradient(var(--lg-rule-c),var(--lg-rule-c)) left top 6px/100% 1px no-repeat;
}

/* platform grid: a solid boxed table spanning rail to rail */
@media (min-width:810px){
  .mv-sections .css-1gzsdyh{
    margin-inline:-32px;
    border-top:1px solid rgba(33,26,20,.18);
    border-bottom:1px solid rgba(33,26,20,.18);
  }
  .mv-sections .css-1gzsdyh > .css-klisov{
    border-left:1px solid rgba(33,26,20,.14);
    border-top:1px solid rgba(33,26,20,.14);
    padding:40px 32px 44px;
  }
}
@media (min-width:1200px){
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(3n+1){border-left:none}
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(-n+3){border-top:none;padding-top:40px}
}
@media (min-width:810px) and (max-width:1199.98px){
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(2n+1){border-left:none}
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(-n+2){border-top:none;padding-top:40px}
}

/* quote attributions: pixel avatar instead of the star */
.mv-feat-quote figcaption::before{
  background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path fill="%23d83a12" d="M2 0h3v3H2zM3 3h1v1H3zM1 4h5v1H1zM0 5h7v2H0z"/></svg>') no-repeat center/contain;
  image-rendering:pixelated;
}
/* personas sticky viewport: clear the sticky header and pad the pinned
   content so a top-aligned (overflowing) state never kisses the edges */
@media (min-width:810px){
  .mv-sections .css-eczfnh{
    top:var(--header-h,64px);
    height:calc(100vh - var(--header-h,64px));
    padding-block:20px;box-sizing:border-box;
  }
}

/* ============================================================
   PART 6 — stroke grammar v2, proof-style buttons, header tune
   Final grammar: HORIZONTAL structural lines are SOLID, the
   VERTICAL channel rails (and internal vertical dividers) stay
   DASHED. Buttons across the page adopt the proof-chip recipe:
   compact, bordered, pixel-arrow that nudges on hover.
   ============================================================ */

/* ── horizontals go solid ── */
.lg-rule{background:linear-gradient(var(--lg-rule-c),var(--lg-rule-c)) left top 6px/100% 1px no-repeat}
.dho-v3 .dho2-trustband{
  border-top:1px solid rgba(33,26,20,.25);
  border-bottom:1px solid rgba(33,26,20,.25);
}
header.nv-root{border-bottom:1px solid rgba(33,26,20,.25)}

/* agents feature rows: solid rule layer, marker unchanged */
.framer-PKhsd .framer-16hbs57::before,
.framer-PKhsd .framer-11596mk::before,
.framer-PKhsd .framer-nv2ev6::before,
.framer-PKhsd .framer-efx4pb::before,
.framer-PkSaB .framer-1mmise4::before{
  background-image:var(--fl-plus),linear-gradient(var(--fl-rule),var(--fl-rule));
  background-repeat:no-repeat,no-repeat;
  background-position:right 6px top 50%,left top 6px;
  background-size:13px 13px,100% 1px;
}
.framer-PKhsd div.framer-kj4vlm::before,
.framer-PKhsd div.framer-bthuc5::before,
.framer-PKhsd div.framer-137dhb5::before,
.framer-PkSaB div.framer-d3ggdi::before{
  background-image:var(--fl-plus-soft),linear-gradient(var(--fl-rule-soft),var(--fl-rule-soft));
  background-repeat:no-repeat,no-repeat;
  background-position:right 6px top 50%,left top 6px;
  background-size:13px 13px,100% 1px;
}

/* ledger rows + FAQ rows: solid */
.mv-sections [data-persona]{border-top:1px solid var(--lg-soft-c)}
.mv-sections [data-persona]:last-child{border-bottom:1px solid var(--lg-soft-c)}
.mv-base #faq [data-faq]{border-bottom:1px solid var(--lg-rule-d)}

/* proof voices slab: solid horizontals, dashed verticals */
.mv-sections .mv-proof-voices{border-style:solid dashed}
.mv-sections .mv-proof-tabs{border-top:1px solid var(--lg-rule-c)}
@media (max-width:809.98px){
  .mv-sections .mv-proof-tab:nth-child(n+3){border-top:1px solid var(--lg-soft-c)}
}

/* ── header: shorter masthead ── */
@media (min-width:992px){
  :root{--header-h:56px}
  .nv-bar{min-height:56px}
  .nv-word{padding:5px 12px 7px;font-size:34px}
}

/* ── buttons: the proof-chip recipe, site-wide ── */
.dpf2-hero-orbit .dho-cta,
.mv-sections .css-1iqlf8q,
.mv-sections .css-1t2groz,
.mv-base #bottom-cta .btn{
  font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);
  font-size:13px;line-height:16px;letter-spacing:0;
  padding:9px 14px;border-radius:8px;gap:8px;
  display:inline-flex;align-items:center;justify-content:center;
}
.dpf2-hero-orbit .dho-cta--primary,
.mv-sections .css-1iqlf8q{
  background:#d83a12;border:1px solid #b42d08;color:#fff;
}
.dpf2-hero-orbit .dho-cta--primary:hover,
.mv-sections .css-1iqlf8q:hover,.mv-sections .css-1iqlf8q:focus-visible{background:#b42d08}
.dpf2-hero-orbit .dho-cta--secondary,
.mv-sections .css-1t2groz{
  background:rgba(33,26,20,.04);border:1px solid rgba(33,26,20,.28);color:#211a14;
}
.dpf2-hero-orbit .dho-cta--secondary:hover,
.mv-sections .css-1t2groz:hover,.mv-sections .css-1t2groz:focus-visible{
  background:rgba(33,26,20,.10);border-color:rgba(33,26,20,.45);
}

/* pixel arrow: appended where the markup doesn't already carry .u-arrow */
.dpf2-hero-orbit .dho-cta:not(:has(.u-arrow))::after,
.mv-sections .css-1iqlf8q:not(:has(.u-arrow))::after,
.mv-sections .css-1t2groz:not(:has(.u-arrow))::after{
  content:"";width:13px;height:13px;flex:none;
  background-color:currentColor;
  -webkit-mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path d="M0 3h5v1H0zM4 1h1v1H4zM5 2h1v1H5zM6 3h1v1H6zM5 4h1v1H5zM4 5h1v1H4z"/></svg>') no-repeat center/contain;
  mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path d="M0 3h5v1H0zM4 1h1v1H4zM5 2h1v1H5zM6 3h1v1H6zM5 4h1v1H5zM4 5h1v1H4z"/></svg>') no-repeat center/contain;
  transition:transform .15s ease;
}
.dpf2-hero-orbit .dho-cta:hover::after,
.mv-sections .css-1iqlf8q:hover::after,
.mv-sections .css-1t2groz:hover::after{transform:translateX(3px)}
.dpf2-hero-orbit .dho-cta:hover .u-arrow,
.mv-base #bottom-cta .btn:hover .u-arrow{transform:translateX(3px)}

/* the css-1iqlf8q/1t2groz legacy inner-span nudge is replaced by the arrow */
.mv-sections .css-1iqlf8q > span,.mv-sections .css-1t2groz > span{margin-left:0}

/* agents "See it on your site" (Framer button, inline-styled) */
.framer-PKhsd .framer-lt5xhr{
  background-color:rgba(33,26,20,.04)!important;
  border:1px solid rgba(33,26,20,.28);
  border-radius:8px!important;
  padding:9px 14px!important;
  height:auto!important;min-height:0!important;
  gap:8px;
}
.framer-PKhsd .framer-lt5xhr .framer-text{
  --framer-text-color:#211a14!important;color:#211a14!important;
  --framer-font-size:13px!important;font-size:13px!important;
  --framer-line-height:16px!important;line-height:16px!important;
}
.framer-PKhsd .framer-lt5xhr::after{
  content:"";width:13px;height:13px;flex:none;
  background-color:#211a14;
  -webkit-mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path d="M0 3h5v1H0zM4 1h1v1H4zM5 2h1v1H5zM6 3h1v1H6zM5 4h1v1H5zM4 5h1v1H4z"/></svg>') no-repeat center/contain;
  mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path d="M0 3h5v1H0zM4 1h1v1H4zM5 2h1v1H5zM6 3h1v1H6zM5 4h1v1H5zM4 5h1v1H4z"/></svg>') no-repeat center/contain;
  transition:transform .15s ease;
}
.framer-PKhsd .framer-lt5xhr:hover{background-color:rgba(33,26,20,.10)!important;border-color:rgba(33,26,20,.45)}
.framer-PKhsd .framer-lt5xhr:hover::after{transform:translateX(3px)}

/* nav CTAs: compact + squared to match (no arrows in the chrome) */
@media (min-width:992px){
  .nv-cta{font-size:13px;padding:9px 14px;border-radius:8px}
  .nv-cta--demo{border:1px solid rgba(33,26,20,.28);background:rgba(33,26,20,.04)}
}

/* ============================================================
   PART 7 — media bleeds to the lines
   Screenshots and product videos touch the rules and rails that
   frame them (no inset padding around media).
   ============================================================ */

/* agents feature cards: video spans from the row rule (top) across
   the full column width — left rail to feature rail */
.framer-PKhsd .framer-16hbs57,
.framer-PKhsd .framer-11596mk,
.framer-PKhsd .framer-nv2ev6,
.framer-PKhsd .framer-efx4pb,
.framer-PkSaB .framer-1mmise4{padding:0 0 52px 0!important}
@media (max-width:809.98px){
  .framer-PKhsd .framer-16hbs57,
  .framer-PKhsd .framer-11596mk,
  .framer-PKhsd .framer-nv2ev6,
  .framer-PKhsd .framer-efx4pb,
  .framer-PkSaB .framer-1mmise4{padding:0 0 44px 0!important}
}
/* frame comes from the surrounding lines now, not the well outline */
.framer-PKhsd .framer-1g1ma8g,
.framer-PKhsd .framer-17cygph,
.framer-PKhsd .framer-s46uf,
.framer-PkSaB .framer-1ywvyej{outline:none}
/* text/quote row keeps its gutter on both sides; its separator sits
   directly under the media */
.framer-PKhsd div.framer-kj4vlm,
.framer-PKhsd div.framer-bthuc5,
.framer-PKhsd div.framer-137dhb5,
.framer-PkSaB div.framer-d3ggdi{
  margin-top:0;
  padding:28px var(--fl-pad) 0 var(--lg-gutter)!important;
}
.framer-PKhsd div.framer-kj4vlm::before,
.framer-PKhsd div.framer-bthuc5::before,
.framer-PKhsd div.framer-137dhb5::before,
.framer-PkSaB div.framer-d3ggdi::before{right:-13px}
/* the tablet/phone chat bubbles keep breathing room above the media */
@media (max-width:1199.98px){
  .u-agent-reply{margin-top:20px}
}

/* platform band: screenshots fill their boxed cells edge-to-edge */
@media (min-width:810px){
  .mv-sections .css-1gzsdyh > .css-klisov{padding:0}
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(-n+3){padding-top:0}
  .mv-sections .css-1gzsdyh .css-3w0yoi{padding:0 32px 40px}
  .mv-sections .css-1n1s56s img{outline:none}
}

/* chat panel: raised near-white surface — it's a fixture ON the sheet,
   not part of the paper (user: the page-paper fill read flat) */
.framer-XhG7C.framer-o3jmk3{background-color:var(--paper-raised,#fffdf9)!important}

/* ============================================================
   PART 8 — platform cells a la Profound + nav cascade fix
   Cell order: title -> subtitle -> Learn more -> media card.
   The screenshot lives in its own bordered, softly-rounded card
   inset within the boxed cell. Nav overrides get the specificity
   they need (nav.css loads after this file).
   ============================================================ */

/* nav: the earlier equal-specificity rules lost to nav.css — redo */
@media (min-width:992px){
  .nv-root .nv-bar{min-height:56px}
  .nv-root .nv-word{padding:5px 12px 7px;font-size:34px}
  .nv-root .nv-cta{font-size:13px;line-height:16px;font-weight:var(--fw-med);padding:9px 14px;border-radius:8px}
  .nv-root .nv-cta--demo{border:1px solid rgba(33,26,20,.28);background:rgba(33,26,20,.04)}
  .nv-root .nv-cta--demo:hover{background:rgba(33,26,20,.10);border-color:rgba(33,26,20,.45)}
}

/* platform cells: Profound order + inset media card */
@media (min-width:810px){
  .mv-sections .css-1gzsdyh > .css-klisov{padding:32px 32px 40px}
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(-n+3){padding-top:32px}
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(2n+1){padding-top:32px}
  .mv-sections .css-1gzsdyh .css-3w0yoi{order:1;padding:0}
  .mv-sections .css-1gzsdyh .lg-learn{order:2}
  .mv-sections .css-1gzsdyh .css-1n1s56s{order:3;margin-top:8px}
}
@media (min-width:1200px){
  .mv-sections .css-1gzsdyh > .css-klisov:nth-child(-n+3){padding-top:32px}
}
@media (max-width:809.98px){
  .mv-sections .css-1gzsdyh .css-3w0yoi{order:1}
  .mv-sections .css-1gzsdyh .lg-learn{order:2}
  .mv-sections .css-1gzsdyh .css-1n1s56s{order:3;margin-top:4px}
}

/* the media card: bordered, softly rounded, contains its screenshot */
.mv-sections .css-1n1s56s{
  background:var(--paper-raised,#fcfbf8);
  border:1px solid rgba(33,26,20,.16);
  border-radius:10px;
  overflow:hidden;
}
.mv-sections .css-1n1s56s img{border-radius:0;outline:none;display:block}

/* Learn more: the proof-chip button */
.lg-learn{
  align-self:flex-start;
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);
  font-size:13px;line-height:16px;
  padding:9px 14px;border-radius:8px;
  border:1px solid rgba(33,26,20,.28);
  background:rgba(33,26,20,.04);color:#211a14;
  text-decoration:none;white-space:nowrap;
  transition:background .2s,border-color .2s;
}
.lg-learn::after{
  content:"";width:13px;height:13px;flex:none;
  background-color:currentColor;
  -webkit-mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path d="M0 3h5v1H0zM4 1h1v1H4zM5 2h1v1H5zM6 3h1v1H6zM5 4h1v1H5zM4 5h1v1H4z"/></svg>') no-repeat center/contain;
  mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path d="M0 3h5v1H0zM4 1h1v1H4zM5 2h1v1H5zM6 3h1v1H6zM5 4h1v1H5zM4 5h1v1H4z"/></svg>') no-repeat center/contain;
  transition:transform .15s ease;
}
.lg-learn:hover{background:rgba(33,26,20,.10);border-color:rgba(33,26,20,.45)}
.lg-learn:hover::after{transform:translateX(3px)}

/* ============================================================
   PART 9 — platform media: hand-built product components
   The six guardrail screenshots become watered-down UI
   vignettes drawn in the band's own language (a la Profound):
   one focal element per cell, oversized type, no app chrome.
   --u = 1px at the 336px reference well, so every component
   scales exactly like the screenshot it replaces.
   ============================================================ */
.mv-sections .css-1n1s56s{container-type:inline-size}
/* light-mode palette: ink on the paper band (the cream palette the
   vignettes were drawn in only reads on the dark band — dark.css
   restores it under html[data-theme=dark]) */
.pc{
  --u:0.29940cqw;
  --pc-ink:#211a14;
  --pc-mut:rgba(33,26,20,.66);
  --pc-dim:rgba(33,26,20,.45);
  --pc-line:rgba(33,26,20,.12);
  --pc-bd:rgba(33,26,20,.25);
  --pc-card:var(--paper-raised,#fffdf9);
  --pc-soft:rgba(33,26,20,.05);
  --pc-ghostbg:rgba(255,253,249,.55);
  --pc-acc:#b42d08;
  --pc-cursor:#211a14;
  --pc-ember:#d83a12;
  position:relative;
  aspect-ratio:1600/924;
  width:100%;
  overflow:hidden;
  display:flex;flex-direction:column;align-items:stretch;
  padding:calc(var(--u)*10) calc(var(--u)*20) 0;
  gap:calc(var(--u)*9);
  font-family:var(--font-body),ui-sans-serif,system-ui,sans-serif;
  font-weight:var(--fw-body);
  color:var(--pc-ink);
  -webkit-font-smoothing:antialiased;
  text-align:left;
}
.pc *{box-sizing:border-box;margin:0}

/* kicker row — the app's section labels */
.pc-kicker{
  display:flex;align-items:center;gap:calc(var(--u)*7);
  font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);
  font-size:calc(var(--u)*9.5);line-height:1;
  letter-spacing:.09em;text-transform:uppercase;
  color:var(--pc-dim);
}
.pc-badge{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:calc(var(--u)*14);height:calc(var(--u)*14);
  padding:0 calc(var(--u)*3.5);
  background:var(--pc-ember);border-radius:calc(var(--u)*3.5);
  color:#fff;font-size:calc(var(--u)*9);letter-spacing:0;
}
.pc-chip{
  display:inline-flex;align-items:center;gap:calc(var(--u)*4);
  font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);
  font-size:calc(var(--u)*8.5);line-height:1;letter-spacing:.02em;
  padding:calc(var(--u)*3.5) calc(var(--u)*7);
  border:1px solid var(--pc-bd);border-radius:calc(var(--u)*9);
  color:var(--pc-mut);white-space:nowrap;text-transform:none;letter-spacing:.02em;
}
.pc-chip--ember{border-color:rgba(216,58,18,.65);color:var(--pc-acc)}

/* raised card */
.pc-card{
  position:relative;
  background:var(--pc-card);
  border:1px solid var(--pc-line);
  border-radius:calc(var(--u)*8);
  padding:calc(var(--u)*12) calc(var(--u)*14);
  display:flex;flex-direction:column;gap:calc(var(--u)*4);
}
.pc-card-t{
  font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);
  font-size:calc(var(--u)*12);line-height:1.3;color:var(--pc-ink);
}
.pc-card-s{font-size:calc(var(--u)*10);line-height:1.35;color:var(--pc-mut)}

/* buttons */
.pc-actions{display:flex;gap:calc(var(--u)*6);margin-top:calc(var(--u)*8)}
.pc-btn{
  display:inline-flex;align-items:center;
  font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);
  font-size:calc(var(--u)*10);line-height:1;
  padding:calc(var(--u)*6) calc(var(--u)*10);
  border-radius:calc(var(--u)*6);
  border:1px solid var(--pc-bd);
  background:var(--pc-soft);color:var(--pc-ink);
}
.pc-btn--ember{background:var(--pc-ember);border-color:#b42d08;color:#fff}

/* generic ledger row */
.pc-rows{display:flex;flex-direction:column}
.pc-row{
  display:flex;align-items:center;gap:calc(var(--u)*8);
  font-size:calc(var(--u)*10.5);line-height:1.3;color:var(--pc-ink);
  padding:calc(var(--u)*6) 0;
}
.pc-row + .pc-row{border-top:1px solid var(--pc-line)}
.pc-row .pc-chip{margin-left:auto}
.pc-mono{
  font-family:ui-monospace,"SF Mono",Menlo,monospace;
  font-size:calc(var(--u)*9.5);color:var(--pc-dim);letter-spacing:.08em;
}

/* pixel icons (masks, currentColor) */
.pc-i{
  width:calc(var(--u)*10);height:calc(var(--u)*10);flex:none;
  background:currentColor;
  -webkit-mask:var(--pi) no-repeat center/contain;mask:var(--pi) no-repeat center/contain;
  image-rendering:pixelated;
}
.pc-i--lock{--pi:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 8" shape-rendering="crispEdges"><path d="M2 0h3v1H2zM1 1h1v2H1zM5 1h1v2H5zM0 3h7v5H0z"/></svg>')}
.pc-i--x{--pi:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 5 5" shape-rendering="crispEdges"><path d="M0 0h1v1H0zM4 0h1v1H4zM1 1h1v1H1zM3 1h1v1H3zM2 2h1v1H2zM1 3h1v1H1zM3 3h1v1H3zM0 4h1v1H0zM4 4h1v1H4z"/></svg>')}
.pc-i--doc{--pi:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 6 8" shape-rendering="crispEdges"><path d="M0 0h4v1H0zM0 1h6v7H0z"/></svg>')}
.pc-i--branch{--pi:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path d="M0 0h2v2H0zM5 0h2v2H5zM2 1h3v1H2zM0 2h2v3H0zM0 5h2v2H0z"/></svg>')}
.pc-i--diamond{--pi:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path d="M3 0h1v1H3zM2 1h3v1H2zM1 2h5v1H1zM0 3h7v1H0zM1 4h5v1H1zM2 5h3v1H2zM3 6h1v1H3z"/></svg>')}

/* citation number — ember pixel footnote */
.pc-cn{
  display:inline-flex;align-items:center;justify-content:center;
  width:calc(var(--u)*12);height:calc(var(--u)*12);flex:none;
  border:1px solid rgba(216,58,18,.75);border-radius:calc(var(--u)*3);
  font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);
  font-size:calc(var(--u)*8);line-height:1;color:var(--pc-acc);
}
sup.pc-cn{
  width:calc(var(--u)*11);height:calc(var(--u)*11);
  transform:translateY(calc(var(--u)*-2));margin-left:calc(var(--u)*2);
}

/* ── 1 · approve everything: the decision queue ── */
.pc--approve .pc-card{margin-top:calc(var(--u)*2)}
.pc-ghost{
  border:1px solid var(--pc-line);border-bottom:none;
  border-radius:calc(var(--u)*8) calc(var(--u)*8) 0 0;
  background:var(--pc-ghostbg);
  padding:calc(var(--u)*10) calc(var(--u)*14) calc(var(--u)*4);
  display:flex;flex-direction:column;gap:calc(var(--u)*3);
  opacity:.62;
}
.pc-cursor{
  position:absolute;z-index:2;
  width:calc(var(--u)*11);height:calc(var(--u)*15);
  right:calc(var(--u)*-1);bottom:calc(var(--u)*-6);
  background:var(--pc-cursor);
  -webkit-mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 11" shape-rendering="crispEdges"><path d="M0 0h1v1H0zM0 1h2v1H0zM0 2h3v1H0zM0 3h4v1H0zM0 4h5v1H0zM0 5h6v1H0zM0 6h7v1H0zM0 7h8v1H0zM0 8h3v1H0zM3 8h2v1H3zM4 9h2v1H4zM4 10h2v1H4z"/></svg>') no-repeat center/contain;
  mask:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 11" shape-rendering="crispEdges"><path d="M0 0h1v1H0zM0 1h2v1H0zM0 2h3v1H0zM0 3h4v1H0zM0 4h5v1H0zM0 5h6v1H0zM0 6h7v1H0zM0 7h8v1H0zM0 8h3v1H0zM3 8h2v1H3zM4 9h2v1H4zM4 10h2v1H4z"/></svg>') no-repeat center/contain;
  filter:drop-shadow(0 calc(var(--u)*1) calc(var(--u)*2) rgba(0,0,0,.5));
}
.pc-btn--ember{position:relative}

/* ── 2 · grounded: claim + receipts ── */
.pc--grounded .pc-card{margin-top:calc(var(--u)*2)}
.pc-claim{
  font-size:calc(var(--u)*11.5);line-height:1.45;color:var(--pc-ink);
}
.pc-files{display:flex;flex-direction:column}
.pc-file{
  display:flex;align-items:center;gap:calc(var(--u)*8);
  padding:calc(var(--u)*6) 0;
  font-family:ui-monospace,"SF Mono",Menlo,monospace;
  font-size:calc(var(--u)*9.5);letter-spacing:.02em;color:var(--pc-mut);
}
.pc-file + .pc-file{border-top:1px solid var(--pc-line)}
.pc-file .pc-cn{margin-left:auto}
.pc-file .pc-i{color:var(--pc-dim)}

/* ── 3 · voice gate: draft passes the do-not-say rules ── */
.pc-strike{
  color:var(--pc-acc);text-decoration:line-through;
  text-decoration-color:rgba(216,58,18,.9);
  text-decoration-thickness:calc(var(--u)*1.5);
}
.pc-fix{
  font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);font-style:normal;
  color:var(--pc-ink);
}
.pc--gate .pc-row{color:var(--pc-mut)}
.pc--gate .pc-row .pc-i{color:var(--pc-acc)}
.pc--gate .pc-row q{quotes:"“" "”";color:var(--pc-ink)}

/* ── 4 · draft-only linkedin: copy, never post ── */
.pc-foot{
  margin-top:auto;
  display:flex;align-items:center;gap:calc(var(--u)*8);
  padding:calc(var(--u)*9) 0 calc(var(--u)*14);
  border-top:1px solid var(--pc-line);
  font-size:calc(var(--u)*10);color:var(--pc-mut);
}
.pc-toggle{
  position:relative;flex:none;
  width:calc(var(--u)*22);height:calc(var(--u)*12);
  border:1px solid var(--pc-bd);border-radius:calc(var(--u)*6);
  background:var(--pc-soft);
}
.pc-toggle::before{
  content:"";position:absolute;top:calc(var(--u)*1.5);left:calc(var(--u)*1.5);
  width:calc(var(--u)*7);height:calc(var(--u)*7);
  border-radius:calc(var(--u)*2);background:var(--pc-dim);
}
.pc-foot .pc-i--lock{color:var(--pc-dim)}
.pc-foot b{font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);color:var(--pc-ink)}

/* ── 5 · reasoning rail ── */
.pc-steps{display:flex;flex-direction:column;margin-top:calc(var(--u)*2)}
.pc-step{
  position:relative;
  display:flex;align-items:center;gap:calc(var(--u)*9);
  padding:calc(var(--u)*7) 0 calc(var(--u)*7) calc(var(--u)*17);
  font-size:calc(var(--u)*10.5);line-height:1.3;color:var(--pc-ink);
}
.pc-step::before{ /* the rail */
  content:"";position:absolute;left:calc(var(--u)*3);top:0;bottom:0;
  width:1px;background:var(--pc-line);
}
.pc-step:first-child::before{top:50%}
.pc-step:last-child::before{bottom:50%}
.pc-step::after{ /* the square dot */
  content:"";position:absolute;left:0;top:50%;
  width:calc(var(--u)*7);height:calc(var(--u)*7);
  transform:translateY(-50%);
  background:var(--pc-dim);
}
.pc-step--hot::after{background:var(--pc-ember)}
.pc-step--open::after{background:transparent;border:1px solid var(--pc-dim)}
.pc-step time{margin-left:auto;flex:none}
.pc-step .pc-chip{margin-left:auto;flex:none}

/* ── 6 · private by default: the vault ledger ── */
.pc--vault .pc-row{font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);font-size:calc(var(--u)*10.5)}
.pc--vault .pc-row .pc-i{color:var(--pc-dim)}
.pc--vault .pc-row .pc-mono{margin-left:calc(var(--u)*2)}
.pc--vault .pc-foot{border-top:none;padding-top:0;color:var(--pc-dim)}

/* the vignette sits snug under its Learn more button — leftover row
   height collects at the cell bottom, dissolved by the media fades.
   (visual gap = cell flex gap 24 + this 4 + the pc's own top pad) */
@media (min-width:810px){
  .mv-sections .css-1gzsdyh .css-1n1s56s{margin-top:4px}
}

/* platform container hugs the rail channel at every width, not just
   >=1512px: box edge = rail, so the boxed table's -32px bleed lands
   exactly on the dashed rails instead of sticking out past them */
@media (min-width:810px){
  .mv-sections .css-wd3a5f{max-width:min(1264px,calc(100% - 2*var(--lg-inset)))}
}

/* ============================================================
   PART 10 — frameless components (Profound reference match)
   The wells lose their card frame: components float directly
   on the band. Long lists dissolve at the bottom edge instead
   of being cut, and the in-progress step carries a soft ember
   glow. One panel (the vault table) keeps its own surface.
   ============================================================ */
.mv-sections .css-1n1s56s{
  background:transparent!important;
  border:none!important;
  border-radius:0!important;
}

/* dissolve utilities */
.pc-fade{
  -webkit-mask-image:linear-gradient(180deg,#000 40%,transparent 96%);
  mask-image:linear-gradient(180deg,#000 40%,transparent 96%);
}
.pc-fade-rows{
  -webkit-mask-image:linear-gradient(180deg,#000 58%,rgba(0,0,0,.4) 82%,transparent 99%);
  mask-image:linear-gradient(180deg,#000 58%,rgba(0,0,0,.4) 82%,transparent 99%);
}

/* queue ghost: full card again — the mask does the dissolving */
.pc-ghost{
  border:1px solid var(--pc-line);
  border-radius:calc(var(--u)*8);
  opacity:.75;
}

/* the in-progress step glows from its dot */
.pc-step--hot{
  background:linear-gradient(90deg,rgba(216,58,18,.16),transparent 72%);
  border-radius:calc(var(--u)*6);
}
.pc-step--hot .pc-chip{border-color:rgba(216,58,18,.5);color:var(--pc-acc)}

/* ghost step / ghost file: the log keeps going */
.pc-step--ghost,.pc-file--ghost{color:var(--pc-dim)}

/* vault ledger gets its own surface, like the reference table */
.pc-panel{
  background:var(--pc-card);
  border:1px solid var(--pc-line);
  border-radius:calc(var(--u)*8);
  padding:calc(var(--u)*2) calc(var(--u)*14);
  display:flex;flex-direction:column;
}

/* ============================================================
   PART 11 — channel clamp: 810–1511px rail crossover fix
   The 1264px content containers only meet the rails on ≥1512px
   viewports; below that they center wider than the channel and
   their text runs through the rails (any Windows display at
   125/150% scaling lands here). Same clamp the platform band
   (.css-wd3a5f) already got: container border-box edge = rail
   at every width, the 32px padding-inline stays the gutter.
   ============================================================ */
@media (min-width:810px){
  .mv-sections .css-t1wuou,
  .mv-sections .css-1ptmokx,
  .mv-sections .css-29xcf,
  .mv-sections .css-1y9l2ec,
  .mv-base #faq .max-w-\[1440px\]{
    max-width:min(1264px,calc(100% - 2*var(--lg-inset)));
  }
}

/* feature text rows: tracks flex, columns never collide.
   Framer fixes the left track and the paragraph width separately;
   between the 1512 design width and the 1200 breakpoint the track
   shrinks under the 400px paragraph and the quote column rides
   over the text. Left column takes the leftover space instead;
   text caps to its track. (The d3ggdi row already shipped with
   this template — this makes all four match.) */
@media (min-width:810px){
  .framer-PKhsd div.framer-kj4vlm,
  .framer-PKhsd div.framer-bthuc5,
  .framer-PKhsd div.framer-137dhb5,
  .framer-PkSaB div.framer-d3ggdi{
    grid-template-columns:minmax(0,1fr) minmax(0,340px)!important;
  }
  .framer-PKhsd .framer-3b84xa,.framer-PKhsd .framer-iahkmg,
  .framer-PKhsd .framer-1tf2q4b,.framer-PkSaB .framer-4v8g4g{
    width:auto!important;max-width:100%!important;
  }
  .framer-PKhsd .framer-xfpz0v,.framer-PKhsd .framer-mg6vzg,
  .framer-PKhsd .framer-85a1qq,.framer-PkSaB .framer-14ikmrx{
    width:auto!important;max-width:400px!important;
  }
}
@media (min-width:810px) and (max-width:1199.98px){
  .framer-PKhsd div.framer-kj4vlm,
  .framer-PKhsd div.framer-bthuc5,
  .framer-PKhsd div.framer-137dhb5,
  .framer-PkSaB div.framer-d3ggdi{
    grid-template-columns:minmax(0,1fr) minmax(0,280px)!important;
  }
}

/* agents header: the title block is fixed at 640px, which shoves the
   "See it on your site" CTA past the right rail (and the viewport)
   near 810–900. Title flexes, CTA stays put. */
@media (min-width:810px){
  .framer-PKhsd .framer-t43lcf{width:auto!important;flex:0 1 auto!important;min-width:0}
  .framer-PKhsd .framer-t43lcf *{max-width:100%}
  .framer-PKhsd .framer-s6ddrt{flex:none}
}

/* ============================================================
   PART 12 — intro statement scrub ("The brief")
   Replaces the "While you slept" log section. One statement sits
   on the sheet as pencil-ghost words (dim + blurred, an
   under-drawing) and inks in word-by-word while the section is
   pinned — Profound's post-hero reveal translated into the
   worksheet grammar. js/intro.js adds .is-scrub and drives the
   per-word .is-on classes; without JS (or with reduced motion)
   the section is a plain, fully-inked statement.
   ============================================================ */
.mv-intro{position:relative}
.mv-intro-pin{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:150px 32px;
}
.mv-intro .u-kicker{
  font-family:"JetBrains Mono",ui-monospace,monospace;font-weight:400;
  font-size:12px;line-height:1;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-2);
  margin:0 0 28px;
}
.mv-intro .u-kicker::before{
  content:"";display:inline-block;width:12px;height:12px;margin-right:8px;
  vertical-align:-2px;
  background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7" shape-rendering="crispEdges"><path fill="%23d83a12" d="M3 0h1v2H3zM2 2h3v1H2zM0 3h7v1H0zM2 4h3v1H2zM3 5h1v2H3z"/></svg>') no-repeat center/contain;
  image-rendering:pixelated;
}
.mv-intro-copy{
  font-family:var(--font-med),sans-serif;font-weight:var(--fw-med);
  font-size:clamp(25px,2.55vw,38px);line-height:1.34;letter-spacing:-0.01em;
  color:var(--ink);max-width:1000px;margin:0;
  text-wrap:pretty;
}
/* three story beats: setup / turn ("Today that isn't you.") / resolution */
.mv-intro-copy + .mv-intro-copy{margin-top:clamp(24px,4.5vh,44px)}
.mv-intro .iw{transition:opacity .35s ease,filter .35s ease}

/* "done." gets crossed off the list — an ember diagonal dash that draws
   itself left-to-right once the word inks in (rides the word's .is-on,
   so it scrubs back out when the user scrolls up) */
.mv-intro .iw--strike{position:relative}
.mv-intro .iw--strike::after{
  content:"";position:absolute;left:-0.12em;right:-0.06em;top:52%;height:.11em;
  background:#d83a12;border-radius:.06em;
  transform:rotate(-7deg) scaleX(0);transform-origin:left center;
  transition:transform .5s cubic-bezier(.2,.7,.2,1) .12s;
  pointer-events:none;
}
.mv-intro .iw--strike.is-on::after,
.mv-intro:not(.is-scrub) .iw--strike::after{transform:rotate(-7deg) scaleX(1)}

/* scrub mode (JS) — pin briefly; the statement is short, the ink-in
   should finish fast (people don't read — don't make them wait) */
.mv-intro.is-scrub{height:150vh}
.mv-intro.is-scrub .mv-intro-pin{
  position:sticky;top:0;height:100vh;padding:0 32px;
}
.mv-intro.is-scrub .iw:not(.is-on){opacity:.30;filter:blur(1.5px)}

@media (max-width:809.98px){
  .mv-intro-pin{padding:96px 20px}
  .mv-intro.is-scrub{height:130vh}
  .mv-intro.is-scrub .mv-intro-pin{padding:0 20px}
}


/* ============================================================
   PART: horizontals stop at the rails (Profound corners).
   Boundary rules and the trustband strokes end on the verticals
   instead of running to the viewport edges. Lives at the END of
   the file: .lg-rule margin shorthands earlier in the cascade
   would reset margin-inline. The rule element shrinks to the
   channel (margin-inline carries the same 100%-relative math the
   rail offsets use), so its plus markers move to its own corners.
   ============================================================ */
@media (min-width:810px){
  .lg-rule{width:auto;margin-inline:var(--lg-l)}
  /* contextual margin shorthands (nav gap, hero-adjacent) outrank the
     line above and would reset the inline margins — restate them */
  main > .lg-rule:first-child,
  .mv-canvas + .lg-rule,
  .dpf2-hero-orbit + .lg-rule{margin-inline:var(--lg-l)}
  .lg-rule::before{left:0}
  .lg-rule::after{right:0}
  /* trustband: strokes move to an inset pseudo that ends on the rails */
  .dho-v3 .dho2-trustband{border-top:none;border-bottom:none}
  .dho-v3 .dho2-trustband::before{
    content:"";position:absolute;top:0;bottom:0;
    left:calc(var(--lg-l) + 6px);right:calc(var(--lg-l) + 6px);
    border-top:1px solid rgba(33,26,20,.25);
    border-bottom:1px solid rgba(33,26,20,.25);
    pointer-events:none;
  }
  html[data-theme="dark"] .dho-v3 .dho2-trustband::before{
    border-top-color:rgba(242,236,223,.25);
    border-bottom-color:rgba(242,236,223,.25);
  }
  /* the nav-gap rule is NOT a rail bridge: the main>.lg-rule stub
     treatment (PART 10) would draw dashed rail stubs up into the gap
     between the header and the channel — that air stays empty */
  main.framer-1xjqbme > .lg-rule:first-child::before,
  main.framer-1xjqbme > .lg-rule:first-child::after{
    top:0;bottom:auto;height:13px;
    background:var(--lg-plus) center/contain no-repeat;
    image-rendering:pixelated;
  }
  /* agents feature rules bleed in from -100vw ("overshoots the rail",
     PART 1) — cut the section's paint at the left rail line so every
     row rule now starts ON the vertical instead of at the viewport edge */
  .framer-p36991{clip-path:inset(0 0 0 calc(var(--lg-l) + 6px))}
}
