/* ============================================================
   ryanwotto.com — design system
   Palette: The Taxsmiths brand colors (Cultivating Culver)
   Sandstone Clay #d6d5b9 · Tarnished Green #223c31 · Iron Blue #1d3a4f
   Forge Fire Red #803a10 · Ghost White #e7e6e3 · Deep Black #000000
   Type: Barlow Condensed (display, per brand) + Inter (body; stands in
   for Articulat, which is not web-licensed here)
   ============================================================ */

:root{
  --ink:#050809;
  --ink-2:#0a1115;
  --panel:#0c1418;
  --panel-2:#101a1f;
  --iron:#1d3a4f;
  --iron-lo:#12283a;
  --green:#223c31;
  --clay:#d6d5b9;
  --ghost:#e7e6e3;
  --fire:#c1521a;          /* screen tint of Forge Fire Red */
  --fire-deep:#803a10;     /* brand-exact Forge Fire Red */
  --line:rgba(214,213,185,.14);
  --line-2:rgba(214,213,185,.28);
  --mute:rgba(231,230,227,.62);
  --mute-2:rgba(231,230,227,.44);

  --disp:"Barlow Condensed",Oswald,"Arial Narrow",sans-serif;
  --body:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;

  --wrap:1180px;
  --pad:28px;
  --r:3px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  background:var(--ink);
  color:var(--ghost);
  font-family:var(--body);
  font-size:16.5px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;display:block;height:auto}
a{color:inherit;text-decoration:none}
::selection{background:var(--fire);color:var(--ghost)}
:focus-visible{outline:2px solid var(--fire);outline-offset:3px;border-radius:2px}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad)}
.narrow{max-width:760px}

/* ---------- type ---------- */
h1,h2,h3,h4{font-family:var(--disp);font-weight:700;line-height:1.02;letter-spacing:-.01em;text-transform:uppercase}
h1{font-size:clamp(52px,9vw,124px)}
h2{font-size:clamp(32px,5.2vw,62px)}
h3{font-size:clamp(21px,2.4vw,27px)}
h4{font-size:18px}
p{max-width:66ch}
.lede{font-size:clamp(17px,1.9vw,20.5px);color:rgba(231,230,227,.8);max-width:60ch}
.kicker{
  font-family:var(--body);font-size:11px;font-weight:700;
  letter-spacing:.3em;text-transform:uppercase;color:var(--fire);
}
.eyebrow{display:flex;align-items:center;gap:14px;margin-bottom:22px}
.eyebrow .rule{width:44px;height:2px;background:var(--fire);flex:none}
.clay{color:var(--clay)}
.dim{color:var(--mute)}
em.q{font-style:italic;color:var(--clay)}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--body);font-size:12.5px;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;
  padding:14px 22px;border-radius:2px;border:1px solid transparent;
  cursor:pointer;transition:.2s;white-space:nowrap;
}
.btn-fire{background:var(--fire);color:#fff}
.btn-fire:hover{background:var(--fire-deep)}
.btn-out{border-color:var(--line-2);color:var(--clay);background:transparent}
.btn-out:hover{background:var(--clay);color:var(--ink);border-color:var(--clay)}
.btn-ghost{color:var(--clay);padding:14px 0;border-bottom:1px solid var(--line-2);border-radius:0}
.btn-ghost:hover{color:var(--fire);border-color:var(--fire)}
.btns{display:flex;gap:12px;flex-wrap:wrap}
/* nowrap keeps buttons tidy at desktop, but on a narrow screen a long label
   can't shrink and forces its container wider than the viewport. Let them wrap. */
@media(max-width:700px){
  .btn{white-space:normal;text-align:center;max-width:100%}
  .btns{width:100%}
  .btns .btn{flex:1 1 100%;justify-content:center}
}

/* ---------- nav ---------- */
.nav{
  position:sticky;top:0;z-index:60;
  background:rgba(5,8,9,.86);backdrop-filter:blur(16px);
  border-bottom:1px solid var(--line);
}
.nav-in{
  max-width:var(--wrap);margin:0 auto;padding:15px var(--pad);
  display:flex;align-items:center;justify-content:space-between;gap:20px;
}
.brand{font-family:var(--disp);font-weight:700;font-size:23px;letter-spacing:.01em;text-transform:uppercase;line-height:1}
.brand .dot{color:var(--fire)}
.nav-links{display:flex;align-items:center;gap:26px;font-size:13.5px;font-weight:500}
.nav-links a:not(.btn){color:rgba(231,230,227,.74);padding:4px 0;border-bottom:1px solid transparent;transition:.18s}
.nav-links a:not(.btn):hover,.nav-links a.on{color:var(--ghost);border-color:var(--fire)}
.nav-links .btn{padding:11px 17px}
.nav-toggle{display:none;background:none;border:1px solid var(--line-2);color:var(--clay);border-radius:2px;padding:12px 16px;min-height:44px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;cursor:pointer;font-family:var(--body)}
@media(max-width:940px){
  .nav-toggle{display:block}
  .nav-links{
    display:none;position:absolute;left:0;right:0;top:100%;
    flex-direction:column;align-items:stretch;gap:0;
    background:var(--ink-2);border-bottom:1px solid var(--line);padding:8px var(--pad) 20px;
  }
  .nav-links.open{display:flex}
  .nav-links a:not(.btn){padding:14px 0;border-bottom:1px solid var(--line);font-size:16px}
  .nav-links .btn{margin-top:14px;justify-content:center}
}

/* ---------- sections ---------- */
section{padding:96px 0}
section.tight{padding:64px 0}
.sec-head{margin-bottom:44px;max-width:760px}
.sec-head h2{margin:16px 0 18px}
.rule-top{border-top:1px solid var(--line)}

/* ---------- hero ---------- */
.hero{
  position:relative;overflow:hidden;
  padding:104px 0 76px;
  border-bottom:1px solid var(--line);
  background:
    radial-gradient(120% 92% at 8% 0%, rgba(29,58,79,.6) 0%, rgba(5,8,9,0) 62%),
    radial-gradient(88% 72% at 96% 6%, rgba(128,58,16,.3) 0%, rgba(5,8,9,0) 62%),
    linear-gradient(180deg,#08151c 0%, var(--ink) 100%);
}
.hero::after{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.42;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.3'/%3E%3C/svg%3E");
}
.hero-in{position:relative;z-index:2;display:grid;grid-template-columns:1.12fr .88fr;gap:56px;align-items:center}
@media(max-width:960px){.hero-in{grid-template-columns:1fr;gap:40px}}
.hero h1{margin-bottom:26px}
.hero h1 .lo{display:block;color:var(--clay);opacity:.4}
.portrait{
  position:relative;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  background:linear-gradient(160deg,var(--iron),var(--green));
  aspect-ratio:4/5;
}
/* source is 3:2 landscape; crop to portrait around the subject rather than
   letterboxing a short strip next to a tall text column */
.portrait img{
  width:100%;height:100%;object-fit:cover;object-position:52% 30%;
  filter:saturate(.92) contrast(1.04);
}
@media(max-width:960px){.portrait{aspect-ratio:3/2}.portrait img{object-position:52% 28%}}
.portrait figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:26px 20px 14px;
  background:linear-gradient(180deg,rgba(5,8,9,0),rgba(5,8,9,.92));
  font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:rgba(231,230,227,.6);
}

/* ---------- stat row ---------- */
.stats{display:flex;flex-wrap:wrap;gap:44px;margin-top:48px;padding-top:28px;border-top:1px solid var(--line)}
.stat b{display:block;font-family:var(--disp);font-weight:700;font-size:38px;line-height:1;color:var(--clay)}
.stat span{display:block;margin-top:8px;font-size:10.5px;letter-spacing:.19em;text-transform:uppercase;color:var(--mute-2)}

/* ---------- four doors ---------- */
.doors{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
@media(max-width:900px){.doors{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.doors{grid-template-columns:1fr}}
.door{background:var(--ink);padding:32px 26px;transition:.25s;position:relative;display:block}
.door:hover{background:var(--panel)}
.door .n{font-size:10.5px;letter-spacing:.22em;color:var(--fire);font-weight:700}
.door h3{margin:14px 0 10px;font-size:22px}
.door p{font-size:14px;color:var(--mute);max-width:none}
.door .go{margin-top:16px;display:inline-block;font-size:12px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;color:var(--clay);transition:.2s}
.door:hover .go{color:var(--fire)}

/* ---------- cards / grids ---------- */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:900px){.grid-3{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.grid-2,.grid-3{grid-template-columns:1fr}}

.card{
  position:relative;background:linear-gradient(160deg,var(--panel) 0%,#080e11 100%);
  border:1px solid var(--line);border-radius:var(--r);padding:28px 28px 30px;
  transition:border-color .25s,transform .25s,background .25s;
}
.card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--iron);transition:.25s}
.card:hover{border-color:var(--line-2);transform:translateY(-3px)}
.card:hover::before{background:var(--fire);width:3px}
.card h3{margin-bottom:10px}
.card p{font-size:14.5px;color:var(--mute);max-width:none}

/* venture cards */
.vent{display:flex;flex-direction:column;min-height:100%}
.vent .role{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--fire);font-weight:700}
.vent h3{margin:12px 0 8px}
.vent .metric{margin-top:auto;padding-top:20px;display:flex;align-items:baseline;gap:10px}
.vent .metric b{font-family:var(--disp);font-size:29px;font-weight:700;color:var(--clay);line-height:1}
.vent .metric span{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute-2)}
.badge{
  display:inline-block;font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;
  padding:4px 9px;border-radius:999px;border:1px solid var(--line-2);color:var(--clay);
}
.badge.live{border-color:rgba(193,82,26,.55);color:#e08a52}
.badge.soon{border-color:rgba(214,213,185,.4)}

/* ---------- appearance log ---------- */
.log{border-top:1px solid var(--line)}
.log-item{
  display:grid;grid-template-columns:120px 1fr auto;gap:22px;align-items:baseline;
  padding:22px 4px;border-bottom:1px solid var(--line);transition:.2s;
}
.log-item:hover{background:rgba(29,58,79,.16)}
@media(max-width:760px){
  .log-item{grid-template-columns:1fr;gap:7px}
  .log-item .when{order:-1}
}
.log-item .when{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute-2);font-weight:600}
.log-item .what h4{font-family:var(--disp);font-size:22px;font-weight:700;letter-spacing:0;margin-bottom:5px}
.log-item .what p{font-size:14px;color:var(--mute);max-width:62ch}
.log-item .what .host{color:var(--clay)}
.log-item .act{font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;color:var(--clay);white-space:nowrap}
.log-item a.act:hover{color:var(--fire)}
.log-item .act.pending{color:var(--mute-2);font-weight:600}
.hidden{display:none !important}

/* filter chips */
.chips{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:30px}
.chip{
  font-family:var(--body);font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  padding:9px 15px;border-radius:999px;cursor:pointer;transition:.18s;
  background:transparent;border:1px solid var(--line);color:rgba(231,230,227,.62);
}
.chip:hover{border-color:var(--line-2);color:var(--ghost)}
.chip.on{background:var(--clay);border-color:var(--clay);color:var(--ink)}
.chip .ct{opacity:.55;margin-left:7px;font-weight:400}

/* ---------- clay band (inverted) ---------- */
.band-clay{background:var(--clay);color:#23241c}
.band-clay h2,.band-clay h3{color:var(--green)}
.band-clay p{color:#3c3e31}
.band-clay .kicker{color:var(--fire-deep)}
.band-clay .eyebrow .rule{background:var(--fire-deep)}
.band-clay .btn-out{border-color:rgba(34,60,49,.4);color:var(--green)}
.band-clay .btn-out:hover{background:var(--green);color:var(--clay);border-color:var(--green)}

.band-iron{background:linear-gradient(150deg,var(--iron-lo),var(--green));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

/* ---------- guide / lead magnet ---------- */
.guide-in{display:grid;grid-template-columns:1.1fr .9fr;gap:52px;align-items:center}
@media(max-width:860px){.guide-in{grid-template-columns:1fr;gap:36px}}
.cover{
  position:relative;aspect-ratio:3/4;max-width:330px;margin:0 auto;
  border-radius:2px;padding:30px;display:flex;flex-direction:column;justify-content:flex-end;
  background:radial-gradient(120% 80% at 78% 6%,rgba(193,82,26,.6),transparent 56%),linear-gradient(158deg,var(--iron),var(--green));
  box-shadow:0 28px 60px rgba(0,0,0,.5);border:1px solid rgba(214,213,185,.22);
}
.cover .tag{position:absolute;top:18px;right:18px;background:var(--fire);color:#fff;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:6px 11px;border-radius:999px}
.cover .kick{font-family:var(--disp);font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--clay)}
.cover h3{font-size:34px;color:var(--ghost);margin-top:10px;line-height:.98}
.cover .by{margin-top:16px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(231,230,227,.55)}

/* ---------- form ---------- */
.signup{display:flex;gap:10px;flex-wrap:wrap;max-width:520px;margin-top:26px}
.signup input{
  flex:1;min-width:230px;padding:15px 16px;border-radius:2px;
  border:1px solid var(--line-2);background:rgba(5,8,9,.5);color:var(--ghost);
  font-family:var(--body);font-size:15px;
}
.signup input::placeholder{color:var(--mute-2)}
.signup input:focus{outline:none;border-color:var(--fire)}
.band-clay .signup input{background:rgba(255,255,255,.7);border-color:rgba(34,60,49,.3);color:#23241c}
.form-note{font-size:12.5px;color:var(--mute-2);margin-top:12px}
.band-clay .form-note{color:#5a5c4c}

.field{margin-bottom:18px}
.field label{display:block;font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--clay);margin-bottom:8px}
.field input,.field select,.field textarea{
  width:100%;padding:14px 15px;border-radius:2px;
  border:1px solid var(--line);background:rgba(12,20,24,.7);color:var(--ghost);
  font-family:var(--body);font-size:15.5px;
}
.field textarea{min-height:150px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--fire)}
.field select option{background:var(--panel)}

/* ---------- topics list ---------- */
.topics{list-style:none}
.topics li{padding:20px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start}
.topics li::before{content:"";width:9px;height:9px;background:var(--fire);transform:rotate(45deg);margin-top:9px}
.topics li h4{font-family:var(--disp);font-size:21px;font-weight:700;letter-spacing:0;text-transform:none;margin-bottom:5px}
.topics li p{font-size:14.5px;color:var(--mute);max-width:60ch}

/* ---------- logo strip ---------- */
.logos{display:flex;flex-wrap:wrap;align-items:center;gap:42px;padding:34px 0}
.logos img{height:30px;width:auto;opacity:.55;filter:grayscale(1);transition:.25s}
.logos a:hover img{opacity:1;filter:none}

/* ---------- pull quote ---------- */
.pull{
  border-left:2px solid var(--fire);padding:6px 0 6px 26px;margin:34px 0;
  font-family:var(--disp);font-size:clamp(22px,3vw,32px);font-weight:700;
  line-height:1.16;letter-spacing:0;text-transform:none;color:var(--clay);max-width:22ch;
}

/* ---------- prose ---------- */
.prose p{margin-bottom:20px;color:rgba(231,230,227,.82)}
.prose h3{margin:44px 0 14px}
.prose ul{margin:0 0 20px 20px;color:rgba(231,230,227,.82)}
.prose li{margin-bottom:9px}
.prose strong{color:var(--clay);font-weight:600}

/* ---------- bio blocks (media kit) ---------- */
.bio{border:1px solid var(--line);border-radius:var(--r);padding:26px;background:var(--panel);margin-bottom:16px}
.bio .len{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--fire);font-weight:700;margin-bottom:12px}
.bio p{font-size:15px;color:rgba(231,230,227,.84);max-width:none}
.copybtn{margin-top:16px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;background:none;border:1px solid var(--line-2);color:var(--clay);padding:8px 14px;border-radius:2px;cursor:pointer;font-family:var(--body);transition:.2s}
.copybtn:hover{background:var(--clay);color:var(--ink)}

/* ---------- footer ---------- */
footer{background:#000;border-top:1px solid var(--line);padding:64px 0 32px}
.fgrid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:36px}
@media(max-width:860px){.fgrid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.fgrid{grid-template-columns:1fr}}
.fcol h4{font-family:var(--body);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--fire);font-weight:700;margin-bottom:16px}
.fcol a{display:block;color:rgba(231,230,227,.6);font-size:14px;margin:9px 0;transition:.18s}
.fcol a:hover{color:var(--clay)}
.fbrand p{font-size:14px;color:var(--mute-2);margin-top:12px;max-width:30ch}
.copy{
  margin-top:48px;padding-top:24px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-size:12.5px;color:var(--mute-2);
}
.copy a{color:var(--mute-2);text-decoration:underline;text-underline-offset:3px}
.copy a:hover{color:var(--clay)}

/* ---------- page header (interior) ---------- */
.phead{
  padding:80px 0 56px;border-bottom:1px solid var(--line);
  background:radial-gradient(110% 130% at 6% 0%,rgba(29,58,79,.5),rgba(5,8,9,0) 64%),linear-gradient(180deg,#07121a,var(--ink));
}
.phead h1{font-size:clamp(42px,7vw,86px);margin-bottom:20px}

/* ---------- reveal ----------
   Content is visible by default. The hidden-then-reveal state is opted into
   only when JS is confirmed running (html.js, set by an inline script in
   <head>), so a JS failure degrades to a plain visible page rather than a
   blank one. */
.rv{opacity:1;transform:none}
.js .rv{opacity:0;transform:translateY(22px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
.js .rv.in{opacity:1;transform:none}
.js .rv-1{transition-delay:.06s}.js .rv-2{transition-delay:.12s}.js .rv-3{transition-delay:.18s}
.js .rv-4{transition-delay:.24s}.js .rv-5{transition-delay:.3s}

/* staggered line reveal (hero) */
.line{display:block;overflow:hidden}
.js .line > span{display:block;transform:translateY(105%);animation:riseIn .95s cubic-bezier(.16,.84,.28,1) forwards}
.js .line:nth-child(1) > span{animation-delay:.06s}
.js .line:nth-child(2) > span{animation-delay:.15s}
.js .line:nth-child(3) > span{animation-delay:.24s}
@keyframes riseIn{to{transform:translateY(0)}}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-delay:0s !important;transition-duration:.001ms !important}
  .rv,.js .rv{opacity:1;transform:none}
  .line > span,.js .line > span{transform:none;animation:none}
  html{scroll-behavior:auto}
}

/* ---------- misc ---------- */
.note{
  border:1px solid var(--line);border-left:2px solid var(--fire);
  background:rgba(29,58,79,.22);padding:18px 22px;border-radius:2px;margin:26px 0;
}
.note b{display:block;font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--fire);margin-bottom:8px;font-weight:700}
.note p{font-size:14.5px;color:rgba(231,230,227,.8);max-width:none}
/* ---------- beta offer ----------
   Deliberately not another clay band — this is an offer, not a section, so it
   gets the fire accent at panel scale instead. */
.offer{
  position:relative;overflow:hidden;
  border:1px solid rgba(193,82,26,.42);border-radius:var(--r);
  background:
    radial-gradient(120% 140% at 88% 0%, rgba(193,82,26,.26) 0%, rgba(5,8,9,0) 58%),
    linear-gradient(150deg,#12232c 0%, #0a1216 100%);
  padding:44px;
}
@media(max-width:640px){.offer{padding:30px 24px}}
.offer::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--fire)}
.offer-in{display:grid;grid-template-columns:1.25fr .75fr;gap:44px;align-items:center}
@media(max-width:860px){.offer-in{grid-template-columns:1fr;gap:30px}}
.offer h2{font-size:clamp(28px,4.2vw,50px);margin:16px 0 16px}
.offer .price{
  display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
  padding-top:22px;margin-top:24px;border-top:1px solid var(--line);
}
.offer .price .now{
  font-family:var(--disp);font-weight:700;font-size:clamp(38px,5.4vw,60px);
  line-height:1;color:var(--fire);text-transform:uppercase;
}
.offer .price .was{font-size:17px;color:var(--mute)}
.offer .price .was s{color:var(--mute-2)}
.offer .badge{background:var(--fire);border-color:var(--fire);color:#fff}
.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;
}

.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;z-index:99;background:var(--fire);color:#fff;padding:10px 16px;border-radius:2px}
