/* =========================================================
   Bowling Kuželka — risograph styleguide
   ========================================================= */

:root{
  --sea-900:#102e29;
  --sea-700:#1d4a41;
  --sea-600:#276456;
  --sea-500:#3f7a6c;
  --sea-300:#8fb3a6;
  --sea-100:#dde9e2;
  --sand-100:#f7f0dd;
  --sand-200:#eee0bd;
  --sand-300:#e2cb98;
  --drift-600:#8a7250;
  --drift-800:#5a4630;
  --paper:#fbf5e7;
  --ink:#19231d;
  --accent:#d4642b;
  --accent-dark:#a94d1f;
  --focus:#d4642b;
  --radius:14px;
  --maxw:1280px;
  --font-display: "Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --font-body: "Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --font-mono: "Cascadia Mono","Consolas",Menlo,monospace;
  --ease: cubic-bezier(.22,.8,.3,1);
}

*,*::before,*::after{box-sizing:border-box;}
html,body{overflow-x:clip;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.55;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
h1,h2,h3,h4{font-family:var(--font-display);line-height:1.1;margin:0 0 .5em;font-weight:700;}
p{margin:0 0 1em;}
ul{margin:0;padding:0;}
button{font-family:inherit;}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}

:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px;}

.container{max-width:var(--maxw);margin:0 auto;padding:0 20px;}

/* ---------- riso double-ink text ---------- */
.riso-text{position:relative;color:var(--sea-700);isolation:isolate;}
.riso-text::before{
  content:attr(data-text);
  position:absolute;left:3px;top:3px;
  color:var(--accent);
  mix-blend-mode:multiply;
  opacity:.5;
  z-index:-1;
  pointer-events:none;
}

/* ---------- grain overlay ---------- */
.grain-overlay{
  position:fixed;inset:0;
  width:100vw;height:100vh;
  pointer-events:none;
  mix-blend-mode:multiply;
  opacity:.5;
  z-index:999;
}

/* ================= HEADER ================= */
.site-header{
  position:sticky;top:0;z-index:300;
  background:var(--paper);
  border-bottom:2px solid var(--sea-700);
}
.header-inner{
  max-width:var(--maxw);margin:0 auto;padding:12px 20px;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
}
.logo{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.logo-mark{flex-shrink:0;}
.logo-word{font-family:var(--font-display);font-size:1.15rem;color:var(--sea-900);letter-spacing:.2px;}
.logo-word strong{color:var(--accent);}

.main-nav{display:flex;gap:26px;align-items:center;}
.main-nav a{
  font-size:.96rem;font-weight:600;color:var(--sea-900);
  position:relative;padding:4px 0;
}
.main-nav a::after{
  content:"";position:absolute;left:0;bottom:-2px;height:2px;width:100%;
  background:var(--accent);transform:scaleX(0);transform-origin:left;
  transition:transform .3s var(--ease);
}
.main-nav a:hover::after,.main-nav a:focus-visible::after{transform:scaleX(1);}

.header-actions{display:flex;align-items:center;gap:14px;}
.cart-link{position:relative;display:inline-flex;padding:6px;color:var(--sea-900);}
.cart-count{
  position:absolute;top:-2px;right:-2px;
  background:var(--accent);color:#fff;
  font-size:.65rem;font-weight:700;
  min-width:17px;height:17px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  transition:transform .3s var(--ease);
}
.cart-count.bump{animation:cartbump .4s var(--ease);}
@keyframes cartbump{0%{transform:scale(1);}40%{transform:scale(1.5);}100%{transform:scale(1);}}

.menu-toggle{
  display:none;background:none;border:2px solid var(--sea-700);border-radius:8px;
  padding:7px;color:var(--sea-900);cursor:pointer;min-width:44px;min-height:44px;
  align-items:center;justify-content:center;
}

@media (max-width:860px){
  .menu-toggle{display:flex;}
  .main-nav{
    position:fixed;top:0;right:0;height:100vh;width:min(78vw,320px);
    background:var(--sea-900);flex-direction:column;align-items:flex-start;
    padding:90px 28px 28px;gap:22px;
    transform:translateX(100%);visibility:hidden;
    transition:transform .35s var(--ease),visibility .35s;
    z-index:280;
  }
  .main-nav a{color:var(--sand-100);font-size:1.1rem;}
  .main-nav a::after{background:var(--sand-300);}
  body.nav-open .main-nav{transform:translateX(0);visibility:visible;}
  body.nav-open{overflow:hidden;}
}

/* ================= BUTTONS ================= */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:13px 26px;border-radius:999px;font-weight:700;font-size:.95rem;
  border:2px solid var(--sea-900);cursor:pointer;
  position:relative;overflow:hidden;isolation:isolate;
  min-height:44px;background:var(--paper);color:var(--sea-900);
  transition:color .35s var(--ease),border-color .3s;
}
.btn::before{
  content:"";position:absolute;inset:0;width:100%;left:-100%;
  background:var(--sea-900);z-index:-1;
  transition:left .35s var(--ease);
}
.btn:hover::before,.btn:focus-visible::before{left:0;}
.btn:hover,.btn:focus-visible{color:var(--paper);}
.btn-primary{background:var(--accent);border-color:var(--accent-dark);color:#fff;}
.btn-primary::before{background:var(--sea-900);}
.btn-primary:hover{color:#fff;}
.btn-ghost{background:transparent;}
.btn-block{width:100%;}
.btn[disabled]{opacity:.55;cursor:not-allowed;}
.btn[disabled]::before{display:none;}

/* ================= HERO ================= */
.hero{
  padding:48px 0 70px;position:relative;overflow:hidden;
}
.hero-grid{
  max-width:var(--maxw);margin:0 auto;padding:0 20px;
  display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;
}
.hero-kicker{
  font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;
  font-size:.78rem;color:var(--accent-dark);font-weight:700;display:inline-block;margin-bottom:14px;
}
.hero h1{
  font-size:clamp(2.6rem,6.4vw,4.6rem);
  margin-bottom:.4em;
}
.hero-wipe{
  display:block;clip-path:inset(0 100% 0 0);
  transition:clip-path 1.1s var(--ease);
}
.hero-wipe.in-view{clip-path:inset(0 0 0 0);}
.hero-lede{font-size:1.1rem;max-width:34ch;color:var(--sea-900);}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:22px;}
.hero-art{position:relative;}
.hero-art svg{width:100%;height:auto;display:block;}
.hero-ball{animation:bob 4.2s ease-in-out infinite;transform-origin:center;}
@keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-7px);}}

/* ================= HOME COMPOSITION: sticky left / scroll right ========= */
.story{
  display:grid;grid-template-columns:.85fr 1.15fr;gap:48px;
  max-width:var(--maxw);margin:0 auto;padding:60px 20px 20px;
}
.story-aside{position:sticky;top:96px;align-self:start;height:max-content;}
.story-aside h2{font-size:clamp(1.9rem,3.4vw,2.6rem);}
.story-main{display:flex;flex-direction:column;gap:64px;}
.story-block h3{font-size:1.4rem;color:var(--sea-700);}
.story-block{max-width:58ch;}
@media (max-width:900px){
  .story{grid-template-columns:1fr;}
  .story-aside{position:static;top:auto;}
}

/* ================= REVEAL ================= */
.reveal{opacity:1;transform:none;}
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity .7s var(--ease),transform .7s var(--ease);}
.js .reveal.in-view{opacity:1;transform:none;}
.js .reveal-stagger > *{transition-delay:calc(var(--i,0) * 90ms);}

/* ================= SECTIONS ================= */
.section{padding:70px 0;}
.section-head{max-width:640px;margin:0 auto 40px;text-align:left;}
.section-head p{color:var(--sea-700);}
.eyebrow{
  font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;
  font-size:.76rem;color:var(--accent-dark);font-weight:700;
}

.divider{width:100%;height:28px;margin:10px 0;color:var(--sea-700);}

/* ================= BADGE ================= */
.badge-seal{width:150px;height:150px;flex-shrink:0;}

/* ================= PLANNER (signature feature) ================= */
.planner{
  background:var(--sea-900);color:var(--sand-100);border-radius:22px;
  padding:clamp(28px,5vw,52px);position:relative;overflow:hidden;
}
.planner::after{
  content:"";position:absolute;inset:0;background:
    radial-gradient(circle at 85% 10%, rgba(212,100,43,.25), transparent 55%);
  pointer-events:none;
}
.planner-head{max-width:620px;margin-bottom:30px;}
.planner-head h2{color:var(--sand-100);}
.planner-head .eyebrow{color:var(--sand-300);}
.planner-grid{display:grid;grid-template-columns:1fr 1fr;gap:34px;position:relative;z-index:1;}
.planner-form{display:grid;gap:18px;}
.planner-field{display:flex;flex-direction:column;gap:6px;}
.planner-field label{font-weight:700;font-size:.92rem;}
.planner-field select,.planner-field input{
  background:var(--paper);border:2px solid var(--sand-300);border-radius:10px;
  padding:11px 12px;font-size:1rem;color:var(--ink);min-height:44px;
}
.planner-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.planner-result{
  background:rgba(251,245,231,.08);border:2px solid rgba(251,245,231,.25);
  border-radius:16px;padding:24px;display:flex;flex-direction:column;gap:14px;
}
.planner-result dl{display:grid;grid-template-columns:1fr auto;gap:8px 12px;margin:0;}
.planner-result dt{color:var(--sand-300);}
.planner-result dd{margin:0;font-weight:700;text-align:right;}
.planner-total{font-family:var(--font-display);font-size:2.1rem;color:var(--accent);margin:4px 0;}
.planner-note{font-size:.88rem;color:var(--sand-300);}

/* ================= CARDS / GRID ================= */
.grid-products{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:26px;
}
.card{
  background:var(--sand-100);border:2px solid var(--sea-700);border-radius:var(--radius);
  overflow:hidden;display:flex;flex-direction:column;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease);
}
.card:hover{transform:translateY(-6px);box-shadow:8px 10px 0 var(--sea-700);}
.card-media{aspect-ratio:4/3;overflow:hidden;position:relative;}
.card-media img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease);}
.card:hover .card-media img{transform:scale(1.08);}
.card-cat{
  position:absolute;top:10px;left:10px;background:var(--paper);border:2px solid var(--sea-700);
  border-radius:999px;padding:3px 10px;font-size:.7rem;font-weight:700;color:var(--sea-700);
}
.card-body{padding:18px;display:flex;flex-direction:column;gap:8px;flex:1;}
.card-body h3{font-size:1.15rem;margin:0;}
.card-body p{color:var(--sea-700);font-size:.92rem;flex:1;}
.card-price{font-weight:700;color:var(--accent-dark);font-size:1.05rem;}
.card-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;}

/* horizontal scroll-snap strip (mobile) */
.strip{
  display:flex;gap:18px;overflow-x:auto;padding:4px 20px 16px;scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
}
.strip .card{min-width:76vw;scroll-snap-align:start;}
@media (min-width:760px){
  .strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));overflow:visible;padding:4px 0 0;}
  .strip .card{min-width:0;}
}

/* ================= FOOTER ================= */
.site-footer{background:var(--sea-900);color:var(--sand-100);margin-top:80px;}
.footer-inner{
  max-width:var(--maxw);margin:0 auto;padding:56px 20px 30px;
  display:grid;grid-template-columns:1.1fr 2fr 1fr;gap:40px;
}
.footer-brand{display:flex;flex-direction:column;gap:12px;}
.footer-brand .logo-word{color:var(--sand-100);}
.footer-brand p{color:var(--sea-300);font-size:.92rem;max-width:26ch;}
.footer-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.footer-cols h3{font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--sand-300);margin-bottom:12px;}
.footer-cols a{display:block;padding:5px 0;color:var(--sand-100);font-size:.92rem;}
.footer-cols a:hover{color:var(--accent);}
.newsletter-form{display:flex;flex-direction:column;gap:10px;}
.newsletter-form h3{font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--sand-300);margin-bottom:2px;}
.field-row{display:flex;gap:8px;flex-wrap:wrap;}
.field-row input{
  flex:1;min-width:150px;min-height:44px;border-radius:10px;border:2px solid var(--sea-500);
  background:var(--sea-700);color:#fff;padding:0 12px;
}
.field-row input::placeholder{color:var(--sea-300);}
.footer-bottom{
  border-top:1px solid var(--sea-700);padding:18px 20px;
  max-width:var(--maxw);margin:0 auto;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;
  font-size:.85rem;color:var(--sea-300);
}
.footer-bottom a{color:var(--sand-100);}
.form-msg{min-height:1.2em;font-size:.85rem;}
.form-msg.ok{color:#9fd8a0;}
.form-msg.err{color:#e8a98b;}
@media (max-width:860px){
  .footer-inner{grid-template-columns:1fr;}
  .footer-cols{grid-template-columns:1fr 1fr;}
}

/* ================= FORMS (general) ================= */
.form-grid{display:grid;gap:18px;}
.form-row{display:grid;gap:6px;}
.form-row.two{grid-template-columns:1fr 1fr;}
label{font-weight:700;font-size:.92rem;}
input,select,textarea{
  font-family:inherit;font-size:1rem;padding:12px 14px;border-radius:10px;
  border:2px solid var(--sea-700);background:var(--paper);color:var(--ink);
  min-height:44px;accent-color:var(--accent);
}
textarea{min-height:120px;resize:vertical;}
.field-error{color:var(--accent-dark);font-size:.84rem;min-height:1.1em;}
.hp-field{position:absolute;left:-9999px;top:-9999px;height:0;width:0;overflow:hidden;}
fieldset{border:none;padding:0;margin:0;}

/* ================= PAGE HERO (sub pages) ================= */
.page-hero{padding:56px 0 36px;border-bottom:2px solid var(--sea-700);}
.page-hero h1{font-size:clamp(2.1rem,5vw,3.2rem);}
.page-hero p{max-width:60ch;color:var(--sea-700);}

.prose{max-width:72ch;}
.prose h2{margin-top:1.6em;font-size:1.5rem;color:var(--sea-700);}
.prose ul{margin:0 0 1em 1.2em;padding:0;}
.prose li{margin-bottom:.4em;}

/* ================= PRODUCT PAGE ================= */
.product-view{display:grid;grid-template-columns:1fr 1fr;gap:48px;padding:50px 0 70px;}
.product-media{position:relative;}
.product-media img{border-radius:var(--radius);border:2px solid var(--sea-700);width:100%;aspect-ratio:4/3;object-fit:cover;}
.product-info h1{font-size:clamp(1.9rem,4vw,2.6rem);}
.product-meta{display:flex;gap:18px;flex-wrap:wrap;margin:16px 0;color:var(--sea-700);font-size:.92rem;}
.product-meta span{display:inline-flex;align-items:center;gap:6px;}
.product-price{font-size:1.8rem;color:var(--accent-dark);font-weight:700;font-family:var(--font-display);margin:10px 0;}
.qty-row{display:flex;align-items:center;gap:12px;margin:18px 0;}
.qty-row input{width:76px;text-align:center;}
.includes{margin:20px 0;display:grid;gap:8px;}
.includes li{display:flex;gap:10px;align-items:flex-start;color:var(--sea-900);}
.includes svg{flex-shrink:0;margin-top:3px;color:var(--sea-600);}
@media (max-width:820px){.product-view{grid-template-columns:1fr;}}

/* ================= CART PAGE ================= */
.cart-table{width:100%;border-collapse:collapse;margin-bottom:24px;}
.cart-table th{text-align:left;font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--sea-700);padding:10px 8px;border-bottom:2px solid var(--sea-700);}
.cart-table td{padding:14px 8px;border-bottom:1px solid var(--sand-300);vertical-align:middle;}
.cart-item{display:flex;gap:12px;align-items:center;}
.cart-item img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:2px solid var(--sea-700);}
.cart-qty{width:64px;text-align:center;}
.cart-remove{color:var(--accent-dark);font-weight:700;font-size:.85rem;background:none;border:none;cursor:pointer;padding:6px;}
.cart-summary{display:flex;justify-content:flex-end;}
.cart-summary dl{display:grid;grid-template-columns:auto auto;gap:6px 18px;font-size:1.1rem;min-width:220px;}
.cart-summary dt{color:var(--sea-700);}
.cart-summary dd{margin:0;font-weight:700;text-align:right;}
.cart-empty{text-align:center;padding:60px 20px;color:var(--sea-700);}
.checkout-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:start;margin-top:40px;}
.order-summary{background:var(--sand-100);border:2px solid var(--sea-700);border-radius:var(--radius);padding:22px;position:sticky;top:96px;}
@media (max-width:860px){.checkout-grid{grid-template-columns:1fr;}.order-summary{position:static;}}

/* ================= FAQ ================= */
.faq-item{border-bottom:2px solid var(--sand-300);}
.faq-item summary{
  cursor:pointer;font-weight:700;padding:18px 4px;font-size:1.05rem;list-style:none;
  display:flex;justify-content:space-between;gap:12px;color:var(--sea-900);
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{content:"+";font-size:1.4rem;color:var(--accent);flex-shrink:0;}
.faq-item[open] summary::after{content:"–";}
.faq-item p{padding:0 4px 18px;color:var(--sea-700);max-width:70ch;}

/* ================= COOKIE BANNER ================= */
.cookie-banner{
  position:fixed;left:16px;right:16px;bottom:16px;z-index:500;
  max-width:560px;margin:0 auto;background:var(--sea-900);color:var(--sand-100);
  border-radius:16px;padding:22px;display:flex;flex-direction:column;gap:14px;
  box-shadow:0 14px 34px rgba(0,0,0,.28);
  transform:translateY(120%);transition:transform .4s var(--ease);
}
.cookie-banner.visible{transform:translateY(0);}
.cookie-banner p{margin:0;font-size:.92rem;color:var(--sand-100);}
.cookie-banner a{color:var(--accent);text-decoration:underline;}
.cookie-actions{display:flex;gap:12px;flex-wrap:wrap;}
.cookie-actions .btn-ghost{color:var(--sand-100);border-color:var(--sand-100);}
.cookie-actions .btn-ghost:hover{color:var(--sea-900);}
.cookie-actions .btn-ghost::before{background:var(--sand-100);}

/* ================= 404 ================= */
.page-404{text-align:center;padding:90px 20px;}
.page-404 svg{width:min(260px,70vw);height:auto;margin:0 auto 20px;}
.page-404 h1{font-size:clamp(2.4rem,6vw,4rem);}

/* ================= THANK YOU ================= */
.thankyou{
  background:var(--sea-100);border:2px solid var(--sea-700);border-radius:var(--radius);
  padding:28px;display:flex;gap:14px;align-items:flex-start;margin:24px 0;
}
.thankyou svg{color:var(--sea-700);flex-shrink:0;}
.hidden{display:none !important;}

/* ================= TOAST ================= */
.toast{
  position:fixed;bottom:24px;right:24px;z-index:600;background:var(--sea-900);color:var(--sand-100);
  padding:14px 20px;border-radius:12px;max-width:320px;transform:translateY(20px);opacity:0;
  transition:all .3s var(--ease);pointer-events:none;
}
.toast.show{transform:translateY(0);opacity:1;}

@media (max-width:760px){
  .hero-grid{grid-template-columns:1fr;}
  .planner-grid{grid-template-columns:1fr;}
  .planner-row{grid-template-columns:1fr;}
  .form-row.two{grid-template-columns:1fr;}
}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:0.001ms !important;animation-iteration-count:1 !important;transition-duration:0.001ms !important;scroll-behavior:auto !important;}
  .js .reveal{opacity:1;transform:none;}
  .hero-wipe{clip-path:inset(0 0 0 0) !important;}
}
