/* ═══════════════════════════════════════════════════════════════
   NOVRA FOODS — components.css
   Reusable site chrome: nav, buttons, forms, footer, simple rules.
   Page-specific styles live under css/pages/<page>.css.
═══════════════════════════════════════════════════════════════ */


/* ─── NAV ──────────────────────────────────────────────────────── */

.site-nav{
  position:fixed; inset:0 0 auto 0;
  z-index:var(--z-nav);
  padding-block:var(--s-2);
  padding-inline:var(--gutter);
  display:flex; align-items:center; justify-content:space-between;
  gap:var(--s-3);
  background:transparent;
  border-bottom:1px solid transparent;
  transition:background var(--d-2) var(--ease-out),
             border-color var(--d-2) var(--ease-out),
             padding-block var(--d-2) var(--ease-out);
}
.site-nav[data-scrolled="true"]{
  background:color-mix(in oklab, var(--surface) 88%, transparent);
  backdrop-filter:saturate(160%) blur(14px);
  -webkit-backdrop-filter:saturate(160%) blur(14px);
  border-bottom-color:var(--rule);
  padding-block:var(--s-1);
}
.site-nav--inverse{ color:var(--ink-inverse); }
.site-nav--inverse[data-scrolled="true"]{
  background:color-mix(in oklab, var(--surface-deep) 88%, transparent);
  border-bottom-color:var(--rule-inverse);
}

.site-nav__brand{
  font-family:var(--font-display);
  font-weight:var(--w-regular);
  font-size:var(--t-18);
  letter-spacing:0.32em;
  text-transform:uppercase;
  color:inherit;
}
.site-nav__brand small{
  display:block;
  font-size:0.55em;
  letter-spacing:0.42em;
  color:var(--ink-muted);
  margin-top:2px;
}
.site-nav--inverse .site-nav__brand small{ color:var(--ink-muted-inv); }

.site-nav__links{
  display:flex; align-items:center; gap:clamp(var(--s-2), 2.4vw, var(--s-4));
  list-style:none;
}
@media(max-width:768px){
  .site-nav__links{ display:none; }
}
.site-nav__link{
  font-family:var(--font-body);
  font-size:var(--t-12);
  font-weight:var(--w-regular);
  letter-spacing:var(--track-eyebrow);
  text-transform:uppercase;
  color:var(--ink-muted);
  position:relative;
  padding-block:var(--s-1);
  transition:color var(--d-1) var(--ease-out);
}
.site-nav__link::after{
  content:""; position:absolute; left:0; right:0; bottom:0;
  height:1px; background:currentColor;
  transform:scaleX(0); transform-origin:left;
  transition:transform var(--d-2) var(--ease-out);
}
.site-nav__link:hover,
.site-nav__link[aria-current="page"]{
  color:inherit;
}
.site-nav__link:hover::after,
.site-nav__link[aria-current="page"]::after{
  transform:scaleX(1);
}
.site-nav--inverse .site-nav__link{ color:var(--ink-muted-inv); }

/* Mobile drawer trigger */
.site-nav__toggle{
  display:none;
  width:44px; height:44px;
  padding:0;
  background:transparent; border:none;
  color:inherit; cursor:pointer;
}
@media(max-width:768px){
  .site-nav__toggle{ display:inline-flex; align-items:center; justify-content:center; }
}
.site-nav__toggle-bars{
  display:block; width:22px; height:1px; background:currentColor;
  position:relative;
}
.site-nav__toggle-bars::before,
.site-nav__toggle-bars::after{
  content:""; position:absolute; left:0; width:22px; height:1px; background:currentColor;
  transition:transform var(--d-2) var(--ease-out);
}
.site-nav__toggle-bars::before{ transform:translateY(-6px); }
.site-nav__toggle-bars::after{  transform:translateY(6px); }
.site-nav__toggle[aria-expanded="true"] .site-nav__toggle-bars{ background:transparent; }
.site-nav__toggle[aria-expanded="true"] .site-nav__toggle-bars::before{ transform:rotate(45deg); }
.site-nav__toggle[aria-expanded="true"] .site-nav__toggle-bars::after{  transform:rotate(-45deg); }


/* ─── MOBILE DRAWER ────────────────────────────────────────────── */

.site-drawer{
  position:fixed; inset:0;
  z-index:var(--z-overlay);
  pointer-events:none;
  visibility:hidden;
  transition:visibility 0s linear var(--d-3);
}
.site-drawer[data-open="true"]{
  pointer-events:auto;
  visibility:visible;
  transition-delay:0s;
}
.site-drawer__overlay{
  position:absolute; inset:0;
  background:color-mix(in oklab, var(--charcoal) 0%, transparent);
  transition:background var(--d-3) var(--ease-out);
}
.site-drawer[data-open="true"] .site-drawer__overlay{
  background:color-mix(in oklab, var(--charcoal) 55%, transparent);
}
.site-drawer__panel{
  position:absolute; top:0; bottom:0; right:0;
  width:min(360px, 88vw);
  background:var(--surface);
  color:var(--ink);
  padding:var(--s-5) var(--s-4);
  display:flex; flex-direction:column; gap:var(--s-3);
  transform:translateX(100%);
  transition:transform var(--d-3) var(--ease-out);
  overflow-y:auto;
}
.site-drawer[data-open="true"] .site-drawer__panel{
  transform:translateX(0);
}
.site-drawer__close{
  align-self:flex-end;
  width:44px; height:44px;
  display:inline-flex; align-items:center; justify-content:center;
  color:var(--ink-muted);
  transition:color var(--d-1) var(--ease-out);
}
.site-drawer__close:hover{ color:var(--ink); }
.site-drawer__links{
  list-style:none;
  display:flex; flex-direction:column; gap:var(--s-2);
  margin-top:var(--s-3);
}
.site-drawer__link{
  display:block;
  font-family:var(--font-display);
  font-size:var(--t-26);
  font-weight:var(--w-light);
  color:var(--ink);
  padding-block:var(--s-1);
  border-bottom:1px solid var(--rule);
  transition:color var(--d-1) var(--ease-out);
}
.site-drawer__link:hover{ color:var(--accent-deep); }


/* ─── BUTTONS ──────────────────────────────────────────────────── */

.btn{
  display:inline-flex; align-items:center; gap:var(--s-1);
  padding:0.95em 1.6em;
  font-family:var(--font-body);
  font-size:var(--t-12);
  font-weight:var(--w-medium);
  letter-spacing:var(--track-eyebrow);
  text-transform:uppercase;
  border:1px solid currentColor;
  color:var(--ink);
  background:transparent;
  transition:background var(--d-1) var(--ease-out),
             color var(--d-1) var(--ease-out);
  cursor:pointer;
  white-space:nowrap;
}
.btn:hover, .btn:focus-visible{
  background:var(--ink);
  color:var(--ink-inverse);
}
.btn--primary{
  background:var(--ink);
  color:var(--ink-inverse);
  border-color:var(--ink);
}
.btn--primary:hover, .btn--primary:focus-visible{
  background:var(--accent-deep);
  border-color:var(--accent-deep);
}
.btn--ghost{
  border-color:transparent;
  padding:0.95em 0;
}
.btn--ghost::after{
  content:""; flex:0 0 1.2em; height:1px;
  background:currentColor;
  margin-left:var(--s-1);
  transition:flex-basis var(--d-2) var(--ease-out);
}
.btn--ghost:hover, .btn--ghost:focus-visible{
  background:transparent; color:var(--accent-deep);
}
.btn--ghost:hover::after,
.btn--ghost:focus-visible::after{ flex-basis:2.4em; }

.btn--on-dark{ color:var(--ink-inverse); }
.btn--on-dark:hover, .btn--on-dark:focus-visible{
  background:var(--ink-inverse); color:var(--charcoal);
}


/* ─── FORMS ────────────────────────────────────────────────────── */

.field{
  display:flex; flex-direction:column; gap:var(--s-1);
}
.field__label{
  font-family:var(--font-body);
  font-size:var(--t-12);
  letter-spacing:var(--track-eyebrow);
  text-transform:uppercase;
  color:var(--ink-muted);
}
.field__input,
.field__textarea{
  width:100%;
  padding:0.85em 1em;
  font-family:var(--font-body);
  font-size:var(--t-16);
  color:var(--ink);
  background:transparent;
  border:1px solid var(--rule-strong);
  border-radius:var(--r-1);
  transition:border-color var(--d-1) var(--ease-out);
}
.field__input:focus, .field__textarea:focus{
  outline:none;
  border-color:var(--accent);
}
.field__textarea{ resize:vertical; min-height:7rem; }

/* Inline email row: input + button on one line on wide screens */
.email-row{
  display:flex; align-items:stretch; gap:0;
  border:1px solid var(--rule-strong);
  transition:border-color var(--d-1) var(--ease-out);
}
.email-row:focus-within{ border-color:var(--accent); }
.email-row__input{
  flex:1;
  padding:1em 1.25em;
  font-family:var(--font-display);
  font-style:italic;
  font-size:var(--t-18);
  font-weight:var(--w-light);
  color:var(--ink);
  background:transparent;
  border:none;
  min-width:0;
}
.email-row__input::placeholder{ color:var(--ink-faint); }
.email-row__btn{
  flex:0 0 auto;
  padding-inline:var(--s-3);
  font-family:var(--font-body);
  font-size:var(--t-12);
  font-weight:var(--w-medium);
  letter-spacing:var(--track-eyebrow);
  text-transform:uppercase;
  background:var(--ink);
  color:var(--ink-inverse);
  border:none;
  cursor:pointer;
  transition:background var(--d-1) var(--ease-out);
}
.email-row__btn:hover, .email-row__btn:focus-visible{
  background:var(--accent-deep);
}
@media(max-width:560px){
  .email-row{ flex-direction:column; border:none; }
  .email-row__input{
    border:1px solid var(--rule-strong);
    border-radius:var(--r-1);
  }
  .email-row__btn{
    margin-top:var(--s-1);
    padding-block:1em;
  }
}


/* ─── FOOTER ───────────────────────────────────────────────────── */

.site-foot{
  background:var(--surface-deep);
  color:var(--ink-inverse);
  padding:var(--s-7) 0 var(--s-4);
}
.site-foot__inner{
  display:grid;
  grid-template-columns:2fr 1fr 1fr 1fr;
  gap:var(--s-5);
}
@media(max-width:768px){
  .site-foot__inner{ grid-template-columns:1fr 1fr; }
}
@media(max-width:480px){
  .site-foot__inner{ grid-template-columns:1fr; }
}
.site-foot__brand{
  font-family:var(--font-display);
  font-size:var(--t-26);
  font-weight:var(--w-light);
}
.site-foot__tagline{
  font-family:var(--font-display);
  font-style:italic;
  font-size:var(--t-16);
  color:var(--ink-muted-inv);
  margin-top:var(--s-2);
  max-width:32ch;
}
.site-foot__col h6{
  font-family:var(--font-body);
  font-size:var(--t-12);
  font-weight:var(--w-medium);
  letter-spacing:var(--track-eyebrow);
  text-transform:uppercase;
  color:var(--ink-faint-inv);
  margin-bottom:var(--s-2);
}
.site-foot__list{ list-style:none; display:flex; flex-direction:column; gap:var(--s-1); }
.site-foot__list a{
  font-size:var(--t-14);
  color:var(--ink-inverse);
  transition:color var(--d-1) var(--ease-out);
}
.site-foot__list a:hover{ color:var(--accent); }
.site-foot__bottom{
  margin-top:var(--s-6);
  padding-top:var(--s-3);
  border-top:1px solid var(--rule-inverse);
  display:flex; justify-content:space-between; align-items:baseline;
  gap:var(--s-3); flex-wrap:wrap;
  font-size:var(--t-12);
  color:var(--ink-faint-inv);
  letter-spacing:0.08em;
}


/* ─── RULES / DIVIDERS ─────────────────────────────────────────── */

.rule{
  display:block;
  height:1px;
  background:var(--rule);
  border:none;
}
.rule--strong{ background:var(--rule-strong); }
.rule--inverse{ background:var(--rule-inverse); }


/* ─── SCROLL REVEAL ────────────────────────────────────────────── */

[data-reveal]{
  opacity:0;
  transform:translateY(28px);
  transition:opacity var(--d-4) var(--ease-out),
             transform var(--d-4) var(--ease-out);
  transition-delay:var(--stagger-delay, 0ms);
  will-change:opacity, transform;
}
[data-reveal][data-revealed="true"]{
  opacity:1;
  transform:none;
  will-change:auto;
}


/* ─── FOCUS ────────────────────────────────────────────────────── */

:focus-visible{
  outline:2px solid var(--focus-ring);
  outline-offset:3px;
}
:focus:not(:focus-visible){ outline:none; }
