/* =============================================================
   Kiwi Dynamics, /ascii-lander concept.

   A home concept built around the live ASCII renderer
   (src/lib/ascii-object.js + src/components/AsciiObject.astro).
   The brand mark is the subject: it is loaded as an SVG, extruded,
   lit in a studio room and redrawn out of characters every frame.

   Standalone on purpose, same as /new-lander. No Base layout, no
   site header, no global.css. Palette and type are the real site's
   tokens so it reads as Kiwi Dynamics.

   Dark is the default here because the character grid needs it.
   On <html>: data-theme="light" for the light build.
   ============================================================= */

@font-face{font-family:'Haffer';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('/fonts/Haffer-VF.ttf') format('truetype-variations')}
@font-face{font-family:'Haffer XH';font-style:normal;font-weight:400;font-display:swap;
  src:url('/fonts/HafferXH-Regular.woff2') format('woff2')}
@font-face{font-family:'Haffer Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('/fonts/HafferMono-Regular.woff2') format('woff2')}
@font-face{font-family:'Haffer Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url('/fonts/HafferMono-Medium.woff2') format('woff2')}

/* ---------- DARK (default here) ---------- */
:root{
  --ink:#14110f;
  --ink-2:#181513;
  --ink-3:#221e1b;
  --fg:#ffffff;
  --muted:#a49e9a;
  --muted-2:#7a736f;
  --line:rgba(244,244,244,.12);
  --line-2:rgba(244,244,244,.24);

  --accent:#a1ff62;
  --accent-ink:#16210c;
  --accent-soft:rgba(161,255,98,.13);
  --halo:rgba(161,255,98,.20);
  --accent-glow:rgba(161,255,98,.55);

  --card-bg:linear-gradient(180deg,rgba(244,244,244,.035),rgba(244,244,244,.008));
  --hover-fill:rgba(244,244,244,.05);
  --bar-bg:rgba(20,17,15,.76);

  --sans:'Haffer',system-ui,-apple-system,'Segoe UI',sans-serif;
  --display:'Haffer XH','Haffer',system-ui,sans-serif;
  --mono:'Haffer Mono',ui-monospace,'SF Mono',monospace;

  --ease:cubic-bezier(.19,1,.22,1);

  --hdr-h:72px;
  --wrap:1280px;
  --gut:clamp(20px,5vw,64px);
  --pad-sect:clamp(72px,10vw,150px);

  --h-xl:clamp(2.5rem,6vw,5rem);
  --h-lg:clamp(1.9rem,4vw,3.3rem);
  --h-md:clamp(1.35rem,2.4vw,2rem);
}

html[data-theme="light"]{
  --ink:#ffffff;
  --ink-2:#f4f4f4;
  --ink-3:#eaeaea;
  --fg:#201d1d;
  --muted:#6f6b6b;
  --muted-2:#948f8f;
  --line:rgba(32,29,29,.14);
  --line-2:rgba(32,29,29,.26);
  --accent-soft:rgba(161,255,98,.20);
  --halo:rgba(161,255,98,.34);
  --card-bg:linear-gradient(180deg,rgba(32,29,29,.028),rgba(32,29,29,.006));
  --hover-fill:rgba(32,29,29,.045);
  --bar-bg:rgba(255,255,255,.82);
}

/* ---------- base ---------- */
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--ink);color:var(--fg);
  font-family:var(--sans);font-size:16px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3,h4{margin:0;font-family:var(--display);font-weight:400;line-height:1.04;letter-spacing:-.028em}
p{margin:0}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}

.wrap{width:min(var(--wrap),100% - var(--gut)*2);margin-inline:auto}
.mono{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase}
.skip{position:absolute;left:-9999px}
.skip:focus{left:var(--gut);top:12px;z-index:99;background:var(--accent);color:var(--accent-ink);padding:.5rem .9rem;border-radius:6px}

/* ---------- header ---------- */
.bar{
  position:sticky;top:0;z-index:40;height:var(--hdr-h);
  display:flex;align-items:center;
  background:var(--bar-bg);backdrop-filter:blur(16px) saturate(1.3);
  border-bottom:1px solid transparent;transition:border-color .3s var(--ease);
}
.bar[data-stuck]{border-bottom-color:var(--line)}
.bar-in{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;width:100%}
.brand{display:inline-flex;align-items:center;gap:.6rem;font-weight:600;letter-spacing:-.015em}
.brand svg{color:var(--accent);width:22px;height:22px}
.nav{display:flex;align-items:center;gap:1.75rem}
.nav a{color:var(--muted);font-size:.92rem;transition:color .2s var(--ease)}
.nav a:hover{color:var(--fg)}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  padding:.62rem 1.15rem;border-radius:999px;font-size:.9rem;font-weight:600;
  border:1px solid transparent;transition:transform .2s var(--ease),background .2s var(--ease),border-color .2s var(--ease);
}
.btn:hover{transform:translateY(-1px)}
.btn-fill{background:var(--accent);color:var(--accent-ink)}
.btn-fill:hover{box-shadow:0 0 0 6px var(--accent-soft)}
.btn-line{border-color:var(--line-2);color:var(--fg)}
.btn-line:hover{border-color:var(--accent);color:var(--accent)}
.theme{
  width:34px;height:34px;border-radius:999px;border:1px solid var(--line);
  display:grid;place-items:center;color:var(--muted);
}
.theme:hover{border-color:var(--accent);color:var(--accent)}

/* ---------- hero ---------- */
.hero{position:relative;padding:clamp(2.5rem,6vw,5rem) 0 clamp(3rem,6vw,5.5rem);overflow:hidden}
.hero-in{
  position:relative;z-index:1;display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.02fr);
  gap:clamp(2rem,5vw,4.5rem);align-items:center;
}
.hero h1{font-size:var(--h-xl)}
.hero h1 em{font-style:normal;color:var(--accent);text-shadow:0 0 60px var(--accent-glow)}
.hero .lede{margin-top:1.4rem;max-width:46ch;color:var(--muted);font-size:1.06rem}
.hero .acts{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:2rem}
.hero .meta{display:flex;flex-wrap:wrap;gap:1.6rem;margin-top:2.4rem;color:var(--muted-2)}
.hero .meta b{display:block;color:var(--fg);font-family:var(--display);font-size:1.5rem;font-weight:400;letter-spacing:-.03em}

.stage{
  position:relative;border:1px solid var(--line);border-radius:18px;
  background:radial-gradient(115% 85% at 50% 0%,var(--halo),transparent 68%),var(--ink-2);
  overflow:hidden;
}
.stage .corner{position:absolute;width:13px;height:13px;border:1px solid var(--accent);opacity:.6;pointer-events:none}
.stage .corner.tl{top:9px;left:9px;border-right:0;border-bottom:0}
.stage .corner.tr{top:9px;right:9px;border-left:0;border-bottom:0}
.stage .corner.bl{bottom:9px;left:9px;border-right:0;border-top:0}
.stage .corner.br{bottom:9px;right:9px;border-left:0;border-top:0}
.stage .tag{position:absolute;left:16px;bottom:14px;color:var(--muted-2);pointer-events:none}
.stage[data-ready] .tag{color:var(--accent)}

.hero-glow{position:absolute;top:-40%;right:-12%;width:920px;height:920px;pointer-events:none;
  background:radial-gradient(circle,var(--halo),transparent 62%)}

/* ---------- ticker ---------- */
.ticker{border-block:1px solid var(--line);background:var(--ink-2);overflow:hidden;padding:.85rem 0}
.ticker-track{display:flex;gap:3.5rem;width:max-content;animation:slide 34s linear infinite;color:var(--muted-2)}
.ticker span{white-space:nowrap}
.ticker span::before{content:"◆";color:var(--accent);margin-right:.85rem;font-size:.6em;vertical-align:.25em}
@keyframes slide{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.ticker-track{animation:none}}

/* ---------- sections ---------- */
.sect{padding:var(--pad-sect) 0}
.sect-head{max-width:60ch;margin-bottom:clamp(2rem,4vw,3.25rem)}
.sect-head h2{font-size:var(--h-lg)}
.sect-head p{margin-top:1rem;color:var(--muted);font-size:1.02rem}

.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(276px,1fr));gap:1.1rem}
.card{
  border:1px solid var(--line);border-radius:14px;padding:1.4rem;background:var(--card-bg);
  transition:border-color .25s var(--ease),transform .25s var(--ease);
}
.card:hover{border-color:var(--accent);transform:translateY(-2px)}
.card .n{color:var(--accent);font-family:var(--mono);font-size:.72rem;letter-spacing:.14em}
.card h3{margin-top:.9rem;font-size:1.2rem}
.card p{margin-top:.6rem;color:var(--muted);font-size:.94rem}
.card .viewer{margin-top:1.2rem;border-radius:10px;background:radial-gradient(90% 80% at 50% 20%,var(--accent-soft),transparent 70%)}

/* ---------- split ---------- */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,5vw,4.5rem);align-items:center}
.split h2{font-size:var(--h-lg)}
.split p{margin-top:1.05rem;color:var(--muted);max-width:48ch}
.ticks{list-style:none;padding:0;margin:1.6rem 0 2rem;display:grid;gap:.62rem;color:var(--muted);font-size:.96rem}
.ticks li{position:relative;padding-left:1.5rem}
.ticks li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;background:var(--accent);transform:rotate(45deg)}
.toggle{
  position:absolute;left:16px;bottom:14px;z-index:2;
  padding:.4rem .85rem;border-radius:999px;border:1px solid var(--line-2);
  background:var(--bar-bg);backdrop-filter:blur(10px);color:var(--fg);
  font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;
}
.toggle:hover{border-color:var(--accent);color:var(--accent)}

/* ---------- proof ---------- */
.proof{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:14px;overflow:hidden}
.proof div{background:var(--ink);padding:1.6rem 1.3rem}
.proof b{display:block;font-family:var(--display);font-size:2.1rem;font-weight:400;letter-spacing:-.035em;color:var(--accent)}
.proof span{display:block;margin-top:.35rem;color:var(--muted);font-size:.88rem}

/* ---------- cta ---------- */
.cta-band{
  display:grid;grid-template-columns:300px minmax(0,1fr);gap:clamp(1.5rem,4vw,3rem);align-items:center;
  border:1px solid var(--line);border-radius:20px;padding:clamp(1.4rem,3vw,2.4rem);
  background:radial-gradient(80% 130% at 0% 50%,var(--accent-soft),transparent 66%),var(--ink-2);
}
.cta-band h2{font-size:var(--h-md)}
.cta-band p{margin:.85rem 0 1.5rem;color:var(--muted);max-width:52ch}

/* ---------- footer ---------- */
.foot{border-top:1px solid var(--line);margin-top:var(--pad-sect);padding:3rem 0 2rem}
.foot-grid{display:grid;grid-template-columns:1.7fr repeat(3,1fr);gap:2rem}
.foot h4{font-family:var(--sans);font-size:.86rem;font-weight:600;margin-bottom:.7rem}
.foot a{display:block;color:var(--muted);font-size:.9rem;padding:.16rem 0}
.foot a:hover{color:var(--accent)}
.foot .blurb{color:var(--muted);font-size:.9rem;max-width:40ch;margin-top:.7rem}
.foot-base{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  margin-top:2.6rem;padding-top:1.2rem;border-top:1px solid var(--line);color:var(--muted-2);font-size:.78rem}

/* ---------- reveal ---------- */
[data-rise]{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
[data-rise][data-shown]{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  [data-rise]{opacity:1;transform:none;transition:none}
}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .hero-in,.split,.cta-band{grid-template-columns:minmax(0,1fr)}
  .hero-in .stage{order:-1}
  .foot-grid{grid-template-columns:repeat(2,1fr)}
  .foot-grid > :first-child{grid-column:1 / -1}
  .nav{display:none}
}
