/* base.css — reset + typography + primitives */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;text-rendering:optimizeLegibility}
body{
  margin:0;
  font-family:var(--f-body);
  font-size:16px;
  line-height:1.55;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
img,svg,video{display:block;max-width:100%;height:auto}
img{background:var(--card)}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
input,textarea,select{font:inherit;color:inherit}
a{color:inherit;text-decoration:none;transition:color var(--d-fast) var(--e-out)}
a:hover{color:var(--wood)}

::selection{background:var(--ink);color:var(--bg)}

/* focus */
:focus-visible{
  outline:2px solid var(--ink);
  outline-offset:3px;
  border-radius:var(--r-sm);
}

/* typography */
h1,h2,h3,h4{
  font-family:var(--f-display);
  font-weight:700;
  line-height:1.02;
  letter-spacing:-0.025em;
  margin:0;
  color:var(--ink);
}
h1{ font-size:clamp(40px,7.5vw,120px); font-weight:800; letter-spacing:-0.035em; line-height:.96 }
h2{ font-size:clamp(32px,4.6vw,64px); font-weight:700; letter-spacing:-0.03em }
h3{ font-size:clamp(22px,2.4vw,32px); font-weight:600; letter-spacing:-0.02em }
h4{ font-size:clamp(18px,1.6vw,22px); font-weight:600 }
p{margin:0 0 1em}
p:last-child{margin-bottom:0}

.mono{
  font-family:var(--f-mono);
  font-size:.78em;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:var(--muted-2);
}
.eyebrow{
  font-family:var(--f-mono);
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:var(--muted-2);
  margin:0 0 var(--s-4);
  display:inline-block;
}
.muted{color:var(--muted)}

/* wrap */
.wrap{
  max-width:var(--wrap);
  margin-inline:auto;
  padding-inline:clamp(20px,4vw,48px);
  width:100%;
}
.wrap--narrow{max-width:var(--wrap-narrow)}

/* screen-reader */
.sr-only{
  position:absolute!important;
  width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
.sr-only:focus{
  position:fixed!important;
  top:12px;left:12px;
  width:auto;height:auto;
  padding:10px 18px;margin:0;overflow:visible;clip:auto;
  background:var(--ink);color:var(--bg);
  border-radius:var(--r-sm);z-index:9999;
}

/* buttons */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--s-2);
  padding:14px 22px;
  border-radius:999px;
  font-family:var(--f-body);
  font-size:14px;
  font-weight:500;
  letter-spacing:.01em;
  color:var(--ink);
  background:linear-gradient(180deg, #fff 0%, color-mix(in oklab, var(--card) 55%, #fff) 100%);
  border:1px solid color-mix(in oklab, var(--ink) 18%, transparent);
  box-shadow:
    0 1px 2px rgba(26,25,24,.06),
    0 4px 12px rgba(26,25,24,.06),
    inset 0 1px 0 #fff;
  cursor:pointer;
  transition:transform var(--d-fast) var(--e-out),
             background var(--d-fast) var(--e-out),
             border-color var(--d-fast) var(--e-out),
             color var(--d-fast) var(--e-out),
             box-shadow var(--d-mid) var(--e-out);
  text-decoration:none;
  white-space:nowrap;
  user-select:none;
}
.btn:hover{
  background:linear-gradient(180deg, #fff 0%, #fff 100%);
  border-color:color-mix(in oklab, var(--ink) 32%, transparent);
  color:var(--ink);
  transform:translateY(-2px);
  box-shadow:
    0 2px 4px rgba(26,25,24,.10),
    0 12px 26px rgba(26,25,24,.10),
    inset 0 1px 0 #fff;
}
.btn:active{transform:translateY(0)}
.btn-primary{
  background:linear-gradient(180deg, #2d2b28 0%, var(--ink) 100%);
  color:var(--bg);
  border-color:var(--ink);
  box-shadow:
    0 1px 2px rgba(0,0,0,.15),
    0 6px 16px rgba(26,25,24,.22),
    inset 0 1px 0 rgba(255,255,255,.14);
}
.btn-primary:hover{
  background:linear-gradient(180deg, #3a3835 0%, #201f1d 100%);
  color:var(--bg);
  border-color:#2d2b28;
  box-shadow:
    0 2px 4px rgba(0,0,0,.20),
    0 14px 32px rgba(26,25,24,.28),
    inset 0 1px 0 rgba(255,255,255,.18);
  transform:translateY(-2px) scale(1.02);
}
.btn-ghost{border-color:transparent;padding:8px 12px}
.btn-lg{padding:18px 28px;font-size:15px}

/* form primitives */
.field{
  display:flex;flex-direction:column;gap:6px;
}
.field label{
  font-size:13px;color:var(--muted-2);letter-spacing:.01em;
}
.field .req{color:var(--danger);margin-left:2px}
.input,.textarea,.select{
  appearance:none;
  width:100%;
  padding:14px 16px;
  border-radius:var(--r-md);
  border:1px solid var(--line);
  background:var(--white);
  color:var(--ink);
  font-size:15px;
  line-height:1.4;
  transition:border-color var(--d-fast) var(--e-out),background var(--d-fast) var(--e-out);
  min-height:52px;
}
.textarea{min-height:120px;resize:vertical;padding-top:14px}
.select{background:var(--white) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 20 20' fill='none' stroke='%231a1918' stroke-width='2'><polyline points='5 8 10 13 15 8'/></svg>") right 16px center/14px no-repeat}
.input:focus,.textarea:focus,.select:focus{
  border-color:var(--ink);outline:none;
}
.input.err,.textarea.err,.select.err{border-color:var(--danger)}
.check{
  display:flex;align-items:flex-start;gap:10px;cursor:pointer;
  font-size:14px;line-height:1.5;color:var(--muted-2);
}
.check input{
  appearance:none;
  width:18px;height:18px;
  border:1.5px solid var(--muted);
  border-radius:4px;background:var(--white);
  flex-shrink:0;margin-top:2px;
  transition:all var(--d-fast) var(--e-out);
  cursor:pointer;
  display:grid;place-content:center;
}
.check input:checked{background:var(--ink);border-color:var(--ink)}
.check input:checked::after{
  content:"";width:10px;height:10px;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%23fff' stroke-width='2'><polyline points='2 6 5 9 10 3'/></svg>") center/contain no-repeat;
}
.check a{text-decoration:underline;text-underline-offset:2px;color:var(--ink)}

/* dividers */
hr{border:0;border-top:1px solid var(--line);margin:var(--s-8) 0}
