/* iOS Safari "font boosting" opt-out (2026-08-02): without this, WebKit
   auto-inflates text (text only — images/nav unaffected), which made product
   pages open looking "super zoomed" on iPhone while desktop rendered fine. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
:root{
  --bg:#fbfbfa;
  --ink:#121110;
  --ink-soft:#56524d;
  --line:#e8e6e2;
  --card:#ffffff;
  --glass:rgba(255,255,255,.6);
  --glass-border:rgba(255,255,255,.8);
  --serif:'Fraunces',serif;
  --sans:'Inter',sans-serif;
  --grad:linear-gradient(90deg,#e3c5ae,#c5cde6,#dcc8e2);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:110px} /* anchor jumps clear the fixed nav (#quote etc.) */
body{font-family:var(--sans);background:var(--bg);color:var(--ink);overflow-x:hidden;-webkit-font-smoothing:antialiased}
::selection{background:var(--ink);color:var(--bg)}

/* ambient */
.ambient{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.mesh{position:absolute;width:80vw;height:80vw;top:-30vw;right:-25vw;border-radius:50%;filter:blur(100px);opacity:.75;
  background:conic-gradient(from 200deg,#f2dcc9,#dde4f2,#efe6d8,#e4dcef,#f2dcc9);
  animation:spin 60s linear infinite;will-change:transform}
.mesh-2{position:absolute;width:55vw;height:55vw;bottom:-25vw;left:-15vw;border-radius:50%;filter:blur(90px);opacity:.65;
  background:conic-gradient(from 40deg,#e2daee,#f2e3cf,#d9e3ea,#e2daee);
  animation:spin 80s linear infinite reverse}
@keyframes spin{to{transform:rotate(360deg)}}
/* a soft mid-page color field so frosted panels always have something to blur */
body::before{content:'';position:fixed;width:65vw;height:65vw;top:28vh;left:14vw;border-radius:50%;filter:blur(110px);opacity:.5;pointer-events:none;z-index:0;
  background:radial-gradient(circle,#eedce4 0%,#dfe6f3 55%,transparent 75%)}
main,header,footer,nav{position:relative;z-index:1}

/* nav */
nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:22px clamp(24px,5vw,64px);transition:all .4s}
nav.scrolled{background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--line);padding-top:14px;padding-bottom:14px}
.logo{font-family:var(--serif);font-size:2.1rem;font-weight:500;letter-spacing:-.01em;text-decoration:none;color:var(--ink);position:relative;z-index:1;display:inline-flex;align-items:center}
/* full wordmark: the ACTUAL logo lettering (wordmark.png, extracted from logo.png —
   exact font & proportions), ink on transparent, no square */
.lg-img{height:50px;width:auto;display:block}
@media(max-width:900px){.lg-img{height:42px}}
.logo::after{content:'';position:absolute;inset:-16px -26px;border-radius:60px;z-index:-1;opacity:0;transition:opacity .55s ease;filter:blur(10px);pointer-events:none;
  background:radial-gradient(95px circle at var(--lx,50%) var(--ly,50%),rgba(214,202,176,.42),rgba(231,225,212,.22) 55%,transparent 75%)}
.logo:hover::after{opacity:1}
.logo:hover{text-shadow:0 0 16px rgba(198,188,164,.4)}
.nav-links{display:flex;gap:38px;list-style:none;align-items:center}
.nav-links a{text-decoration:none;color:var(--ink-soft);font-size:.8rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;transition:color .3s}
.nav-links a:hover{color:var(--ink)}
.nav-links a.active{color:var(--ink);border-bottom:1px solid var(--ink);padding-bottom:3px}
.nav-cta{border:1px solid var(--ink);color:var(--ink)!important;padding:11px 26px;border-radius:2px;transition:all .3s!important}
.nav-cta:hover{background:var(--ink);color:var(--bg)!important}
.nav-burger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:10px 0 10px 18px}
.nav-burger span{width:24px;height:2px;background:var(--ink);transition:transform .3s,opacity .3s}
@media(max-width:900px){
  .nav-burger{display:flex}
  .nav-links{gap:18px}
  .nav-links li:not(:last-child){display:none}
  nav.menu-open .nav-links{position:absolute;top:100%;left:0;right:0;display:flex;flex-direction:column;gap:0;
    background:rgba(251,251,250,.96);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
    border-bottom:1px solid var(--line);padding:6px 24px 18px}
  nav.menu-open .nav-links li{display:block}
  nav.menu-open .nav-links a{display:block;padding:14px 2px;font-size:.92rem}
  nav.menu-open .nav-links .nav-cta{text-align:center;margin-top:10px}
  nav.menu-open .nav-burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  nav.menu-open .nav-burger span:nth-child(2){opacity:0}
  nav.menu-open .nav-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  /* cart lives in the header; don't repeat it inside the dropdown */
  nav.menu-open .nav-links li:last-child{display:none}
  /* group the cart + burger together on the right (logo stays far left) */
  .nav-links{margin-left:auto}
  .nav-cta{padding:9px 16px;font-size:.72rem}
  .nav-burger{padding:10px 2px 10px 18px}
  nav{padding-left:clamp(20px,5vw,64px);padding-right:clamp(16px,4vw,64px)}
}

/* shared type */
.eyebrow{display:inline-flex;align-items:center;gap:14px;font-size:.74rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;margin-bottom:34px;opacity:0;animation:fade 1s .2s forwards}
.eyebrow::before{content:'';width:44px;height:2px;background:var(--grad);border-radius:2px;display:inline-block}
@keyframes lineUp{to{transform:translateY(0)}}
@keyframes fade{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
.btn{text-decoration:none;padding:17px 38px;font-size:.8rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;border-radius:2px;transition:all .35s ease;display:inline-block;cursor:pointer;border:none;font-family:var(--sans)}
.btn-dark{background:var(--ink);color:var(--bg)}
.btn-dark:hover{transform:translateY(-2px);box-shadow:0 16px 36px rgba(18,17,16,.22)}
.btn-line{border:1px solid var(--line);color:var(--ink);background:var(--glass);backdrop-filter:blur(10px)}
.btn-line:hover{border-color:var(--ink);transform:translateY(-2px)}
.btn-light{background:var(--bg);color:var(--ink)}
.btn-light:hover{transform:translateY(-2px);box-shadow:0 16px 36px rgba(0,0,0,.4)}

/* hero (home) */
.hero{min-height:100svh;display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,4vw,70px);align-items:center;padding:130px clamp(24px,5vw,64px) 60px;max-width:1500px;margin:0 auto;width:100%}
.hero-img{position:relative;height:min(74vh,760px);overflow:hidden;border-radius:6px;opacity:0;animation:fade 1.2s .5s forwards}
.hero-img img{width:100%;height:115%;object-fit:cover;object-position:center;will-change:transform}
.hero-img .tag{position:absolute;left:22px;bottom:22px;background:var(--glass);border:1px solid var(--glass-border);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:14px 22px;border-radius:4px;font-family:var(--serif);font-size:1.05rem;font-style:italic}
@media(max-width:980px){.hero{grid-template-columns:1fr;padding-top:120px}.hero-img{height:46vh}}
.hero h1{font-family:var(--serif);font-weight:300;font-size:clamp(2.8rem,5.4vw,5.4rem);line-height:1.04;letter-spacing:-.02em}
.hero h1 .line{display:block;overflow:hidden;padding-bottom:.18em;margin-bottom:-.18em}
.hero h1 .line span{display:block;transform:translateY(110%);animation:lineUp 1.2s cubic-bezier(.22,1,.36,1) forwards}
.hero h1 .line:nth-child(2) span{animation-delay:.12s}
.hero h1 em{font-style:italic;font-weight:300}
.hero-sub{display:flex;flex-direction:column;align-items:flex-start;gap:34px;margin-top:42px}
.hero-sub p{max-width:44ch;color:var(--ink-soft);font-size:1rem;line-height:1.75;font-weight:300;opacity:0;animation:fade 1s .7s forwards}
.hero-ctas{display:flex;gap:14px;opacity:0;animation:fade 1s .9s forwards}

/* page hero (inner pages) */
.page-hero{padding:120px clamp(24px,5vw,64px) 28px;max-width:1500px;margin:0 auto}
.crumbs{font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-weight:500;margin-bottom:28px;opacity:0;animation:fade .9s .1s forwards}
.crumbs a{color:var(--ink-soft);text-decoration:none}
.crumbs a:hover{color:var(--ink)}
.page-hero h1{font-family:var(--serif);font-weight:300;font-size:clamp(2.6rem,6vw,5rem);line-height:1.02;letter-spacing:-.03em}
.page-hero h1 .line{display:block;overflow:hidden;padding-bottom:.18em;margin-bottom:-.18em}
.page-hero h1 .line span{display:block;transform:translateY(110%);animation:lineUp 1.1s cubic-bezier(.22,1,.36,1) forwards}
.page-hero h1 em{font-style:italic}
.page-meta{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-top:18px;flex-wrap:wrap}
.page-meta p{max-width:52ch;color:var(--ink-soft);line-height:1.75;font-weight:300;opacity:0;animation:fade 1s .55s forwards}
.count{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;opacity:0;animation:fade 1s .7s forwards}

/* ribbon marquee */
.ribbon{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0;overflow:hidden;background:rgba(255,255,255,.45);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.ribbon-track{display:flex;gap:64px;width:max-content;animation:scrollX 32s linear infinite}
.ribbon-track span{font-family:var(--serif);font-size:1.05rem;font-style:italic;color:var(--ink-soft);white-space:nowrap;display:flex;align-items:center;gap:64px}
.ribbon-track span::after{content:'';width:6px;height:6px;border-radius:50%;background:var(--grad)}
@keyframes scrollX{to{transform:translateX(-50%)}}

/* sections */
section{padding:clamp(64px,8vw,100px) clamp(24px,5vw,64px);max-width:1500px;margin:0 auto}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:64px;flex-wrap:wrap}
.sec-head h2{font-family:var(--serif);font-weight:300;font-size:clamp(2.2rem,4.5vw,3.8rem);letter-spacing:-.02em;line-height:1.05}
.sec-head h2 em{font-style:italic}
.sec-link{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:4px;transition:opacity .3s}
.sec-link:hover{opacity:.55}
.reveal{opacity:0;transform:translateY(36px);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1)}
.reveal.visible{opacity:1;transform:translateY(0)}

/* product grid */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px}
.card{background:rgba(255,255,255,.5);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--glass-border);text-decoration:none;color:var(--ink);padding:24px 24px 26px;position:relative;display:flex;flex-direction:column;gap:20px;opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1),background .4s}
.card.visible{opacity:1;transform:translateY(0)}
.card:hover{background:rgba(255,255,255,.66)}
/* border-only cursor glow — same family as the logo */
.card::after{content:'';position:absolute;inset:0;border:1.5px solid transparent;pointer-events:none;opacity:0;transition:opacity .45s;
  background:radial-gradient(160px circle at var(--cx,50%) var(--cy,50%),rgba(198,170,120,.85),rgba(224,210,184,.4) 45%,transparent 75%) border-box;
  -webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude}
.card:hover::after{opacity:1}
.card-img{aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;background:#fff}
.card-img img{max-width:88%;max-height:88%;object-fit:contain;transition:transform .9s cubic-bezier(.22,1,.36,1),opacity .45s ease}
.card:hover .card-img img{transform:scale(1.04)}
.card-img .img-alt{position:absolute;inset:0;margin:auto;opacity:0}
/* crossfade to the 2nd photo only when one exists AND the item isn't sold out */
.card:not(.is-soldout):hover .card-img .img-alt{opacity:1}
.card:not(.is-soldout):hover .card-img .img-alt + .img-main{opacity:0}
.card-info{display:flex;justify-content:space-between;align-items:baseline;gap:14px;border-top:1px solid var(--line);padding-top:18px}
.card-info h3{font-family:var(--serif);font-size:1.22rem;font-weight:400;line-height:1.25}
.price{font-size:.85rem;font-weight:600;white-space:nowrap;color:var(--ink-soft)}
.card-num{position:absolute;top:22px;right:26px;font-size:.7rem;letter-spacing:.2em;color:#b9b5af;font-weight:600}
.card .quick{position:absolute;left:24px;right:24px;bottom:86px;text-align:center;background:var(--ink);color:var(--bg);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;padding:13px 0;border-radius:2px;opacity:0;transform:translateY(8px);transition:all .35s}
.card:hover .quick{opacity:1;transform:translateY(0)}
.card-all{display:flex;align-items:center;justify-content:center;text-align:center;background:var(--ink);color:var(--bg)}
.card-all:hover{background:#26231f}
.card-all .inner{font-family:var(--serif);font-size:1.7rem;font-weight:300;line-height:1.25}
.card-all .inner em{font-style:italic}
.card-all .inner div{margin-top:14px;font-size:1.2rem}

/* filter bar */
.bar{max-width:1500px;margin:0 auto;padding:0 clamp(24px,5vw,64px) 34px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.pills{display:flex;gap:10px;flex-wrap:wrap}
.pill{font-family:var(--sans);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;font-weight:500;padding:10px 20px;border:1px solid var(--line);border-radius:40px;background:var(--glass);backdrop-filter:blur(10px);color:var(--ink-soft);cursor:pointer;transition:all .3s}
.pill:hover{border-color:var(--ink);color:var(--ink)}
.pill.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.sort{font-size:.8rem;color:var(--ink-soft);font-weight:400;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(10px);padding:10px 16px;border-radius:2px;font-family:var(--sans);cursor:pointer}
.wrap{max-width:1500px;margin:0 auto;padding:0 clamp(24px,5vw,64px) 48px}

/* ===== story: stationery card + rotating seal ===== */
.stationery{position:relative;width:min(420px,88%);justify-self:center}
.note-card{background:linear-gradient(172deg,#fdfbf6,#f4efe3);aspect-ratio:5/6;border:1px solid rgba(43,33,25,.09);
  box-shadow:0 34px 70px rgba(43,33,25,.15);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px;
  transform:rotate(-6deg);animation:cardBob 10s ease-in-out infinite}
@keyframes cardBob{0%,100%{transform:rotate(-6deg) translateY(0)}50%{transform:rotate(-5.4deg) translateY(-7px)}}
.note-card::before{content:'';position:absolute;inset:16px;border:1px solid rgba(43,33,25,.2);pointer-events:none}
.note-card::after{content:'';position:absolute;inset:22px;border:1px solid rgba(43,33,25,.09);pointer-events:none}
.note-logo{width:40%;display:block;box-shadow:0 14px 30px rgba(20,15,10,.28)}
.note-est{font-size:.6rem;letter-spacing:.34em;text-transform:uppercase;color:#8a7f6e;font-weight:600}
/* red bakers twine across the corner, with a knot */
.stamp{position:absolute;right:-8%;bottom:-6%;width:clamp(112px,9.5vw,140px);aspect-ratio:1/1;z-index:4;border-radius:50%;
  background:rgba(255,255,255,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1px solid var(--glass-border);box-shadow:0 16px 36px rgba(43,33,25,.18)}
.stamp::after{content:'';position:absolute;inset:27%;border:1px solid rgba(86,82,77,.4);border-radius:50%;pointer-events:none}
.stamp svg{position:absolute;inset:0;width:100%;height:100%;animation:spin 28s linear infinite}
.stamp svg text{font-family:var(--sans);font-size:8px;letter-spacing:.34em;text-transform:uppercase;font-weight:600;fill:var(--ink-soft)}
.stamp-c{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-style:italic;font-size:1.9rem;color:var(--ink)}
/* the story text panel (glass) */
.story-copy{background:rgba(255,255,255,.45);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);padding:clamp(28px,4vw,48px)}

/* story */
.story{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(36px,5vw,80px);align-items:center}
.story-img{overflow:hidden;aspect-ratio:1/1;position:relative;width:100%;max-width:520px;justify-self:center}
.story-img img{width:100%;height:100%;object-fit:cover}
.story h2{font-family:var(--serif);font-weight:300;font-size:clamp(2rem,3.8vw,3.4rem);line-height:1.08;letter-spacing:-.02em;margin-bottom:28px}
.story h2 em{font-style:italic}
.story p{color:var(--ink-soft);line-height:1.85;font-weight:300;margin-bottom:18px;max-width:48ch}
.story .btn{margin-top:16px}
@media(max-width:880px){.story{grid-template-columns:1fr}}

/* category index rows */
.index{border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:80px 1fr auto;align-items:center;gap:30px;padding:34px 22px;border-bottom:1px solid var(--glass-border);text-decoration:none;color:var(--ink);transition:padding .4s,background .4s;position:relative;background:rgba(255,255,255,.35);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.row:hover{background:rgba(255,255,255,.7);padding-left:38px}
.row-num{font-size:.75rem;letter-spacing:.2em;color:#b9b5af;font-weight:600}
.row h3{font-family:var(--serif);font-weight:300;font-size:clamp(1.7rem,3.4vw,2.8rem);letter-spacing:-.02em}
.row h3 em{font-style:italic}
.row-meta{display:flex;align-items:center;gap:26px}
.row-meta span{font-size:.82rem;color:var(--ink-soft);font-weight:300}
.row .arrow{font-size:1.4rem;transition:transform .4s}
.row:hover .arrow{transform:translateX(8px)}
@media(max-width:640px){.row{grid-template-columns:1fr auto}.row-num,.row-meta span{display:none}}

/* dark band */
.band{padding:0 clamp(24px,5vw,64px);max-width:1500px;margin:0 auto}
/* ===== corporate: the original — ink, serif, one button ===== */
.band-inner{background:var(--ink);color:var(--bg);padding:clamp(60px,8vw,110px) clamp(30px,6vw,90px);position:relative;overflow:hidden;display:grid;grid-template-columns:1.2fr .8fr;gap:50px;align-items:center}
.band-inner::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad);opacity:.7}
.band-right{text-align:right}
@media(max-width:820px){.band-inner{grid-template-columns:1fr}.band-right{text-align:left}}
.band-inner h2{font-family:var(--serif);font-weight:300;font-size:clamp(2rem,4.2vw,3.6rem);line-height:1.06;letter-spacing:-.02em}
.band-inner h2 em{font-style:italic}
.band-inner p{color:rgba(251,251,250,.65);line-height:1.8;font-weight:300;margin-top:24px;max-width:46ch}
.band-right{text-align:right}

/* prose pages (about/faq/etc) */
.prose{max-width:840px;margin:0 auto;padding:0 clamp(24px,5vw,64px) 56px;position:relative;z-index:1}
.prose h2{font-family:var(--serif);font-weight:300;font-size:1.9rem;margin:54px 0 18px;letter-spacing:-.01em}
.prose p{color:var(--ink-soft);line-height:1.9;font-weight:300;margin-bottom:18px}
.prose .faq-item{border-bottom:1px solid var(--line);padding:26px 0}
.prose .faq-item h3{font-family:var(--serif);font-weight:400;font-size:1.3rem;margin-bottom:10px}
.prose-lede{font-family:var(--serif);font-style:italic;font-size:clamp(1.5rem,2.4vw,2rem);color:var(--ink);margin-bottom:20px}
.prose-list{list-style:none;margin:14px 0 0;padding:0}
.prose-list li{color:var(--ink-soft);font-weight:300;padding:9px 0 9px 22px;position:relative;border-bottom:1px solid var(--line)}
.prose-list li::before{content:'';position:absolute;left:0;top:18px;width:7px;height:7px;border-radius:50%;background:var(--grad)}

/* ===== corporate landing page ===== */
.corp-intro{max-width:900px;margin:0 auto;padding:clamp(20px,3vw,40px) clamp(24px,5vw,64px)}
.corp-lede p{color:var(--ink-soft);line-height:1.9;font-weight:300;margin-bottom:18px;font-size:1.08rem;max-width:62ch}
.corp-why{max-width:1500px;margin:0 auto;padding:clamp(30px,4vw,60px) clamp(24px,5vw,64px)}
.why-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1px;background:rgba(232,230,226,.6);border:1px solid var(--glass-border)}
.why-item{background:rgba(255,255,255,.5);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding:34px 30px;position:relative}
.why-num{font-size:.72rem;letter-spacing:.22em;color:#b9b5af;font-weight:600}
.why-item h3{font-family:var(--serif);font-weight:400;font-size:1.35rem;margin:14px 0 10px;line-height:1.25}
.why-item p{color:var(--ink-soft);font-weight:300;line-height:1.7;font-size:.92rem}
.corp-form{max-width:1500px;margin:0 auto;padding:clamp(50px,7vw,100px) clamp(24px,5vw,64px) 56px}
.corp-form-head{text-align:center;max-width:620px;margin:0 auto 48px}
.corp-form-head h2{font-family:var(--serif);font-weight:300;font-size:clamp(2rem,4vw,3.2rem);letter-spacing:-.02em;line-height:1.08}
.corp-form-head h2 em{font-style:italic}
.corp-form-head p{color:var(--ink-soft);line-height:1.8;font-weight:300;margin-top:18px}

/* footer brandmark (logo) — proportions measured from the original mark */
.brandmark{--s:150px;position:relative;display:flex;align-items:center;justify-content:center;width:var(--s);aspect-ratio:1/1;background:#0d0c0b;text-decoration:none;transition:box-shadow .5s ease}
.brandmark:hover{box-shadow:0 16px 40px rgba(18,17,16,.22)}
.brandmark .bm-frame{position:absolute;inset:calc(var(--s)*.072);border:calc(var(--s)*.007) solid #fff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.bm-word{font-family:var(--serif);color:#fff;font-size:calc(var(--s)*.19);line-height:1;display:block;font-weight:600;letter-spacing:.004em}
.bm-sub{display:block;color:#fff;font-family:var(--sans);font-size:calc(var(--s)*.034);letter-spacing:.26em;text-transform:uppercase;margin-top:calc(var(--s)*.05);font-weight:600;white-space:nowrap}
.bm-for{display:inline-block;border-bottom:calc(var(--s)*.014) solid #fff;padding-bottom:calc(var(--s)*.024)}
/* real logo file (logo.png in the repo) — covers the coded version when present */
.bm-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.bm-img.off{display:none}
/* the inner border lights up near the cursor and the glow follows it */
.bm-glow{position:absolute;inset:calc(var(--s)*.072);border:calc(var(--s)*.016) solid transparent;pointer-events:none;opacity:0;transition:opacity .45s ease;z-index:2;
  background:radial-gradient(150px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,1),rgba(231,228,255,.75) 45%,transparent 75%) border-box;
  -webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  filter:drop-shadow(0 0 10px rgba(255,255,255,.95)) drop-shadow(0 0 26px rgba(196,205,240,.7))}
.brandmark:hover .bm-glow{opacity:1}
.brandmark:hover{box-shadow:0 16px 50px rgba(150,165,220,.4)}

/* footer */
footer{border-top:1px solid var(--line);background:rgba(255,255,255,.55);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.foot{max-width:1500px;margin:0 auto;padding:40px clamp(24px,5vw,64px) 28px;display:grid;grid-template-columns:2fr 1fr 1fr;gap:36px;align-items:start}
.foot .logo{font-size:1.9rem}
.foot>div>p{color:var(--ink-soft);font-size:.85rem;line-height:1.6;margin-top:12px;max-width:32ch;font-weight:300}
.foot h4{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:#b9b5af;margin-bottom:12px;font-weight:600}
.foot ul{list-style:none}
.foot li{margin-bottom:8px}
.foot a{color:var(--ink-soft);text-decoration:none;font-size:.88rem;transition:color .3s}
.foot a:hover{color:var(--ink)}
.copyright{max-width:1500px;margin:0 auto;display:flex;justify-content:space-between;gap:20px;padding:14px clamp(24px,5vw,64px);font-size:.74rem;color:#b9b5af;border-top:1px solid var(--line);flex-wrap:wrap}
@media(max-width:760px){.foot{grid-template-columns:1fr}}

/* loading state */
.loading{padding:80px 0;text-align:center;color:var(--ink-soft);font-family:var(--serif);font-style:italic;font-size:1.2rem}
.loading a{color:var(--ink)}

/* cart badge in nav */
.cart-badge{display:none;align-items:center;justify-content:center;min-width:20px;height:20px;border-radius:20px;background:var(--ink);color:var(--bg);font-size:.68rem;font-weight:600;padding:0 6px;margin-left:6px;vertical-align:1px}
.nav-cta:hover .cart-badge{background:var(--bg);color:var(--ink)}

/* product page */
.product-wrap{max-width:1500px;margin:0 auto;padding:140px clamp(24px,5vw,64px) 56px}
.product{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,6vw,100px);align-items:start}
.product-img{background:rgba(255,255,255,.6);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);display:flex;align-items:center;justify-content:center;aspect-ratio:1/1;padding:40px}
.product-img img{max-width:100%;max-height:100%;object-fit:contain;min-width:0;min-height:0}
/* min-width/height 0: the image is a flex item, and flex items refuse to
   shrink below their intrinsic size (min-width:auto) — iOS WebKit enforces
   this literally, rendering the full-resolution photo wider than the page. */
.product-info h1{font-family:var(--serif);font-weight:300;font-size:clamp(2rem,3.6vw,3.2rem);line-height:1.08;letter-spacing:-.02em;margin:18px 0 14px}
.product-price{font-size:1.15rem;font-weight:600;color:var(--ink);margin-bottom:22px}
.product-desc{color:var(--ink-soft);line-height:1.85;font-weight:300;margin-bottom:28px;max-width:52ch;white-space:pre-line}
.product-label{display:block;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;margin-bottom:8px}
.product-buy{display:flex;gap:16px;align-items:center;margin-top:26px;flex-wrap:wrap}
.qty{display:inline-flex;align-items:center;border:1px solid var(--line);background:var(--card)}
.qty button{width:42px;height:50px;border:none;background:none;font-size:1.2rem;cursor:pointer;color:var(--ink)}
.qty button:hover{background:#f0eeea}
.qty span{min-width:34px;text-align:center;font-weight:600}
.product-note{margin-top:18px;font-size:.9rem;color:var(--ink-soft)}
.product-note a{color:var(--ink)}
@media(max-width:820px){.product{grid-template-columns:minmax(0,1fr)}}

/* skeleton loading */
.card.skel{pointer-events:none;opacity:1;transform:none}
.card.skel .card-img{background:linear-gradient(100deg,#f1efeb 40%,#f9f8f5 50%,#f1efeb 60%);background-size:200% 100%;animation:shimmer 1.4s infinite}
.skel-line{height:16px;margin-top:20px;border-radius:3px;background:linear-gradient(100deg,#f1efeb 40%,#f9f8f5 50%,#f1efeb 60%);background-size:200% 100%;animation:shimmer 1.4s infinite}
@keyframes shimmer{to{background-position:-200% 0}}

/* product gallery */
.product-media{display:flex;flex-direction:column;gap:14px}
.thumbs{display:flex;gap:10px;flex-wrap:wrap}
.thumb{width:74px;height:74px;border:1px solid var(--line);background:var(--card);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center;transition:border-color .3s}
.thumb img{max-width:100%;max-height:100%;object-fit:contain}
.thumb.on,.thumb:hover{border-color:var(--ink)}

/* modifiers (add-ons) */
.mods{border:1px solid var(--line);background:var(--card);margin-bottom:22px}
.mod-row{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid var(--line);cursor:pointer;font-size:.92rem}
.mod-row:last-child{border-bottom:none}
.mod-row:hover{background:#f6f5f2}
.mod-row input{accent-color:var(--ink);width:16px;height:16px}
.mod-price{margin-left:auto;color:var(--ink-soft);font-size:.85rem;font-weight:600}
.mod-select{margin-bottom:22px;display:block;min-width:260px}

/* related products */
.related{margin-top:110px}
.related-title{font-family:var(--serif);font-weight:300;font-size:clamp(1.8rem,3.4vw,2.8rem);letter-spacing:-.02em;margin-bottom:40px}
.related-title em{font-style:italic}

/* sold out */
.soldout-badge{position:absolute;left:10px;bottom:10px;background:rgba(18,17,16,.88);backdrop-filter:blur(8px);color:var(--bg);font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;padding:7px 13px;border-radius:2px;z-index:2}
.card.is-soldout .card-img .img-main{opacity:.45;filter:grayscale(.4)}
.card.is-soldout .card-img .img-alt{display:none}
.card.is-soldout .price{text-decoration:line-through;opacity:.6}
/* sold-out cards: no hover "View" button (the badge speaks for itself, card still clickable) */
.card.is-soldout .quick{display:none}
.btn[disabled]{opacity:.45;cursor:not-allowed;transform:none!important;box-shadow:none!important}

/* checkout page */
.co{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(30px,4vw,60px);align-items:start}
@media(max-width:880px){.co{grid-template-columns:1fr}}
.co-block{background:rgba(255,255,255,.6);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);padding:30px;margin-bottom:24px}
.co-block h2{font-family:var(--serif);font-weight:400;font-size:1.4rem;margin-bottom:18px}
.co-opt{font-size:.8rem;color:var(--ink-soft);font-family:var(--sans);font-weight:400}
.co-tabs{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.co-tab{flex:1;min-width:130px;padding:14px 10px;border:1px solid var(--line);background:var(--bg);font-family:var(--sans);font-size:.82rem;font-weight:600;letter-spacing:.04em;cursor:pointer;border-radius:2px;transition:all .25s;color:var(--ink-soft)}
.co-tab.on{border-color:var(--ink);color:var(--ink);background:var(--card);box-shadow:0 4px 14px rgba(18,17,16,.08)}
.co-note{font-size:.85rem;color:var(--ink-soft);line-height:1.6;margin-bottom:16px}
.co-pickup{font-size:.92rem;line-height:1.7;color:var(--ink-soft);border:1px dashed var(--line);padding:16px 18px}
.co-pickup strong{color:var(--ink)}
.co-grid{display:grid;gap:12px}
.co-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.co-input{width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:2px;font-family:var(--sans);font-size:.92rem;background:var(--bg);color:var(--ink)}
.co-input:focus{outline:none;border-color:var(--ink)}
textarea.co-input{resize:vertical}
.co-hint{font-size:.8rem;color:var(--ink-soft);margin-top:10px;line-height:1.6}
.co-error{background:#fdf0ef;border:1px solid #e8c5c0;color:#8a2f25;padding:13px 16px;font-size:.88rem;border-radius:2px;margin-top:14px;line-height:1.6}
.co-paybtn{width:100%;margin-top:20px}
.wallet-btn{margin-bottom:12px;height:48px}  /* fixed height so Apple Pay + Google Pay (buttonSizeMode fill) match exactly */
#applePay{display:none;background:#000;color:#fff;border-radius:4px;height:48px;cursor:pointer;-webkit-appearance:-apple-pay-button;apple-pay-button-type:buy}
.co-divider{display:flex;align-items:center;gap:14px;margin:18px 0;color:var(--ink-soft);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase}
.co-divider::before,.co-divider::after{content:'';flex:1;height:1px;background:var(--line)}
.co-gift-toggle{background:none;border:none;color:var(--ink-soft);font-family:var(--sans);font-size:.82rem;text-decoration:underline;cursor:pointer;margin-top:14px;padding:0}
.co-gift-toggle:hover{color:var(--ink)}
#giftContainer{margin-top:14px}
.co-summary{background:rgba(255,255,255,.6);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);padding:30px;position:sticky;top:90px}
.co-summary h2{font-family:var(--serif);font-weight:400;font-size:1.4rem;margin-bottom:18px}
.sum-row{display:grid;grid-template-columns:54px 1fr auto;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.sum-row img{width:54px;height:54px;object-fit:contain}
.sum-name{font-size:.88rem;line-height:1.4}
.sum-name span{display:block;color:var(--ink-soft);font-size:.78rem}
.sum-price{font-weight:600;font-size:.88rem}
.co-coupon{display:flex;gap:10px;margin:18px 0 4px}
.co-coupon .co-input{flex:1}
.co-coupon .btn{padding:13px 20px}
.co-coupon-msg{font-size:.8rem;min-height:18px;margin-bottom:6px}
.co-coupon-msg.ok{color:#2c6e49}
.co-coupon-msg.bad{color:#8a2f25}
.co-totals{margin-top:10px}
.tot-row{display:flex;justify-content:space-between;padding:7px 0;font-size:.9rem;color:var(--ink-soft)}
.tot-row.disc{color:#2c6e49}
.tot-row.total{border-top:1px solid var(--line);margin-top:8px;padding-top:14px;font-family:var(--serif);font-size:1.25rem;color:var(--ink)}

/* order-confirmed toast */
.toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,80px);background:var(--ink);color:var(--bg);padding:18px 30px;border-radius:4px;font-size:.95rem;z-index:200;opacity:0;transition:all .5s cubic-bezier(.22,1,.36,1);box-shadow:0 18px 50px rgba(18,17,16,.3);max-width:90vw;text-align:center}
.toast.on{transform:translate(-50%,0);opacity:1}

/* cart page */
.cart-list{border:1px solid var(--glass-border);background:rgba(255,255,255,.6);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.cart-row{display:grid;grid-template-columns:84px 1fr auto auto auto;gap:20px;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}
.cart-row:last-child{border-bottom:none}
.cart-row img{width:84px;height:84px;object-fit:contain;background:var(--bg)}
.cart-name{font-family:var(--serif);font-size:1.1rem}
.cart-line{font-weight:600;min-width:70px;text-align:right}
.cart-remove{border:none;background:none;font-size:1.3rem;cursor:pointer;color:var(--ink-soft)}
.cart-remove:hover{color:var(--ink)}
.cart-foot{margin-top:30px;display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.cart-total{font-family:var(--serif);font-size:1.4rem}
.cart-hint{font-size:.82rem;color:var(--ink-soft)}
@media(max-width:640px){.cart-row{grid-template-columns:64px 1fr auto;grid-auto-rows:auto}.cart-line{grid-column:3}}

/* ===================================================================
   v2 design pass — homepage spacing, corporate flow, about page
   =================================================================== */

/* homepage: give the dark band air before the footer */
.band{margin-bottom:clamp(56px,7vw,96px)}

/* ---- shared: hero with a side credential panel ---- */
.hero-split{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(36px,5vw,72px);align-items:center;
  max-width:1500px;margin:0 auto;padding:0 clamp(24px,5vw,64px) clamp(20px,3vw,40px)}
@media(max-width:900px){.hero-split{grid-template-columns:1fr;gap:32px}}
.hero-panel{position:relative;background:rgba(255,255,255,.5);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid var(--glass-border);padding:clamp(26px,3vw,40px);overflow:hidden}
.hero-panel::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad);opacity:.8}
.hero-panel h3{font-family:var(--serif);font-weight:300;font-size:1.3rem;letter-spacing:-.01em;margin-bottom:22px}
.hero-panel h3 em{font-style:italic}
.cred-list{list-style:none;display:flex;flex-direction:column}
.cred-list li{display:flex;align-items:baseline;gap:14px;padding:14px 0;border-bottom:1px solid var(--line);
  color:var(--ink-soft);font-weight:300;font-size:.96rem;line-height:1.5}
.cred-list li:last-child{border-bottom:none}
.cred-list .ci-mark{flex:none;width:7px;height:7px;border-radius:50%;background:var(--grad);transform:translateY(-2px)}
.cred-list strong{color:var(--ink);font-weight:500}

/* ---- stat strip (numbers) ---- */
.stat-strip{max-width:1500px;margin:0 auto;padding:clamp(24px,3vw,44px) clamp(24px,5vw,64px)}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1px;
  background:rgba(232,230,226,.6);border:1px solid var(--glass-border)}
.stat-cell{background:rgba(255,255,255,.5);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  padding:clamp(28px,3.4vw,44px) 30px;text-align:center}
.stat-num{font-family:var(--serif);font-weight:300;font-size:clamp(2.2rem,4vw,3.2rem);letter-spacing:-.02em;line-height:1}
.stat-num em{font-style:italic}
.stat-lab{margin-top:12px;font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-weight:600}

/* ---- how-it-works steps ---- */
.steps{max-width:1500px;margin:0 auto;padding:clamp(40px,5vw,80px) clamp(24px,5vw,64px)}
.steps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,2.5vw,40px);counter-reset:step}
@media(max-width:760px){.steps-grid{grid-template-columns:1fr}}
.step{position:relative;padding-top:34px}
.step::before{counter-increment:step;content:counter(step,decimal-leading-zero);font-family:var(--serif);font-style:italic;
  font-size:2.4rem;color:var(--ink);opacity:.22;position:absolute;top:-8px;left:0}
.step h3{font-family:var(--serif);font-weight:400;font-size:1.3rem;margin:0 0 10px}
.step p{color:var(--ink-soft);font-weight:300;line-height:1.7;font-size:.96rem;max-width:38ch}
.step::after{content:'';position:absolute;top:8px;left:46px;right:-20px;height:1px;
  background:linear-gradient(90deg,rgba(86,82,77,.25),transparent)}
.steps-grid .step:last-child::after{display:none}
@media(max-width:760px){.step::after{display:none}}

/* ---- occasion chips ---- */
.occasions{max-width:1500px;margin:0 auto;padding:0 clamp(24px,5vw,64px) clamp(30px,4vw,56px);text-align:center}
.occ-chips{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:24px}
.occ-chip{font-size:.86rem;letter-spacing:.04em;padding:11px 22px;border:1px solid var(--line);border-radius:40px;
  background:var(--glass);backdrop-filter:blur(10px);color:var(--ink-soft);transition:all .35s ease;cursor:default}
.occ-chip:hover{border-color:var(--ink);color:var(--ink);transform:translateY(-2px)}

/* ---- corporate quote form: compact, fits one screen ---- */
.corp-form{padding:clamp(36px,4vw,56px) clamp(24px,5vw,64px) clamp(48px,6vw,72px)}
.corp-form-head{margin:0 auto 30px}
.corp-form .co-block{max-width:760px}
.corp-form .co-grid{grid-template-columns:1fr 1fr;gap:14px}
.corp-form .co-grid .cq-full{grid-column:1 / -1}
@media(max-width:560px){.corp-form .co-grid{grid-template-columns:1fr}}

/* ---- about: visit / google map ---- */
.visit{max-width:1500px;margin:0 auto;padding:clamp(40px,5vw,80px) clamp(24px,5vw,64px) clamp(56px,7vw,96px)}
.visit-grid{display:grid;grid-template-columns:1fr 1.25fr;gap:clamp(24px,3vw,48px);align-items:stretch}
@media(max-width:860px){.visit-grid{grid-template-columns:1fr}}
.visit-card{background:rgba(255,255,255,.5);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid var(--glass-border);padding:clamp(28px,3.4vw,44px);display:flex;flex-direction:column;justify-content:center}
.visit-card .eyebrow{margin-bottom:18px}
.visit-card h2{font-family:var(--serif);font-weight:300;font-size:clamp(1.8rem,3vw,2.6rem);letter-spacing:-.02em;line-height:1.1;margin-bottom:18px}
.visit-card h2 em{font-style:italic}
.visit-addr{color:var(--ink-soft);line-height:1.8;font-weight:300;font-size:1.02rem;margin-bottom:26px}
.visit-addr strong{color:var(--ink);font-weight:500}
.visit-actions{display:flex;flex-wrap:wrap;gap:14px}
.map-frame{position:relative;overflow:hidden;border:1px solid var(--glass-border);min-height:340px;
  box-shadow:0 24px 60px rgba(43,33,25,.12)}
.map-frame iframe{width:100%;height:100%;min-height:340px;border:0;display:block;filter:grayscale(.25) contrast(1.02)}

/* ---- about: collection highlight cards ---- */
.coll{max-width:1500px;margin:0 auto;padding:clamp(30px,4vw,56px) clamp(24px,5vw,64px)}
.coll-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(232,230,226,.6);border:1px solid var(--glass-border)}
@media(max-width:1100px){.coll-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.coll-grid{grid-template-columns:1fr}}
.coll-cell{background:rgba(255,255,255,.5);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding:34px 30px}
.coll-cell h3{font-family:var(--serif);font-weight:400;font-size:1.3rem;margin-bottom:10px}
.coll-cell p{color:var(--ink-soft);font-weight:300;line-height:1.7;font-size:.94rem}

/* a centered section heading variant */
.sec-head-c{text-align:center;justify-content:center;margin-bottom:clamp(36px,4vw,56px)}
.sec-head-c h2{font-family:var(--serif);font-weight:300;font-size:clamp(2rem,4vw,3.2rem);letter-spacing:-.02em;line-height:1.08}
.sec-head-c h2 em{font-style:italic}
.sec-head-c p{color:var(--ink-soft);font-weight:300;line-height:1.75;margin-top:16px;max-width:56ch;margin-left:auto;margin-right:auto}

/* ---- founder portrait (about hero) ---- */
.founder-photo{position:relative;margin:0;overflow:hidden;border:1px solid var(--glass-border);
  box-shadow:0 34px 80px rgba(43,33,25,.18);aspect-ratio:4/3}
.founder-photo img{width:100%;height:100%;object-fit:cover;display:block}
.founder-photo figcaption{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:2px;
  padding:38px 26px 20px;color:#fff;
  background:linear-gradient(to top,rgba(20,15,10,.78),rgba(20,15,10,.28) 55%,transparent)} /* deeper: new founder photo is light at the bottom */
.founder-photo .fc-name{font-family:var(--serif);font-size:1.5rem;font-weight:400;line-height:1.1}
.founder-photo .fc-role{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;font-weight:600;opacity:.9}

/* ---- "featured at" strip ---- */
.featured-at{max-width:1500px;margin:0 auto;padding:clamp(8px,2vw,20px) clamp(24px,5vw,64px) clamp(24px,3vw,40px);
  display:flex;align-items:center;justify-content:center;gap:22px;flex-wrap:wrap;text-align:center}
.featured-at .fa-label{font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:#b9b5af;font-weight:600}
.featured-at .fa-names{font-family:var(--serif);font-style:italic;font-size:clamp(1.05rem,1.8vw,1.4rem);color:var(--ink)}
/* mobile footer: Visit column gets its own full-width row so the address,
   hours, and Instagram handle never wrap mid-line */
@media (max-width:760px){ .foot > div:last-child { grid-column: 1 / -1; } }

/* two matching pairs: press ("As featured in") + venues ("As seen at") get equal billing */
.featured-at{column-gap:clamp(30px,4vw,70px);row-gap:14px}
.fa-pair{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;justify-content:center}

/* ===================================================================
   PREMIUM MOBILE (2026-07-02) — same soul as desktop, compositor-only.
   The original iOS jank came from (a) huge blur() filters animating
   forever and (b) dozens of stacked backdrop-filters. Everything below
   sticks to transform/opacity animation on pre-soft gradient layers
   (no filters to rasterize) and allows backdrop-filter on exactly ONE
   small region — the nav — which iOS composites natively.
   If a device ever stutters: set .ambient{display:none} and remove the
   nav blur; that restores the old fully-static fallback.
   =================================================================== */
@media (max-width: 900px) {
  /* hard stop on horizontal overflow (iOS lets you pan into off-screen
     content that desktop engines clip) — nothing may exceed the viewport */
  html, body { overflow-x: clip; max-width: 100vw; }
  main img { max-width: 100%; min-width: 0; min-height: 0; }

  /* aurora: radial gradients that are born soft (no blur filter), fixed,
     drifting gently via transform only — GPU-composited, ~zero scroll cost */
  .mesh{width:130vw;height:130vw;top:-50vw;right:-45vw;filter:none;opacity:.85;border-radius:50%;
    background:radial-gradient(closest-side,#f2d6b8 0%,rgba(242,214,184,.5) 42%,rgba(242,214,184,0) 72%);
    animation:floaty 26s ease-in-out infinite;will-change:transform}
  .mesh-2{width:115vw;height:115vw;bottom:-45vw;left:-40vw;filter:none;opacity:.8;border-radius:50%;
    background:radial-gradient(closest-side,#d8d2f0 0%,rgba(216,210,240,.45) 42%,rgba(216,210,240,0) 72%);
    animation:floaty 34s ease-in-out infinite reverse;will-change:transform}
  body::before{display:none}
  body{background:
    radial-gradient(120vw 70vh at 50% 108%, #efe7da 0%, rgba(239,231,218,0) 55%),
    #fbfbfa}

  /* scroll reveals: back on, but light (opacity + short rise). The observer
     in site.js fires ~200px early, so fast flicks never catch blank sections */
  .reveal{transform:translateY(14px);transition-duration:.55s}
  /* cards: staggered fade-in (opacity only — no layout-affecting transform) */
  .card{transform:none;transition:opacity .5s ease,background .4s}

  /* the stamp spin and note-card bob are small transform-only animations —
     cheap, so they stay on (they were the charm the old fallback stripped) */

  /* backdrop-filter allowed ONLY on the nav; everything else goes
     translucent-without-blur so the aurora glows through */
  .ribbon, .card, .story-copy, .row,
  footer, .co-block, .co-summary, .cart-list, .hero-panel, .stat-cell,
  .visit-card, .coll-cell, .why-item, .stamp, .product-img, .btn-line,
  .pill, .sort {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  nav.scrolled{background:rgba(251,251,250,.72);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
  nav.menu-open .nav-links{background:rgba(251,251,250,.86);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}

  .card, .hero-panel, .stat-cell, .visit-card, .coll-cell, .why-item,
  .co-block, .co-summary, .cart-list, .story-copy, .product-img {
    background: rgba(255,255,255,.78);
  }
  .row { background: rgba(255,255,255,.7); }
  .ribbon { background: rgba(255,255,255,.72); }
}
@keyframes floaty{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(4vw,3vw,0)}}

/* respect users who ask for less motion */
@media (prefers-reduced-motion: reduce) {
  .mesh, .mesh-2, .stamp svg, .note-card, .ribbon-track { animation: none !important; }
}

/* ---- mobile footer v4 (2026-08-02): verified centered stack ----
   Logo, one row of links (Shop hidden — it's in the nav), address on two
   centered lines, hours, phone, Instagram, copyright. Prototyped and
   screenshot-verified at 390px before shipping. ---- */
@media (max-width: 760px) {
  .foot { display: flex; flex-direction: column; align-items: center; text-align: center;
          gap: 0; padding: 32px clamp(20px,5vw,64px) 20px; }
  .foot h4 { display: none; }
  .foot > div:first-child { margin-bottom: 16px; }
  .foot > div:first-child p { display: none; }            /* tagline off on mobile */
  .brandmark { --s: 80px; }
  .foot > div:nth-child(2) { display: none; }             /* Shop — lives in the nav */
  .foot > div:nth-child(3) ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 22px; margin-bottom: 20px; }
  .foot > div:nth-child(4) ul { display: flex; flex-direction: column; align-items: center; gap: 7px; }
  .foot > div:nth-child(4) ul li:nth-child(3) { display: none; }  /* "View Map" — address links there */
  .foot li { margin: 0; }
  .copyright { padding: 12px clamp(20px,5vw,64px); justify-content: center; text-align: center; }
}




/* ===== shop search ===== */
.shop-search{min-width:250px;flex:0 1 320px;-webkit-appearance:none;appearance:none}
.shop-search::placeholder{color:var(--ink-soft);font-style:italic;font-family:var(--serif)}
.shop-search:focus{outline:none;border-color:var(--ink)}
@media(max-width:760px){.shop-search{flex:1 1 100%;min-width:0}}

/* ===== mini-cart drawer ===== */
.drawer-overlay{position:fixed;inset:0;background:rgba(18,17,16,.35);opacity:0;pointer-events:none;transition:opacity .45s;z-index:290}
.drawer-overlay.open{opacity:1;pointer-events:auto}
.cart-drawer{position:fixed;top:0;right:0;bottom:0;width:min(430px,94vw);background:rgba(251,251,250,.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-left:1px solid var(--line);z-index:300;transform:translateX(103%);transition:transform .55s cubic-bezier(.22,1,.36,1);display:flex;flex-direction:column;box-shadow:-24px 0 60px rgba(18,17,16,.14)}
.cart-drawer.open{transform:translateX(0)}
.cd-head{display:flex;justify-content:space-between;align-items:center;padding:22px 26px;border-bottom:1px solid var(--line)}
.cd-head h3{font-family:var(--serif);font-weight:400;font-size:1.4rem}
.cd-head h3 em{font-style:italic}
.cd-close{background:none;border:none;font-size:1.6rem;cursor:pointer;color:var(--ink-soft);line-height:1;padding:2px 6px}
.cd-close:hover{color:var(--ink)}
.cd-items{flex:1;overflow-y:auto;padding:8px 26px}
.cd-row{display:grid;grid-template-columns:64px 1fr auto;gap:14px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}
.cd-row:last-child{border-bottom:none}
.cd-row img{width:64px;height:64px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:2px}
.cd-name{font-size:.88rem;font-weight:500;line-height:1.4}
.cd-qty{display:flex;align-items:center;gap:10px;margin-top:8px}
.cd-qty button{width:24px;height:24px;border:1px solid var(--line);background:none;cursor:pointer;border-radius:2px;color:var(--ink);line-height:1;transition:border-color .3s}
.cd-qty button:hover{border-color:var(--ink)}
.cd-qty span{font-size:.85rem;min-width:16px;text-align:center}
.cd-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.cd-line{font-size:.9rem;font-weight:500}
.cd-remove{background:none;border:none;color:var(--ink-soft);cursor:pointer;font-size:1.05rem;padding:0 2px;line-height:1}
.cd-remove:hover{color:var(--ink)}
.cd-foot{padding:20px 26px 26px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:14px}
.cd-sub{display:flex;justify-content:space-between;font-size:1rem}
.cd-hint{font-size:.78rem;color:var(--ink-soft)}
.cd-foot .btn{width:100%;text-align:center}
.cd-view{text-align:center;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);text-decoration:none;font-weight:500}
.cd-view:hover{color:var(--ink)}
.cd-empty{padding:46px 0;text-align:center;color:var(--ink-soft);font-family:var(--serif);font-style:italic;font-size:1.1rem}
body.drawer-open{overflow:hidden}

/* ===== order confirmation ===== */
.confirm-box{max-width:720px;margin:0 auto;border:1px solid var(--glass-border);background:rgba(255,255,255,.65);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:4px;padding:clamp(24px,4vw,44px)}
.confirm-box .sum-row{display:grid;grid-template-columns:56px 1fr auto;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.confirm-box .sum-row img{width:56px;height:56px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:2px}
.confirm-box .sum-name{font-size:.9rem;font-weight:500}
.confirm-box .sum-name span{display:block;color:var(--ink-soft);font-weight:400;font-size:.8rem;margin-top:3px}
.confirm-box .sum-price{font-size:.9rem;font-weight:500}
.cf-meta{color:var(--ink-soft);font-size:.92rem;line-height:1.75;margin:6px 0 26px}
.cf-totals{margin-top:18px}
.cf-totals .tot-row{display:flex;justify-content:space-between;padding:7px 0;font-size:.92rem;color:var(--ink-soft)}
.cf-totals .tot-row.total{border-top:1px solid var(--line);margin-top:8px;padding-top:14px;font-size:1.05rem;color:var(--ink);font-weight:600}
.cf-actions{display:flex;gap:14px;margin-top:30px;flex-wrap:wrap}

/* ===== mobile refinements (2026-07-02) ===== */
@media (max-width: 900px) {
  /* iOS Safari auto-zooms the whole page when focusing any input under 16px —
     the single most annoying mobile-checkout behavior. 16px stops it. */
  .co-input, .sort, .shop-search, select.co-input, textarea.co-input { font-size: 16px; }

  /* checkout: show the order summary (items, coupon, totals) BEFORE the form,
     so the customer sees what they're paying before entering details */
  .co { display: flex; flex-direction: column; }
  .co-right { order: -1; width: 100%; }
  .co-left { width: 100%; }

  /* drawer: no blur needed on mobile (bg is 97% opaque anyway) + bigger tap targets */
  .cart-drawer { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: #fbfbfa; }
  .cd-qty button { width: 34px; height: 34px; }
  .cd-remove { padding: 6px 8px; }
  .cd-close { padding: 8px 12px; }
}

@media (max-width: 700px) {
  /* cart rows: 5 columns don't fit a phone — restack into two rows
     (image + name on top, controls underneath) */
  .cart-row { grid-template-columns: 64px 1fr auto; grid-template-areas: "img name remove" "img qty line"; row-gap: 10px; padding: 16px 14px; }
  .cart-row img { grid-area: img; width: 64px; height: 64px; }
  .cart-name { grid-area: name; font-size: .9rem; }
  .cart-row .qty { grid-area: qty; justify-self: start; }
  .cart-row .qty button { width: 36px; height: 40px; }
  .cart-line { grid-area: line; justify-self: end; }
  .cart-remove { grid-area: remove; justify-self: end; }
}

/* mobile bug fixes (found in visual audit):
   1. the perf block repaints all .card white — that made the dark
      "See the entire collection" card white-on-white (invisible) on phones
   2. the decorative twine overhang spans the whole viewport on narrow screens */
@media (max-width: 900px) {
  .card-all { background: var(--ink) !important; }
  .card-all:hover { background: #26231f !important; }
}

/* contact card links — ink, not browser blue */
.co-summary a { color: var(--ink); text-decoration-color: var(--line); text-underline-offset: 3px; }
.co-summary a:hover { text-decoration-color: var(--ink); }

/* ===== design upgrades: specs, reassurance, row thumbs, 4-col footer ===== */
.spec-row{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);border-radius:2px;margin:22px 0 4px;background:rgba(255,255,255,.55)}
.spec{flex:1 1 auto;min-width:110px;padding:14px 18px;border-right:1px solid var(--line)}
.spec:last-child{border-right:none}
.spec-k{display:block;font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;margin-bottom:5px}
.spec-v{font-family:var(--serif);font-size:1.02rem}
.assure{margin-top:16px;font-size:.78rem;color:var(--ink-soft);font-weight:300;letter-spacing:.02em}

.row-thumb{width:64px;height:64px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:2px}
@media(max-width:760px){.row-thumb{width:48px;height:48px}.row-meta span{display:none}}

.foot{grid-template-columns:2fr 1fr 1fr 1fr}
@media(max-width:760px){.foot{grid-template-columns:1fr}} /* single column — the compact footer block above styles the rest */

/* ===== desktop balance pass (2026-07-02 visual audit) ===== */
/* twine reads as a ribbon across the card, not a stray line floating in space */
.note-card{overflow:hidden}
/* dark corporate band: trim the tall padding that left dead space under the copy */
.band-inner{padding:clamp(48px,6vw,84px) clamp(30px,6vw,90px)}
/* cart shouldn't stretch rows across the full 1500px shell */
#cartView .cart-list,#cartView .cart-foot{max-width:1020px}
/* breathing room between the spec row and whatever follows it */
.spec-row{margin:24px 0 28px}

/* ===== product media column (was awkward: small photos swam in a big slab) ===== */
/* fill the frame — Square photos vary in size; a consistent fill beats a
   variable-size photo floating in whitespace (mild upscale is invisible next
   to the layout win) */
.product-img img{width:100%;height:100%;object-fit:contain;min-width:0;min-height:0}
/* the frame shouldn't outgrow the photo column's natural proportions */
.product-media{max-width:580px}
/* keep the image in view while the details column scrolls (desktop only) */
@media (min-width: 901px){
  .product-media{position:sticky;top:110px}
}

/* sold-by-weight labeling */
.per-unit{font-size:.8em;color:var(--ink-soft);font-weight:400}
.qty-u{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);padding-right:12px;margin-left:-4px}


/* press link in the featured-at strip — ink with a quiet underline, not browser blue */
.fa-link{color:var(--ink);text-decoration-color:var(--line);text-underline-offset:4px}
.fa-link:hover{text-decoration-color:var(--ink)}

/* ===== launch content pass (2026-07-21): trust lines, Michael Aram note, mailing list ===== */
/* trust line inside the dark corporate band (homepage) */
.band-inner .band-trust{margin-top:18px;font-family:var(--serif);font-style:italic;font-size:1.02rem;color:rgba(251,251,250,.82);max-width:46ch}
/* standalone centered trust strip (corporate page) */
.trust-strip{max-width:1500px;margin:0 auto;padding:clamp(10px,2vw,24px) clamp(24px,5vw,64px) clamp(30px,4vw,54px);text-align:center}
.trust-strip p{font-family:var(--serif);font-weight:300;font-size:clamp(1.25rem,2.4vw,1.9rem);letter-spacing:-.01em;color:var(--ink);line-height:1.4}
.trust-strip p em{font-style:italic}
/* one-line context under a category row title (e.g. Michael Aram) */
.row-note{display:block;font-family:var(--serif);font-style:italic;font-size:clamp(.85rem,1.4vw,1rem);color:var(--ink-soft);font-weight:300;margin-top:8px;letter-spacing:0}

/* mailing-list signup (pre-footer band, injected by site.js)
   NOTE mobile rules: translucent bg, NO backdrop-filter (compositor-only budget) */
.joinlist{border-top:1px solid var(--line);background:rgba(255,255,255,.5);padding:0}
/* padding:0 above kills the generic `section` padding (64–100px) that was
   stacking on top of .jl-inner's own — the band read as a full page of air */
.jl-inner{max-width:1500px;margin:0 auto;padding:clamp(20px,2.6vw,30px) clamp(24px,5vw,64px);display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(24px,4vw,56px);align-items:center}
.jl-copy h2{font-family:var(--serif);font-weight:300;font-size:clamp(1.25rem,1.9vw,1.6rem);letter-spacing:-.02em;line-height:1.1}
.jl-copy h2 em{font-style:italic}
.jl-copy p{color:var(--ink-soft);font-weight:300;line-height:1.6;font-size:.88rem;margin-top:5px;max-width:52ch}
.jl-form{display:flex;gap:12px;flex-wrap:wrap}
.jl-input{flex:1 1 240px;min-width:0;border:1px solid var(--line);background:var(--card);padding:0 16px;height:46px;font-family:var(--sans);font-size:16px;color:var(--ink);border-radius:2px;-webkit-appearance:none;appearance:none}
.jl-input::placeholder{color:var(--ink-soft);font-style:italic;font-family:var(--serif)}
.jl-input:focus{outline:none;border-color:var(--ink)}
.jl-form .btn{height:46px;display:inline-flex;align-items:center;padding-top:0;padding-bottom:0}
.jl-msg{flex-basis:100%;font-size:.85rem;color:var(--ink-soft);min-height:0}
.jl-msg:empty{display:none} /* don't reserve a blank line under the form */
.jl-msg.err{color:#a33}
@media(max-width:820px){.jl-inner{grid-template-columns:1fr;gap:16px}}

/* footer Visit column (2026-07-31 polish): the hours <span> had no size rule so
   it rendered at body size (16px, weight 300) next to the .88rem/400 links —
   one type spec for everything in the column, same rhythm as Shop/Company,
   no added height */
.foot > div:last-child a,
.foot > div:last-child span{font-family:var(--sans);font-size:.88rem;font-weight:400;line-height:1.55;color:var(--ink-soft)}
/* !important beats the legacy inline style baked into all 10 page footers */
.foot > div:last-child span{font-weight:400 !important}
.foot > div:last-child a:hover{color:var(--ink)}
.foot > div:last-child li{margin-bottom:8px}
.foot > div:last-child li:first-child{margin-bottom:10px} /* air after the two-line address */

/* ===== iOS double-tap-zoom fix (2026-08-02, broadened same day) =====
   A quick double-tap on a product card made iOS zoom in before navigating, so
   the product page opened zoomed. touch-action does NOT inherit — the tap
   lands on the img/text INSIDE the link, so interactive elements AND all
   their descendants need the rule. manipulation only disables double-tap
   zoom; pinch-zoom and scrolling are unaffected. */
a, a *, button, button *, select, input, textarea, label,
.card, .card *, .pill, .qty *, .cd-qty *, .co-tab, .co-tab * { touch-action: manipulation; }


/* ===== MOBILE PRODUCT IMAGE — bulletproof construction (2026-08-02, build 8) =====
   Every clever layout feature stripped on mobile: no flex, no aspect-ratio,
   no height:100%. A plain block img at width:100%/height:auto cannot render
   wider than its container in any engine. Desktop keeps the square frame. */
@media (max-width: 900px) {
  .product-img { display: block !important; aspect-ratio: auto !important; height: auto !important; padding: 18px !important; }
  .product-img img { display: block !important; width: 100% !important; height: auto !important;
                     max-width: 100% !important; min-width: 0 !important; object-fit: initial !important; }
}

