/* ============================================================================
   deal-brief.css — THE DEAL PAGE, on the v1 design system.

   Rebuilt 2026-09-07 to the client's two specs of the same date:
     .forge/source-docs/adam-inputs/2026-09-07-opportunities-and-deal-page-specs.md
     .forge/source-docs/adam-inputs/2026-09-07-lighter-is-v1.md
   Read both before changing anything here. Several rules below are markup and
   compliance decisions wearing CSS clothes, not taste.

   ---------------------------------------------------------------------------
   THE STANDARD THIS FILE IS BUILT TO, IN HIS WORDS

     "An investor who has looked at fifty of these should get thirty seconds
      into a Capstaq deal page and think: nobody has ever shown me a deal this
      way. Everyone else is shoving a deal at them. Glossy photo, big IRR
      number, a countdown, a button. We are handing them a FILE and saying:
      here is everything, decide for yourself."

   A file, not a pitch. That is the whole visual brief, and it settles most of
   the decisions below on its own: no photograph carries a claim, no number is
   set larger than its own importance, nothing animates toward a target, and
   the most distinctive object on the page is a table of fees.

   ---------------------------------------------------------------------------
   THE ARCHITECTURE, WHICH HE NAMED

       THE PAGE SHIPS OPEN. JAVASCRIPT CLOSES IT.

   Everything is in the DOM and everything is VISIBLE by default. The inline
   script in each page's head sets html.dl-js before first paint and CSS does
   the closing, so nothing is ever revealed, because nothing was hidden. Turn
   scripting off and this is the whole file, in order, complete, with every
   control removed rather than left dead.

   This is inherited from home-d.html, which is v1, and it is inherited whole
   rather than approximated: same class-before-paint, same aria-expanded state,
   same "the toggle handler lives in the SAME inline tag that sets the class".
   Splitting those two halves produces a page that is closed, with live
   controls, and unopenable. Do not split them.

   ---------------------------------------------------------------------------
   PROGRESSIVE DISCLOSURE IS FOR DEPTH, NEVER FOR PRESENCE

   His rule, and the hard constraint on this file. One test on every collapsed
   element: does closing this hide DEPTH, or hide PRESENCE? These six fail the
   test and therefore NEVER close, at any width:

     1  the fee table, including how Capstaq is paid            .dl-fees
     2  section 08, stacked on phone with WHAT COULD GO WRONG
        first rather than second                                .dl-risk
     3  all four fields of the Capstaq Review, field 4 above
        all: "what remains an assumption"                       .dl-rev
     4  the nine-field fact block in section 01                 .dl-facts
     5  the TODAY marker in section 06                          .dl-tl
     6  every empty state, everywhere                           .dl-abs

   There is no media query, no html.dl-js rule, and no aria-expanded anywhere
   in this file that touches those six. Grep before you add one.

   ---------------------------------------------------------------------------
   THE ABSENCE PRIMITIVE IS THE MOST IMPORTANT COMPONENT HERE

     "Admitting what we don't know is a feature. Build components that display
      absence as confidently as they display data."

   So .dl-abs is not a grey box, not italic, not smaller, not an apology, and
   never the words N/A. It prints at the SAME size as data, in ink-2 (8.6:1,
   not the 4.87 floor), in a complete sentence, under the same label a value
   would have carried. The only difference between a filled row and an empty
   one is a hollow marker instead of a filled one.

   That is deliberate: a page where absence prints faintly is a page that is
   embarrassed by it, and the entire argument of this product is that we are
   not. If you find yourself reaching for opacity or a lighter ink to "tidy"
   an empty state, you are undoing the feature.

   AND THERE IS NEVER A COUNT ON AN ABSENCE. No "3 of 9 published", no
   denominator, no meter, no percentage. Banned by the client on 4 September
   and the ban is not softened by the fact that a count would be accurate.

   ---------------------------------------------------------------------------
   NO URGENCY MECHANICS. ANYWHERE.

     "No countdowns, no '3 spots left,' no 'closing soon,' no animated
      progress bars filling toward a target. If capital status is closing,
      state the date as a fact."

   There is no bar in this file that fills, no element that counts, and no
   colour that means hurry. The read-progress affordance is a checkmark and
   nothing else: no percentage, no badge, no total. Gold means you did this,
   never you are running out.

   ---------------------------------------------------------------------------
   PHONE FIRST, AS A LAYOUT DECISION AND NOT A SLOGAN

     "Most of our investors will read this on a phone. Design the phone version
      first and let the desktop version be the adaptation."

   Every block below is written mobile-first: the base rules ARE the phone, and
   every @media is min-width. The desktop rail, the two-column risk split and
   the fee table's four columns are all additions at a breakpoint, so deleting
   every media query in this file leaves a correct phone page. Design and
   measure at 390 before 1440.

   ---------------------------------------------------------------------------
   WHAT THIS FILE DOES NOT OWN

   The masthead and footer are chrome.css. The co-branded lockup and the "who
   does what" block are partner.css and their MARKUP AND WORDING come from
   make_partners.py, imported by the generator so the two surfaces cannot word
   the same section differently. This file restyles those two components inside
   .dl only, because the requirement is that the WORDING never forks. The look
   is ours.
   ========================================================================== */

/* ======================================================================
   1. TOKENS — the v1 set, from home-d.css

   Copied rather than imported, and that is a known duplication: home-d.css
   owns the origin and this file owns the deal page, and there is no shared
   token file yet because home-* is mid-merge into index.html. When that merge
   lands, both blocks collapse into one file and this comment is the marker for
   whoever does it. The VALUES must not drift in the meantime: every hex below
   is byte-identical to home-d.css and carries the same measured contrast note.
   ====================================================================== */
:root{
  /* ---- ground ------------------------------------------------------- */
  --dl-navy:      #08152A;
  --dl-navy-deep: #050D1A;
  --dl-navy-2:    #0B1B33;
  --dl-line-d:    rgba(255,255,255,.13);
  --dl-line-d2:   rgba(255,255,255,.22);

  --dl-paper:     #F7F5F0;
  --dl-paper-2:   #FFFFFF;
  --dl-line-l:    #DFD9CD;
  --dl-line-l2:   #C9C0AF;

  /* ---- ink ---------------------------------------------------------- */
  --dl-ink:    #0C1B2E;   /* 15.9:1 on paper                             */
  --dl-ink-2:  #33455A;   /* 8.6:1   — absence prints HERE, never below  */
  --dl-ink-3:  #5C6D80;   /* 4.87:1  — the floor, fine print only        */

  --dl-on-d:   #FFFFFF;
  --dl-on-d-2: #C6D2E0;   /* 12.2:1 on navy                              */
  --dl-on-d-3: #93A5B9;   /* 7.2:1  — the floor on navy                  */

  /* ---- accent — two golds, because one gold cannot do both grounds --- */
  --dl-gold:      #D9A441;   /* 8.1:1 on navy · 2.06:1 on paper, never text there */
  --dl-gold-soft: #E9CB93;
  --dl-gold-deep: #7E5A1D;   /* 5.7:1 on paper                            */

  /* ---- type --------------------------------------------------------- */
  --dl-serif:"Playfair Display","Iowan Old Style",Georgia,"Times New Roman",serif;
  --dl-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;

  --dl-fine:.8125rem;   /* 13 */
  --dl-detail:.9375rem; /* 15 */
  --dl-body:1.0625rem;  /* 17 */

  /* ---- layout ------------------------------------------------------- */
  --dl-wrap:1180px;
  --dl-gut:clamp(20px,4.4vw,44px);
  --dl-pad:clamp(52px,7.2vw,104px);
  --dl-ease:cubic-bezier(.2,.6,.3,1);

  /* TWO STICKY HEIGHTS, DECLARED ONCE.

     chrome.css makes the masthead `position:sticky; top:0; z-index:50` at a
     constant 64px height at every width (verified 2026-09-07: the three
     max-width queries change gap and padding, never the height). The summary
     bar is the SECOND sticky object on this page, so it has to sit under the
     first rather than at top:0 — the first build put both at 0 and the
     masthead, holding the higher z-index, simply covered the bar the moment
     the reader scrolled.

     Everything that has to clear the two of them reads these: the bar's own
     offset, the desktop rail's offset, and the scroll-margin-top that keeps a
     rail jump from landing a heading underneath them. */
  --dl-hd-h:64px;
  --dl-bar-h:48px;
  --dl-stuck:calc(var(--dl-hd-h) + var(--dl-bar-h));

  /* GROUND-AWARE ALIASES. Every component below reads these instead of naming
     a colour, so a section changes ground by setting six variables rather than
     by having each rule re-specified. */
  --dl-fg:      var(--dl-ink);
  --dl-fg-2:    var(--dl-ink-2);
  --dl-fg-3:    var(--dl-ink-3);
  --dl-line:    var(--dl-line-l);
  --dl-line-2:  var(--dl-line-l2);
  --dl-accent:  var(--dl-gold-deep);
}

/* ======================================================================
   2. PAGE GROUND

   site.css is still linked, for .container, the chrome primitives and the
   partner layer's variables. Everything the deal page renders lives inside
   .dl and is re-declared here, so site.css's own body and typography rules
   cannot reach in. body is named explicitly for the same reason.
   ====================================================================== */
body.dl-body{
  margin:0;
  background:var(--dl-paper);
  color:var(--dl-ink);
  font-family:var(--dl-sans);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
/* Both axes: `hidden` on one axis computes to `auto` on the other, which
   creates the scroll container that breaks position:sticky. `clip` does not. */
html,body.dl-body{overflow-x:clip}

.dl{width:100%;max-width:var(--dl-wrap);margin:0 auto;padding-inline:var(--dl-gut)}
.dl-page img{max-width:100%;display:block}
/* Element-weight reset. As `.dl-page p` it scored (0,1,1) and beat every
   single-class margin on the page: the H1, tagline and hero image touched, and
   22 authored margins on a deal page never applied. :where() keeps the reset
   at element weight, so it still clears site.css's bare-element margins (this
   file loads later) and yields to any class. */
:where(.dl-page) :is(h1,h2,h3,h4,p,figure,dl,dd,ol,ul){margin:0}
.dl-page ol,.dl-page ul{padding:0;list-style:none}
.dl-page *,.dl-page *::before,.dl-page *::after{box-sizing:border-box}

/* ======================================================================
   3. TYPE SYSTEM — four sizes below display, nothing under 11px
   ====================================================================== */
.dl-eyebrow{
  display:block;margin:0 0 clamp(12px,1.6vw,18px);
  font-size:11px;font-weight:600;letter-spacing:.19em;text-transform:uppercase;
  color:var(--dl-accent);
}
/* The section eyebrow is the NUMBER, and only the number: it is what ties a
   section to its row in the index and in the rail. Tabular figures so the ten
   align down the page. The name is the heading below it and is not repeated
   here. */
.dl-eyebrow{font-variant-numeric:tabular-nums}

.dl-h1{
  margin:0;
  font-family:var(--dl-serif);font-weight:400;
  font-size:clamp(2.25rem,6vw,4rem);
  line-height:1.04;letter-spacing:-.018em;
  text-wrap:balance;color:#fff;max-width:17ch;
}
.dl-h1 em{font-style:normal;color:var(--dl-gold-soft)}

.dl-h2{
  margin:0;
  font-family:var(--dl-serif);font-weight:400;
  font-size:clamp(1.75rem,3.4vw,2.6rem);
  line-height:1.08;letter-spacing:-.016em;
  text-wrap:balance;color:var(--dl-fg);max-width:22ch;
}
.dl-h3{
  margin:0;
  font-family:var(--dl-serif);font-weight:400;
  font-size:clamp(1.3rem,2vw,1.65rem);
  line-height:1.14;letter-spacing:-.012em;text-wrap:balance;color:var(--dl-fg);
}
.dl-h4{
  margin:0;
  font-size:var(--dl-detail);font-weight:600;letter-spacing:.005em;
  line-height:1.4;color:var(--dl-fg);
}

.dl-lede{margin:0;max-width:58ch;font-size:var(--dl-body);line-height:1.66;color:var(--dl-fg-2)}
.dl-p{margin:0;max-width:62ch;font-size:var(--dl-detail);line-height:1.66;color:var(--dl-fg-2)}
.dl-p+.dl-p{margin-top:12px}
/* The 4.87:1 floor. Captions, provenance and disclosure only, never a value
   and never an absence. */
.dl-fine{margin:0;max-width:70ch;font-size:var(--dl-fine);line-height:1.6;color:var(--dl-fg-3)}

.dl-hd{margin:0 0 clamp(22px,3vw,34px)}
.dl-hd>.dl-lede{margin-top:clamp(14px,1.8vw,20px)}

/* ======================================================================
   4. THE PERSISTENT SUMMARY BAR

     "Sticky to the top on scroll, COLLAPSES TO ONE LINE ON MOBILE:
      Deal name · Location · Structure type · Stage · Capital status"

   One line on phone means one line: the name and the capital status, which
   are the two an investor returning to a tab needs to re-orient. The other
   three are one tap away in the fact block, which never closes, and they join
   the bar at 720 where the width exists to carry them.

   THIS IS NOT A DISCLOSURE. The three fields that drop below 720 are dropped
   by a media query, not by a control, so there is no tap that reveals them and
   nothing here depends on a script. Presence is preserved because the fact
   block above carries all nine fields open at every width.
   ====================================================================== */
.dl-bar{
  position:sticky;top:var(--dl-hd-h);z-index:40;
  background:var(--dl-navy);
  border-bottom:1px solid var(--dl-line-d);
  color:var(--dl-on-d);
}
.dl-bar__in{
  display:flex;align-items:center;gap:14px;
  min-height:var(--dl-bar-h);
  padding-block:8px;
}
.dl-bar__name{
  flex:1 1 auto;min-width:0;
  font-size:var(--dl-detail);font-weight:600;letter-spacing:-.004em;
  color:var(--dl-on-d);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.dl-bar__meta{display:none}
/* The capital status is a FACT, printed as one. No pulse, no countdown, no
   colour that means hurry: the same hairline chip whatever the status says. */
.dl-bar__status{
  flex:0 0 auto;
  display:inline-flex;align-items:center;gap:7px;
  padding:4px 9px;border:1px solid var(--dl-line-d2);border-radius:999px;
  font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
  color:var(--dl-on-d-2);white-space:nowrap;
}
/* THE CHIP GIVES BACK THE ROOM, NOT THE NAME.
   "UNDER REVIEW, NOT OPEN" at the previous metrics took 215px of a 350px line
   and truncated "Overlook at Lakeway" to "Overlook at Lak...". The status
   wording is shared with the partner pages and the discovery tool through
   STATUS_MAP and may not be shortened, so the chip pays in tracking and
   padding instead. Above 560 it returns to the wider setting. */
@media (min-width:560px){
  .dl-bar__status{gap:8px;padding:5px 11px;letter-spacing:.09em}
}
.dl-bar__status i{
  width:6px;height:6px;border-radius:50%;
  background:currentColor;flex:0 0 auto;
}
@media (min-width:720px){
  .dl-bar__name{flex:0 0 auto;max-width:34ch}
  .dl-bar__meta{
    display:flex;flex:1 1 auto;min-width:0;gap:10px;
    font-size:var(--dl-fine);color:var(--dl-on-d-2);
    white-space:nowrap;overflow:hidden;
  }
  .dl-bar__meta span{
    min-width:0;overflow:hidden;text-overflow:ellipsis;
  }
  .dl-bar__meta span+span::before{
    content:"·";margin-right:10px;color:var(--dl-on-d-3);
  }
}

/* ======================================================================
   5. HERO

   One column, one reading edge, and the photograph is DECLARED rather than
   trusted: every image on this platform is a concept rendering, and his spec
   says "label renderings as renderings". The label is a sibling of the image,
   not an overlay, so it cannot be flattened by a scrim and it survives a
   failed image load.
   ====================================================================== */
.dl-hero{
  background:var(--dl-navy);color:var(--dl-on-d);
  padding-block:clamp(34px,5.6vw,68px) clamp(30px,4.4vw,54px);
}
.dl-hero__lockup{display:block;margin:0 0 clamp(18px,2.4vw,26px)}
.dl-hero__eyebrow{
  display:block;margin:0 0 14px;
  font-size:11px;font-weight:600;letter-spacing:.19em;text-transform:uppercase;
  color:var(--dl-gold);
}
.dl-hero__tag{margin:clamp(14px,2vw,20px) 0 0;max-width:52ch;
  font-size:var(--dl-body);line-height:1.6;color:var(--dl-on-d-2)}
.dl-hero__fig{margin:clamp(22px,3.2vw,34px) 0 0}
.dl-hero__fig img{
  width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;
  border-radius:2px;
}
.dl-hero__fig figcaption{
  margin-top:10px;
  font-size:var(--dl-fine);line-height:1.5;color:var(--dl-on-d-3);
}
/* No photograph of this asset exists. The hero runs typographic rather than
   letting a generic tile stand in as if it were the property. */
.dl-hero__nofig{
  margin:clamp(22px,3.2vw,34px) 0 0;padding:14px 0 0;
  border-top:1px solid var(--dl-line-d);
  font-size:var(--dl-fine);line-height:1.5;color:var(--dl-on-d-3);
}
.dl-hero__cta{
  display:flex;flex-wrap:wrap;gap:12px;
  margin-top:clamp(24px,3.2vw,32px);
}

/* ======================================================================
   6. BUTTONS — two weights, both 44px, both real links

   Every control that can be a link IS a link, with a working href, because a
   <button> that needs a script is a dead control the moment the script does
   not run. The request-access panel is an ENHANCEMENT layered over a link to
   the request-access page, never a replacement for it.
   ====================================================================== */
.dl-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:44px;padding:11px 22px;
  border-radius:2px;border:1px solid transparent;
  font-family:inherit;font-size:var(--dl-detail);font-weight:600;letter-spacing:.005em;
  text-decoration:none;cursor:pointer;
  transition:background-color .18s var(--dl-ease),border-color .18s var(--dl-ease),color .18s var(--dl-ease);
}
.dl-btn--gold{background:linear-gradient(135deg,#F0AD27,#D99B1B);border-color:#D99B1B;color:#120C02}
.dl-btn--gold:hover{background:var(--dl-gold-soft);border-color:var(--dl-gold-soft)}
.dl-btn--ghost{background:transparent;border-color:var(--dl-line-d2);color:var(--dl-on-d)}
.dl-btn--ghost:hover{border-color:var(--dl-gold);color:var(--dl-gold-soft)}
.dl-btn--outline{background:transparent;border-color:var(--dl-line-l2);color:var(--dl-ink)}
.dl-btn--outline:hover{border-color:var(--dl-gold-deep);color:var(--dl-gold-deep)}
.dl-page a:focus-visible,.dl-page button:focus-visible,
.dl-page summary:focus-visible,.dl-page input:focus-visible{
  outline:2px solid var(--dl-gold);outline-offset:2px;
}

/* ======================================================================
   7. THE SECTION INDEX AND THE RAIL

     "The ten sections listed as a navigable index. On desktop it's a left
      rail. On mobile it's a collapsible index at the top plus a small
      floating 'jump to section' control. The investor must always know where
      they are in the file and how much is left."

   ALL TEN ENTRIES ALWAYS RENDER, on every deal, whether or not the deal can
   fill that section. That is the point: the index is how an investor learns
   what a Capstaq file contains, and an index that shrinks to the sections we
   happened to fill would hide the absence rather than show it.

   THE MOBILE INDEX SHIPS OPEN and the script closes it, like everything else.
   With scripting off the button is display:none and the ten links render as a
   plain list, which is the correct degradation for a table of contents.
   ====================================================================== */
.dl-idx{background:var(--dl-navy-2);color:var(--dl-on-d);border-bottom:1px solid var(--dl-line-d)}
.dl-idx__row{
  display:flex;align-items:center;gap:14px;
  min-height:56px;padding-block:10px;
}
.dl-idx__label{
  flex:1 1 auto;
  font-size:11px;font-weight:600;letter-spacing:.19em;text-transform:uppercase;
  color:var(--dl-gold);
}
.dl-idx__btn{
  -webkit-appearance:none;appearance:none;
  display:inline-flex;align-items:center;justify-content:center;
  flex:0 0 auto;margin-left:auto;
  width:44px;height:44px;padding:0;
  background:none;border:0;border-radius:50%;
  font:inherit;color:var(--dl-on-d);cursor:pointer;
}
.dl-idx__ic{
  position:relative;width:24px;height:24px;
  border:1px solid var(--dl-line-d2);border-radius:50%;
  transition:border-color .2s var(--dl-ease);
}
.dl-idx__ic::before,.dl-idx__ic::after{
  content:"";position:absolute;top:50%;left:50%;
  background:currentColor;transform:translate(-50%,-50%);
  transition:opacity .2s var(--dl-ease);
}
.dl-idx__ic::before{width:10px;height:1.5px}
.dl-idx__ic::after{width:1.5px;height:10px}
.dl-idx__btn[aria-expanded="true"] .dl-idx__ic::after{opacity:0}
.dl-idx__btn[aria-expanded="true"] .dl-idx__ic{border-color:var(--dl-gold)}
.dl-idx__btn:hover .dl-idx__ic{border-color:var(--dl-gold)}
.dl-idx__list{padding-bottom:clamp(14px,2vw,20px)}
.dl-idx__list a{
  display:flex;align-items:center;gap:12px;
  min-height:40px;padding:6px 0;
  font-size:var(--dl-detail);color:var(--dl-on-d-2);text-decoration:none;
  border-bottom:1px solid var(--dl-line-d);
  transition:color .18s var(--dl-ease);
}
.dl-idx__list li:last-child a{border-bottom:0}
.dl-idx__list a:hover{color:var(--dl-gold-soft)}
.dl-idx__list a[aria-current="true"]{color:var(--dl-on-d)}
.dl-idx__n{
  flex:0 0 auto;width:2.2em;
  font-size:11px;font-weight:600;letter-spacing:.1em;
  font-variant-numeric:tabular-nums;color:var(--dl-on-d-3);
}
.dl-idx__t{flex:1 1 auto;min-width:0}

/* READ PROGRESS. A quiet checkmark and nothing else.

     "Show which sections they've opened. NOT GAMIFIED, no percentages or
      badges. A quiet checkmark."

   It is an in-session mark, set by an IntersectionObserver, and it persists
   nowhere: persistence needs a per-user record and there is no backend. It
   renders at 0 opacity rather than display:none so it reserves its own width
   and the ten rows do not shift as they are read. */
.dl-check{
  flex:0 0 auto;width:16px;height:16px;
  opacity:0;transition:opacity .3s var(--dl-ease);
  color:var(--dl-gold);
}
.dl-check svg{width:100%;height:100%;display:block;
  fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round}
[data-dl-read="true"] .dl-check{opacity:1}

/* THE FLOATING JUMP CONTROL — phone only, and script only.

   It does nothing a script cannot do (it opens the index that is already at
   the top of the page), so with scripting off it must not render at all.
   Bottom-right, clear of the iOS home indicator. */
/* "A SMALL floating jump-to-section control" is his word, and the first build
   ignored it: a 200px labelled pill sat over the copy in every screenshot at
   390, covering the ask control and the last line of most sections. It is now
   a 48px target with the label carried by aria-label, which clears the 40px
   floor and covers a corner instead of a column. */
.dl-jump{
  position:fixed;right:14px;z-index:45;
  bottom:calc(14px + env(safe-area-inset-bottom,0px));
  display:inline-flex;align-items:center;justify-content:center;
  width:48px;height:48px;padding:0;
  background:var(--dl-navy);color:var(--dl-on-d);
  border:1px solid var(--dl-line-d2);border-radius:50%;
  font-family:inherit;cursor:pointer;
  box-shadow:0 6px 22px rgba(8,21,42,.3);
}
.dl-jump:hover{border-color:var(--dl-gold);color:var(--dl-gold-soft)}
.dl-jump svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2}
html:not(.dl-js) .dl-jump{display:none}
.dl-jump[hidden]{display:none}

/* DESKTOP: the index becomes a left rail beside the file.

   The rail is sticky under the summary bar and ALWAYS OPEN, so above 1040 the
   collapse control is gone and there is nothing to expand. The hero and the
   closing band sit outside .dl-main entirely and keep their own full-width
   measure: the rail accompanies the FILE, not the whole document. */
@media (min-width:1040px){
  .dl-jump{display:none}
  .dl-main{
    max-width:var(--dl-wrap);margin-inline:auto;
    padding-inline:var(--dl-gut);
    display:grid;
    grid-template-columns:212px minmax(0,1fr);
    column-gap:clamp(32px,3.6vw,60px);
    align-items:start;
  }
  /* Inside the grid the measure is the column, so the inner .dl wrappers stop
     applying a page gutter and a page max-width on top of it. */
  .dl-main .dl{max-width:none;margin:0;padding-inline:0}
  .dl-rail{
    position:sticky;top:calc(var(--dl-stuck) + 26px);z-index:30;
    background:transparent;border-bottom:0;
    padding-block:clamp(30px,4vw,48px) 20px;
  }
  .dl-rail .dl-idx__row{display:none}
  .dl-rail .dl-idx__list{padding-bottom:0}
  /* 40px, not 34. The rail is a list of ten links and the floor applies to
     them like anything else; the first build set 34 and the harness caught
     five of the ten at 212x34. */
  .dl-rail .dl-idx__list a{
    align-items:flex-start;
    color:var(--dl-ink-3);border-bottom:0;min-height:40px;padding:8px 0;
    font-size:var(--dl-fine);line-height:1.35;
  }
  .dl-rail .dl-idx__list a:hover{color:var(--dl-gold-deep)}
  .dl-rail .dl-idx__list a[aria-current="true"]{color:var(--dl-ink);font-weight:600}
  .dl-rail .dl-idx__n{color:var(--dl-ink-3);width:2em}
  .dl-rail .dl-check{color:var(--dl-gold-deep);margin-top:1px}
  .dl-file>.dl-sec:first-of-type{padding-top:clamp(30px,4vw,48px);border-top:0}
}

/* ======================================================================
   8. SECTIONS

   Ten sections, always ten, numbered 01 to 10, with a hairline between and
   the section number in the eyebrow. scroll-margin-top clears the sticky bar
   so a rail jump does not land the heading underneath it.
   ====================================================================== */
.dl-sec{
  padding-block:var(--dl-pad);
  border-top:1px solid var(--dl-line);
  scroll-margin-top:calc(var(--dl-stuck) + 14px);
}
.dl-sec:first-of-type{border-top:0}
.dl-sec__hd{margin:0 0 clamp(22px,3vw,34px)}
.dl-sec__hd>.dl-lede{margin-top:clamp(14px,1.8vw,20px)}

/* THE ASK-ABOUT-THIS CONTROL, on every section.

     "An investor asking a question on section 04 is worth more than fifty
      page views."

   It is a LINK to the contact route, carrying the deal and the section in the
   query string, and it is a link on purpose. Routing a question to the team
   with its section context attached needs a backend that does not exist, and
   the alternative to a link is a form that accepts a question and shows a
   success message it cannot honour. On a page whose entire argument is that we
   do not pretend, a fake receipt is the worst available option. When the
   backend lands, the href is what the handler reads. */
.dl-ask{
  display:inline-flex;align-items:center;gap:8px;
  min-height:40px;margin-top:clamp(20px,2.6vw,28px);
  font-size:var(--dl-fine);font-weight:600;
  color:var(--dl-accent);text-decoration:none;
  border-bottom:1px solid transparent;
}
.dl-ask:hover{border-bottom-color:currentColor}
.dl-ask svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8}

/* ======================================================================
   9. THE ABSENCE PRIMITIVE

   Read the head note. Same size as data, ink-2, complete sentence, hollow
   marker, no count, no denominator, no apology.
   ====================================================================== */
.dl-abs{
  display:flex;align-items:flex-start;gap:11px;
  font-size:var(--dl-detail);line-height:1.6;color:var(--dl-fg-2);
}
.dl-abs::before{
  content:"";flex:0 0 auto;
  width:9px;height:9px;margin-top:.44em;
  border:1.5px solid var(--dl-fg-3);border-radius:50%;
}
/* The filled counterpart, so a reader learns the two marks by seeing them in
   the same column. Used on any row that CAN be absent and is not. */
.dl-has{
  display:flex;align-items:flex-start;gap:11px;
  font-size:var(--dl-detail);line-height:1.6;color:var(--dl-fg);
}
.dl-has::before{
  content:"";flex:0 0 auto;
  width:9px;height:9px;margin-top:.44em;
  background:var(--dl-accent);border-radius:50%;
}
/* A whole component that is absent gets the same voice at block scale: the
   named shape above, the sentence below, and a rule that says this is a place
   in the file rather than a gap in it. */
.dl-absblock{
  padding:clamp(16px,2.2vw,22px);
  border:1px solid var(--dl-line);border-left:2px solid var(--dl-line-2);
  background:var(--dl-paper-2);
}
.dl-absblock>.dl-h4{margin-bottom:9px}
.dl-absblock>.dl-abs{margin-top:0}
.dl-absblock>.dl-abs+.dl-fine{margin-top:10px}

/* AND THE GROUP, WHICH IS WHAT MOST SECTIONS ACTUALLY NEED.

   Sections 02, 05 and 06 each name three or four absent components in a row.
   Rendered as three or four separately-bordered boxes they read as a stack of
   identical apologies, and they cost about a third of the section's height in
   borders and padding that carry no information.

   One bordered object with hairline rows says the same thing in one gesture:
   these are places in the file, listed, each named, each stated. Every row
   keeps its full sentence at full size, because compressing the SENTENCE is
   what would undercut the feature. Only the boxes are merged. */
.dl-absgroup{
  border:1px solid var(--dl-line);border-left:2px solid var(--dl-line-2);
  background:var(--dl-paper-2);
}
.dl-absgroup__r{
  padding:clamp(15px,2vw,20px) clamp(16px,2.2vw,22px);
  border-bottom:1px solid var(--dl-line);
}
.dl-absgroup__r:last-child{border-bottom:0}
.dl-absgroup__r>.dl-h4{margin-bottom:8px}
.dl-absgroup__r>.dl-abs+.dl-fine{margin-top:9px}

/* THE NAMED ITEMS INSIDE AN ABSENCE.

   When a whole list is unpublished, the NAMES still render and the sentence is
   stated once instead of once per row. The names are data, so they print in
   full ink at data size; only the sentence beneath them is the absence. This
   is what keeps the presence rule intact while the repetition goes: a reader
   still sees that "uses" means these seven line items and that none of the
   seven is published. */
.dl-names{
  display:flex;flex-wrap:wrap;gap:4px 0;
  margin:0 0 11px;padding:0;list-style:none;
}
.dl-names li{
  font-size:var(--dl-detail);line-height:1.5;color:var(--dl-fg);
}
/* The separator trails its item rather than leading the next one. With
   ::before on li+li a wrapped line opens with a floating middot, which is what
   "Financing costs · Reserves" did at 390. */
.dl-names li:not(:last-child)::after{
  content:"·";margin:0 9px;color:var(--dl-fg-3);
}

/* ======================================================================
   10. THE NINE-FIELD FACT BLOCK — section 01. NEVER COLLAPSES.

     "Fact block, always the same nine fields in the same order: Asset type ·
      Location · Operating partner · Investment structure · Position in
      capital stack · Minimum investment · Expected investment period ·
      Current project stage · Capital status"

   Nine rows, nine labels, at every width, on every deal, filled or not. A
   field with no published value prints the absence sentence in the value slot
   at value size. Nothing here is behind a control at any width.

   RULE: no returns figures in this section. There is no cell in this grid
   that a return could be typed into, which is the structural version of the
   rule rather than the editorial one.
   ====================================================================== */
.dl-facts{
  display:grid;grid-template-columns:1fr;
  border-top:1px solid var(--dl-line);
}
.dl-facts>div{
  display:grid;grid-template-columns:minmax(0,10em) minmax(0,1fr);
  gap:8px 16px;
  padding:13px 0;border-bottom:1px solid var(--dl-line);
}
.dl-facts dt{
  font-size:var(--dl-fine);font-weight:600;line-height:1.45;
  color:var(--dl-fg-3);
}
.dl-facts dd{
  margin:0;font-size:var(--dl-detail);line-height:1.5;
  color:var(--dl-fg);font-weight:500;
}
.dl-facts dd.dl-abs{font-weight:400}
@media (min-width:760px){
  .dl-facts{grid-template-columns:1fr 1fr;column-gap:clamp(28px,3.4vw,52px)}
}

/* THE ORIENTATION TAG — Income / Growth / Tax-oriented / Blended.
   A chip when published, the absence sentence when not. */
.dl-orient{margin-top:clamp(18px,2.2vw,24px)}
.dl-orient__chip{
  display:inline-flex;align-items:center;
  padding:6px 13px;border:1px solid var(--dl-line-2);border-radius:999px;
  font-size:11px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;
  color:var(--dl-fg);
}

/* ======================================================================
   11. THE DISCLOSURE PRIMITIVE — .dl-d

   Inherited from home-d's .hd-d, whole. It ships open and CSS closes it, the
   label is a SIBLING of the button rather than inside it, and the button
   takes its accessible name from the label by aria-labelledby.

   THE LABEL IS OUTSIDE THE BUTTON AND THAT IS FORCED, NOT CHOSEN. The button
   is display:none with scripting off, which is what stops it being a dead
   control, and a label inside it would go with it. On home-d that produced an
   amputated page: every question vanished while its answer stayed on screen.
   Moving the label back inside reinstates the bug. Do not tidy it.

   USED ONLY FOR DEPTH. Every application of this primitive on the deal page
   was tested against the client's rule, and it appears in exactly three
   places: the operator's capability detail, a timeline phase's detail, and the
   mobile section index. In all three the LABEL is open and only the elaboration
   closes, so nothing whose existence matters is behind a tap.
   ====================================================================== */
.dl-d{border-bottom:1px solid var(--dl-line)}
.dl-d__row{
  display:flex;align-items:center;gap:clamp(12px,1.6vw,20px);
  min-height:56px;padding:12px 0;
  color:var(--dl-fg);
  transition:color .18s var(--dl-ease);
}
html.dl-js .dl-d__row{cursor:pointer}
html.dl-js .dl-d__row:hover{color:var(--dl-accent)}
html.dl-js .dl-d__row:hover .dl-d__ic{border-color:var(--dl-accent)}
.dl-d__label{
  flex:1 1 auto;min-width:0;
  font-size:var(--dl-detail);font-weight:600;line-height:1.4;letter-spacing:-.003em;
}
.dl-d__meta{
  flex:0 0 auto;
  font-size:var(--dl-fine);color:var(--dl-fg-3);
  font-variant-numeric:tabular-nums;
}
.dl-d__sum{
  -webkit-appearance:none;appearance:none;
  display:inline-flex;align-items:center;justify-content:center;
  flex:0 0 auto;margin-left:auto;
  width:44px;height:44px;padding:0;
  background:none;border:0;border-radius:50%;
  font:inherit;color:inherit;cursor:pointer;
}
.dl-d__ic{
  position:relative;flex:0 0 auto;
  width:24px;height:24px;
  border:1px solid var(--dl-line-2);border-radius:50%;
  transition:border-color .2s var(--dl-ease);
}
.dl-d__ic::before,.dl-d__ic::after{
  content:"";position:absolute;top:50%;left:50%;
  background:currentColor;transform:translate(-50%,-50%);
  transition:opacity .2s var(--dl-ease);
}
.dl-d__ic::before{width:10px;height:1.5px}
.dl-d__ic::after{width:1.5px;height:10px}
/* Gold means you did this. Nothing arrives gold. */
.dl-d__sum[aria-expanded="true"] .dl-d__ic::after{opacity:0}
.dl-d__sum[aria-expanded="true"] .dl-d__ic{border-color:var(--dl-accent)}
.dl-d__sum:hover .dl-d__ic{border-color:var(--dl-accent)}
.dl-d__a{padding:0 0 clamp(16px,2vw,22px);max-width:62ch}

/* ---- THE TWO RULES THAT MAKE THE ARCHITECTURE, AND NOTHING ELSE ---- */
html:not(.dl-js) .dl-d__sum{display:none}
html.dl-js .dl-d:has(.dl-d__sum[aria-expanded="false"])>.dl-d__a{display:none}
html.dl-js .dl-d>.dl-d__a{animation:dl-open .26s var(--dl-ease) both}
@keyframes dl-open{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

/* The mobile index uses the same state on its own control. */
html:not(.dl-js) .dl-idx__btn{display:none}
html.dl-js .dl-idx:has(.dl-idx__btn[aria-expanded="false"]) .dl-idx__list{display:none}
@media (min-width:1040px){
  /* The rail is always open, so the rule above must not reach it. */
  html.dl-js .dl-rail .dl-idx__list{display:block}
}

/* ======================================================================
   12. SECTION 02 — the published thesis

   His spec asks for a 150 to 250 word market condition and three to five
   supporting data points, "each with a source and date attached and
   displayed. IF WE CAN'T SOURCE IT, IT DOESN'T GO IN."

   We hold neither for any of the twelve. What we DO hold is the published
   thesis list, which is on this site already and is qualitative rather than
   quantitative, so it is rendered as what it is, under its own label, with
   the sourced data points shown as absent beside it. Rendering the thesis as
   "supporting data" would be exactly the substitution his rule forbids.
   ====================================================================== */
.dl-thesis{display:grid;gap:12px;margin:0}
.dl-thesis li{display:flex;align-items:flex-start;gap:11px;
  font-size:var(--dl-detail);line-height:1.6;color:var(--dl-fg)}
.dl-thesis li::before{
  content:"";flex:0 0 auto;width:9px;height:9px;margin-top:.44em;
  background:var(--dl-accent);border-radius:50%;
}

/* ======================================================================
   13. SECTION 03 — the operator
   ====================================================================== */
.dl-op{display:grid;gap:clamp(20px,2.6vw,28px)}
.dl-op__id{display:grid;gap:6px}
.dl-op__name{font-family:var(--dl-serif);font-weight:400;
  font-size:clamp(1.5rem,2.4vw,1.95rem);line-height:1.12;color:var(--dl-fg)}
.dl-op__disc{font-size:var(--dl-fine);font-weight:600;letter-spacing:.11em;
  text-transform:uppercase;color:var(--dl-accent)}
.dl-op__fig img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:2px}
.dl-op__fig figcaption{margin-top:9px;font-size:var(--dl-fine);color:var(--dl-fg-3)}
/* Key individuals. We hold names and, for some, a role. No photograph, no
   biography, no years in the asset class. The row prints what exists and the
   absence of the rest is stated once for the group rather than three times
   per person. */
.dl-people{border-top:1px solid var(--dl-line)}
.dl-people>li{
  display:grid;gap:3px;
  padding:13px 0;border-bottom:1px solid var(--dl-line);
}
.dl-people b{font-size:var(--dl-detail);font-weight:600;color:var(--dl-fg)}
.dl-people span{font-size:var(--dl-fine);line-height:1.5;color:var(--dl-fg-2)}
@media (min-width:760px){
  .dl-people>li{grid-template-columns:minmax(0,18em) minmax(0,1fr);gap:6px 24px;align-items:baseline}
}
/* Other opportunities Capstaq presents with the same operator. Each carries
   its OWN capital status, so a pipeline property can never read as an open
   one from another deal's page. */
.dl-along{display:grid;gap:0;border-top:1px solid var(--dl-line)}
.dl-along a{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;
  min-height:52px;padding:13px 0;
  border-bottom:1px solid var(--dl-line);
  text-decoration:none;color:var(--dl-fg);
}
.dl-along a:hover .dl-along__n{color:var(--dl-accent)}
.dl-along__n{flex:1 1 14em;font-size:var(--dl-detail);font-weight:600;
  transition:color .18s var(--dl-ease)}
.dl-along__m{font-size:var(--dl-fine);color:var(--dl-fg-3)}
.dl-along__s{
  flex:0 0 auto;padding:4px 10px;border:1px solid var(--dl-line-2);border-radius:999px;
  font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--dl-fg-2);
}

/* ======================================================================
   14. SECTION 04 — THE FEE TABLE. NEVER COLLAPSES.

     "The fee table is not collapsed by default and is not a footnote. Full
      disclosure of how everyone gets paid, INCLUDING US, is the single most
      differentiating thing on this page."

   Eight fixed rows in a fixed order, on every deal: the seven fee types his
   spec names, and how Capstaq is compensated on this transaction. The Capstaq
   row is LAST and is marked, because volunteering our own compensation is the
   part that earns the rest of the page.

   THE SHAPE IS A SCHEMA, NOT A CLAIM. A row reading "not published" says
   nothing about whether that fee exists on this deal, which is why the caption
   under the table says so in words. A row reading "None on this opportunity"
   is a published fact and prints as data.

   On phone it is a stack of labelled blocks rather than a scrolling table: a
   four-column table at 390 is either a horizontal scroll (which hides columns,
   i.e. presence) or 8px type. Both are worse than stacking.
   ====================================================================== */
.dl-fees{border-top:1px solid var(--dl-line-2)}
.dl-fees__row{padding:14px 0;border-bottom:1px solid var(--dl-line)}
.dl-fees__row--capstaq{
  border-left:2px solid var(--dl-accent);
  padding-left:14px;background:var(--dl-paper-2);
}
.dl-fees__t{
  display:block;margin-bottom:7px;
  font-size:var(--dl-detail);font-weight:600;line-height:1.4;color:var(--dl-fg);
}
.dl-fees__t em{
  font-style:normal;display:block;margin-top:3px;
  font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  color:var(--dl-accent);
}
.dl-fees__grid{display:grid;gap:8px}
.dl-fees__grid>div{display:grid;grid-template-columns:1fr;gap:2px}
.dl-fees__grid dt{font-size:var(--dl-fine);color:var(--dl-fg-3)}
.dl-fees__grid dd{margin:0;font-size:var(--dl-detail);line-height:1.5;color:var(--dl-fg)}
.dl-fees__grid dd.dl-abs{color:var(--dl-fg-2)}
@media (min-width:560px){
  .dl-fees__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 20px}
}
@media (min-width:860px){
  .dl-fees__row{
    display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr);
    gap:6px 28px;align-items:start;
  }
  .dl-fees__t{margin-bottom:0}
  .dl-fees__grid{gap:6px 24px}
}

/* What the investor holds, and the entity/stack shapes. Same two-column
   definition rhythm as the fact block so the page has one table voice. */
.dl-defs{border-top:1px solid var(--dl-line)}
.dl-defs>div{
  display:grid;grid-template-columns:minmax(0,13em) minmax(0,1fr);gap:8px 18px;
  padding:13px 0;border-bottom:1px solid var(--dl-line);
}
.dl-defs dt{font-size:var(--dl-fine);font-weight:600;line-height:1.45;color:var(--dl-fg-3)}
.dl-defs dd{margin:0;font-size:var(--dl-detail);line-height:1.55;color:var(--dl-fg)}
.dl-defs dd.dl-abs{color:var(--dl-fg-2);font-weight:400}
@media (max-width:559px){
  .dl-defs>div{grid-template-columns:1fr;gap:5px}
}

/* ======================================================================
   15. SECTION 06 — THE TIMELINE AND THE TODAY MARKER. NEVER COLLAPSES.

     "A clear TODAY marker. This is the single most-looked-at element in this
      section. It must be unmistakable and it must be accurate AS OF A
      DISPLAYED DATE."

   The marker is a filled gold node with a printed label, on the phase the
   record says the deal is in. It is never behind a control at any width, and
   it is never rendered on a deal whose current stage is not published: a
   TODAY on a guessed phase is the stale timeline he says is worse than none.
   Where the stage is not published, the section states that in the marker's
   own place rather than dropping the marker and leaving no trace.

   THE PHASE DETAIL closes on phone and the phase LABEL and DATE never do,
   which is the depth-not-presence test applied to this component.
   ====================================================================== */
/* .dl-page ol{padding:0} in the reset has specificity (0,1,1) and this rule
   had (0,1,0), so the timeline lost its 26px of gutter and every node rendered
   at -6px, clipped by the viewport edge at 390. Matched specificity rather
   than !important. */
.dl-page .dl-tl{position:relative;margin:0;padding-left:26px}
.dl-tl{position:relative}
.dl-tl::before{
  content:"";position:absolute;left:5px;top:8px;bottom:8px;width:1px;
  background:var(--dl-line-2);
}
.dl-tl>li{position:relative;padding-bottom:clamp(16px,2vw,22px)}
.dl-tl>li:last-child{padding-bottom:0}
.dl-tl>li::before{
  content:"";position:absolute;left:-26px;top:7px;
  width:11px;height:11px;border-radius:50%;
  background:var(--dl-paper);border:1.5px solid var(--dl-line-2);
}
.dl-tl>li[data-dl-phase="done"]::before{background:var(--dl-line-2);border-color:var(--dl-line-2)}
/* THE MARKER. Unmistakable is the requirement, so it is the only filled gold
   node on the page and it carries a printed word, not just a colour. */
.dl-tl>li[data-dl-phase="now"]::before{
  background:var(--dl-gold);border-color:var(--dl-gold-deep);
  box-shadow:0 0 0 4px rgba(217,164,65,.22);
}
.dl-tl__today{
  display:inline-flex;align-items:center;
  margin-bottom:6px;padding:4px 10px;
  background:var(--dl-gold-deep);border-radius:2px;
  font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:#fff;
}
.dl-tl__when{
  display:block;margin-bottom:3px;
  font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  color:var(--dl-fg-3);
}
.dl-tl__what{font-size:var(--dl-detail);font-weight:600;line-height:1.4;color:var(--dl-fg)}
/* Inside a phase the door label IS the phase name, so it keeps the phase's
   own type rather than the smaller door-label setting. */
.dl-tl .dl-d{border-bottom:0}
.dl-tl .dl-d__row{min-height:44px;padding:0}
.dl-tl .dl-d__label{
  font-size:var(--dl-detail);font-weight:600;line-height:1.4;color:var(--dl-fg);
}
.dl-tl .dl-d__a{padding:6px 0 0}

/* ======================================================================
   16. SECTION 08 — WHAT HAS TO GO RIGHT / WHAT COULD GO WRONG.
   NEVER COLLAPSES, AND WRONG COMES FIRST ON PHONE.

     "Two columns, EQUAL VISUAL WEIGHT. Not risks tucked under a collapsed
      accordion below the good news."

   And from the v1 decision, which is the stricter of the two:

     "Section 08, stacked on phone with 'what could go wrong' ON TOP, not
      second. The risk is not the second half of a balanced pair; on a phone
      it leads."

   THE DOM ORDER IS WRONG-THEN-RIGHT. The phone order is therefore the source
   order and needs no rule at all, which is what makes it safe: there is no
   media query that can fail and silently restore the wrong order, and a reader
   with no CSS at all still meets the risk first. Desktop restores the
   left-to-right reading of his two columns with `order`, because at 1040 the
   two are side by side and neither is "first".

   EQUAL WEIGHT IS ENFORCED BY THE GRID: 1fr and 1fr, same border, same
   padding, same type scale. Do not add a background to one column.
   ====================================================================== */
.dl-risk{display:grid;gap:clamp(24px,3vw,32px)}
.dl-risk__col{display:grid;gap:14px;align-content:start}
.dl-risk__h{
  display:flex;align-items:baseline;gap:10px;
  padding-bottom:10px;border-bottom:1px solid var(--dl-line-2);
  font-size:var(--dl-detail);font-weight:600;letter-spacing:.005em;color:var(--dl-fg);
}
.dl-risk__list{display:grid;gap:14px}
.dl-risk__list>li{display:grid;gap:4px}
.dl-risk__list b{font-size:var(--dl-detail);font-weight:600;line-height:1.4;color:var(--dl-fg)}
.dl-risk__list span{font-size:var(--dl-fine);line-height:1.6;color:var(--dl-fg-2)}
@media (min-width:1040px){
  .dl-risk{grid-template-columns:1fr 1fr;column-gap:clamp(32px,3.6vw,56px)}
  .dl-risk__col--wrong{order:2}
  .dl-risk__col--right{order:1}
}
/* THE NAMED BIGGEST SINGLE RISK. One risk, called out, above the two columns
   because his spec makes it a field of the section rather than an item in a
   list. Absent where the record does not name one: choosing which risk is
   biggest is an underwriting judgment and not ours to invent. */
.dl-biggest{
  margin-bottom:clamp(24px,3vw,32px);padding:clamp(18px,2.4vw,24px);
  background:var(--dl-paper-2);border:1px solid var(--dl-line-2);
  border-left:2px solid var(--dl-gold-deep);
}
.dl-biggest__l{
  display:block;margin-bottom:8px;
  font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--dl-accent);
}
.dl-biggest__t{font-size:var(--dl-body);font-weight:600;line-height:1.4;color:var(--dl-fg)}
.dl-biggest__d{margin-top:7px;font-size:var(--dl-detail);line-height:1.6;color:var(--dl-fg-2)}

/* ======================================================================
   17. SECTION 09 — THE CAPSTAQ REVIEW. ALL FOUR FIELDS, ALWAYS OPEN.

     "This is our product. Nobody else does this."
     "If field 4 is uncomfortable to publish on a given deal, that's
      information about the deal, not a reason to soften the field."

   A FIXED FORM. Four fields, same order, every deal, and the component takes
   no free text: the generator can only fill the four named slots, so there is
   no place for deal-by-deal rewriting to happen.

   Field 4 carries a marked treatment because the client singled it out. Not a
   warning colour and not a heavier weight, because it is not an alarm: a gold
   left rule, the same one the Capstaq fee row carries, which on this page
   reads as "this is the part Capstaq is answering for".

   It is set as a document rather than a section: a ruled block on white with a
   printed heading rail, so it reads like the one thing on the page that was
   signed. That is the whole design brief for this component.
   ====================================================================== */
.dl-rev{
  background:var(--dl-paper-2);
  border:1px solid var(--dl-line-2);
  border-top:2px solid var(--dl-gold-deep);
}
.dl-rev__hd{
  display:flex;flex-wrap:wrap;gap:8px 20px;align-items:baseline;
  padding:clamp(16px,2.2vw,22px) clamp(18px,2.6vw,26px);
  border-bottom:1px solid var(--dl-line);
}
.dl-rev__hd b{font-size:var(--dl-detail);font-weight:600;color:var(--dl-fg)}
.dl-rev__hd .dl-abs,.dl-rev__hd .dl-has{font-size:var(--dl-fine)}
.dl-rev__f{
  padding:clamp(16px,2.2vw,22px) clamp(18px,2.6vw,26px);
  border-bottom:1px solid var(--dl-line);
}
.dl-rev__f:last-of-type{border-bottom:0}
.dl-rev__f--assumption{border-left:2px solid var(--dl-gold-deep)}
.dl-rev__n{
  display:block;margin-bottom:7px;
  font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--dl-accent);
}
.dl-rev__q{
  display:block;margin-bottom:9px;
  font-size:var(--dl-detail);font-weight:600;line-height:1.4;color:var(--dl-fg);
}
.dl-rev__foot{
  padding:clamp(14px,2vw,18px) clamp(18px,2.6vw,26px);
  border-top:1px solid var(--dl-line-2);background:var(--dl-paper);
}

/* ======================================================================
   18. SECTION 10 — DOCUMENTS. EMPTY CATEGORIES RENDER AS EMPTY.

     "An empty document category displays as empty rather than being hidden.
      The investor should be able to SEE WHAT ISN'T THERE."

   This reverses the previous behaviour of this page, which omitted the
   materials section entirely while the list was empty. Omitting it was the
   right answer under the old brief and is the wrong answer under this one:
   his rule makes the six categories part of the file's shape.

   Six groups, always six, in his order. No count on an empty group.
   ====================================================================== */
.dl-docs{border-top:1px solid var(--dl-line)}
.dl-docs>div{padding:14px 0;border-bottom:1px solid var(--dl-line)}
.dl-docs__t{
  display:block;margin-bottom:7px;
  font-size:var(--dl-detail);font-weight:600;line-height:1.4;color:var(--dl-fg);
}
.dl-doc{display:grid;gap:3px;padding:9px 0}
.dl-doc b{font-size:var(--dl-detail);font-weight:600;color:var(--dl-fg)}
.dl-doc span{font-size:var(--dl-fine);line-height:1.55;color:var(--dl-fg-2)}
.dl-doc em{font-style:normal;font-size:var(--dl-fine);color:var(--dl-fg-3)}
@media (min-width:860px){
  .dl-docs>div{display:grid;grid-template-columns:minmax(0,17em) minmax(0,1fr);gap:6px 28px;align-items:start}
  .dl-docs__t{margin-bottom:0}
}

/* ======================================================================
   19. SECTION 07 — THE STRUCTURE ILLUSTRATOR

     "What this DOES NOT do is generate a personalized return figure. No 'your
      projected profit,' no dollar outcomes, no personalized IRR. This is a
      MECHANICS TOOL, not a returns calculator. BUILD IT THAT WAY FROM THE
      START."

   So it is built that way from the start, structurally rather than by
   restraint: the component's row schema has six keys and not one of them can
   hold a currency amount, the generator has no code path that multiplies an
   allocation by anything, and there is no output element in this markup. A
   returns version is not a small edit away; it is a different component.

   AND THE ALLOCATION SELECTOR ONLY EXISTS WHERE IT DRIVES SOMETHING. No deal
   on this platform publishes a waterfall, a fee schedule, a capital-event
   schedule, a hold period or a total equity figure, so at the selected amount
   nothing on any of the twelve would change. A selector that changes nothing
   is a dead control, and a dead control on the one component he flagged as
   most likely to be rebuilt is the worst place to put one. It renders when the
   record can answer at least one row differently at different amounts, and not
   before. See make_deal_briefs.py, illustrator_rows().
   ====================================================================== */
.dl-mech{border-top:1px solid var(--dl-line)}
.dl-mech>div{
  display:grid;grid-template-columns:1fr;gap:5px;
  padding:14px 0;border-bottom:1px solid var(--dl-line);
}
.dl-mech dt{font-size:var(--dl-detail);font-weight:600;line-height:1.4;color:var(--dl-fg)}
.dl-mech dd{margin:0;font-size:var(--dl-detail);line-height:1.6;color:var(--dl-fg-2)}
@media (min-width:760px){
  .dl-mech>div{grid-template-columns:minmax(0,17em) minmax(0,1fr);gap:6px 28px;align-items:start}
}

/* ======================================================================
   20. FIGURE GROUPS — Projected and Historical never share a grouping

     "Every number anywhere on this page carries a visible Projected or
      Historical label, and THE TWO NEVER APPEAR INSIDE THE SAME VISUAL
      GROUPING."

   So a figure group carries ONE label for the whole group, and the generator
   partitions a deal's figures by that label before rendering. It refuses to
   build a mixed group rather than trusting the next editor to notice: Grand
   Lake mixes existing garages and existing rentable square feet (historical)
   with an expansion business plan (projected) in one record, and under the old
   layout those four sat in one grid.
   ====================================================================== */
.dl-figs{margin-top:clamp(20px,2.6vw,28px)}
.dl-figs+.dl-figs{margin-top:clamp(22px,2.8vw,30px)}
.dl-figs__l{
  display:block;margin-bottom:12px;
  font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--dl-accent);
}
/* Every deal publishes one or two figures. A fixed four-column track left two
   or three empty cells painted in the rule colour, a tan block beside the
   numbers on all twelve deal pages. The strip is now as wide as its figures. */
.dl-figs__g{
  display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,208px);
  width:fit-content;max-width:100%;
  gap:1px;background:var(--dl-line);border:1px solid var(--dl-line);
}
.dl-figs__g>div{background:var(--dl-paper);padding:14px}
.dl-figs__g b{
  display:block;
  font-family:var(--dl-serif);font-weight:400;
  font-size:clamp(1.35rem,2.6vw,1.75rem);line-height:1.05;color:var(--dl-fg);
}
.dl-figs__g span{
  display:block;margin-top:5px;
  font-size:var(--dl-fine);line-height:1.4;color:var(--dl-fg-3);
}

/* ======================================================================
   21. THE CLOSING BAND

     "Two controls, equal weight: Discuss This Opportunity / Request Access.
      No 'Invest Now.' No 'Commit.' No 'Reserve your allocation.'"

   Equal weight is literal: same min-height, same padding, same type. One is
   filled and one is outlined because two identical buttons side by side give a
   reader nothing to decide with, and the FILLED one is the conversation, not
   the transaction.
   ====================================================================== */
.dl-end{background:var(--dl-navy);color:var(--dl-on-d);padding-block:var(--dl-pad)}
.dl-end .dl-h2{color:#fff}
.dl-end .dl-lede{color:var(--dl-on-d-2)}
.dl-end__cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(24px,3vw,32px)}
.dl-end__cta .dl-btn{flex:1 1 15em}
.dl-end__note{
  margin-top:clamp(24px,3vw,32px);padding-top:clamp(18px,2.2vw,24px);
  border-top:1px solid var(--dl-line-d);
  font-size:var(--dl-fine);line-height:1.6;color:var(--dl-on-d-3);max-width:76ch;
}

/* ======================================================================
   22. THE REQUEST-ACCESS PANEL

     "Opens as a PANEL, not a redirect. The page stays behind it."

   An enhancement over a working link, never a replacement for one. The
   trigger is an <a href="../request-access.html">; the script intercepts the
   click and opens the dialog instead. With scripting off the link navigates
   and nothing is lost, which is why there is no dl-js rule hiding it.
   ====================================================================== */
.dl-modal{
  width:min(560px,calc(100vw - 32px));max-height:min(86vh,760px);
  padding:0;border:1px solid var(--dl-line-2);border-radius:2px;
  background:var(--dl-paper-2);color:var(--dl-ink);
}
.dl-modal::backdrop{background:rgba(5,13,26,.68)}
.dl-modal__hd{
  position:relative;padding:clamp(20px,3vw,26px);
  border-bottom:1px solid var(--dl-line);
}
.dl-modal__hd .dl-h3{padding-right:52px}
.dl-modal__x{
  position:absolute;top:12px;right:12px;
  width:44px;height:44px;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
  background:none;border:0;border-radius:50%;cursor:pointer;color:var(--dl-ink-2);
}
.dl-modal__x:hover{color:var(--dl-ink)}
.dl-modal__x svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}
.dl-modal__b{padding:clamp(20px,3vw,26px);overflow-y:auto}
.dl-modal__f{display:grid;gap:8px;margin-bottom:20px}
.dl-modal__f>span{font-size:var(--dl-fine);font-weight:600;color:var(--dl-ink-2)}
.dl-modal__opts{display:grid;gap:8px}
.dl-modal__opts label{
  display:flex;align-items:center;gap:11px;
  min-height:44px;padding:9px 13px;
  border:1px solid var(--dl-line-l);border-radius:2px;cursor:pointer;
  font-size:var(--dl-detail);color:var(--dl-ink);
}
.dl-modal__opts label:hover{border-color:var(--dl-gold-deep)}
.dl-modal__opts input{accent-color:var(--dl-gold-deep);width:17px;height:17px;flex:0 0 auto}
.dl-modal__opts input:checked+span{font-weight:600}
.dl-modal textarea{
  width:100%;min-height:88px;padding:11px 13px;
  border:1px solid var(--dl-line-l);border-radius:2px;
  font-family:inherit;font-size:var(--dl-detail);line-height:1.55;color:var(--dl-ink);
  background:var(--dl-paper-2);resize:vertical;
}
.dl-modal__note{margin-top:14px;font-size:var(--dl-fine);line-height:1.55;color:var(--dl-ink-3)}

/* ======================================================================
   23. PARTNER-LAYER OVERRIDES, SCOPED TO .dl

   The lockup and the "who does what" block come from make_partners.py so the
   wording cannot fork between the partner pages and the deal pages. Only the
   wording is shared; the LOOK is this file's. Everything below is scoped to
   .dl-page so the partner pages themselves are untouched.
   ====================================================================== */
.dl-page .pt-lockup{
  display:inline-flex;flex-wrap:wrap;align-items:center;gap:10px 14px;
  font-size:var(--dl-fine);letter-spacing:.06em;text-transform:uppercase;
}
.dl-page .pt-lockup__side{display:inline-flex;align-items:center;gap:9px}
.dl-page .pt-lockup b,.dl-page .pt-lockup strong{
  font-weight:600;letter-spacing:.11em;color:var(--dl-on-d);
}
.dl-page .pt-lockup__x{color:var(--dl-gold);font-size:15px}
.dl-page .pt-lockup-link{text-decoration:none;display:inline-block;min-height:40px;
  display:inline-flex;align-items:center}
.dl-page .pt-lockup-link:hover .pt-lockup b,
.dl-page .pt-lockup-link:hover .pt-lockup strong{color:var(--dl-gold-soft)}
.dl-page .pt-lockup__mark{display:inline-grid;grid-template-columns:repeat(2,5px);gap:2px}
.dl-page .pt-lockup__mark i{width:5px;height:5px;background:var(--dl-gold);display:block}

.dl-page .pt-sec{padding:0;background:none;color:inherit}
.dl-page .pt-sec .container{width:auto;max-width:none;margin:0;padding:0}
.dl-page .pt-who{display:grid;gap:clamp(20px,2.4vw,28px)}
.dl-page .pt-who h2,.dl-page .pt-who h3{
  font-family:var(--dl-serif);font-weight:400;color:var(--dl-fg);
}
.dl-page .pt-who h2{font-size:clamp(1.5rem,2.4vw,1.95rem);line-height:1.12;margin:0 0 clamp(18px,2.4vw,26px)}
.dl-page .pt-who h3{font-size:clamp(1.15rem,1.8vw,1.35rem);line-height:1.16;margin:0 0 12px}
.dl-page .pt-who__role{
  margin:0 0 6px;
  font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--dl-accent);
}
.dl-page .pt-who__col{border-top:1px solid var(--dl-line-2);padding-top:clamp(14px,1.8vw,20px)}
/* NINE ITEMS, TIGHTENED. This block is imported whole from the partner system
   so its wording cannot fork, and at 390 it measured 1,485px, which was eight
   per cent of the entire page for a component that says the same thing on
   every opportunity. Nothing is removed and nothing is closed: the type sits
   at the same two sizes and the gaps come down. */
.dl-page .pt-who ul{display:grid;gap:11px;margin:0;padding:0;list-style:none}
.dl-page .pt-who li{display:flex;align-items:flex-start;gap:10px}
.dl-page .pt-who li .ico{width:16px;height:16px;flex:0 0 auto;margin-top:3px;
  color:var(--dl-accent);stroke:currentColor;fill:none}
.dl-page .pt-who li b{display:block;font-size:var(--dl-detail);font-weight:600;
  line-height:1.35;color:var(--dl-fg)}
.dl-page .pt-who li span{display:block;margin-top:2px;font-size:var(--dl-fine);
  line-height:1.5;color:var(--dl-fg-2)}
@media (min-width:860px){
  .dl-page .pt-who{grid-template-columns:1fr 1fr;column-gap:clamp(32px,3.6vw,56px)}
}

/* ======================================================================
   24. SHARED ODDS AND ENDS
   ====================================================================== */
.dl-note{
  margin-top:clamp(16px,2vw,22px);padding-top:13px;
  border-top:1px solid var(--dl-line);
  font-size:var(--dl-fine);line-height:1.6;color:var(--dl-fg-3);max-width:74ch;
}
.dl-sub{margin:0 0 clamp(14px,1.8vw,18px)}
.dl-stack{display:grid;gap:clamp(22px,3vw,32px)}
.dl-stack--tight{gap:clamp(16px,2.2vw,22px)}
.dl-disc{
  margin-top:clamp(26px,3.2vw,36px);padding-top:16px;
  border-top:1px solid var(--dl-line);
  font-size:var(--dl-fine);line-height:1.6;color:var(--dl-fg-3);max-width:78ch;
}
.dl-vh{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

@media (prefers-reduced-motion:reduce){
  .dl-page *,.dl-page *::before,.dl-page *::after{
    animation-duration:.001ms !important;animation-iteration-count:1 !important;
    transition-duration:.001ms !important;scroll-behavior:auto !important;
  }
}

/* ---------------------------------------------------------------- contrast --
   THE TWO GOLDS, on the deal page.

   --dl-accent is the paper gold (#7E5A1D): 5.7:1 on the paper sections and
   correct there. Three places put it on a navy panel instead, where it drops
   to 2.9:1 and 1.09:1 — the "Who Does What" block, which is the compliance
   statement of who is responsible for what, and the closing section eyebrow.

   Deal pages do not load home-d.css, so the navy gold is declared here rather
   than referenced. It is the same value as --hd-gold: 8.1:1 on navy. */
.pt-who__col .pt-who__role,
.pt-who__col .pt-who__line,
.dl-end .dl-eyebrow { color:#D9A441; }

/* .pt-who__line hardcodes color:#fff in partner.css, where it sits on a navy
   panel. On the deal page the same component is placed in a PAPER section, so
   the line that states the partnership structure rendered white on #F7F5F0 at
   1.09:1 — invisible on all twelve deal pages. Scoped here rather than changed
   in partner.css, where the white is correct. */
.dl-stack .pt-sec .pt-who__line { color:#0C1B2E; }

/* ===========================================================================
   THE 2026-09-08 CONTENT PASS
   ---------------------------------------------------------------------------
   "TRANSPARENCY DOES NOT MEAN SHOWING EMPTY FIELDS. Transparency means showing
   what we know, showing the source, distinguishing fact from projection,
   identifying what remains uncertain, and telling investors where the official
   documents control."
   ========================================================================= */

/* -- Sourced evidence, section 02 ----------------------------------------
   The citation is set at the same weight as the claim rather than smaller.
   A source in fine print reads as a disclaimer; a source on the same line as
   the claim reads as the claim's warrant, which is what it is. */
.dl-evid{margin:clamp(16px,2vw,22px) 0 0;padding:0;list-style:none;display:grid;gap:clamp(14px,1.8vw,20px)}
.dl-evid li{padding-left:16px;border-left:2px solid var(--dl-line-l,#DFD9CD)}
.dl-evid p{margin:0;color:var(--dl-ink-2,#33455A)}
.dl-evid cite{display:block;margin-top:6px;font-style:normal;font-size:.8125rem;color:var(--dl-ink-3,#5C6D80)}

/* A point that cuts against the thesis is marked, not hidden and not
   apologised for. Gold rather than red: it is evidence, not a warning. */
.dl-evid li.is-against{border-left-color:#7E5A1D}
.dl-evid li.is-against cite::before{content:"Counts against the thesis · ";color:#7E5A1D;font-weight:600}

/* -- The deal room, section 10 -------------------------------------------
   "Put a lock icon next to restricted materials. That communicates: WE HAVE A
   REAL DUE-DILIGENCE ROOM. Not: Capstaq doesn't have anything." */
.dl-room{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr));gap:clamp(18px,2.4vw,30px);margin-top:clamp(16px,2vw,22px)}
.dl-room__l{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:7px}
.dl-room__l li{padding-left:22px;position:relative;color:var(--dl-ink-2,#33455A);font-size:.9375rem}
.dl-room__l li.is-locked::before{
  content:"";position:absolute;left:0;top:.35em;width:11px;height:9px;
  border:1.5px solid currentColor;border-radius:2px;opacity:.75;
}
/* The shackle. Drawn rather than an icon font so it cannot fail to load and
   leave a row that reads as unrestricted. */
.dl-room__l li.is-locked::after{
  content:"";position:absolute;left:2.5px;top:calc(.35em - 5px);
  width:6px;height:6px;border:1.5px solid currentColor;border-bottom:0;
  border-radius:3px 3px 0 0;opacity:.75;
}
.dl-room__note{margin:clamp(18px,2.2vw,24px) 0 0;color:var(--dl-ink-2,#33455A);font-size:.9375rem}
.dl-room__cta{margin:clamp(20px,2.4vw,28px) 0 0}

/* The fee rows that are restricted rather than unknown carry the same mark, so
   the two meanings are distinguishable at a glance down the table. */
.dl-abs--lock{position:relative;padding-left:22px}
.dl-abs--lock::before{content:"";position:absolute;left:0;top:.42em;width:11px;height:9px;border:1.5px solid currentColor;border-radius:2px;opacity:.7}
.dl-abs--lock::after{content:"";position:absolute;left:2.5px;top:calc(.42em - 5px);width:6px;height:6px;border:1.5px solid currentColor;border-bottom:0;border-radius:3px 3px 0 0;opacity:.7}

/* -- The dual-hotel disclosure, Goodyear ---------------------------------
   Directly under the hero, never collapsed, and given the gold rule because
   it is the one thing on the page an investor must not misread. */
.dl-disc{background:var(--dl-paper-2,#fff);border-block:1px solid var(--dl-line-l,#DFD9CD);border-left:3px solid #7E5A1D;padding-block:clamp(20px,2.6vw,30px)}
.dl-disc__h{margin:0;font-family:var(--dl-serif,Georgia,serif);font-size:clamp(1.05rem,1.9vw,1.3rem);color:var(--dl-ink,#0C1B2E)}
.dl-disc__b{margin:10px 0 0;max-width:70ch;color:var(--dl-ink-2,#33455A)}
.dl-disc__s{margin:10px 0 0;font-size:.8125rem;color:var(--dl-ink-3,#5C6D80)}

/* ------------------------------------------------------- ownership rungs --
   "Build an actual ownership diagram... this is one of our biggest
   differentiators. VISUALIZE IT." (2026-09-08)

   A numbered stack with a connecting spine, because the thing being shown is
   a chain of holdings and each link is one step further from your money. The
   spine is drawn on the list, not on each row, so it cannot break between
   items when one wraps to three lines on a phone. */
.dl-own{
  position:relative;margin:clamp(16px,2vw,22px) 0 0;padding:0 0 0 clamp(30px,4vw,42px);
  list-style:none;counter-reset:none;
}
.dl-own::before{
  content:"";position:absolute;left:clamp(14px,2vw,20px);top:14px;bottom:14px;
  width:1px;background:var(--dl-line-l,#DFD9CD);
}
.dl-own__r{position:relative;padding:0 0 clamp(18px,2.2vw,26px)}
.dl-own__r:last-child{padding-bottom:0}
.dl-own__n{
  position:absolute;left:calc(-1 * clamp(30px,4vw,42px));top:0;
  width:clamp(28px,3.6vw,38px);height:clamp(28px,3.6vw,38px);
  display:grid;place-items:center;
  font-family:var(--dl-serif,Georgia,serif);font-size:.875rem;
  color:var(--dl-ink-2,#33455A);
  background:var(--dl-paper-2,#fff);
  border:1px solid var(--dl-line-l,#DFD9CD);border-radius:50%;
}
.dl-own__r b{display:block;font-weight:600;color:var(--dl-ink,#0C1B2E)}
.dl-own__role{
  display:block;margin-top:2px;font-size:.8125rem;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:#7E5A1D;
}
.dl-own__d{display:block;margin-top:6px;max-width:62ch;color:var(--dl-ink-2,#33455A);font-size:.9375rem}

/* The asset is the end of the chain and reads as the destination. */
.dl-own__r:last-child .dl-own__n{background:var(--dl-navy,#08152A);border-color:var(--dl-navy,#08152A);color:#fff}

/* Without the per-deal themes, components that read --accent-ink fall back to
   site.css's light-ground gold (#754600). Deal pages sit on the v1 paper, whose
   gold is #7E5A1D; the alias is re-declared because it is frozen on :root. */
.dl-body{--gold-700:#7E5A1D;--gold-600:#7E5A1D;--accent-ink:#7E5A1D}

/* "Who does what." was the only Inter display heading on the site: the serif
   for .pt-head h2 lives in partner-v1.css, which the deal template does not
   load. Its 26px Inter lede sat beside the page's 17px ledes. */
.dl-body .pt-head h2{font-family:var(--dl-serif,"Playfair Display",Georgia,serif);font-weight:400}
.dl-body .pt-who__line{font-size:1.0625rem;font-weight:400;line-height:1.55}

/* ======================================================================
   ONE NIGHT  (founder, 2026-09-10)

   "They all need to match." The deal file ran navy masthead, near-white
   paper, navy close: the same dark-to-light flip the homepage had. The
   paper ramp now resolves to the navy ramp. The aliases are re-declared
   here because the :root copies above are frozen at their paper values.
   ====================================================================== */
body.dl-body{
  --dl-paper:    var(--dl-navy);
  --dl-paper-2:  var(--dl-navy-2);
  --dl-ink:      var(--dl-on-d);
  --dl-ink-2:    var(--dl-on-d-2);
  --dl-ink-3:    var(--dl-on-d-3);
  --dl-line-l:   var(--dl-line-d);
  --dl-line-l2:  var(--dl-line-d2);
  --dl-gold-deep:var(--dl-gold);

  --dl-fg:      var(--dl-on-d);
  --dl-fg-2:    var(--dl-on-d-2);
  --dl-fg-3:    var(--dl-on-d-3);
  --dl-line:    var(--dl-line-d);
  --dl-line-2:  var(--dl-line-d2);
  --dl-accent:  var(--dl-gold);

  /* the partner and site layers the deal page borrows */
  --gold-700:#D9A441; --gold-600:#D9A441; --accent-ink:#D9A441;
  --ink-900:#FFFFFF; --ink-700:#C6D2E0; --ink-500:#93A5B9;
  --heading-ink:#FFFFFF; --body-ink:#C6D2E0;
  --rule:rgba(255,255,255,.22); --rule-soft:rgba(255,255,255,.13);
  --paper:var(--dl-navy); --paper-alt:var(--dl-navy-2); --white:var(--dl-navy-2);

  background:var(--dl-navy);
  color:var(--dl-on-d);
}
/* Three literals written for paper. */
.dl-stack .pt-sec .pt-who__line{color:var(--dl-on-d)}
.dl-own__role{color:var(--dl-gold)}
.dl-tl__today{color:#120C02}
/* Six size bands read better in two columns than as a six-deep stack. */
.dl-modal__opts--cols{grid-template-columns:1fr 1fr}
@media (max-width:520px){.dl-modal__opts--cols{grid-template-columns:1fr}}
/* A topic this deal does not publish: in the file, not linked. The rail's
   type lives on its <a>, so a non-link row has to restate it. */
.dl-idx__off > span{
  display:flex;flex-wrap:wrap;align-items:flex-start;gap:0 12px;
  min-height:40px;padding:6px 0;
  font-size:var(--dl-detail);line-height:1.35;color:var(--dl-on-d-3);
  border-bottom:1px solid var(--dl-line-d);cursor:default;
}
.dl-idx__off .dl-idx__t{flex:1 1 auto;min-width:0}
/* Linked rows open with a 16px checkmark; these do not, so the numbers align. */
.dl-idx__off .dl-idx__n{margin-left:28px}
.dl-idx__off .dl-idx__note{flex:1 0 100%;margin:2px 0 0 calc(2.2em + 40px);font-size:11px;line-height:1.4;opacity:.8}
@media (min-width:1040px){
  .dl-rail .dl-idx__off > span{
    color:var(--dl-ink-3);border-bottom:0;padding:8px 0;font-size:var(--dl-fine);
  }
}
