/* ============================================================
   KEEPSAKE — the personalised gift shop
   Scoped to body.d-keepsake. 1rem = 10px.
   ============================================================ */
body.d-keepsake{
  --ks-ink:#2b1a22;--ks-soft:#5a4650;--ks-mute:#7a6670;--ks-blush:#fdf4f2;--ks-rose:var(--biz);--ks-rosed:var(--biz-deep);--ks-cream:#fffaf6;--ks-line:#f0dfdc;
  --bg-primary:var(--ks-cream);--bg-secondary:var(--ks-blush);--bg-card:#fff;--bg-inset:#fbeeeb;
  --fg-primary:var(--ks-ink);--fg-soft:var(--ks-soft);--fg-muted:var(--ks-mute);--border-color:var(--ks-line);--border-strong:#e6c9c4;
  background:var(--ks-cream);color:var(--ks-ink);font-family:'DM Sans',system-ui,sans-serif
}
body.d-keepsake h1,body.d-keepsake h2,body.d-keepsake h3{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;letter-spacing:-.01em;line-height:1.02}
body.d-keepsake em{font-family:'Libre Caslon Text',Georgia,serif;font-style:italic;color:var(--ks-rose)}
.ks-kick{font-size:1.2rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--ks-rose);margin-bottom:1.4rem}

body.d-keepsake .bx-nav{background:rgba(255,250,246,.82)}
body.d-keepsake .bx-brand-mark{border-radius:50%;background:linear-gradient(135deg,#fb7185,var(--ks-rosed))}
body.d-keepsake .bx-brand-txt b{font-family:'Libre Caslon Display',serif;font-weight:400;font-size:2rem}
body.d-keepsake .bx-nav-links a{font-weight:500;font-size:1.35rem;color:var(--ks-soft)}
body.d-keepsake .bx-nav-links a::after{background:var(--ks-rose);height:2px}
body.d-keepsake .bx-nav-cta{background:var(--ks-ink);border-radius:999px}

/* hero */
.ks-hero{position:relative;overflow:hidden;padding:calc(var(--nav-h) + 6rem) 3rem 8rem;background:radial-gradient(900px 600px at 80% 20%,#fde2e4,transparent 60%),radial-gradient(700px 500px at 0% 100%,#fff1e6,transparent 60%),var(--ks-cream)}
.ks-confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.ks-confetti i{position:absolute;left:var(--x);top:-20px;width:9px;height:14px;border-radius:2px;background:var(--ks-rose);opacity:.55;transform:rotate(var(--r));animation:ks-fall var(--d) linear var(--t) infinite}
.ks-confetti i:nth-child(3n){background:#fbbf24;width:8px;height:8px;border-radius:50%}
.ks-confetti i:nth-child(4n){background:#a78bfa}
.ks-confetti i:nth-child(5n){background:#34d399;height:10px}
@keyframes ks-fall{to{transform:translateY(110vh) rotate(calc(var(--r) + 540deg))}}
.ks-hero-in{position:relative;z-index:1;max-width:var(--max-w);margin:0 auto;display:grid;grid-template-columns:1.1fr .9fr;gap:5rem;align-items:center}
.ks-chip{display:inline-flex;align-items:center;gap:.8rem;padding:.8rem 1.6rem;border-radius:999px;background:#fff;box-shadow:0 8px 24px rgba(43,26,34,.06);font-size:1.3rem;font-weight:600;color:var(--ks-soft);margin-bottom:2.6rem}
.ks-chip i{color:var(--ks-rose)}
.ks-hero h1{font-size:clamp(5.4rem,8.6vw,11rem);line-height:.92}
.ks-tag{font-family:'Libre Caslon Text',serif;font-style:italic;font-size:clamp(2.2rem,2.6vw,3rem);color:var(--ks-rose);margin-top:1.6rem}
.ks-lede{font-size:1.7rem;line-height:1.65;color:var(--ks-soft);margin-top:1.8rem;max-width:48ch}
.ks-actions{display:flex;flex-wrap:wrap;gap:1.2rem;margin-top:3.4rem}
.ks-btn{display:inline-flex;align-items:center;gap:1rem;padding:1.6rem 2.8rem;border-radius:999px;font-size:1.5rem;font-weight:600;transition:transform .25s var(--ease),box-shadow .25s,background .25s}
.ks-btn-main{background:var(--ks-ink);color:#fff;box-shadow:0 14px 30px rgba(43,26,34,.2)}
.ks-btn-main:hover{background:var(--ks-rosed);transform:translateY(-2px)}
.ks-btn-soft{background:#fff;color:var(--ks-ink);box-shadow:0 0 0 1px var(--ks-line)}
.ks-btn-soft:hover{box-shadow:0 0 0 1px var(--ks-rose)}

.ks-art{position:relative;height:460px;display:flex;align-items:center;justify-content:center}
.ks-box{position:relative;width:300px;height:330px}
.ks-boxbody{position:absolute;left:10px;right:10px;bottom:0;height:230px;border-radius:14px;background:linear-gradient(135deg,#fb7185,var(--ks-rosed));box-shadow:0 40px 70px rgba(190,18,60,.3),inset 0 -20px 40px rgba(0,0,0,.08)}
.ks-ribbon{position:absolute;left:50%;top:0;bottom:0;width:38px;margin-left:-19px;background:linear-gradient(90deg,#fde68a,#fbbf24,#fde68a)}
.ks-lid{position:absolute;left:0;right:0;top:40px;height:74px;border-radius:12px;background:linear-gradient(135deg,#fda4af,#e11d48);box-shadow:0 18px 30px rgba(190,18,60,.28);z-index:2;will-change:transform}
.ks-lid::before{content:'';position:absolute;left:50%;top:0;bottom:0;width:38px;margin-left:-19px;background:linear-gradient(90deg,#fde68a,#fbbf24,#fde68a)}
.ks-bow{position:absolute;left:50%;top:-44px;width:0;height:0}
.ks-bow::before,.ks-bow::after{content:'';position:absolute;top:0;width:70px;height:52px;border:12px solid #fbbf24;border-radius:50% 50% 50% 50% / 60% 60% 40% 40%}
.ks-bow::before{right:-4px;transform:rotate(-22deg)}
.ks-bow::after{left:-4px;transform:rotate(22deg)}
.ks-tagcard{position:absolute;right:-60px;bottom:40px;z-index:3;width:120px;padding:1.4rem 1.2rem;background:#fff;border-radius:10px;box-shadow:0 16px 36px rgba(43,26,34,.16);transform:rotate(8deg);text-align:center;animation:ks-sway 5s ease-in-out infinite}
.ks-tagcard::before{content:'';position:absolute;left:14px;top:50%;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:var(--ks-line)}
.ks-tagcard b{display:block;font-family:'Libre Caslon Display',serif;font-weight:400;font-size:2rem}
.ks-tagcard small{font-family:'Libre Caslon Text',serif;font-style:italic;color:var(--ks-rose);font-size:1.3rem}
.ks-tagcard img{width:100%;height:auto}
@keyframes ks-sway{50%{transform:rotate(3deg) translateY(-6px)}}
.ks-spark{position:absolute;width:14px;height:14px;background:#fbbf24;clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);animation:ks-twinkle 3s ease-in-out infinite}
.ks-s1{left:14%;top:18%}.ks-s2{right:12%;top:30%;animation-delay:-1s;width:20px;height:20px}.ks-s3{left:22%;bottom:16%;animation-delay:-2s}
@keyframes ks-twinkle{50%{transform:scale(.4) rotate(45deg);opacity:.4}}

/* sections */
.ks-sec{padding:10rem 3rem 0}
.ks-sec>*{max-width:var(--max-w);margin-left:auto;margin-right:auto}
.ks-head{text-align:center;margin-bottom:4.6rem;max-width:760px!important}
.ks-sec h2{font-size:clamp(3.8rem,5.4vw,6.4rem)}

.ks-cats{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem}
.ks-cat{display:flex;flex-direction:column;padding:3.2rem 3rem;border-radius:28px;background:var(--tone);transition:transform .35s var(--ease),box-shadow .35s}
.ks-cat:hover{transform:translateY(-6px) rotate(-.6deg);box-shadow:0 26px 50px rgba(43,26,34,.1)}
.ks-cat-ico{width:58px;height:58px;border-radius:50%;background:#fff;color:var(--ks-rose);display:flex;align-items:center;justify-content:center;font-size:2.2rem;margin-bottom:4rem;box-shadow:0 10px 24px rgba(43,26,34,.08)}
.ks-cat h3{font-size:2.8rem}
.ks-cat p{font-size:1.5rem;color:var(--ks-soft);line-height:1.55;margin-top:.8rem}

.ks-prods{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:2rem}
.ks-prod{display:flex;flex-direction:column;gap:.6rem}
.ks-prod-img{aspect-ratio:1;border-radius:24px;background:var(--tone);display:flex;align-items:center;justify-content:center;font-size:5rem;color:var(--ks-rose);overflow:hidden}
.ks-prod-img img{width:100%;height:100%;object-fit:cover}
.ks-prod b{font-family:'Libre Caslon Display',serif;font-weight:400;font-size:2rem;margin-top:.8rem}
.ks-prod span{font-weight:700;color:var(--ks-rosed)}

.ks-about{max-width:880px!important;text-align:center}
.ks-prose p{font-size:1.75rem;line-height:1.8;color:var(--ks-soft)}
.ks-prose p+p{margin-top:1.6rem}
.ks-first{font-family:'Libre Caslon Display',serif;font-size:clamp(2.6rem,3.2vw,3.6rem)!important;line-height:1.3!important;color:var(--ks-ink)!important}

.ks-hl{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.6rem}
.ks-hl>div{background:#fff;border-radius:24px;padding:3rem;border:1px solid var(--ks-line);text-align:center}
.ks-hl i{font-size:2.6rem;color:var(--ks-rose);margin-bottom:1.6rem;display:block}
.ks-hl h3{font-size:2.4rem}
.ks-hl p{font-size:1.45rem;color:var(--ks-mute);margin-top:.6rem}
.ks-gal{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.ks-gal-item{padding:0;border-radius:22px;overflow:hidden;aspect-ratio:1;cursor:zoom-in}
.ks-gal-item img{width:100%;height:100%;object-fit:cover}
.ks-rev{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.6rem}
.ks-rev figure{background:#fff;border-radius:24px;padding:3rem;border:1px solid var(--ks-line)}
.ks-rev blockquote{font-family:'Libre Caslon Text',serif;font-style:italic;font-size:2rem;line-height:1.5}
.ks-rev figcaption{margin-top:1.4rem;color:var(--ks-mute)}
body.d-keepsake .hours-card{max-width:none}

.ks-contact{display:grid;grid-template-columns:1fr 1fr;gap:5rem;padding:5rem;border-radius:36px;background:linear-gradient(135deg,#fde2e4,#fff1e6)}
.ks-contact h2{margin-bottom:3rem}
body.d-keepsake .ci{border-radius:18px}
body.d-keepsake .ci-ico{background:#fde2e4;color:var(--ks-rose)}
body.d-keepsake .contact-form{border-radius:26px;border:0;box-shadow:0 24px 60px rgba(43,26,34,.08)}
body.d-keepsake .contact-form h3{font-family:'Libre Caslon Display',serif;font-weight:400;font-size:2.8rem;margin-bottom:1.6rem}
body.d-keepsake .cf-field input,body.d-keepsake .cf-field textarea{border-radius:14px;background:var(--ks-cream)}
body.d-keepsake .btn-onbiz{background:var(--ks-ink);border-radius:999px;text-transform:none;letter-spacing:0;font-size:1.55rem}
.ks-map{margin-top:3rem}
body.d-keepsake .biz-map{border-radius:26px}
.ks-share{max-width:var(--max-w);margin:4rem auto 0;padding:0 3rem}
body.d-keepsake .bx-foot{background:var(--ks-blush);border-top:0;margin-top:6rem}
.ks-hero-in>*,.ks-contact>*{min-width:0}

@media (max-width:980px){
  .ks-hero-in,.ks-contact{grid-template-columns:1fr}
  .ks-cats{grid-template-columns:1fr 1fr}
  .ks-art{height:400px}
  .ks-contact{padding:3rem}
}
@media (max-width:640px){
  .ks-hero{padding:calc(var(--nav-h) + 3rem) 1.6rem 5rem}
  .ks-art{height:360px}
  .ks-box{transform:scale(.8)}
  .ks-tagcard{right:-30px}
  .ks-sec{padding:7rem 1.6rem 0}
  .ks-cats,.ks-gal{grid-template-columns:1fr}
  .ks-contact{padding:2rem;border-radius:26px}
  .ks-share{padding:0 1.6rem}
}
@media (prefers-reduced-motion:reduce){.ks-confetti i,.ks-tagcard,.ks-spark{animation:none}.ks-confetti{display:none}}

/* Hero with a product photograph */
.ks-photo{position:relative;z-index:1;width:100%;max-width:560px;border-radius:28px;overflow:hidden;border:8px solid #fff;box-shadow:0 40px 80px rgba(43,26,34,.2);transform:rotate(1.5deg);transition:transform .3s var(--ease)}
.ks-photo img{width:100%;height:auto;display:block}
.ks-seal{position:absolute;z-index:2;left:-1rem;bottom:-2rem;width:120px;height:120px;border-radius:50%;box-shadow:0 18px 40px rgba(43,26,34,.3);animation:ks-sway 5s ease-in-out infinite}
.ks-seal img{width:100%;height:100%;object-fit:contain}
.ks-art:has(.ks-photo){height:auto;padding:2rem 0 3rem}
@media (max-width:640px){.ks-seal{width:84px;height:84px;left:.4rem;bottom:-1.4rem}}
@media (prefers-reduced-motion:reduce){.ks-seal{animation:none}}
