/* rellm-web — shared stylesheet
   Design language adapted from TemplateMo tm-626-ledger-slideshow
   (https://templatemo.com): serif body, mono metadata, bone + forest green + gold. */

:root{
  --ee:cubic-bezier(0.19,1,0.22,1);
  --eq:cubic-bezier(0.77,0,0.175,1);

  /* dimmed blue palette; names kept from the old green/beige set */
  --bone:#1E2A38;
  --bone-2:#2A3949;
  --cream:#3A4C5F;
  --green:#E6E9ED;
  --green-2:#DCE0E6;
  --green-3:#C2C9D2;
  --gold:#7E9BBE;
  --gold-soft:#A9BFD6;
  --ink:#E6E9ED;
  --ink-2:#C3C9D3;
  --ink-3:#8C99A8;
  --rule:rgba(230,233,237,.16);
  --rule-2:rgba(230,233,237,.09);

  --font-serif:'Source Serif 4',Georgia,serif;
  --font-mono:'JetBrains Mono','Courier New',monospace;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:64px}
/* The two hero slides and the oversized page-content area form three mandatory
   stops. Browsers allow free scrolling inside an oversized snap area. */
html:has(.hero){scroll-snap-type:y mandatory}
html:has(.hero) .page-content{scroll-snap-align:start;scroll-snap-stop:always}
html:has(.hero) .site-footer{scroll-snap-align:end}
body{background:var(--bone);color:var(--ink);font-family:var(--font-serif);-webkit-font-smoothing:antialiased;font-feature-settings:'liga' 1,'kern' 1;padding-top:64px}
body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;background-image:radial-gradient(circle at 20% 30%,rgba(126,155,190,.05) 0%,transparent 50%),radial-gradient(circle at 80% 70%,rgba(230,233,237,.03) 0%,transparent 50%)}
::selection{background:var(--gold-soft);color:#1E2A38}
img{max-width:100%;display:block}

.wrap{max-width:1240px;margin:0 auto;padding:0 42px}

/* ============ Header ============ */
.site-header{position:fixed;top:0;left:0;right:0;z-index:100;height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 42px;background:var(--green);border-bottom:1px solid var(--gold)}
.brand{display:flex;align-items:baseline;gap:12px;font-weight:600;font-size:20px;letter-spacing:-.005em;color:var(--bone);text-decoration:none}
.brand .mark{display:inline-block;width:9px;height:9px;background:var(--gold);transform:translateY(-1px)}
.brand .sub{font-family:var(--font-mono);font-weight:500;font-size:9px;letter-spacing:.28em;text-transform:uppercase;color:#7A8794}
.site-nav{display:flex;gap:26px;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase}
.site-nav a{color:var(--bone-2);text-decoration:none;padding-bottom:3px;border-bottom:1px solid transparent;transition:color .25s,border-color .25s}
.site-nav a:hover{color:var(--gold);border-color:var(--gold)}
.site-nav a.active{color:var(--bone);border-color:var(--gold)}

/* ============ Hero (scroll-snapped slides) ============
   Two full-height sections; mandatory snap gives the
   slide 1 -> slide 2 step, then page sections take over. */
.hero{position:relative;z-index:1;max-width:1240px;margin:0 auto}
.hero-slide{position:relative;display:flex;flex-direction:column;justify-content:center;gap:34px;min-height:calc(100svh - 64px);padding:88px 42px 64px;scroll-snap-align:start;scroll-snap-stop:always}

/* entrance: slide 1 on load; slide 2 replays on scroll where supported */
@keyframes heroRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.hero-slide--1 .rv{animation:heroRise .9s var(--ee) both}
.d1{animation-delay:.3s}.d2{animation-delay:.45s}.d3{animation-delay:.6s}.d4{animation-delay:.75s}
@supports (animation-timeline: view()){
  .hero-slide--2 .rv{animation:heroRise 1s var(--ee) both;animation-timeline:view();animation-range:entry 0% entry 50%}
}

.hero-slide-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:6vmin;align-items:center}
.eyebrow{font-family:var(--font-mono);font-weight:600;font-size:11px;letter-spacing:.4em;text-transform:uppercase;color:var(--gold);display:flex;align-items:center;gap:14px}
.eyebrow::before,.eyebrow::after{content:'';flex:0 0 32px;height:1px;background:var(--gold)}
.hero-title{font-weight:300;font-size:clamp(64px,11vw,170px);line-height:.9;letter-spacing:-.03em;color:var(--ink)}
.hero-title--mid{font-size:clamp(40px,6.5vw,92px)}
.hero-title em{font-style:italic;font-weight:300;color:var(--gold)}
.hero-sub{font-style:italic;font-weight:400;font-size:clamp(18px,1.9vw,26px);color:var(--ink-2);max-width:640px;line-height:1.45}
.hero-body{font-size:clamp(16px,1.5vw,20px);line-height:1.65;color:var(--ink-2);max-width:680px}
.hero-body strong{font-weight:600;color:var(--ink)}
.hero-body em{font-style:italic;color:var(--gold)}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap}

.logo-ascii{justify-self:center;margin:0;max-width:100%;overflow:hidden;white-space:pre;font-family:var(--font-mono);font-size:clamp(9px,1vw,16px);line-height:1.15;color:var(--gold-soft)}

.hero-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:4vmin;padding-top:22px;border-top:1px solid var(--ink)}
.hero-facts .lbl{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3);font-weight:500}
.hero-facts .val{font-weight:500;font-size:17px;letter-spacing:-.005em;margin-top:4px}
.hero-facts .val em{font-style:italic;color:var(--gold)}

/* ============ Buttons ============ */
.btn-primary{background:var(--ink);color:var(--bone);padding:14px 28px;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;display:inline-flex;align-items:center;gap:12px;cursor:pointer;transition:all .3s var(--ee);border:1px solid var(--ink);text-decoration:none}
.btn-primary:hover{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.btn-secondary{background:transparent;color:var(--ink);padding:14px 28px;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;display:inline-flex;align-items:center;gap:12px;cursor:pointer;transition:all .3s var(--ee);border:1px solid var(--ink);text-decoration:none}
.btn-secondary:hover{background:var(--ink);color:var(--bone)}

/* ============ Sections ============ */
.section{position:relative;z-index:1;padding:84px 42px;max-width:1240px;margin:0 auto}
.exhibit-label{font-family:var(--font-mono);font-weight:500;font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--gold);display:flex;align-items:center;gap:12px}
.exhibit-label::before{content:'';width:24px;height:1px;background:var(--gold)}
.section h2{font-weight:300;font-size:clamp(34px,4.6vw,60px);line-height:1;letter-spacing:-.02em;margin-top:14px}
.section h2 em{font-style:italic;color:var(--gold)}
.lede{font-style:italic;font-size:17px;color:var(--ink-2);max-width:680px;margin-top:16px;line-height:1.55}
.section-rule{height:1px;background:var(--rule-2);margin:56px 0 0}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
.section .exhibit-label{animation:rise .9s var(--ee) both}
.section h2{animation:rise .9s var(--ee) .1s both}
.section .lede{animation:rise .9s var(--ee) .2s both}

/* ============ Cards ============ */
.cards{display:grid;gap:18px;margin-top:44px}
.cards--4{grid-template-columns:repeat(4,1fr)}
.cards--3{grid-template-columns:repeat(3,1fr)}
.card{border:1px solid var(--rule);background:var(--bone-2);padding:26px;display:flex;flex-direction:column;gap:12px;transition:transform .4s var(--ee),border-color .4s var(--ee),box-shadow .4s var(--ee)}
.card:hover{transform:translateY(-4px);border-color:var(--gold);box-shadow:0 14px 30px rgba(10,16,24,.25)}
.card .c-num{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:600}
.card h3{font-weight:500;font-size:18px;line-height:1.2;letter-spacing:-.005em}
.card h3 em{font-style:italic;color:var(--gold)}
.card p{font-size:14.5px;line-height:1.55;color:var(--ink-2);flex:1}
.card .c-cta{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink);font-weight:600;display:inline-flex;gap:6px;border-bottom:1px solid var(--ink);padding-bottom:4px;align-self:flex-start;margin-top:4px;transition:all .3s}
.card:hover .c-cta{color:var(--gold);border-color:var(--gold)}
a.card{text-decoration:none;color:inherit}
.agent-shot{border-radius:20px}
.agent-shot img{height:auto;border-radius:12px}

/* ============ Code blocks ============ */
.code-cap{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3);font-weight:500;display:flex;gap:10px;align-items:center;margin:34px 0 8px}
.code-cap::before{content:'';width:14px;height:1px;background:var(--gold)}
pre.code{background:#011627;color:#D6DEEB;font-weight:500;border:1px solid var(--ink);border-radius:20px;padding:22px 33px;overflow-x:auto;font-family:var(--font-mono);font-size:13px;line-height:1.65;tab-size:4}
pre.code::-webkit-scrollbar{height:8px}
pre.code::-webkit-scrollbar-thumb{background:var(--gold);border:2px solid transparent;background-clip:padding-box}
pre.code code{font:inherit}
/* token colors: srcery theme (srcery.css) — applied by highlight.js at load;
   block colors above are duplicated so the block survives with JS blocked */
.code-note{font-style:italic;font-size:13.5px;line-height:1.55;color:var(--ink-3);margin-top:14px;max-width:760px}
.code-note strong{font-style:normal;font-family:var(--font-mono);font-size:11px;color:var(--gold);font-weight:600;margin-right:6px}
.doc-p{font-size:16.5px;line-height:1.7;color:var(--ink-2);margin-top:16px;max-width:760px}
.doc-p strong{font-weight:600;color:var(--ink)}
.doc-p em{font-style:italic;color:var(--gold)}
.doc-p code,li code{font-family:var(--font-mono);font-size:.88em;background:var(--cream);border:1px solid var(--rule);padding:1px 6px}

/* ============ Changelog ============ */
.release{border-top:1px solid var(--ink);padding:44px 0;display:flex;flex-direction:column;gap:8px}
.release-head{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap}
.release-head h3{font-weight:400;font-size:32px;letter-spacing:-.01em}
.release-head h3 em{font-style:italic;color:var(--gold)}
.release-head .rel-date{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3);font-weight:500;margin-left:auto}
.release h4{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:600;margin-top:16px}
.release ul{list-style:none;display:flex;flex-direction:column;gap:7px;margin-top:6px}
.release li{padding-left:18px;position:relative;font-size:15.5px;line-height:1.55;color:var(--ink-2)}
.release li::before{content:'\002B';position:absolute;left:0;top:3px;color:var(--gold);font-family:var(--font-mono);font-size:11px;font-weight:600}
.release li strong{font-weight:600;color:var(--ink)}

/* ============ Footer ============ */
.site-footer{position:relative;z-index:1;border-top:1px solid var(--gold);background:var(--green);margin-top:80px}
.footer-grid{display:grid;grid-template-columns:1.3fr 1.3fr 1fr;gap:5vmin;max-width:1240px;margin:0 auto;padding:48px 42px}
.f-col{display:flex;flex-direction:column;gap:10px}
.f-col .lbl{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:600}
.f-col p{font-size:14.5px;line-height:1.6;color:var(--bone-2)}
.f-col a{font-size:14.5px;color:var(--bone-2);text-decoration:none;line-height:1.6;display:inline-block;transition:color .25s}
.f-col a:hover{color:var(--gold)}
.f-col .f-brand{font-weight:600;font-size:19px;color:var(--bone);display:flex;align-items:baseline;gap:10px}
.f-col .f-brand .mark{display:inline-block;width:8px;height:8px;background:var(--gold)}
.footer-bot{border-top:1px solid rgba(30,42,56,.2);display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:16px 42px;max-width:1240px;margin:0 auto;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:#7A8794;font-weight:500}
.footer-bot a{color:inherit;text-decoration:none;transition:color .25s}
.footer-bot a:hover{color:var(--gold)}

/* ============ Responsive ============ */
@media (max-width:1024px){
  .cards--4{grid-template-columns:repeat(2,1fr)}
  .cards--3{grid-template-columns:repeat(2,1fr)}
  .hero-slide-grid{grid-template-columns:1fr;gap:24px}
  .logo-ascii{justify-self:start}
  .hero-facts{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:640px){
  .wrap,.site-header,.hero-slide,.section,.footer-grid,.footer-bot{padding-left:20px;padding-right:20px}
  .site-header{padding-top:0;padding-bottom:0}
  .brand{font-size:16px}
  .brand .sub{display:none}
  .site-nav{gap:10px;font-size:10px;letter-spacing:.12em}
  .site-nav a{display:flex;align-items:center;min-height:44px;padding-bottom:0}
  .site-nav a:last-child{display:none}
  .section{padding-top:56px;padding-bottom:56px}
  .hero{min-height:auto}
  .hero-slide{gap:24px;padding:40px 20px 48px;justify-content:flex-start}
  .hero-slide--2{justify-content:center}
  .logo-ascii{justify-self:start;max-width:none;overflow:visible;font-size:clamp(6px,2vw,9px)}
  .cards--4,.cards--3{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr;gap:30px}
  pre.code{padding:18px;font-size:12px;border-radius:12px;white-space:pre-wrap;overflow-wrap:anywhere}
  .release-head h3{font-size:24px}
}
@media (pointer:coarse) and (orientation:landscape){
  html:has(.hero){scroll-snap-type:y proximity}
}
