/* ============================================================
   Butter Prints v8 "Print Shop", 14 Sep 2026 (round 2).
   BouncePark v2 energy, Butter Prints identity: logo palette (butter,
   wine, taupe), squeegee headline, stitched ribbon, swing tags, ink
   picker, swatch steps, taped pinboard, job tickets, butter drip.
   ============================================================ */
:root{
  --bg:#FDFAF1; --paper:#FFFDF8; --surface:#FFFFFF; --ink:#2A1720; --muted:#6B5A61;
  --accent:#7B1841; --accent-deep:#5C0F30; --butter:#F4D54A; --butter-soft:#FFF3C4;
  --taupe:#A88F76; --line:#ECE3D2; --soft:#F6EFDF; --soft-2:#FBF3DC; --kraft:#F2E8D2; --wa:#25D366;
  --s0:#F4D54A; --s1:#C4577A; --s2:#A88F76; --s3:#E8875C; --s4:#6C7FB0; --s5:#E2B400; --s6:#F2A7B8;
  --radius:22px;
  --shadow-sm:0 2px 10px rgba(42,23,32,.06);
  --shadow-md:0 14px 34px -12px rgba(42,23,32,.18);
  --shadow-lg:0 28px 60px -18px rgba(42,23,32,.28);
  --font-display:"Bricolage Grotesque",system-ui,sans-serif; --font-body:"Manrope",system-ui,sans-serif; --font-hand:"Caveat",cursive;
  --spring:cubic-bezier(.34,1.56,.64,1);
  --brush:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M4 15C45 8 95 6 135 10S182 15 196 9' stroke='%23F4D54A' stroke-width='11' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  --brush-pink:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M4 15C45 8 95 6 135 10S182 15 196 9' stroke='%23C4577A' stroke-width='11' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:clip}
body{margin:0;font-family:var(--font-body);font-size:16.5px;line-height:1.6;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;overflow-x:clip}
main{display:block;overflow-x:clip}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,.ip-h{font-family:var(--font-display);font-weight:700;letter-spacing:-.025em;line-height:1.1;margin:0;color:var(--ink)}
h2{font-size:clamp(2rem,3.8vw,3rem)}
h3{font-size:1.15rem;letter-spacing:-.015em}
p{margin:0}
.wrap{width:min(1200px,100% - 44px);margin-inline:auto}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;z-index:200}
.skip:focus{left:12px}
:focus-visible{outline:3px solid rgba(123,24,65,.4);outline-offset:3px}

/* ---------- print shop ornaments ---------- */
.halftone{position:absolute;inset:0;pointer-events:none;z-index:0;background-image:radial-gradient(var(--dot,rgba(123,24,65,.13)) 1.3px,transparent 1.8px);background-size:13px 13px;-webkit-mask-image:radial-gradient(ellipse 60% 70% at 100% 0,#000 0,transparent 70%);mask-image:radial-gradient(ellipse 60% 70% at 100% 0,#000 0,transparent 70%)}
.reg{position:absolute;width:30px;height:30px;color:rgba(123,24,65,.3);pointer-events:none;z-index:1}
.swatches{position:absolute;display:flex;gap:4px;pointer-events:none;z-index:1}
.swatches i{width:13px;height:13px;border-radius:3px}
.swatches i:nth-child(1){background:var(--butter)}.swatches i:nth-child(2){background:var(--accent)}.swatches i:nth-child(3){background:var(--taupe)}.swatches i:nth-child(4){background:var(--ink)}
.note-hand{font-family:var(--font-hand);font-weight:700;font-size:1.5rem;line-height:1.1;color:var(--accent);display:inline-block;rotate:-3deg}
.woven{display:inline-flex;align-items:center;gap:8px;background:var(--accent);color:var(--butter);font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:8px 13px;border-radius:4px;outline:1.5px dashed rgba(244,213,74,.6);outline-offset:-5px;box-shadow:0 6px 14px -8px rgba(92,15,48,.6)}
.tape{position:absolute;top:-13px;left:50%;width:92px;height:28px;margin-left:-46px;background:rgba(244,213,74,.72);rotate:-4deg;z-index:3;box-shadow:0 1px 2px rgba(0,0,0,.08)}

/* ---------- type helpers ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:.78rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
.eyebrow::before{content:"";width:26px;border-top:2px dashed currentColor}
.eyebrow-light{color:var(--butter)}
.hl{position:relative;color:var(--accent);z-index:0;white-space:nowrap}
.hl::after{content:"";position:absolute;left:-3%;right:-3%;bottom:-.04em;height:.42em;background:var(--brush) center/100% 100% no-repeat;z-index:-1}
.head{max-width:680px}
.head.center{margin:0 auto;text-align:center}
.head .sub{color:var(--muted);margin-top:14px;font-size:1.03rem}
.head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}
.head-row .note-hand{margin-bottom:10px}
.head-row.sm{margin:44px 0 18px;align-items:center}
.head-row.sm h2{font-size:1.55rem}
.more{font-weight:800;font-size:.9rem;color:var(--accent)}
.more:hover{text-decoration:underline}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--font-body);font-weight:700;font-size:.95rem;padding:12px 22px;border-radius:999px;border:2px solid transparent;cursor:pointer;white-space:nowrap;transition:translate .25s ease,box-shadow .25s ease,background .25s ease,color .25s ease,border-color .25s ease}
.btn-lg{padding:15px 28px;font-size:1rem}
.btn-block{width:100%}
.btn-primary{background:var(--accent);color:#fff;box-shadow:0 4px 0 var(--accent-deep),0 12px 22px -10px rgba(123,24,65,.55)}
.btn-primary:hover{translate:0 -2px;box-shadow:0 6px 0 var(--accent-deep),0 16px 26px -10px rgba(123,24,65,.6)}
.btn-primary:active{translate:0 2px;box-shadow:0 1px 0 var(--accent-deep)}
.btn-ghost{background:#fff;color:var(--ink);border-color:var(--line)}
.btn-ghost:hover{border-color:var(--ink);translate:0 -2px}
.btn-outline{background:transparent;color:var(--ink);border-color:#D9CDB6}
.btn-outline:hover{border-color:var(--ink);background:var(--ink);color:#fff}
.btn-ink{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn-ink:hover{background:var(--ink);color:#fff;translate:0 -2px}

/* ---------- strip + header ---------- */
.strip{background:var(--accent);color:#fff;font-size:.8rem;font-weight:700}
.strip-in{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:6px 0;padding:8px 0}
.strip span{display:inline-flex;align-items:center;gap:6px}
.strip span+span::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--butter);margin:0 16px}
.site-header{position:sticky;top:0;z-index:100;background:rgba(253,250,241,.94);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:2px dashed transparent;transition:border-color .3s}
.site-header.scrolled{border-bottom-color:rgba(123,24,65,.18)}
.nav-wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;height:76px}
.logo img{height:44px;width:auto}
.nav-links{display:flex;align-items:center;gap:24px}
.nav-links>a:not(.btn){position:relative;font-size:.93rem;font-weight:700;color:var(--ink);z-index:0}
.nav-links>a:not(.btn)::after{content:"";position:absolute;left:-4px;right:-4px;bottom:-2px;height:.55em;background:var(--brush) center/100% 100% no-repeat;z-index:-1;scale:0 1;transform-origin:left;transition:scale .3s ease}
.nav-links>a:not(.btn):hover::after{scale:1 1}
.nav-phone{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.nav-cta{padding:10px 20px;font-size:.9rem}
.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:12px;cursor:pointer}
.nav-toggle span{display:block;height:2px;width:100%;background:var(--ink);border-radius:2px;transition:transform .3s,opacity .3s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;padding-top:clamp(34px,4.5vw,64px);display:flex;flex-direction:column}
.s-hero{left:24px;top:22px}
.hero-top{position:relative;z-index:2;display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(30px,5vw,72px);align-items:center}
.hero h1{font-size:clamp(2.8rem,5.6vw,4.9rem);line-height:1.02;letter-spacing:-.04em;margin-top:22px}
.h1-line{display:block}
.rotator{display:grid;height:1.16em;margin-top:.02em;color:var(--accent)}
.rw{grid-area:1/1;justify-self:start;position:relative;opacity:0;white-space:nowrap}
.rw.on{opacity:1}
.ink{position:relative;display:inline-block;z-index:0;padding-right:.08em}
.ink::after{content:"";position:absolute;left:-2%;right:-2%;bottom:.02em;height:.36em;background:var(--brush) center/100% 100% no-repeat;z-index:-1}
.rotator.anim .rw.on .ink{animation:pull .8s cubic-bezier(.65,0,.25,1) both}
.rw::before{content:"";position:absolute;top:.1em;bottom:0;left:0;width:.11em;border-radius:.06em;background:var(--ink);opacity:0;z-index:2;pointer-events:none}
.rotator.anim .rw.on::before{animation:squeegee .8s cubic-bezier(.65,0,.25,1) both}
@keyframes pull{from{clip-path:inset(-20% 100% -20% 0)}to{clip-path:inset(-20% -8% -20% 0)}}
@keyframes squeegee{0%{left:-.12em;opacity:1}85%{opacity:1}100%{left:100%;opacity:0}}
.hero .lede{max-width:540px;margin:20px 0 28px;font-size:1.08rem;color:var(--muted)}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:22px}
.hero-trust{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.92rem;color:var(--muted)}
.hero-trust strong{color:var(--ink)}
.hero-trust .dot{width:4px;height:4px;border-radius:50%;background:#CDBFA8;margin:0 4px}

/* quote ticket */
.ticket-wrap{position:relative;padding-top:26px}
.tk-note{position:absolute;top:-4px;left:4px;z-index:3}
.ticket{position:relative;background:var(--paper);border-radius:22px;padding:30px 26px 0;box-shadow:var(--shadow-lg),0 0 0 1px var(--line);rotate:1.5deg;display:grid;gap:16px;overflow:hidden}
.ticket::before{content:"";position:absolute;left:0;right:0;top:0;height:9px;background:repeating-linear-gradient(90deg,var(--butter) 0 34px,var(--accent) 34px 68px,var(--taupe) 68px 102px,var(--ink) 102px 136px)}
.r-tk{top:20px;right:20px;width:26px;height:26px}
.tk-kicker{font-size:.7rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.ticket h2{font-size:1.6rem;margin-top:2px}
.ticket fieldset{border:0;margin:0;padding:0;min-width:0}
.ticket legend{font-size:.85rem;font-weight:800;margin-bottom:8px;padding:0}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip-opt{position:relative}
.chip-opt input{position:absolute;opacity:0;width:1px;height:1px}
.chip-opt span{display:inline-block;font-size:.86rem;font-weight:700;padding:7px 14px;border-radius:999px;border:1.5px solid var(--line);background:#fff;cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.chip-opt span:hover{border-color:var(--accent)}
.chip-opt input:checked+span{background:var(--accent);border-color:var(--accent);color:#fff}
.chip-opt input:focus-visible+span{outline:3px solid rgba(123,24,65,.4);outline-offset:2px}
.tk-field{display:grid;gap:6px;font-size:.85rem;font-weight:800}
.tk-field input{font:inherit;font-weight:500;font-size:.95rem;color:var(--ink);border:1.5px solid var(--line);border-radius:12px;padding:11px 13px;background:var(--bg)}
.tk-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(123,24,65,.1)}
.tk-stub{position:relative;margin:6px -26px 0;padding:14px 26px 16px;border-top:2px dashed var(--line);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.8rem;font-weight:700;color:var(--muted)}
.tk-stub::before,.tk-stub::after{content:"";position:absolute;top:-12px;width:22px;height:22px;border-radius:50%;background:var(--bg);box-shadow:inset 0 0 0 1px var(--line)}
.tk-stub::before{left:-11px}.tk-stub::after{right:-11px}

/* clothesline */
.line{position:relative;z-index:1;margin-top:clamp(40px,5vw,66px);padding-top:18px;overflow:hidden}
.line::before{content:"";position:absolute;left:0;right:0;top:27px;height:3px;background:linear-gradient(#BCA88E,#8E7860);box-shadow:0 2px 3px rgba(42,23,32,.15);z-index:2}
.line-track{display:flex;align-items:flex-start;gap:28px;padding:0 14px 44px;width:max-content;animation:slide 95s linear infinite}
.line:hover .line-track{animation-play-state:paused}
@keyframes slide{to{transform:translateX(-50%)}}
.hang{position:relative;flex:none;margin:22px 0 0;width:212px;background:#fff;padding:9px 9px 0;border-radius:5px;box-shadow:0 18px 30px -18px rgba(42,23,32,.45);transform-origin:50% -12px;rotate:-2deg;transition:rotate .5s var(--spring),translate .5s var(--spring)}
.hang.h1{width:178px;rotate:2deg}
.hang.h2{width:236px;rotate:-1deg}
.hang.h3{width:192px;rotate:1.5deg}
.hang:nth-child(3n){animation:sway 5.5s ease-in-out infinite alternate}
@keyframes sway{from{rotate:-2.5deg}to{rotate:2deg}}
.hang:hover{rotate:0deg;translate:0 -5px;animation-play-state:paused}
.hang img{width:100%;aspect-ratio:1/1.05;object-fit:cover;border-radius:3px;background:var(--soft)}
.hang.h1 img{aspect-ratio:4/5}
.hang.h2 img{aspect-ratio:4/3}
.hang figcaption{font-family:var(--font-hand);font-weight:700;font-size:1.18rem;line-height:1.1;padding:8px 4px 10px;text-align:center}
.peg{position:absolute;top:-21px;left:50%;width:12px;height:34px;margin-left:-6px;border-radius:3px;background:linear-gradient(90deg,#C4A374,#E6CDA2 45%,#B38E5E);box-shadow:0 2px 3px rgba(0,0,0,.2);z-index:3}
.peg::after{content:"";position:absolute;left:2px;right:2px;top:14px;height:4px;border-radius:2px;background:#8A6B44}

/* ---------- stitched ribbon ---------- */
.ribbon{position:relative;z-index:3;background:var(--butter);color:var(--accent);rotate:-1deg;scale:1.03 1;overflow:hidden;box-shadow:0 12px 24px -16px rgba(42,23,32,.4)}
.ribbon::before,.ribbon::after{content:"";position:absolute;left:0;right:0;border-top:2px dashed rgba(123,24,65,.45);z-index:1}
.ribbon::before{top:7px}.ribbon::after{bottom:7px}
.ribbon-track{display:flex;width:max-content;animation:slide 42s linear infinite;padding:18px 0}
.ribbon-group{display:flex;align-items:center;gap:22px;padding-right:22px;font-family:var(--font-display);font-weight:700;font-size:1.08rem;white-space:nowrap}
.sewbtn{width:18px;height:18px;color:var(--accent);flex:none}

/* ---------- client logo wall ---------- */
.clients{padding:76px 0 16px;overflow:hidden}
.clients-head{text-align:center;margin-bottom:32px}
.clients-head .eyebrow{justify-content:center}
.clients-head h2{font-size:clamp(1.8rem,3.2vw,2.5rem)}
.logo-rows{display:grid;gap:16px}
.logo-row{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.logo-track{display:flex;gap:16px;width:max-content;padding:8px 8px 10px;animation:slide 64s linear infinite}
.logo-row.rev .logo-track{animation-direction:reverse;animation-duration:74s}
.logo-row:hover .logo-track{animation-play-state:paused}
.logo-tile{flex:none;margin:0;width:196px;height:100px;display:grid;place-items:center;padding:18px 24px;background:#fff;border-radius:16px;box-shadow:var(--shadow-sm);outline:1.5px dashed #E4D9C4;outline-offset:-6px;transition:translate .3s var(--spring),box-shadow .3s}
.logo-tile:hover{translate:0 -3px;box-shadow:var(--shadow-md)}
.logo-tile img{max-width:100%;max-height:60px;width:auto;height:auto;object-fit:contain}
.clients-list{text-align:center;font-size:.86rem;color:var(--muted);margin-top:22px;max-width:920px}

/* ---------- swing tags ---------- */
.tags-sec{padding:64px 0 10px}
.trustbar{text-align:center;margin-bottom:56px}
.trustbar-label{font-size:.78rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.marks{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(18px,3.2vw,44px);margin-top:24px}
.marks img{height:clamp(30px,3.4vw,42px);width:auto;max-width:150px;object-fit:contain;filter:grayscale(1);opacity:.72;transition:filter .3s,opacity .3s}
.marks img:hover{filter:none;opacity:1}
.tags{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,4vw,64px);max-width:980px;margin:0 auto;padding-top:4px}
.tags::before{content:"";position:absolute;left:-3%;right:-3%;top:0;height:7px;border-radius:7px;background:linear-gradient(#C4AD90,#8E7860);box-shadow:0 3px 6px rgba(42,23,32,.2)}
.tag{position:relative;display:flex;justify-content:center;padding-top:var(--drop,40px);filter:drop-shadow(0 16px 18px rgba(42,23,32,.14))}
.tag::before{content:"";position:absolute;top:5px;left:50%;width:2px;margin-left:-1px;height:calc(var(--drop,40px) + 16px);background:#8E7860}
.tag-body{position:relative;width:min(100%,290px);padding:46px 22px 28px;text-align:center;background:var(--tb,#fff);color:var(--tc,var(--ink));clip-path:polygon(20% 0,80% 0,100% 15%,100% 100%,0 100%,0 15%);border-radius:0 0 16px 16px;rotate:var(--tr,0deg);transform-origin:50% 0;transition:rotate .7s var(--spring)}
.tag:hover .tag-body{rotate:calc(var(--tr,0deg) * -1)}
.tag-body::before{content:"";position:absolute;top:13px;left:50%;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:var(--bg);box-shadow:inset 0 1px 3px rgba(0,0,0,.3)}
.tag-body::after{content:"";position:absolute;inset:36px 9px 9px;border:1.5px dashed currentColor;border-radius:0 0 10px 10px;opacity:.22}
.tag-body b{display:block;font-family:var(--font-display);font-size:clamp(2.2rem,4vw,3.1rem);line-height:1;letter-spacing:-.03em}
.tag-body b small{font-size:.4em;letter-spacing:0;margin-left:2px}
.tag-body span{display:block;margin-top:8px;font-size:.92rem;font-weight:600}

/* ---------- what we wear ---------- */
.wear-sec{padding:84px 0 20px}
.wear-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:250px;gap:18px;margin-top:40px}
.wear{position:relative;border-radius:24px;overflow:hidden;box-shadow:var(--shadow-md);isolation:isolate;background:var(--soft);transition:translate .45s var(--spring),box-shadow .45s}
.wear:hover{translate:0 -6px;box-shadow:var(--shadow-lg)}
.wear.big{grid-column:span 2;grid-row:span 2}
.wear img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:scale .7s cubic-bezier(.22,.61,.36,1)}
.wear:hover img{scale:1.05}
.wear::after{content:"";position:absolute;inset:10px;border:2px dashed rgba(255,255,255,0);border-radius:16px;transition:border-color .3s;pointer-events:none;z-index:3}
.wear:hover::after{border-color:rgba(255,255,255,.75)}
.wear .woven{position:absolute;top:18px;left:18px;z-index:2}
.wear-tx{position:absolute;left:0;right:0;bottom:0;z-index:1;padding:64px 20px 18px;background:linear-gradient(transparent,rgba(30,12,21,.9))}
.wear-tx h3{color:#fff;font-size:1.25rem}
.wear.big .wear-tx{padding:110px 28px 28px}
.wear.big h3{font-size:clamp(1.6rem,2.6vw,2.2rem)}
.wear-tx p{font-size:.93rem;color:rgba(255,255,255,.9);margin-top:6px;max-width:440px}
.wear-price{display:inline-block;margin-top:8px;font-size:.86rem;font-weight:800;color:var(--butter)}
.plus{margin-top:28px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.plus-label{font-family:var(--font-hand);font-weight:700;font-size:1.35rem;color:var(--accent);margin-right:6px}
.plus a{font-size:.86rem;font-weight:800;background:#fff;border:1.5px dashed #D9CDB6;padding:9px 18px;border-radius:999px;transition:border-color .25s,color .25s,translate .25s}
.plus a:hover{border-color:var(--accent);color:var(--accent);translate:0 -2px}

/* ---------- ink picker ---------- */
.ink-sec{position:relative;background:var(--accent-deep);color:#fff;padding:clamp(72px,8vw,108px) 0;margin-top:72px;overflow:hidden}
.ink-sec .halftone{--dot:rgba(244,213,74,.2);-webkit-mask-image:radial-gradient(ellipse 55% 80% at 0 100%,#000 0,transparent 70%);mask-image:radial-gradient(ellipse 55% 80% at 0 100%,#000 0,transparent 70%)}
.ink-sec h2{color:#fff}
.ink-sec .hl{color:var(--butter)}
.ink-sec .hl::after{background-image:var(--brush-pink);opacity:.7}
.ink-grid{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,72px);align-items:center}
.ink-sec .sub{color:rgba(255,255,255,.82);margin-top:14px;max-width:520px}
.ink-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}
.ink-tab{display:inline-flex;align-items:center;gap:9px;font:inherit;font-size:.9rem;font-weight:700;color:#fff;background:rgba(255,255,255,.07);border:1.5px solid rgba(255,255,255,.2);padding:8px 16px 8px 8px;border-radius:999px;cursor:pointer;transition:background .2s,color .2s,border-color .2s,translate .2s}
.ink-tab .sw{width:22px;height:22px;border-radius:50%;background:var(--sw);box-shadow:inset 0 -3px 0 rgba(0,0,0,.2)}
.ink-tab:hover{background:rgba(255,255,255,.15);translate:0 -2px}
.ink-tab.on{background:#fff;color:var(--ink);border-color:#fff}
.ink-more{display:inline-flex;align-items:center;gap:8px;margin-top:26px;font-weight:800;color:var(--butter)}
.ink-more:hover{text-decoration:underline}
.ink-panel{position:relative;background:var(--paper);color:var(--ink);border-radius:26px;padding:clamp(26px,3.5vw,42px);box-shadow:0 30px 60px -24px rgba(0,0,0,.45);overflow:hidden;isolation:isolate}
.ink-panel::before{content:"";position:absolute;right:-70px;top:-70px;width:190px;height:190px;border-radius:50%;background:var(--sw);z-index:-1;box-shadow:-18px 30px 0 -52px var(--sw)}
.ink-panel::after{content:"";position:absolute;right:108px;top:26px;width:16px;height:16px;border-radius:50%;background:var(--sw);opacity:.75;z-index:-1}
.js .ink-panels .ink-panel:not(.on){display:none}
.ink-panels .ink-panel+.ink-panel{margin-top:16px}
.js .ink-panels .ink-panel+.ink-panel{margin-top:0}
.ink-panels .ink-panel.on{animation:panelIn .5s var(--spring)}
@keyframes panelIn{from{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}
.ip-icon{width:66px;height:66px;border-radius:18px;background:var(--soft);display:grid;place-items:center;color:var(--accent);margin-bottom:18px}
.ip-icon svg{width:38px;height:38px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ip-num{font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.ink-panel .ip-h{font-size:clamp(1.6rem,2.8vw,2.2rem);margin:6px 0 12px}
.ink-panel p{color:var(--muted);font-size:1rem}
.ip-best{margin-top:22px;background:var(--butter-soft);border-radius:14px;padding:12px 16px;font-weight:700}
.ip-best small{display:block;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:800}
.ip-link{display:inline-block;margin-top:18px;font-weight:800;color:var(--accent)}

/* ---------- swatch steps ---------- */
.how{padding:96px 0 30px}
.swatch-steps{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:44px}
.thread{position:absolute;left:6%;top:46px;width:88%;height:70px;z-index:0;fill:none;stroke:var(--taupe);stroke-width:2.5;stroke-dasharray:9 9}
.swatch{position:relative;z-index:1;background:#fff;border-radius:18px;overflow:hidden;box-shadow:var(--shadow-md);border:1px solid var(--line);transition:translate .45s var(--spring),rotate .45s var(--spring)}
.swatch:hover{translate:0 -6px;rotate:-.8deg}
.sw-top{background:var(--sc);color:var(--st);height:136px;padding:18px 20px;display:flex;flex-direction:column;justify-content:space-between}
.sw-top b{font-family:var(--font-display);font-size:3.4rem;line-height:1;letter-spacing:-.04em}
.sw-code{font-size:.72rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.sw-body{padding:20px 22px 24px}
.sw-body h3{margin-bottom:8px}
.sw-body p{color:var(--muted);font-size:.94rem}

/* ---------- pinboard ---------- */
.board{position:relative;background:var(--kraft);padding:clamp(70px,8vw,104px) 0;margin-top:84px;overflow:hidden}
.board .halftone{--dot:rgba(123,24,65,.1);-webkit-mask-image:radial-gradient(ellipse 60% 70% at 0 0,#000 0,transparent 70%);mask-image:radial-gradient(ellipse 60% 70% at 0 0,#000 0,transparent 70%)}
.board .wrap{position:relative;z-index:2}
.board-page{margin-top:10px}
.pin-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:34px 26px;margin-top:50px}
.board-page .pin-grid{margin-top:10px}
.pin-card{position:relative;display:block;margin:0;background:#fff;padding:10px 10px 16px;border-radius:5px;box-shadow:0 18px 34px -18px rgba(42,23,32,.45);rotate:var(--pr,0deg);transition:rotate .5s var(--spring),translate .5s var(--spring)}
.pin:nth-child(4n+1){--pr:-2deg}.pin:nth-child(4n+2){--pr:1.5deg}.pin:nth-child(4n+3){--pr:-1deg}.pin:nth-child(4n){--pr:2.2deg}
.pin-card:hover{rotate:0deg;translate:0 -6px}
.pin:nth-child(even) .tape{rotate:5deg;background:rgba(196,87,122,.4)}
.pin-card img{width:100%;aspect-ratio:4/3.3;object-fit:cover;border-radius:3px;background:var(--soft)}
.pin-card h3{font-size:1.02rem;margin:12px 4px 4px}
.pin-card p{font-size:.85rem;color:var(--muted);margin:0 4px}
.pin-note{grid-column:span 2}
.pin-note .pin-card{height:100%;background:var(--butter-soft);padding:30px 30px 26px;display:flex;flex-direction:column;justify-content:center}
.pin-note h3{font-family:var(--font-hand);font-weight:700;font-size:2.2rem;letter-spacing:0;color:var(--accent);margin:0 0 8px}
.pin-note p{font-size:.95rem;margin:0 0 14px;max-width:420px}
.pin-link{font-weight:800;color:var(--accent)}

/* ---------- product rail + cards ---------- */
.rail-sec{padding:90px 0 20px}
.rail-track{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;padding:34px max(22px,calc((100vw - 1200px)/2)) 30px;scroll-padding-inline:max(22px,calc((100vw - 1200px)/2));scrollbar-width:none}
.rail-track::-webkit-scrollbar{display:none}
.rail-track .pcard{flex:0 0 clamp(220px,22vw,270px);scroll-snap-align:start}
.rail-controls{display:flex;align-items:center;justify-content:center;gap:14px}
.rail-btn{width:44px;height:44px;display:grid;place-items:center;border:1.5px dashed #D9CDB6;border-radius:50%;background:#fff;color:var(--ink);cursor:pointer;font:inherit;font-size:1.5rem;line-height:1;transition:translate .2s,border-color .2s}
.rail-btn:hover{translate:0 -2px;border-color:var(--accent)}
.rail-hint{min-width:170px;text-align:center;font-size:.82rem;color:var(--muted)}
.pcard{background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;transition:translate .45s var(--spring),box-shadow .45s}
.pcard:hover{translate:0 -6px;box-shadow:var(--shadow-md)}
.pcard-im{position:relative;aspect-ratio:1;background:#fff;overflow:hidden;border-bottom:2px dashed var(--line)}
.pcard-im img{width:100%;height:100%;object-fit:contain;transition:scale .6s cubic-bezier(.22,.61,.36,1)}
.pcard:hover .pcard-im img{scale:1.05}
.ptag{position:absolute;top:14px;right:10px;background:var(--butter);color:var(--ink);font-family:var(--font-display);font-weight:800;font-size:.98rem;padding:6px 12px 6px 22px;clip-path:polygon(13px 0,100% 0,100% 100%,13px 100%,0 50%);rotate:5deg}
.ptag::before{content:"";position:absolute;left:9px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:#fff}
.ptag.big{position:relative;top:auto;right:auto;font-size:1.7rem;padding:8px 18px 8px 32px;clip-path:polygon(20px 0,100% 0,100% 100%,20px 100%,0 50%);rotate:-2deg}
.ptag.big::before{left:12px;width:9px;height:9px;margin-top:-4.5px}
.pcard-tx{padding:16px 18px 18px;display:flex;flex-direction:column;gap:5px;flex:1}
.pcard-brand{font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#7A6552}
.pcard h3{font-family:var(--font-body);font-size:.95rem;font-weight:700;letter-spacing:0;line-height:1.35}
.pcard-note{margin-top:auto;font-size:.76rem;color:var(--muted);font-weight:600}

/* ---------- reviews ---------- */
.reviews{position:relative;background:var(--soft-2);padding:clamp(72px,8vw,104px) 0;margin-top:70px}
.reviews-head{display:flex;align-items:center;justify-content:space-between;gap:26px;flex-wrap:wrap;margin-bottom:46px}
.stamp{position:relative;width:156px;height:156px;flex:none;border-radius:50%;border:3.5px solid var(--accent);display:grid;place-items:center;rotate:-10deg;color:var(--accent);background:rgba(255,255,255,.55);margin-right:10px}
.stamp::before{content:"";position:absolute;inset:7px;border-radius:50%;border:1.5px dashed rgba(123,24,65,.55)}
.stamp-in{display:grid;justify-items:center;text-align:center}
.stamp b{font-family:var(--font-display);font-size:2.8rem;line-height:1;letter-spacing:-.03em}
.stamp small{font-size:.64rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;line-height:1.2;margin-top:4px;max-width:96px}
.stars{display:inline-flex;gap:1px;margin-top:3px}
.star{width:15px;height:15px;fill:#E8A800}
.star.dim{fill:#E3D9C4}
.reviews-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.review{position:relative;margin:0;background:#fff;border-radius:4px 4px 20px 20px;padding:28px 22px 22px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;transition:translate .45s var(--spring),box-shadow .45s}
.review::before{content:"";position:absolute;left:0;right:0;top:-6px;height:12px;background:radial-gradient(circle at 8px 6px,var(--soft-2) 5px,transparent 5.5px) 0 0/16px 12px repeat-x}
.review:hover{translate:0 -5px;box-shadow:var(--shadow-md)}
.rv-label{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);border:1.5px solid rgba(123,24,65,.4);padding:4px 9px;border-radius:5px;rotate:-2deg;margin-bottom:12px}
.review blockquote{margin:10px 0 20px;font-size:.93rem;line-height:1.6}
.review figcaption{display:flex;align-items:center;gap:12px;margin-top:auto;padding-top:14px;border-top:2px dashed var(--line)}
.review figcaption img{width:40px;height:40px;border-radius:50%;object-fit:cover;background:var(--soft)}
.review figcaption strong{display:block;font-size:.92rem;text-transform:capitalize}
.review figcaption small{color:var(--muted);font-size:.78rem;font-weight:600}
.press{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:46px}
.clip{position:relative;display:block;background:var(--paper);padding:24px 26px 30px;box-shadow:var(--shadow-sm);rotate:-.8deg;transition:rotate .4s var(--spring),translate .4s var(--spring)}
.clip:nth-child(2){rotate:.8deg}
.clip:hover{rotate:0deg;translate:0 -4px}
.clip::after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:8px;background:conic-gradient(from 135deg at 50% 0,var(--paper) 90deg,transparent 0) 0 0/16px 8px repeat-x}
.clip-pub{display:flex;justify-content:space-between;gap:10px;font-size:.7rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);border-bottom:2px solid var(--ink);padding-bottom:9px}
.clip h3{font-size:1.25rem;margin:12px 0 8px}
.clip p{font-style:italic;color:var(--muted);font-size:.94rem}

/* ---------- faq ---------- */
.faq-sec{padding:96px 0 20px}
.faq-wrap{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(36px,5vw,70px);align-items:start}
.faq-side{position:sticky;top:110px}
.faq-note{margin-top:28px;background:var(--butter-soft);border-radius:var(--radius);padding:24px 26px 26px;display:flex;flex-direction:column;align-items:flex-start;border:2px dashed #EADB9C}
.faq-note .note-hand{margin-bottom:6px}
.faq-note p:not(.note-hand){color:var(--ink);font-size:.94rem;margin-bottom:18px}
.faq-note p a{color:var(--accent);font-weight:700}
.faq-item{border:1px solid var(--line);border-radius:18px;background:#fff;margin-bottom:12px;overflow:hidden;transition:border-color .25s,box-shadow .25s}
.faq-item[open]{border-color:rgba(123,24,65,.3);box-shadow:inset 5px 0 0 var(--butter),var(--shadow-sm)}
.faq-item summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;cursor:pointer;font-weight:700;font-size:1rem}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary i{position:relative;width:28px;height:28px;flex:none;border-radius:50%;background:var(--butter-soft);transition:background .25s,rotate .35s}
.faq-item summary i::before,.faq-item summary i::after{content:"";position:absolute;top:50%;left:50%;width:11px;height:2px;margin:-1px 0 0 -5.5px;background:var(--ink);border-radius:2px;transition:rotate .35s,background .25s}
.faq-item summary i::after{rotate:90deg}
.faq-item[open] summary i{background:var(--accent);rotate:180deg}
.faq-item[open] summary i::before,.faq-item[open] summary i::after{background:#fff}
.faq-item[open] summary i::after{rotate:0deg}
.faq-item p{padding:0 24px 22px;color:var(--muted);font-size:.95rem}
.faq-all{display:inline-flex;align-items:center;gap:8px;margin-top:8px;font-weight:800;color:var(--accent)}

/* ---------- final butter cta + drip ---------- */
.final{position:relative;z-index:4;background:var(--butter);text-align:center;padding:clamp(70px,9vw,110px) 0 clamp(44px,5vw,64px);margin-top:90px}
.final::before{content:"";position:absolute;left:0;right:0;top:10px;border-top:2px dashed rgba(123,24,65,.35)}
.r-f1{left:4%;top:34px;color:rgba(123,24,65,.35)}
.r-f2{right:5%;bottom:40px;color:rgba(123,24,65,.35)}
.final-in{position:relative;z-index:2}
.final .note-hand{font-size:1.8rem}
.final h2{font-size:clamp(2.3rem,5.2vw,4rem);color:var(--accent);text-shadow:3px 3px 0 rgba(168,143,118,.55);max-width:920px;margin:8px auto 18px;letter-spacing:-.035em}
.final-in>p:not(.note-hand):not(.final-meta){max-width:600px;margin:0 auto 30px;font-size:1.06rem}
.final-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.final-meta{margin-top:24px;font-size:.9rem}
.final-meta a{font-weight:700;text-decoration:underline}
.drip{position:absolute;left:0;top:calc(100% - 1px);width:100%;height:clamp(38px,6vw,82px);fill:var(--butter);pointer-events:none}

/* ---------- inner page hero ---------- */
.ph{position:relative;overflow:hidden;padding:clamp(40px,5vw,66px) 0 clamp(30px,4vw,50px)}
.r-ph{right:3%;bottom:26px}
.s-ph{left:22px;top:22px}
.ph-grid{position:relative;z-index:2;display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center}
.ph-grid.solo{grid-template-columns:1fr;max-width:840px}
.crumb{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;background:#fff;border-radius:999px;padding:8px 17px;margin-bottom:22px;box-shadow:var(--shadow-sm);outline:1.5px dashed #DCCFB8;outline-offset:-5px}
.crumb a{font-weight:700;font-size:.84rem;color:var(--muted)}
.crumb a:hover{color:var(--accent)}
.crumb .sep{color:#D6CBB6;font-weight:700}
.crumb .here{font-weight:700;font-size:.84rem;color:var(--accent)}
.ph h1{font-size:clamp(2.4rem,5vw,4.1rem);letter-spacing:-.04em;line-height:1.04}
.ph .hl{white-space:normal;background:var(--brush) 0 92%/100% .36em no-repeat;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.ph .hl::after{display:none}
.ph .lede{margin-top:18px;max-width:560px;font-size:1.06rem;color:var(--muted)}
.ph-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
.taped{position:relative;height:clamp(300px,30vw,410px)}
.tp{position:absolute;width:56%;margin:0;background:#fff;padding:10px 10px 0;border-radius:5px;box-shadow:var(--shadow-lg);transition:rotate .5s var(--spring)}
.tp-1{left:0;top:4%;rotate:-5deg}
.tp-2{right:0;top:30%;rotate:4deg}
.tp:hover{rotate:0deg}
.tp img{width:100%;aspect-ratio:4/3.3;object-fit:cover;border-radius:3px;background:var(--soft)}
.tp figcaption{font-family:var(--font-hand);font-weight:700;font-size:1.3rem;text-align:center;padding:6px 4px 10px}
.tp-2 .tape{rotate:6deg;background:rgba(196,87,122,.4)}
.tp-solo{position:relative;width:100%;rotate:-2.5deg;margin-top:14px}

/* ---------- lists ---------- */
.list-sec{padding:20px 0 30px}
.catnav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.catnav a{font-size:.86rem;font-weight:700;background:#fff;border:1.5px dashed #D9CDB6;padding:8px 16px;border-radius:999px;transition:border-color .2s,color .2s}
.catnav a span{color:var(--muted);font-weight:600;margin-left:3px}
.catnav a:hover{border-color:var(--accent);color:var(--accent)}
.catnav a.on{background:var(--accent);border:1.5px solid var(--accent);color:#fff}
.catnav a.on span{color:rgba(255,255,255,.8)}
.p-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:26px}
.head-row.sm+.p-grid{margin-top:0}

/* ---------- methods page ---------- */
.methods-page{padding:40px 0 20px}
.m-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.m-cards .ink-panel{box-shadow:var(--shadow-md);border:1px solid var(--line)}
.m-more{background:var(--butter-soft);border:2px dashed #EADB9C}
.m-more::before,.m-more::after{display:none}
.table-wrap{overflow-x:auto;margin-top:40px;background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-sm)}
.cmp{width:100%;border-collapse:collapse;font-size:.94rem}
.cmp caption{text-align:left;padding:18px 22px 6px;font-family:var(--font-display);font-weight:700;font-size:1.1rem}
.cmp th,.cmp td{text-align:left;padding:13px 22px;border-top:1px solid var(--line)}
.cmp thead th{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border-top:0}

/* ---------- product page ---------- */
.pd-sec{position:relative;overflow:hidden;padding:36px 0 50px}
.pd-sec .wrap{position:relative;z-index:2}
.pd{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,64px);align-items:start}
.gal-main{background:#fff;border-radius:24px;overflow:hidden;box-shadow:var(--shadow-md);aspect-ratio:1;border:1px solid var(--line)}
.gal-main img{width:100%;height:100%;object-fit:contain}
.thumbs{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.thumbs button{width:74px;height:74px;padding:0;border:2px dashed var(--line);border-radius:14px;overflow:hidden;background:#fff;cursor:pointer;transition:border-color .2s,translate .2s}
.thumbs button:hover{translate:0 -2px}
.thumbs button.on{border:2px solid var(--accent)}
.thumbs img{width:100%;height:100%;object-fit:contain}
.pd-info .woven{margin-bottom:16px}
.pd h1{font-size:clamp(1.8rem,3vw,2.5rem)}
.price{margin:20px 0 26px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.price>span:last-child{font-size:.88rem;color:var(--muted);font-weight:600}
.pd-cta{display:flex;gap:12px;flex-wrap:wrap}
.specs{margin:30px 0 0;background:#fff;border:1px solid var(--line);border-radius:20px;padding:6px 22px;box-shadow:var(--shadow-sm)}
.specs div{display:grid;grid-template-columns:130px 1fr;gap:14px;padding:13px 0;border-top:2px dashed var(--line)}
.specs div:first-child{border-top:0}
.specs dt{font-size:.76rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:2px}
.specs dd{margin:0;font-size:.94rem;font-weight:600}
.specs dd a{color:var(--accent)}
.desc{margin-top:24px}
.desc h2{font-size:1.15rem;margin-bottom:8px}
.desc p{color:var(--muted);font-size:.95rem}

/* ---------- about / quote ---------- */
.about{padding:56px 0 20px}
.about-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:clamp(30px,5vw,70px);align-items:start}
.prose h2{font-size:1.6rem;margin:30px 0 10px}
.prose h2:first-child{margin-top:0}
.prose p{color:var(--muted);font-size:1.03rem}
.about+.ribbon{margin-top:70px}
.quote-sec{padding:10px 0 40px}
.quote-grid{display:grid;grid-template-columns:1.4fr .6fr;gap:clamp(26px,4vw,50px);align-items:start}
.qform{position:relative;background:var(--paper);border-radius:26px;padding:clamp(26px,4vw,40px);padding-top:clamp(34px,4vw,48px);box-shadow:var(--shadow-lg),0 0 0 1px var(--line);display:grid;gap:16px;overflow:hidden}
.qform::before{content:"";position:absolute;left:0;right:0;top:0;height:9px;background:repeating-linear-gradient(90deg,var(--butter) 0 34px,var(--accent) 34px 68px,var(--taupe) 68px 102px,var(--ink) 102px 136px)}
.qform .row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.qform label{display:grid;gap:7px;font-size:.86rem;font-weight:700}
.qform input,.qform select,.qform textarea{font:inherit;font-weight:500;font-size:.96rem;color:var(--ink);background:var(--bg);border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;width:100%;transition:border-color .2s,box-shadow .2s}
.qform input:focus,.qform select:focus,.qform textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(123,24,65,.1)}
.qform textarea{min-height:110px;resize:vertical}
.qform .btn{justify-self:start}
.note{font-size:.84rem;color:var(--muted)}
.quote-side .faq-note{margin-top:0}

/* ---------- footer ---------- */
.site-footer{position:relative;background:var(--accent-deep);color:rgba(255,255,255,.82);padding:clamp(104px,11vw,146px) 0 0}
.ft-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:36px}
.ft-logo{display:inline-block;background:#fff;border-radius:16px;padding:10px 16px;rotate:-2deg}
.ft-logo img{height:40px;width:auto}
.ft-brand p{margin-top:18px;font-size:.92rem;max-width:340px}
.site-footer h4{font-family:var(--font-display);color:var(--butter);font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;margin:6px 0 16px}
.site-footer a{display:block;font-size:.9rem;padding:4px 0;transition:color .2s}
.site-footer a:hover{color:var(--butter)}
.site-footer .ft-logo{display:inline-block;padding:10px 16px}
.site-footer p{font-size:.9rem}
.ft-legal{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;border-top:2px dashed rgba(255,255,255,.18);margin-top:50px;padding:22px 0 28px;font-size:.8rem;color:rgba(255,255,255,.7)}

/* ---------- fab + sticky bar ---------- */
.wa-fab{position:fixed;right:20px;bottom:20px;z-index:90;width:60px;height:60px;border-radius:50%;background:var(--wa);display:grid;place-items:center;box-shadow:0 12px 28px -8px rgba(0,0,0,.35);transition:scale .3s var(--spring)}
.wa-fab:hover{scale:1.08}
.sticky-cta{display:none}

/* ---------- reveal (hidden only when JS runs; failsafe never animates) ---------- */
.js .rv{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .8s var(--spring)}
.js .rv.in{opacity:1;transform:none}
.rv-off .rv{opacity:1!important;transform:none!important;transition:none!important}
.js .tags .tag:nth-child(2),.js .swatch-steps .swatch:nth-of-type(2),.js .reviews-grid .review:nth-child(2),.js .pin:nth-child(4n+2){transition-delay:80ms}
.js .tags .tag:nth-child(3),.js .swatch-steps .swatch:nth-of-type(3),.js .reviews-grid .review:nth-child(3),.js .pin:nth-child(4n+3){transition-delay:160ms}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .nav-phone{display:none}
  .reviews-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:1020px){
  .wear-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:220px}
  .wear.big{grid-row:span 1}
  .pin-grid{grid-template-columns:repeat(3,1fr)}
  .pin-note{grid-column:span 3}
  .p-grid{grid-template-columns:repeat(3,1fr)}
  .ft-grid{grid-template-columns:1fr 1fr}
  .about-grid,.quote-grid{grid-template-columns:1fr}
  .tp-solo{max-width:420px}
  .ink-grid{grid-template-columns:1fr}
}
@media (max-width:900px){
  .nav-toggle{display:flex}
  .nav-links{position:fixed;top:112px;left:0;right:0;background:#fff;flex-direction:column;align-items:stretch;gap:4px;padding:18px 22px 24px;border-bottom:2px dashed var(--line);box-shadow:0 30px 40px -20px rgba(42,23,32,.25);transform:translateY(-12px);opacity:0;pointer-events:none;transition:transform .3s,opacity .3s}
  .site-header.scrolled .nav-links{top:76px}
  .nav-links.open{transform:none;opacity:1;pointer-events:auto}
  .nav-links>a:not(.btn){padding:12px 10px;font-size:1rem;border-radius:12px}
  .nav-links>a:not(.btn)::after{display:none}
  .nav-links>a:not(.btn):hover{background:var(--soft)}
  .nav-phone{display:inline-flex}
  .nav-cta{margin-top:10px}
  .hero-top{display:contents}
  .hero-copy,.ticket-wrap{width:min(1200px,100% - 44px);margin-inline:auto;position:relative;z-index:2}
  .hero-copy{order:1}
  .line{order:2}
  .ticket-wrap{order:3;max-width:560px;margin-top:10px}
  .ph-grid{grid-template-columns:1fr}
  .taped{height:300px;max-width:520px;width:100%;margin:0 auto}
  .faq-wrap{grid-template-columns:1fr}
  .faq-side{position:static}
  .pd{grid-template-columns:1fr}
  .m-cards{grid-template-columns:1fr}
}
@media (max-width:760px){
  body{font-size:16px}
  .strip span+span{display:none}
  .nav-wrap{height:66px}
  .nav-links{top:101px}
  .site-header.scrolled .nav-links{top:66px}
  .logo img{height:36px}
  .s-hero,.s-ph{display:none}
  .hero h1{font-size:clamp(2.4rem,11vw,3.1rem);margin-top:18px}
  .hero-cta .btn{width:100%}
  .ticket{rotate:0deg;padding:28px 18px 0}
  .tk-stub{margin:6px -18px 0;padding:14px 18px 16px}
  .line{margin-top:34px}
  .line-track{gap:18px;animation-duration:70s}
  .hang{width:150px}.hang.h1{width:130px}.hang.h2{width:170px}.hang.h3{width:140px}
  .hang figcaption{font-size:1rem}
  .ribbon{rotate:0deg}
  .clients{padding-top:56px}
  .logo-rows{gap:10px}
  .logo-track{gap:10px}
  .logo-tile{width:148px;height:78px;padding:12px 16px;border-radius:12px;outline-offset:-5px}
  .logo-tile img{max-height:46px}
  .clients-list{font-size:.8rem}
  .ribbon-group{font-size:.95rem}
  .tags{gap:10px}
  .tags::before{left:-8px;right:-8px}
  .tag-body{padding:36px 8px 18px;border-radius:0 0 12px 12px}
  .tag-body::after{inset:30px 5px 5px}
  .tag-body b{font-size:1.75rem}
  .tag-body span{font-size:.74rem;line-height:1.35}
  .wear-grid{grid-template-columns:1fr 1fr;grid-auto-rows:190px;gap:12px}
  .wear.big{grid-column:span 2;grid-auto-rows:240px}
  .wear-tx{padding:50px 13px 13px}
  .wear-tx h3{font-size:1rem}
  .wear.big .wear-tx{padding:70px 18px 18px}
  .wear .woven{top:12px;left:12px;font-size:.62rem;padding:6px 9px}
  .wear-price{font-size:.76rem}
  .swatch-steps{grid-template-columns:1fr;max-width:520px;margin-inline:auto}
  .thread{display:none}
  .pin-grid{grid-template-columns:1fr 1fr;gap:26px 16px}
  .pin-note{grid-column:span 2}
  .pin-card h3{font-size:.92rem}
  .pin-card p{font-size:.8rem}
  .reviews-grid,.press{grid-template-columns:1fr}
  .stamp{width:124px;height:124px}
  .stamp b{font-size:2.2rem}
  .p-grid{grid-template-columns:repeat(2,1fr);gap:12px}
  .pcard-tx{padding:12px 13px 14px}
  .pcard h3{font-size:.86rem}
  .ptag{font-size:.84rem}
  .ph-cta .btn,.pd-cta .btn{flex:1}
  .qform .row{grid-template-columns:1fr}
  .ft-grid{grid-template-columns:1fr}
  .specs div{grid-template-columns:1fr;gap:2px}
  .final{margin-top:70px}
  .final-cta .btn{width:100%}
  .r-f1,.r-f2,.r-ph{display:none}
  .sticky-cta{display:flex;gap:10px;position:fixed;left:0;right:0;bottom:0;z-index:80;padding:10px 88px 12px 14px;background:rgba(253,250,241,.96);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:2px dashed var(--line)}
  .sticky-cta .btn{flex:1;padding:12px 10px;font-size:.92rem}
  body.has-sticky-cta{padding-bottom:72px}
  .wa-fab{bottom:10px;right:14px;width:56px;height:56px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
  .js .rv{opacity:1;transform:none}
  .rw.on .ink{clip-path:none}
}
