/* Self-hosted fonts (SIL Open Font License). No third-party font requests. */
/* Bricolage Grotesque latin-ext */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 600 800;
  font-stretch: 100%;
  font-display: swap;
  src: url(/fonts/bricolage-grotesque-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* Bricolage Grotesque latin */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 600 800;
  font-stretch: 100%;
  font-display: swap;
  src: url(/fonts/bricolage-grotesque-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Caveat latin-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/caveat-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* Caveat latin */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/caveat-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Figtree latin-ext */
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/figtree-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* Figtree latin */
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/fonts/figtree-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Layout: warm scrapbook-meets-deal-flyer. One 1120px column; hero pairs big type with a taped polaroid stack of Gracey;
   handwritten notes, sticker badges and coupon-cut cards carry the personality; color blocks band the page. */
:root{
  --bg:#fff6f3; --card:#ffffff; --ink:#1e1420; --soft:#5f5260; --line:#f2dcd6;
  --primary:#b0245f; --primary-dk:#87164a; --primary-soft:#fde4ee;
  --cta:#ffd84d; --cta-dk:#f5c518;      /* brand yellow for buy/deal buttons */
  --hl:#ffd84d; --neutral:#f6ece1;
  --display:"Bricolage Grotesque",ui-rounded,system-ui,sans-serif;
  --body:"Figtree",system-ui,-apple-system,sans-serif;
  --hand:"Caveat","Bradley Hand","Segoe Print",cursive;
  --wrap:1120px; --read:700px; --r:20px;
  color-scheme:light;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 18px/1.7 var(--body);padding-inline:16px}
a{color:inherit}
img{max-width:100%;height:auto;display:block}
:focus-visible{outline:3px solid var(--primary);outline-offset:3px;border-radius:6px}
.wrap{max-width:var(--wrap);margin-inline:auto}
.read{max-width:var(--read);margin-inline:auto}
.skip{position:absolute;left:-999px}.skip:focus{left:16px;top:16px;background:var(--ink);color:#fff;padding:8px 12px;z-index:9}
.hand{font-family:var(--hand);font-weight:700}

/* announcement bar */
.ticker{background:var(--ink);color:#fff;margin-inline:-16px;padding:9px 16px;text-align:center;font:600 14px/1.4 var(--body)}
.ticker a{color:var(--hl);font-weight:800}

/* header */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(10px);border-bottom:1.5px solid var(--line);margin-inline:-16px;padding-inline:16px}
.top .wrap{display:flex;align-items:center;gap:20px;min-height:70px;flex-wrap:wrap}
.logo{display:inline-flex;align-items:center;gap:9px;font:800 25px/1 var(--display);letter-spacing:-.03em;text-decoration:none}
.logo .tag{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--primary);color:#fff;font-size:18px;transform:rotate(-8deg);box-shadow:3px 3px 0 var(--hl)}
.nav{display:flex;gap:22px;flex-wrap:wrap;margin-left:auto;align-items:center}
.nav a{text-decoration:none;font:700 15px/1 var(--body);color:var(--soft)}
.nav a:hover{color:var(--ink)}
.btn{display:inline-flex;align-items:center;gap:8px;text-decoration:none;font:800 16px/1 var(--body);padding:16px 24px;border-radius:999px;background:var(--cta);color:var(--ink);border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);transition:transform .12s,box-shadow .12s}
.btn:hover{background:var(--cta-dk);transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink)}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}
.btn.ghost{background:var(--card);color:var(--ink)}
.nav .btn{padding:11px 18px;font-size:15px;color:var(--ink);box-shadow:3px 3px 0 var(--ink)}
@media (max-width:700px){.nav{width:calc(100% + 16px);margin:0 -16px 0 0;padding:4px 16px 14px 2px;gap:16px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav a{white-space:nowrap;flex:none}}

/* type */
h1,h2,h3{font-family:var(--display);text-wrap:balance;line-height:1.05;letter-spacing:-.03em;margin:0;font-weight:800}
h1{font-size:clamp(40px,6.2vw,72px)}
h2{font-size:clamp(28px,3.8vw,40px)}
h3{font-size:22px;line-height:1.2}
mark{background:linear-gradient(transparent 52%,var(--hl) 52%,var(--hl) 90%,transparent 90%);color:inherit;padding-inline:.06em}
.squiggle{color:var(--primary);text-decoration:underline wavy var(--hl);text-decoration-thickness:.08em;text-underline-offset:.16em;text-decoration-skip-ink:none}
.eyebrow{display:inline-block;font:800 13px/1 var(--body);letter-spacing:.06em;text-transform:uppercase;color:var(--primary-dk);background:var(--primary-soft);padding:9px 13px;border-radius:999px}
.muted{color:var(--soft)}
p{margin:0}
.prose{display:grid;gap:18px}
.prose a{color:var(--primary-dk);font-weight:700;text-decoration-thickness:2px;text-underline-offset:3px}
.prose h2{margin-top:14px}
.prose ul,.prose ol{margin:0;padding-left:22px;display:grid;gap:8px}

/* hero */
.hero{padding-block:52px 40px;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:40px;align-items:center}
.hero-copy{display:grid;gap:22px;justify-items:start}
.hero .lede{max-width:50ch;font-size:20px;color:var(--soft)}
.cta-row{display:flex;gap:14px;flex-wrap:wrap}
.live{display:inline-flex;align-items:center;gap:8px;font:700 14px/1.3 var(--body);color:var(--soft)}
.live i{width:10px;height:10px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 4px var(--primary-soft)}
@media (prefers-reduced-motion:no-preference){.live i{animation:pulse 2s infinite}@keyframes pulse{50%{box-shadow:0 0 0 8px var(--primary-soft)}}}

/* polaroids */
.snaps{position:relative;min-height:640px}
.polaroid{position:absolute;background:#fff;padding:12px 12px 46px;border-radius:6px;box-shadow:0 20px 40px -18px rgba(0,0,0,.35);width:min(250px,49%)}
.polaroid img,.polaroid .ph{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:3px;background:var(--primary-soft)}
.polaroid figcaption{position:absolute;left:0;right:0;bottom:10px;text-align:center;font:700 22px/1 var(--hand);color:#333}
.polaroid::before{content:"";position:absolute;top:-12px;left:50%;width:86px;height:26px;transform:translateX(-50%) rotate(-3deg);background:color-mix(in srgb,var(--hl) 80%,transparent);border-radius:2px}
.polaroid.a{right:2%;top:0;transform:rotate(4deg);z-index:2}
.polaroid.b{left:2%;top:230px;transform:rotate(-5deg);z-index:1}
.note{position:absolute;z-index:3;font:700 28px/1.05 var(--hand);color:var(--ink);transform:rotate(-6deg)}
.note.hi{left:2%;top:40px}
.note.hi::after{content:"";display:block;width:70px;height:40px;margin:4px 0 0 60px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 70 40'%3E%3Cpath d='M2 4 C 30 2, 50 12, 62 32' fill='none' stroke='%231f2a1c' stroke-width='2.5' stroke-linecap='round'/%3E%3Cpath d='M52 30 L63 34 L64 22' fill='none' stroke='%231f2a1c' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat}
.sticker{position:absolute;z-index:4;display:grid;place-items:center;text-align:center;width:118px;height:118px;border-radius:50%;background:var(--primary);color:#fff;font:800 15px/1.1 var(--display);text-transform:uppercase;border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);transform:rotate(12deg);padding:12px}
.sticker.s1{right:0;bottom:24px}
@media (prefers-reduced-motion:no-preference){.sticker.s1{animation:wobble 6s ease-in-out infinite}@keyframes wobble{50%{transform:rotate(4deg) scale(1.03)}}}
@media (max-width:860px){.hero{grid-template-columns:minmax(0,1fr);gap:24px;padding-block:36px 16px}.snaps{min-height:520px}.polaroid{width:min(210px,48%)}.polaroid.b{top:190px}}

/* sections */
section{padding-block:44px}
.band{background:var(--primary);color:#fff;margin-inline:-16px;padding:48px 16px;border-block:2px solid var(--ink)}
.band .eyebrow{background:#fff;color:var(--primary-dk)}
.sec-head{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap;margin-bottom:26px}
.sec-head .hand{font-size:26px;color:var(--primary);display:block;transform:rotate(-2deg);margin-bottom:2px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:24px}
.card{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:12px;text-decoration:none;padding:14px 14px 20px;background:var(--card);border:2px solid var(--ink);border-radius:var(--r);box-shadow:5px 5px 0 var(--ink);transition:transform .12s,box-shadow .12s;color:var(--ink)}
.card:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink)}
.card h3{font-size:21px;padding-inline:6px}
.card .meta{font:800 13px/1 var(--body);color:var(--primary-dk);padding-inline:6px;text-transform:uppercase;letter-spacing:.05em}
.card .pick{position:absolute;top:-14px;right:14px;background:var(--hl);color:var(--ink);font:700 22px/1 var(--hand);padding:6px 12px;border-radius:10px;transform:rotate(5deg);border:2px solid var(--ink)}
.thumbs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:minmax(0,1fr);gap:8px;background:var(--neutral);border-radius:12px;padding:12px;aspect-ratio:3/1.2}
.thumbs img{width:100%;height:100%;object-fit:contain;min-width:0;min-height:0;mix-blend-mode:multiply}
.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{font:700 15px/1 var(--body);padding:13px 18px;border:2px solid var(--ink);border-radius:999px;text-decoration:none;background:var(--card);color:var(--ink)}
.chip:hover{background:var(--hl)}
.join{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr));gap:16px}
.join a{background:var(--card);color:var(--ink);border:2px solid var(--ink);border-radius:var(--r);padding:20px 22px;text-decoration:none;display:grid;gap:4px;box-shadow:4px 4px 0 var(--ink);transition:transform .12s}
.join a:hover{transform:translate(-2px,-2px)}
.join strong{font:800 21px/1.2 var(--display)}
.join span{color:var(--soft);font-size:16px;line-height:1.5}

/* meet gracey */
.meet{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:48px;align-items:center}
.meet .polaroid{position:relative;width:100%;transform:rotate(-3deg)}
.meet .prose{max-width:58ch}
.meet .sig{font:700 34px/1 var(--hand);color:var(--primary-dk)}
@media (max-width:760px){.meet{grid-template-columns:minmax(0,1fr)}.meet .polaroid{max-width:280px;margin-inline:auto}}
.how{background:var(--primary-soft);border:2px solid var(--ink);border-radius:28px;padding:40px clamp(20px,5vw,56px)}
.how .prose{max-width:62ch}

/* faq */
.faq{display:grid;gap:12px}
.faq details{background:var(--card);border:2px solid var(--ink);border-radius:16px;padding:16px 20px}
.faq summary{cursor:pointer;font:800 18px/1.4 var(--body);list-style:none;display:flex;justify-content:space-between;gap:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font:800 24px/1 var(--display);color:var(--primary)}
.faq details[open] summary::after{content:"–"}
.faq details p{margin-top:8px;color:var(--soft);max-width:65ch}

/* article */
.crumbs{font:700 14px/1.4 var(--body);color:var(--soft);padding-top:28px}
.crumbs a{text-decoration:underline;text-underline-offset:3px}.crumbs a:hover{color:var(--primary-dk)}
.post-head{display:grid;gap:16px;padding-block:18px 26px}
.byline{display:flex;gap:10px;flex-wrap:wrap;align-items:center;font:600 15px/1.4 var(--body);color:var(--soft)}
.byline img,.byline .av{width:40px;height:40px;border-radius:50%;object-fit:cover;border:2px solid var(--ink);background:var(--primary-soft)}
.byline a{color:var(--ink);font-weight:800}
.disclose{font-size:15px;color:var(--soft);background:var(--neutral);border-radius:12px;padding:10px 14px}
.disclose a{color:var(--ink);font-weight:700}
.tldr{position:relative;background:var(--card);border:2px solid var(--ink);border-radius:var(--r);padding:26px 24px 22px;display:grid;gap:10px;box-shadow:5px 5px 0 var(--primary)}
.tldr .hand{position:absolute;top:-20px;left:18px;background:var(--hl);font-size:26px;padding:2px 12px;border-radius:8px;transform:rotate(-3deg)}
.tldr ul{margin:0;padding-left:20px;display:grid;gap:6px}
.tldr a{color:var(--primary-dk);font-weight:800}
.items{list-style:none;padding:0;margin:48px 0 0;display:grid;gap:56px}
.item{display:grid;gap:16px}
.item h2{font-size:clamp(23px,3vw,30px);display:flex;gap:14px;align-items:flex-start}
.item h2 .n{flex:none;display:grid;place-items:center;min-width:46px;height:46px;border-radius:50%;background:var(--primary);color:#fff;border:2px solid var(--ink);font:800 20px/1 var(--display);transform:rotate(-6deg);margin-top:-4px}
.item .shot{background:var(--card);display:flex;justify-content:center;padding:22px;border:2px solid var(--ink);border-radius:var(--r)}
.item .shot img{max-height:360px;width:auto;object-fit:contain}
.item .why{justify-self:start;font:700 24px/1.2 var(--hand);color:var(--primary-dk);transform:rotate(-1.5deg)}
.item .why::before{content:"↳ "}
.buy{justify-self:start}
.post-foot{display:grid;gap:28px;padding-block:52px}
.author{display:grid;grid-template-columns:72px minmax(0,1fr);gap:18px;align-items:center;padding:20px;border-radius:var(--r);background:var(--card);border:2px solid var(--ink)}
.author img,.author .av{width:72px;height:72px;border-radius:50%;object-fit:cover;border:2px solid var(--ink);background:var(--primary-soft)}

/* footer */
.foot{background:var(--ink);color:#fff;margin-top:56px;padding-block:48px;margin-inline:-16px;padding-inline:16px}
.foot .wrap{display:grid;gap:18px}
.foot .logo .tag{background:var(--hl);color:var(--ink);box-shadow:none}
.foot .hand{font-size:28px;color:var(--hl)}
.foot nav{display:flex;gap:20px;flex-wrap:wrap}
.foot a{color:#e8e6dd;text-decoration:none;font-size:16px}.foot a:hover{color:#fff}
.foot small{color:#bdbab0;font-size:14px;max-width:70ch;line-height:1.6}

.ph{display:grid;place-items:end center;padding-bottom:14px;background:linear-gradient(160deg,var(--primary-soft),var(--neutral))}
.ph span{font:700 22px/1 var(--hand);color:var(--soft)}
.ph::before{content:"";width:46%;aspect-ratio:1;border-radius:50%;background:color-mix(in srgb,var(--primary) 30%,transparent);place-self:center}
.btn.ghost:hover{background:var(--hl)}

.pinit{margin:0;display:grid;justify-items:center;gap:12px;text-align:center}
.pinit img{width:min(320px,80%);border-radius:16px;border:2px solid var(--ink);box-shadow:5px 5px 0 var(--ink)}
.pinit .hand{font-size:28px;color:var(--primary)}

/* utilities (replace inline styles so the CSP can block inline CSS) */
.u-mt12{margin-top:12px}.u-mt40{margin-top:40px}.u-mb16{margin-bottom:16px}.u-mb32{margin-bottom:32px}.u-pt8{padding-top:8px}.u-p0{padding:0}
.u-self-start{justify-self:start}.u-on-card{background:var(--card)}.u-flush{margin-inline:0}.u-narrow{max-width:var(--read)}
.u-fs20{font-size:20px}.u-fs19{font-size:19px}.u-fs15{font-size:15px}.prose.u-gap6{gap:6px}
.foot .legal a{font-size:14px;color:#d6d3c9}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* about page */
.about-hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:56px;align-items:center;padding-top:20px}
.about-hi{font-size:40px;color:var(--primary);transform:rotate(-3deg);transform-origin:left;margin-bottom:-6px}
.about-copy h1{margin-bottom:6px}
.arch{position:relative;justify-self:center;width:min(400px,100%)}
.arch::before{content:"";position:absolute;inset:28px -18px -18px 28px;background:var(--primary-soft);border:2px solid var(--ink);border-radius:999px 999px 28px 28px;z-index:0}
.arch img{position:relative;z-index:1;width:100%;aspect-ratio:4/5;object-fit:cover;border:2px solid var(--ink);border-radius:999px 999px 28px 28px;box-shadow:6px 6px 0 var(--ink)}
.sticker.s2{left:-28px;bottom:36px;background:var(--hl);color:var(--ink);transform:rotate(-10deg)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:16px}
.stats div{background:var(--card);border:2px solid var(--ink);border-radius:var(--r);padding:22px;box-shadow:4px 4px 0 var(--ink);display:grid;gap:4px}
.stats strong{font:800 clamp(34px,4vw,46px)/1 var(--display);color:var(--primary);letter-spacing:-.03em}
.stats span{color:var(--soft);font-weight:600}
.rules{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:16px;counter-reset:r}
.rules li{counter-increment:r;background:var(--neutral);border-radius:var(--r);padding:24px 22px;display:grid;gap:6px}
.rules li::before{content:counter(r);display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--primary);color:#fff;font:800 20px/1 var(--display);margin-bottom:6px}
.rules strong{font:800 21px/1.2 var(--display)}
.partner{background:var(--primary);color:#fff;border:2px solid var(--ink);border-radius:var(--r);padding:36px 28px;margin-block:44px;display:grid;gap:12px;box-shadow:5px 5px 0 var(--ink)}
.partner a{color:#fff;font-weight:800;text-underline-offset:3px}
@media (max-width:860px){.about-hero{grid-template-columns:minmax(0,1fr);gap:36px}.arch{width:min(320px,86%)}.sticker.s2{left:-12px}}
/* keep the focus ring visible on dark and raspberry backgrounds (WCAG 1.4.11 / 2.4.7) */
.ticker :focus-visible,.foot :focus-visible{outline-color:var(--hl)}
.band :focus-visible,.partner :focus-visible{outline-color:#fff}
.chip-n{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;margin-left:4px;border-radius:999px;background:var(--primary);color:#fff;font-size:12px}
.chips.u-mt12{margin-bottom:28px}
