/* public/styles/app.css
   Mobile-first, clean, high-contrast styles for the Farm Stand MVP.
   Works for: index, produce, recipe, staples pages.
*/

/* ---------- Theme & resets ---------- */
:root{
  --fg:#111111;
  --bg:#ffffff;
  --muted:#667085;
  --border:#e5e7eb;
  --accent:#0a7d2a;       /* Farm Stand green */
  --accent-ink:#ffffff;
  --radius:12px;
  --shadow:
    0 1px 2px rgba(16,24,40,.06),
    0 1px 3px rgba(16,24,40,.10);
  font-size:16px;
}

*{ box-sizing:border-box; }
html,body{ height:100%; }
body{
  margin:0;
  color:var(--fg);
  background:var(--bg);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
img{ max-width:100%; height:auto; display:block; }

/* ---------- Layout ---------- */
header{
  position:sticky; top:0; z-index:10;
  display:flex; align-items:center; gap:.75rem;
  padding:1rem;
  background:var(--bg);
  border-bottom:1px solid var(--border);
}
main{ padding:1rem; max-width:1000px; margin:0 auto; }
footer{
  padding:2rem 1rem;
  border-top:1px solid var(--border);
  color:var(--muted);
  font-size:.9rem;
}

/* ---------- Typography ---------- */
h1{ font-size:1.5rem; margin:.25rem 0 .75rem; }
h2{ font-size:1.1rem; margin:1.25rem 0 .5rem; }
h3{ font-size:1rem;   margin:.25rem 0; }
p{ margin:.5rem 0 1rem; }
.muted{ color:var(--muted); }

/* ---------- Links & buttons ---------- */
a{ color:var(--accent); text-decoration:none; }
a:hover{ text-decoration:underline; }
a:focus-visible, button:focus-visible{
  outline:3px solid rgba(10,125,42,.35);
  outline-offset:2px;
  border-radius:8px;
}

button{
  display:inline-flex; align-items:center; gap:.5rem;
  padding:.6rem 1rem;
  border-radius:8px;
  border:1px solid var(--accent);
  background:#fff; color:var(--accent);
  cursor:pointer;
}
button:hover{ background:rgba(10,125,42,.06); }
button:active{ transform:translateY(1px); }
button[hidden]{ display:none !important; }

/* ---------- Cards & grids ---------- */
.grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:1rem;
}
@media (min-width:768px){
  .grid{ grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); }
}

.card{
  border:1px solid var(--border);
  border-radius:var(--radius);
  overflow:hidden;
  background:#fff;
  box-shadow:var(--shadow);
}
.card img{
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
}
.card .pad{ padding:.75rem; }

/* ---------- Hero images & recipe details ---------- */
.hero{
  width:100%;
  max-width:680px;
  aspect-ratio:4/3;
  object-fit:cover;
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  margin:0 0 .75rem;
  display:block;
}

ul,ol{ padding-left:1.25rem; margin:.25rem 0 1rem; }
li+li{ margin-top:.25rem; }

.tag{ font-style:normal; color:var(--muted); }
.badge{
  display:inline-block; padding:.15rem .45rem;
  border:1px solid var(--border); border-radius:999px;
  font-size:.8rem; color:var(--muted);
}

/* ---------- Utilities ---------- */
.container{ max-width:1000px; margin:0 auto; }
.visually-hidden{
  position:absolute !important;
  height:1px; width:1px; overflow:hidden;
  clip:rect(1px,1px,1px,1px); white-space:nowrap;
}

/* ---------- Print (simple) ---------- */
@media print{
  header, button, .grid .card a[href] p:last-child { display:none !important; }
  main{ padding:0; }
  a{ color:inherit; text-decoration:none; }
}
