/* ==========================================================================
   HC Capital Partners - Power-Linked Infrastructure
   Single stylesheet. Sections:
     1. Base reset (Tailwind v4 preflight, unchanged from the original build)
     2. Design tokens
     3. Global / header / footer
     4. Home page sections
     5. Contact page
     6. Responsive
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. BASE RESET - Tailwind v4 preflight (kept verbatim from the original build)
   -------------------------------------------------------------------------- */
:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}
*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}
::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}
html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family);-webkit-tap-highlight-color:transparent}
hr{height:0;color:inherit;border-top-width:1px}
abbr:where([title]){text-decoration:underline dotted}
h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}
a{color:inherit;text-decoration:inherit}
b,strong{font-weight:bolder}
code,kbd,samp,pre{font-family:var(--default-mono-font-family);font-size:1em}
small{font-size:80%}
sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}
sub{bottom:-.25em}
sup{top:-.5em}
table{text-indent:0;border-color:inherit;border-collapse:collapse}
:-moz-focusring{outline:auto}
progress{vertical-align:baseline}
summary{display:list-item}
ol,ul,menu{list-style:none}
img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}
img,video{max-width:100%;height:auto}
button,input,select,optgroup,textarea{font:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}
::file-selector-button{font:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}
:where(select:is([multiple],[size])) optgroup{font-weight:bolder}
:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}
::file-selector-button{margin-inline-end:4px}
::placeholder{opacity:1}
textarea{resize:vertical}
::-webkit-search-decoration{-webkit-appearance:none}
::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}
button,input:where([type=button],[type=reset],[type=submit]){appearance:button}
::file-selector-button{appearance:button}
[hidden]:where(:not([hidden=until-found])){display:none!important}

/* --------------------------------------------------------------------------
   2. DESIGN TOKENS
   -------------------------------------------------------------------------- */
:root{
  --ink:#0b0c0c;
  --carbon:#151718;
  --paper:#efede6;
  --muted:#9a9c98;
  --line:#343738;
  --orange:#ff5a1f;
  --green:#c7f33a;
  --green-deep:#6f8614;   /* --green is too light to read on --paper */
  --font-geist-sans:"Geist","Helvetica Neue",Arial,sans-serif;
  --font-geist-mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}

/* --------------------------------------------------------------------------
   3. GLOBAL / HEADER / FOOTER
   -------------------------------------------------------------------------- */
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--ink)}
body{background:var(--ink);color:var(--paper);font-family:var(--font-geist-sans);margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
a{color:inherit;text-decoration:none}

header{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:20;background:#0b0c0cf0;justify-content:space-between;align-items:center;height:76px;padding:0 3vw;display:flex;position:sticky;top:0}
.brand{align-items:center;gap:13px;display:flex}

/* Logo mark - HC monogram.

   One mark system shared across HC Capital, Energy Ranch and WranglerX: a
   square box, a border of 7% of the box (the weight of the original HC frame),
   and a corner square pinned outside the lower right at 19.6% of the box. Only
   the contents and the corner square's color differ between the three brands.

   Everything derives from --box, so changing that one value rescales the whole
   mark. The SVG holds only the H/C letterforms; the frame and the corner square
   are drawn here. `currentColor` means the mark inherits its context's color. */
.hc{--box:44px;--stroke:calc(var(--box)*.07);--dot:calc(var(--box)*.196);
    color:var(--paper);border:var(--stroke) solid currentColor;width:var(--box);height:var(--box);
    flex:none;place-items:center;display:grid;position:relative}
.hc:after{content:"";background:var(--paper);width:var(--dot);height:var(--dot);position:absolute;
    bottom:calc(var(--dot)*-.44);right:calc(var(--dot)*-.44)}
.hc svg{fill:currentColor;width:calc(var(--box)*.46);height:calc(var(--box)*.415);display:block}

.brand>span:nth-child(2){flex-direction:column;display:flex}
.brand strong{letter-spacing:.12em;font-size:13px}
.brand small{font:10px var(--font-geist-mono);letter-spacing:.15em;color:var(--muted);margin-top:4px}
.brand b{font-size:20px;font-weight:400}

nav{height:100%;display:flex}
nav a{border-left:1px solid var(--line);font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;place-items:center;padding:0 24px;display:grid;position:relative;transition:color .28s ease,background-color .28s ease}
nav a:last-child{border-right:1px solid var(--line);color:var(--green)}

/* Hover / focus: a hairline of green wipes in from the left along the header's
   baseline, and the label warms to the accent color. The rule sits directly on
   top of the header's bottom border, so the effect reads as that existing line
   lighting up under the active item rather than as a new element appearing. */
nav a:before{content:"";background:var(--green);transform-origin:0;transform:scaleX(0);transition:transform .4s cubic-bezier(.22,.61,.36,1);position:absolute;bottom:0;left:0;right:0;height:1px}
nav a:hover:before,nav a:focus-visible:before{transform:scaleX(1)}
nav a:hover{color:var(--green);background:#c7f33a08}
nav a:focus-visible{outline:none;color:var(--green);background:#c7f33a08}

/* CONNECT is the one call to action, so it inverts to a solid fill instead  - 
   the same green-on-ink treatment the inquiry button uses, keeping the two
   primary actions on the site visually consistent. */
nav a:last-child:before{display:none}
nav a:last-child:hover,nav a:last-child:focus-visible{background:var(--green);border-color:var(--green);color:var(--ink)}

/* Current page, when the nav marks one with aria-current */
nav a[aria-current=page]{background:#c7f33a0f}
nav a[aria-current=page]:before{transform:scaleX(1)}

/* Menu button. Hidden until the tablet breakpoint, where the responsive section
   below turns it on and converts <nav> into a panel. The two bars cross into an
   X on open; the label swaps MENU / CLOSE off the same aria-expanded attribute,
   so the visual state and the accessible state can never drift apart. */
.menu-toggle{color:var(--paper);cursor:pointer;font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;background:none;border-left:1px solid var(--line);align-items:center;gap:13px;height:100%;padding:0 0 0 22px;transition:color .28s ease;display:none}
.menu-toggle .bars{flex:none;width:22px;height:12px;display:block;position:relative}
.menu-toggle .bars i{background:currentColor;transition:transform .34s cubic-bezier(.22,.61,.36,1);height:1px;position:absolute;left:0;right:0}
.menu-toggle .bars i:first-child{top:0}
.menu-toggle .bars i:last-child{bottom:0}
.menu-toggle .menu-label:before{content:"Menu"}
.menu-toggle:hover,.menu-toggle:focus-visible{color:var(--green);outline:none}
.menu-toggle[aria-expanded=true]{color:var(--green)}
.menu-toggle[aria-expanded=true] .bars i:first-child{transform:translateY(5.5px)rotate(45deg)}
.menu-toggle[aria-expanded=true] .bars i:last-child{transform:translateY(-5.5px)rotate(-45deg)}
.menu-toggle[aria-expanded=true] .menu-label:before{content:"Close"}

footer{grid-template-columns:1fr 1fr 1fr;align-items:end;padding:50px 3vw;display:grid}
footer p{color:var(--muted);font-size:12px;line-height:1.6}
footer>div:last-child{font:10px var(--font-geist-mono);letter-spacing:.11em;text-transform:uppercase;flex-direction:column;align-items:flex-end;gap:12px;display:flex}

/* --------------------------------------------------------------------------
   4. HOME PAGE SECTIONS
   -------------------------------------------------------------------------- */

/* Hero */
.hero{flex-direction:column;justify-content:space-between;min-height:calc(100vh - 76px);padding:38px 3vw 32px;display:flex;position:relative;overflow:hidden}
.eyebrow{font:13px var(--font-geist-mono);letter-spacing:.15em;color:var(--muted);justify-content:space-between;display:flex}
/* Parallax layers. `--parallax` is set by assets/site.js on scroll; with no JS
   (or with reduced motion) it stays 0 and everything sits exactly where the
   static layout puts it. The circles get a positive offset so they lag behind
   the scroll, the headline a small negative one so it leads - the gap between
   the two rates is the depth cue. */
.hero-lines{opacity:.95;width:56vw;height:56vw;position:absolute;top:-8vw;right:-5vw;transform:translate3d(0,var(--parallax,0px),0) rotate(-12deg);will-change:transform}
.hero-lines i{border:1px solid var(--line);border-radius:50%;position:absolute;inset:0}
.hero-lines i:nth-child(2){inset:12%}
.hero-lines i:nth-child(3){border-color:var(--orange);inset:24%}
.hero-lines i:nth-child(4){border-color:var(--green);inset:36%}
h1{letter-spacing:-.075em;max-width:1500px;margin:14vh 0 8vh;font-size:clamp(72px,11.8vw,176px);font-weight:400;line-height:.82;position:relative;transform:translate3d(0,var(--parallax,0px),0)}
h1 em{color:var(--green);font-style:normal}
.hero-bottom{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;align-items:end;padding-top:24px;display:grid;position:relative;transform:translate3d(0,var(--parallax,0px),0)}
.hero-bottom p{letter-spacing:-.035em;max-width:720px;margin:0;font-size:clamp(19px,2vw,30px);line-height:1.27}
.hero-bottom a{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;justify-self:end;gap:35px;display:flex}
.hero-bottom a span{color:var(--green);font-size:22px}

/* Signal bar */
.signal{border-top:1px solid var(--line);border-bottom:1px solid var(--line);height:88px;font:12px var(--font-geist-mono);letter-spacing:.15em;justify-content:space-around;align-items:center;display:flex}
.signal i{color:var(--orange);font-style:normal}
.signal b{color:var(--green);font-size:16px}
.signal strong{font-weight:500}

/* Shared section chrome */
.thesis,.platforms,.approach,.belief{padding:120px 3vw}
.section-label{font:13px var(--font-geist-mono);letter-spacing:.16em;color:var(--green);margin-bottom:55px}
h2{letter-spacing:-.065em;margin:0;font-size:clamp(52px,7.2vw,108px);font-weight:400;line-height:.9}

/* Thesis */
.thesis-grid,.platform-head{grid-template-columns:1.2fr .8fr;align-items:end;gap:8vw;margin-bottom:90px;display:grid}
.thesis-grid p,.platform-head p,.belief p{color:var(--muted);margin:0 0 20px;font-size:19px;line-height:1.55}

/* Inline links in the platform intro. On this paper section the body copy is
   set in a soft grey, so the links take the full ink color plus a faint rule to
   stand out at rest, then resolve to their own platform's accent on hover. */
.platform-head p a{color:var(--ink);border-bottom:1px solid #0b0c0c40;transition:color .28s ease,border-color .28s ease}
.platform-head p a:focus-visible{outline:none}
.wx-link:hover,.wx-link:focus-visible{color:var(--orange);border-color:var(--orange)}
.er-link:hover,.er-link:focus-visible{color:var(--green-deep);border-color:var(--green-deep)}
.metrics{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(4,1fr);display:grid}
.metrics article{border-right:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;justify-content:space-between;min-height:210px;padding:28px;display:flex}
.metrics strong{letter-spacing:-.05em;font-size:38px;font-weight:400}
.metrics article:nth-child(2) strong,.metrics article:nth-child(4) strong{color:var(--orange)}
.metrics span{font:13px var(--font-geist-mono);letter-spacing:.13em;color:var(--muted)}

/* Platforms */
.platforms{background:var(--paper);color:var(--ink)}
.platforms .section-label{color:var(--green-deep)}
.platform-head p{color:#626560}
.brand-grid{grid-template-columns:1fr 1fr;gap:18px;display:grid}
.brand-grid article{min-height:650px;color:var(--paper);flex-direction:column;justify-content:space-between;padding:38px;display:flex;position:relative;overflow:hidden}
.brand-grid article:after{content:"";opacity:.12;border:1px solid;border-radius:50%;width:400px;height:400px;position:absolute;top:-180px;right:-180px}
/* Corner glow. Each card gets a soft wash of its own accent rising out of the
   bottom-left corner, layered over the flat card color. Kept deliberately faint
   - around 12% at the corner, gone by 60% across - so it reads as light in the
   room rather than as a gradient. The card's overflow:hidden clips it square. */
.wrangler{background:radial-gradient(95% 68% at 0% 100%,#ff5a1f1f 0%,#ff5a1f0a 32%,#ff5a1f00 62%),#111314}
.ranch{background:radial-gradient(95% 68% at 0% 100%,#c7f33a1a 0%,#c7f33a08 32%,#c7f33a00 62%),#171a14}
.card-top{font:13px var(--font-geist-mono);letter-spacing:.14em;justify-content:space-between;display:flex}
.card-top b{font-size:20px}
.wrangler .card-top b,.wrangler em{color:var(--orange)}
.ranch .card-top b,.ranch em{color:var(--green)}
.brand-grid small{font:17px var(--font-geist-mono);letter-spacing:.15em}
.brand-grid h3{letter-spacing:-.065em;margin:25px 0;font-size:clamp(58px,6.8vw,98px);font-weight:400;line-height:.84}
.brand-grid h3 em{font-style:normal}
.brand-grid p{max-width:520px;color:var(--muted);font-size:17px;line-height:1.5}
/* Platform CTAs. The rule under the label is drawn with currentColor, so
   shifting the color on hover carries the underline with it - the link takes on
   its own platform's accent, the same color that already marks that card's
   headline word and monogram. The arrow steps toward its own direction. */
.brand-grid a{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;border-bottom:1px solid;align-items:center;gap:13px;margin-top:25px;padding-bottom:10px;transition:color .3s ease;display:inline-flex}
.brand-grid a span{transition:transform .34s cubic-bezier(.22,.61,.36,1);display:inline-block}
.brand-grid a:hover span,.brand-grid a:focus-visible span{transform:translate(4px,-4px)}
.brand-grid a:focus-visible{outline:none}
.wrangler a:hover,.wrangler a:focus-visible{color:var(--orange)}
.ranch a:hover,.ranch a:focus-visible{color:var(--green)}

/* Brand architecture */
.architecture{background:var(--carbon);padding:120px 3vw}
/* Grid plate. The top and bottom edges are real borders, so both read as one
   straight rule no matter how tall the plate gets.

   The pattern is split across two layers because only one of them can usefully
   move. Vertical lines shifted vertically look identical, so they stay put and
   stay crisp, running edge to edge between the two rules. The horizontals are
   the layer that actually reads as parallax - and they are also the layer that
   would collide with the bottom border and double it, so they fade out just
   short of each rule. A drifting line dissolves before it can reach one.

   --grid-shift is set by assets/site.js; with no JS it stays 0. */
.arch-map{flex-direction:column;justify-content:center;align-items:center;min-height:630px;display:flex;position:relative;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.arch-map:before,.arch-map:after{content:"";pointer-events:none;position:absolute;inset:0;z-index:0}
.arch-map:before{background-image:linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:48px 48px}
.arch-map:after{background-image:linear-gradient(var(--line) 1px,transparent 1px);background-size:48px 48px;background-position:0 var(--grid-shift,0px);-webkit-mask-image:linear-gradient(180deg,#0000 0,#0000 16px,#000 54px,#000 calc(100% - 54px),#0000 calc(100% - 16px),#0000 100%);mask-image:linear-gradient(180deg,#0000 0,#0000 16px,#000 54px,#000 calc(100% - 54px),#0000 calc(100% - 16px),#0000 100%)}
.arch-map>*{z-index:1;position:relative}

.parent,.children .node{background:var(--ink);border:1px solid var(--line);flex-direction:column;justify-content:center;align-items:center;display:flex}
.parent{width:390px;height:190px}
.parent span{letter-spacing:-.08em;font-size:48px}
.parent strong,.children strong{font:13px var(--font-geist-mono);letter-spacing:.14em;margin-top:10px}
.parent small,.children small{font:10px var(--font-geist-mono);letter-spacing:.12em;color:var(--muted);margin-top:8px}
.children{grid-template-columns:1fr 1fr;gap:100px;margin-top:90px;display:grid;position:relative}
.children .node{width:310px;height:170px;transition:border-color .32s ease,box-shadow .42s ease}
.children .node:focus-visible{outline:none}

/* Each node lights up in its own platform's accent - a soft outer glow plus a
   faint inner one, so the box reads as lit rather than outlined. */
.wx-node:hover,.wx-node:focus-visible{border-color:#ff5a1f7a;box-shadow:0 0 38px -6px #ff5a1f3d,inset 0 0 40px -22px #ff5a1f8f}
.er-node:hover,.er-node:focus-visible{border-color:#c7f33a7a;box-shadow:0 0 38px -6px #c7f33a3d,inset 0 0 40px -22px #c7f33a8f}
.children b{font-size:35px}
.orange{color:var(--orange)}
.green{color:var(--green)}

/* Approach */
.approach h2{margin-bottom:90px}
.steps{border-top:1px solid var(--line)}
.steps article{border-bottom:1px solid var(--line);grid-template-columns:130px 1fr 1.15fr;gap:35px;padding:30px 0;display:grid}
.steps article>div{font:15px var(--font-geist-mono);letter-spacing:.12em;gap:20px;display:flex}
.steps span{color:var(--green)}
.steps small{color:var(--muted)}
.steps h3{letter-spacing:-.04em;margin:0;font-size:39px;font-weight:400}
.steps p{color:var(--muted);max-width:470px;margin:4px 0;line-height:1.5}

/* Belief */
.belief{background:linear-gradient(130deg,#ff5a1f0d,#0000 40%);flex-direction:column;justify-content:center;min-height:85vh;display:flex}
.belief h2 em{color:var(--green);font-style:normal}
.belief p{max-width:680px;margin:60px 0 0 50%}

/* Contact CTA band */
.contact{background:var(--green);color:var(--ink);justify-content:space-between;align-items:flex-end;padding:105px 3vw;display:flex}
.contact>div>span{font:15px var(--font-geist-mono);letter-spacing:.15em}
.contact h2{margin-top:40px}
.contact>a{border-bottom:1px solid var(--ink);font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:50px;padding:14px 0;display:flex;position:relative}
.contact>a:after{content:"";background:var(--ink);transform-origin:0;transform:scaleX(0);transition:transform .42s cubic-bezier(.22,.61,.36,1);position:absolute;bottom:-1px;left:0;right:0;height:2px}
.contact>a:hover:after,.contact>a:focus-visible:after{transform:scaleX(1)}
.contact>a span{transition:transform .34s cubic-bezier(.22,.61,.36,1);display:inline-block}
.contact>a:hover span,.contact>a:focus-visible span{transform:translate(4px,-4px)}
.contact>a:focus-visible{outline:none}

/* --------------------------------------------------------------------------
   5. CONTACT PAGE
   -------------------------------------------------------------------------- */
.page-contact{padding:110px 3vw 120px}
.contact-grid{grid-template-columns:1.05fr .95fr;align-items:start;gap:8vw;display:grid}

.contact-intro h1{margin:0 0 34px;font-size:clamp(52px,7.2vw,108px);letter-spacing:-.065em;line-height:.9}
.contact-intro h1 em{color:var(--green);font-style:normal}
.contact-intro>p{color:var(--muted);max-width:520px;margin:0 0 50px;font-size:19px;line-height:1.55}

.contact-detail{border-top:1px solid var(--line);flex-direction:column;gap:26px;padding-top:28px;display:flex}
.contact-detail div{gap:9px;display:grid}
.contact-detail span{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.contact-detail a,.contact-detail p{color:var(--paper);margin:0;font-size:15px;line-height:1.6}
.contact-detail a:hover{color:var(--green)}

.inquiry{border:1px solid var(--line);background:var(--carbon);padding:40px}
.inquiry-label{font:13px var(--font-geist-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--green);margin-bottom:34px}
.field{gap:10px;margin-bottom:28px;display:grid}
.field label{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.field input,.field textarea{background:#0000;border-bottom:1px solid var(--line);color:var(--paper);letter-spacing:-.01em;padding:10px 0;font-family:inherit;font-size:16px}
.field textarea{min-height:118px;line-height:1.5;resize:vertical}
.field input:focus,.field textarea:focus{border-bottom-color:var(--green);outline:none}
.field input::placeholder,.field textarea::placeholder{color:#5a5c58}
.field input:invalid:not(:placeholder-shown){border-bottom-color:var(--orange)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.submit{background:var(--green);color:var(--ink);font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;justify-content:space-between;align-items:center;gap:40px;width:100%;margin-top:6px;padding:20px 22px;display:flex}
.submit span{font-size:16px}
.submit:hover{background:var(--paper)}
.form-note{font:10px var(--font-geist-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:20px;line-height:1.8}


/* --------------------------------------------------------------------------
   5b. NEWS - home page feature, index page and article pages
   -------------------------------------------------------------------------- */

/* Home page feature: the two most recent releases. Each card is a single link,
   so the whole panel is the target rather than a small "read more". */
.news{border-top:1px solid var(--line);padding:120px 3vw}
.news-head{grid-template-columns:1.2fr .8fr;align-items:end;gap:8vw;margin-bottom:70px;display:grid}
.news-head a{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;border-bottom:1px solid;align-items:center;gap:13px;justify-self:end;padding-bottom:10px;display:inline-flex;transition:color .3s ease}
.news-head a span{transition:transform .34s cubic-bezier(.22,.61,.36,1);display:inline-block}
.news-head a:hover,.news-head a:focus-visible{color:var(--green);outline:none}
.news-head a:hover span,.news-head a:focus-visible span{transform:translate(4px,-4px)}

.news-grid{grid-template-columns:1fr 1fr;gap:18px;display:grid}
.news-card{background:radial-gradient(88% 62% at 0% 100%,#c7f33a12 0%,#c7f33a05 34%,#c7f33a00 62%),var(--carbon);border:1px solid var(--line);flex-direction:column;justify-content:space-between;min-height:330px;padding:36px;display:flex;transition:border-color .3s ease}
.news-card:hover,.news-card:focus-visible{border-color:#c7f33a66;outline:none}
.news-card time{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--green)}
.news-card h3{letter-spacing:-.04em;margin:24px 0 16px;font-size:31px;font-weight:400;line-height:1.04}
.news-card p{color:var(--muted);margin:0;font-size:16px;line-height:1.55}
.news-card .more{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:13px;margin-top:28px;display:flex}
.news-card .more span{transition:transform .34s cubic-bezier(.22,.61,.36,1);display:inline-block}
.news-card:hover .more,.news-card:focus-visible .more{color:var(--green)}
.news-card:hover .more span,.news-card:focus-visible .more span{transform:translate(4px,-4px)}

/* Index page: one row per release. */
.page-news{padding:110px 3vw 120px}
.page-news>h1{letter-spacing:-.065em;max-width:none;margin:0 0 22px;font-size:clamp(52px,7.2vw,108px);line-height:.9;transform:none}
.page-news>p{color:var(--muted);max-width:640px;margin:0 0 70px;font-size:19px;line-height:1.6}
.news-list{border-top:1px solid var(--line)}
.news-list a{border-bottom:1px solid var(--line);grid-template-columns:190px 1fr 170px;align-items:start;gap:35px;padding:34px 0;display:grid;transition:background-color .3s ease}
.news-list a:hover,.news-list a:focus-visible{background:#c7f33a08;outline:none}
.news-list time{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--green);padding-top:7px}
.news-list h2{letter-spacing:-.035em;margin:0 0 12px;font-size:31px;line-height:1.08}
.news-list p{color:var(--muted);max-width:620px;margin:0;font-size:16px;line-height:1.55}
.news-list .more{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:13px;padding-top:7px;display:flex;transition:color .3s ease}
.news-list .more span{transition:transform .34s cubic-bezier(.22,.61,.36,1);display:inline-block}
.news-list a:hover .more,.news-list a:focus-visible .more{color:var(--green)}
.news-list a:hover .more span,.news-list a:focus-visible .more span{transform:translate(4px,-4px)}

/* Article page */
.article{padding:110px 3vw 110px}
.article-head{border-bottom:1px solid var(--line);max-width:1080px;margin-bottom:58px;padding-bottom:46px}
.article-head h1{letter-spacing:-.045em;max-width:none;margin:26px 0 26px;font-size:clamp(38px,4.7vw,70px);line-height:1;transform:none}
.article-head .deck{color:var(--muted);max-width:820px;margin:0;font-size:21px;line-height:1.5}
.article-head .dateline{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:32px}
.back{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);align-items:center;gap:12px;margin-bottom:34px;display:inline-flex;transition:color .3s ease}
.back:hover,.back:focus-visible{color:var(--green);outline:none}

.prose{max-width:770px}
.prose p{color:#d5d3cc;margin:0 0 23px;font-size:17px;line-height:1.72}
.prose h2{letter-spacing:-.03em;margin:54px 0 20px;font-size:29px;font-weight:400;line-height:1.12}
.prose ul{margin:0 0 26px;padding:0}
.prose li{color:#d5d3cc;margin-bottom:11px;padding-left:27px;font-size:16.5px;line-height:1.62;position:relative}
.prose li:before{content:"\25A0";color:var(--green);font-size:9px;position:absolute;top:.5em;left:0}
.prose blockquote{border-left:1px solid var(--green);margin:38px 0;padding:4px 0 4px 30px}
.prose blockquote p{color:var(--paper);font-size:21px;line-height:1.48;letter-spacing:-.015em}
.prose blockquote cite{font:13px var(--font-geist-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-style:normal;margin-top:16px;display:block}

.article-foot{border-top:1px solid var(--line);max-width:770px;margin-top:66px;padding-top:34px}
.article-foot h3{font:13px var(--font-geist-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--green);margin:0 0 16px}
.article-foot p{color:var(--muted);margin:0 0 16px;font-size:15px;line-height:1.7}
.article-foot .legal{color:#7a7c78;font-size:13px;line-height:1.7}
.article-foot a{border-bottom:1px solid #efede64d;transition:color .28s ease,border-color .28s ease}
.article-foot a:hover{color:var(--green);border-color:var(--green)}

/* --------------------------------------------------------------------------
   6. RESPONSIVE
   -------------------------------------------------------------------------- */
/* Three tiers, each one narrowing what came before rather than restating it:
     <=1180px  small laptop / large tablet - tighten rhythm
     <=1024px  tablet - inline nav becomes the menu panel, columns collapse
     <=820px   large phone - single-column cards, stacked CTA band
     <=600px   phone - final compression
   -------------------------------------------------------------------------- */

/* ---- <=1180px : small laptop, large tablet landscape ---------------------- */
@media (width<=1180px){
  .thesis,.platforms,.approach,.belief,.architecture{padding:96px 4vw}
  .hero{padding:34px 4vw 30px}
  .thesis-grid,.platform-head{gap:5vw;margin-bottom:70px}
  .children{gap:56px}
  .steps article{grid-template-columns:120px 1fr 1.05fr;gap:26px}
  .arch-map{min-height:560px}
  .contact,footer{padding-left:4vw;padding-right:4vw}
  .news{padding:96px 4vw}
  .page-news{padding:96px 4vw 100px}
  .article{padding:96px 4vw}
  .page-contact{padding:96px 4vw 100px}
  .contact-grid{gap:5vw}
}

/* ---- <=1024px : tablet - the nav becomes a menu -------------------------- */
@media (width<=1024px){
  .menu-toggle{display:flex}

  /* The same <nav> element, restyled as a full-height panel below the header.
     It stays in the DOM and in source order; only its presentation changes. */
  nav{visibility:hidden;opacity:0;background:var(--ink);border-top:1px solid var(--line);flex-direction:column;height:auto;transition:opacity .3s ease,transform .38s cubic-bezier(.22,.61,.36,1),visibility .3s;position:fixed;inset:76px 0 0;transform:translateY(-10px);z-index:19;overflow-y:auto}
  nav[data-open=true]{visibility:visible;opacity:1;transform:none}
  header:has(.menu-toggle[aria-expanded=true]){background:var(--ink);-webkit-backdrop-filter:none;backdrop-filter:none}

  nav a{border-left:0;border-bottom:1px solid var(--line);justify-content:start;place-items:center start;gap:0;padding:26px 4vw;font-size:14px;opacity:0;transform:translateY(12px);transition:opacity .35s ease,transform .35s ease,color .28s ease,background-color .28s ease}
  nav a:last-child{border-right:0}
  nav[data-open=true] a{opacity:1;transform:none}
  nav[data-open=true] a:nth-child(1){transition-delay:.06s}
  nav[data-open=true] a:nth-child(2){transition-delay:.11s}
  nav[data-open=true] a:nth-child(3){transition-delay:.16s}
  nav[data-open=true] a:nth-child(4){transition-delay:.21s}

  /* On the panel the green hairline runs along each row's own bottom rule. */
  nav a:before{background:var(--green)}
  nav a:last-child:before{display:block}
  nav a:last-child:hover,nav a:last-child:focus-visible{background:#c7f33a08;border-color:var(--line);color:var(--green)}

  .thesis-grid,.platform-head{grid-template-columns:1fr;gap:36px}
  .metrics{grid-template-columns:1fr 1fr}
  .brand-grid{gap:14px}
  .brand-grid article{min-height:560px;padding:32px}
  .belief{min-height:0;padding-top:88px;padding-bottom:88px}
  .belief p{margin:48px 0 0 25%}
  .hero-lines{width:74vw;height:74vw;top:-4vw;right:-14vw}
  .contact-grid{grid-template-columns:1fr;gap:48px}
  .contact-intro>p{max-width:none}
  .news-head{grid-template-columns:1fr;gap:30px;margin-bottom:48px}
  .news-head a{justify-self:start}
  .news-list a{grid-template-columns:170px 1fr;gap:26px}
  .news-list .more{grid-column:2}
}

/* ---- <=820px : large phone, small tablet portrait ------------------------ */
@media (width<=820px){
  .brand-grid{grid-template-columns:1fr}
  .brand-grid article{min-height:520px}
  .contact{flex-direction:column;align-items:flex-start;gap:56px}
  .news-grid{grid-template-columns:1fr}
  .news-card{min-height:0}
  .parent{width:100%;max-width:360px}
  .children{gap:16px;width:100%;margin-top:60px}
  .children .node{width:auto;height:160px}
  .arch-map{min-height:520px}
  .steps article{grid-template-columns:150px 1fr;gap:20px}
  .steps p{grid-column:2}
  .belief p{margin:44px 0 0}
  footer{grid-template-columns:1fr;gap:28px}
  footer>div:last-child{align-items:flex-start}
}

/* ---- <=600px : phone ----------------------------------------------------- */
@media (width<=600px){
  header{padding:0 18px}
  .brand small,.brand b{display:none}
  .hc{--box:36px}
  nav a{padding:22px 18px;font-size:13px}
  .hero{min-height:82vh;padding:28px 18px 24px}
  /* The rings bled ~210px past the right edge on a phone. */
  .hero-lines{width:76vw;height:76vw;top:6vh;right:-24vw}
  .eyebrow{flex-direction:column;gap:6px}
  h1{margin:12vh 0 8vh;font-size:20vw}
  .hero-bottom{grid-template-columns:1fr;gap:30px}
  .hero-bottom a{justify-self:start}
  .signal{white-space:nowrap;justify-content:flex-start;gap:25px;padding:0 18px;overflow:hidden}
  .thesis,.platforms,.approach,.belief,.architecture{padding:78px 18px}
  .section-label{margin-bottom:38px}
  .metrics article{min-height:170px;padding:22px}
  .metrics strong{font-size:32px}
  .brand-grid article{min-height:470px;padding:26px}
  .parent{max-width:none}
  .children small{font-size:8px}
  .steps article{grid-template-columns:1fr;gap:12px}
  .steps p{grid-column:1}
  .steps h3{font-size:31px}
  .contact{padding:75px 18px;gap:44px}
  .contact>a{display:inline-flex}
  footer{padding:45px 18px}

  .news{padding:78px 18px}
  .news-card{padding:26px}
  .news-card h3{font-size:27px}
  .page-news{padding:70px 18px 90px}
  .news-list a{grid-template-columns:1fr;gap:12px;padding:26px 0}
  .news-list .more{grid-column:1}
  .news-list h2{font-size:26px}
  .article{padding:70px 18px 90px}
  .article-head{margin-bottom:44px;padding-bottom:34px}
  .prose h2{font-size:25px;margin-top:42px}
  .prose blockquote{padding-left:20px}
  .prose blockquote p{font-size:19px}

  /* Contact page */
  .page-contact{padding:70px 18px 90px}
  .contact-intro h1{font-size:16vw}
  .inquiry{padding:26px 22px}
}

/* --------------------------------------------------------------------------
   7. REDUCED MOTION
   Hover states still change color and fill - they just arrive instantly, and
   the hero parallax is switched off in the script as well.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  nav,nav a,nav a:before,.menu-toggle,.menu-toggle .bars i,.brand-grid a,.brand-grid a span,.children .node,.platform-head p a,.contact>a:after,.contact>a span{transition:none}
  nav a:hover:before,nav a:focus-visible:before,nav a[aria-current=page]:before{transform:none;transition:none}
  nav[data-open=true] a{transition:none;transform:none}
  nav[data-open=true] a:nth-child(1),nav[data-open=true] a:nth-child(2),nav[data-open=true] a:nth-child(3),nav[data-open=true] a:nth-child(4){transition-delay:0s}
  .hero-lines,h1,.hero-bottom{transform:none}
  .arch-map:after{background-position:0 0}
  .brand-grid a:hover span,.brand-grid a:focus-visible span{transform:none}
  .hero-lines{transform:rotate(-12deg)}
  html{scroll-behavior:auto}
}


/* --------------------------------------------------------------------------
   Form status + Turnstile
   Added alongside the /api/contact Worker endpoint. The status block is
   hidden until assets/site.js writes a sending / success / error message
   into it.
   -------------------------------------------------------------------------- */
.form-status{display:none;margin:0 0 20px;padding:12px 14px;border:1px solid;font-size:14px;line-height:1.5}
.form-status.is-visible{display:block}
.form-status.is-success{color:#7fe0a7;border-color:rgba(127,224,167,.4)}
.form-status.is-error{color:#ff8f8f;border-color:rgba(255,143,143,.4)}
.field--turnstile{margin:4px 0 20px}
