/* ============================================================
   Bebito — Design System
   Warm editorial: cream canvas, warm ink, caramel accent.
   Fonts: Frank Ruhl Libre (display) / Assistant (body) / IBM Plex Mono (numbers)
   ============================================================ */

:root{
  --bg: #FAF8F4;
  --surface: #FFFFFF;
  --sand: #F1EBE2;
  --sand-deep: #E6DECF;
  --ink: #221B14;
  --ink-2: #6E655B;
  --ink-3: #A39A8F;
  --line: rgba(34,27,20,0.09);
  --line-strong: rgba(34,27,20,0.16);
  --caramel: #A87C4F;
  --caramel-deep: #7D5A36;
  --caramel-soft: rgba(168,124,79,0.10);
  --honey: #D99A4E;
  --sage: #7F9877;
  --sage-soft: rgba(127,152,119,0.14);
  --danger: #B3564D;

  --font-display: 'Frank Ruhl Libre', 'Times New Roman', serif;
  --font-body: 'Assistant', -apple-system, sans-serif;
  --font-mono: 'IBM Plex Mono', monospace;

  --radius-s: 12px;
  --radius: 20px;
  --radius-l: 28px;

  --shadow-s: 0 1px 2px rgba(34,27,20,0.04), 0 4px 12px rgba(34,27,20,0.05);
  --shadow-m: 0 2px 4px rgba(34,27,20,0.04), 0 12px 32px rgba(34,27,20,0.08);
  --shadow-l: 0 4px 8px rgba(34,27,20,0.05), 0 24px 64px rgba(34,27,20,0.12);

  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-spring: cubic-bezier(0.34, 1.4, 0.64, 1);
}

*{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; }
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.65;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,.display{
  font-family:var(--font-display);
  font-weight:500;
  line-height:1.15;
  letter-spacing:-0.01em;
}
.mono{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
a{ color:inherit; text-decoration:none; }
img,svg{ display:block; max-width:100%; }
button{ font-family:inherit; }
::selection{ background:rgba(168,124,79,0.22); }

.wrap{ max-width:1140px; margin:0 auto; padding:0 28px; }
.wrap-narrow{ max-width:880px; margin:0 auto; padding:0 28px; }

/* ---------- Icons ---------- */
.icon{ width:22px; height:22px; stroke:currentColor; fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; flex:none; }
.icon-s{ width:17px; height:17px; }
.icon-l{ width:28px; height:28px; }

/* ---------- Eyebrow / labels ---------- */
.eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-mono);
  font-size:12px; font-weight:500; letter-spacing:0.14em;
  color:var(--caramel-deep);
  text-transform:uppercase;
}
.eyebrow::before{
  content:""; width:22px; height:1px; background:var(--caramel);
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:15px 30px; border-radius:999px;
  font-family:var(--font-body); font-size:16px; font-weight:600;
  border:1px solid transparent; cursor:pointer;
  transition:transform .35s var(--ease-spring), box-shadow .35s var(--ease-out),
             background .25s var(--ease-out), border-color .25s var(--ease-out), color .25s;
  will-change:transform;
}
.btn .icon{ width:18px; height:18px; transition:transform .35s var(--ease-spring); }
.btn:hover .icon{ transform:translateX(-4px); } /* RTL: forward = left */
.btn-primary{
  background:var(--ink); color:#FFF9F2;
  box-shadow:0 6px 18px rgba(34,27,20,0.22);
}
.btn-primary:hover{ transform:translateY(-2px); box-shadow:0 12px 28px rgba(34,27,20,0.26); background:#33291F; }
.btn-primary:active{ transform:translateY(0) scale(.985); }
.btn-ghost{
  background:transparent; color:var(--ink);
  border-color:var(--line-strong);
}
.btn-ghost:hover{ border-color:var(--ink); background:rgba(34,27,20,0.03); transform:translateY(-2px); }
.btn-block{ width:100%; }
.btn[disabled]{ opacity:.35; pointer-events:none; }

/* ---------- Header ---------- */
.site-header{
  position:sticky; top:0; z-index:60;
  background:rgba(250,248,244,0.82);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .3s, background .3s;
}
.site-header.scrolled{ border-bottom-color:var(--line); background:rgba(250,248,244,0.94); }
.site-header nav{
  display:flex; align-items:center; justify-content:space-between; height:78px;
}
.logo-img{ height:34px; width:auto; }
.nav-links{ display:flex; gap:34px; font-size:15.5px; font-weight:500; color:var(--ink-2); }
.nav-links a{ position:relative; padding:4px 0; transition:color .25s; }
.nav-links a::after{
  content:""; position:absolute; bottom:0; right:0; height:1.5px; width:0;
  background:var(--caramel-deep); transition:width .3s var(--ease-out);
}
.nav-links a:hover{ color:var(--ink); }
.nav-links a:hover::after{ width:100%; }

/* ---------- Cards ---------- */
.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow-s);
}
.card-hover{ transition:transform .45s var(--ease-out), box-shadow .45s var(--ease-out), border-color .3s; }
.card-hover:hover{ transform:translateY(-5px); box-shadow:var(--shadow-m); border-color:var(--line-strong); }

/* ---------- Forms ---------- */
.field{ display:flex; flex-direction:column; gap:8px; text-align:right; }
.field label{ font-size:14px; font-weight:600; color:var(--ink); }
.field input, .field select, .field textarea{
  font-family:var(--font-body); font-size:16px; color:var(--ink);
  background:var(--surface);
  border:1.5px solid var(--line-strong); border-radius:14px;
  padding:13px 16px; outline:none; width:100%;
  transition:border-color .25s, box-shadow .25s;
}
.field input::placeholder{ color:var(--ink-3); }
.field input:focus, .field select:focus, .field textarea:focus{
  border-color:var(--caramel);
  box-shadow:0 0 0 4px rgba(168,124,79,0.13);
}
.field .err{ display:none; font-size:13px; color:var(--danger); }
.field.invalid input{ border-color:var(--danger); box-shadow:0 0 0 4px rgba(179,86,77,0.10); }
.field.invalid .err{ display:block; }

/* Choice pills (gender, side, tabs) */
.choice-group{ display:flex; gap:10px; flex-wrap:wrap; }
.choice{
  padding:11px 20px; border-radius:999px; cursor:pointer; user-select:none;
  font-size:15px; font-weight:600; color:var(--ink-2);
  background:var(--surface); border:1.5px solid var(--line-strong);
  transition:all .25s var(--ease-out);
}
.choice:hover{ border-color:var(--ink-3); color:var(--ink); }
.choice.selected, .choice.active{
  background:var(--ink); color:#FFF9F2; border-color:var(--ink);
  transform:scale(1.02);
}

/* ---------- Reveal on scroll ----------
   Usage: add data-reveal to element. Optional data-reveal-delay="120" (ms).
   bebito.js adds .is-visible when scrolled into view. */
[data-reveal]{
  opacity:0; transform:translateY(26px);
  transition:opacity .9s var(--ease-out), transform .9s var(--ease-out);
  transition-delay:var(--reveal-delay, 0ms);
}
[data-reveal].is-visible{ opacity:1; transform:none; }
[data-reveal="fade"]{ transform:none; }
[data-reveal="scale"]{ transform:scale(.94); }
[data-reveal="scale"].is-visible{ transform:scale(1); }

/* ---------- Keyframes ---------- */
@keyframes floaty{
  0%,100%{ transform:translateY(0); }
  50%{ transform:translateY(-14px); }
}
@keyframes marquee{
  from{ transform:translateX(0); }
  to{ transform:translateX(50%); } /* RTL loop */
}
@keyframes pulse-dot{
  0%,100%{ opacity:1; transform:scale(1); }
  50%{ opacity:.45; transform:scale(.82); }
}
@keyframes draw-line{
  to{ stroke-dashoffset:0; }
}
@keyframes pop-in{
  0%{ opacity:0; transform:scale(.6); }
  70%{ transform:scale(1.06); }
  100%{ opacity:1; transform:scale(1); }
}
@keyframes slide-down{
  from{ opacity:0; transform:translateY(-8px); }
  to{ opacity:1; transform:none; }
}
.pulse-dot{
  width:8px; height:8px; border-radius:50%; background:var(--sage);
  animation:pulse-dot 2s ease-in-out infinite;
}

/* ---------- Footer ---------- */
.site-footer{
  background:var(--ink); color:#CFC6BB;
  padding:72px 0 36px; margin-top:110px;
  border-radius:var(--radius-l) var(--radius-l) 0 0;
}
.site-footer .footer-grid{
  display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:44px; margin-bottom:56px;
}
.site-footer .footer-logo{ height:30px; filter:invert(1) brightness(1.6); margin-bottom:16px; }
.site-footer p.small{ font-size:14px; color:#9C9288; max-width:280px; line-height:1.7; }
.site-footer h5{
  font-family:var(--font-mono); font-size:11.5px; font-weight:500;
  letter-spacing:.16em; text-transform:uppercase; color:#8A8177; margin-bottom:18px;
}
.site-footer ul{ list-style:none; display:flex; flex-direction:column; gap:11px; }
.site-footer ul a{ font-size:14.5px; color:#CFC6BB; transition:color .25s; }
.site-footer ul a:hover{ color:#FFF9F2; }
.site-footer .footer-bottom{
  border-top:1px solid rgba(255,249,242,0.10); padding-top:26px;
  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  font-size:13px; color:#8A8177;
}

/* ---------- Misc ---------- */
.divider{ height:1px; background:var(--line); border:none; }
.tag{
  display:inline-flex; align-items:center; gap:7px;
  font-size:13px; font-weight:600; color:var(--caramel-deep);
  background:var(--caramel-soft); padding:7px 15px; border-radius:999px;
}

@media (max-width:900px){
  .nav-links{ display:none; }
  .site-footer .footer-grid{ grid-template-columns:1fr 1fr; gap:32px; }
  .wrap, .wrap-narrow{ padding:0 20px; }
}

@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration:0.001ms !important;
    transition-duration:0.001ms !important;
    scroll-behavior:auto !important;
  }
  [data-reveal]{ opacity:1; transform:none; }
}
