:root{
  --surface:#f6eedc;--surface-alt:#eaddbf;--ink:#2a1f14;--ink-muted:#5b4b3a;
  --brand:#1f5130;--on-brand:#f6eedc;--moss:#2e7a3a;--sprout:#b5d34b;--sage:#c5d5b0;
  --marigold:#f4b400;--clay:#b8441f;--on-clay:#fff7e8;--blush:#f3c6b0;--on-bright:#2a1f14;
  --shadow-pop:4px 4px 0 0 #2a1f14;--shadow-pop-lg:8px 8px 0 0 #2a1f14;--scrim:rgba(42,31,20,.55);
  --font-display:"Bagel Fat One","Arial Rounded MT Bold",system-ui,sans-serif;
  --font-sans:"Bricolage Grotesque",system-ui,sans-serif;
  --font-mono:"DM Mono",ui-monospace,monospace;
  --r-sm:8px;--r-md:16px;--r-lg:28px;--r-pill:999px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --surface:#17201a;--surface-alt:#223027;--ink:#f6eedc;--ink-muted:#c2baa4;
  --brand:#8ccb84;--on-brand:#12200f;--moss:#4fa65a;--sage:#33473a;--clay:#e2734a;--on-clay:#1b1108;--blush:#5a2e22;
  --shadow-pop:4px 4px 0 0 #f6eedc;--shadow-pop-lg:8px 8px 0 0 #f6eedc;--scrim:rgba(0,0,0,.65);}}
:root[data-theme="dark"]{
  --surface:#17201a;--surface-alt:#223027;--ink:#f6eedc;--ink-muted:#c2baa4;
  --brand:#8ccb84;--on-brand:#12200f;--moss:#4fa65a;--sage:#33473a;--clay:#e2734a;--on-clay:#1b1108;--blush:#5a2e22;
  --shadow-pop:4px 4px 0 0 #f6eedc;--shadow-pop-lg:8px 8px 0 0 #f6eedc;--scrim:rgba(0,0,0,.65);}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:clip}
body{margin:0;background:var(--surface);color:var(--ink);font:400 16px/1.5 var(--font-sans);overflow-x:hidden}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,p{margin:0}
a{color:inherit}
:focus-visible{outline:3px solid var(--moss);outline-offset:3px}
.wrap{max-width:1240px;margin:0 auto;padding-inline:16px}
@media(min-width:720px){.wrap{padding-inline:28px}}
.mono{font-family:var(--font-mono)}
.eyebrow{font:500 12px/16px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted)}
.wm{font:400 34px/1 var(--font-display);letter-spacing:-.01em;color:var(--ink);text-decoration:none;background:none;border:0;padding:0;cursor:pointer}
.wm i{font-style:normal;color:var(--clay)}
.wm.on-dark{color:var(--on-brand)} .wm.on-dark i{color:var(--marigold)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 22px;font:700 16px/1 var(--font-sans);background:var(--brand);color:var(--on-brand);border:3px solid var(--ink);border-radius:var(--r-pill);box-shadow:var(--shadow-pop);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;text-decoration:none;white-space:nowrap}
.btn:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-pop-lg)}
.btn:active{transform:translate(4px,4px);box-shadow:0 0 0 0 var(--ink)}
.btn.need{background:var(--clay);color:var(--on-clay)}
.btn.sun{background:var(--marigold);color:var(--on-bright)}
.btn.quiet{background:var(--surface-alt);color:var(--ink)}
.btn.sm{padding:9px 14px;font-size:14px;box-shadow:3px 3px 0 0 var(--ink)}
.btn.sm:hover{box-shadow:5px 5px 0 0 var(--ink)}
.btn.lg{padding:17px 28px;font-size:18px}
.btn[disabled]{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}
.gbtn{background:var(--surface);color:var(--ink)}
.gmark{width:26px;height:26px;border-radius:50%;background:var(--ink);color:var(--surface);display:grid;place-items:center;font:800 15px/1 var(--font-sans)}
.link{background:none;border:0;padding:0;font:700 14px/1 var(--font-sans);text-decoration:underline;text-underline-offset:3px;cursor:pointer;color:var(--moss)}
@media(prefers-reduced-motion:reduce){.btn{transition:none}*{animation:none!important}}

/* chips */
.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;font:500 13px/1 var(--font-mono);background:var(--surface-alt);color:var(--ink);border:2px solid var(--ink);border-radius:var(--r-pill);white-space:nowrap}
.chip.free{background:var(--sprout);color:var(--on-bright)}
.chip.rate{background:var(--marigold);color:var(--on-bright)}
.chip.need{background:var(--clay);color:var(--on-clay)}
.chip.skill{background:var(--sage);color:var(--ink)}
button.chip{cursor:pointer}
button.chip.on{background:var(--brand);color:var(--on-brand)}

/* avatars */
.av{flex:none;width:44px;height:44px;border-radius:50%;border:3px solid var(--ink);display:grid;place-items:center;font:400 20px/1 var(--font-display)}
.av.big{width:76px;height:76px;font-size:34px}
.av.s{width:34px;height:34px;font-size:15px;border-width:2px}
.av0{background:var(--sprout);color:var(--on-bright)} .av1{background:var(--marigold);color:var(--on-bright)}
.av2{background:var(--blush);color:var(--ink)} .av3{background:var(--sage);color:var(--ink)} .av4{background:var(--clay);color:var(--on-clay)}

/* cards */
.card{background:var(--surface-alt);border:3px solid var(--ink);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:20px}
.card.need{background:var(--blush)}
.card h3{font:800 22px/1.1 var(--font-sans);text-wrap:balance}
.stack{display:grid;gap:16px}
.row{display:flex;align-items:center;gap:12px}
.wrapf{flex-wrap:wrap}
.grow{flex:1;min-width:0}
.muted{color:var(--ink-muted)}
.sm{font-size:14px}

/* inputs */
.field{display:grid;gap:6px}
.field label,.lbl{font:700 14px/1.2 var(--font-sans)}
.in{width:100%;padding:12px 14px;background:var(--surface);color:var(--ink);border:3px solid var(--ink);border-radius:var(--r-md);font-size:16px}
textarea.in{min-height:96px;resize:vertical}
.in:focus-visible{outline-offset:1px}
input[type=range]{width:100%;accent-color:var(--clay);height:28px}
.rate-out{font:500 15px/1 var(--font-mono);min-width:76px;text-align:right}
.seg{display:inline-flex;border:3px solid var(--ink);border-radius:var(--r-pill);overflow:hidden}
.seg button{border:0;background:var(--surface);padding:6px 12px;font:700 13px/1 var(--font-sans);cursor:pointer}
.seg button.on{background:var(--ink);color:var(--surface)}

/* ================= LANDING ================= */
.nav{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-block:18px}
.nav .row{gap:10px}
.hero{display:grid;gap:40px;padding-block:24px 56px;align-items:center}
@media(min-width:900px){.hero{grid-template-columns:1.05fr .95fr;padding-block:32px 72px}}
.hero h1{font:400 clamp(46px,8.5vw,104px)/.92 var(--font-display);letter-spacing:-.01em;text-wrap:balance}
.hero h1 i{font-style:normal;color:var(--clay)}
.hero .lead{font-size:clamp(17px,2.2vw,20px);line-height:1.5;max-width:52ch;margin-top:20px;color:var(--ink-muted)}
.hero .cta{display:flex;flex-wrap:wrap;gap:16px;margin-top:28px}
.hero .fine{margin-top:16px}
.ticker{background:var(--marigold);color:var(--on-bright);border-block:3px solid var(--ink);overflow:hidden;white-space:nowrap}
.ticker div{display:inline-flex;gap:28px;padding-block:14px;animation:tick 32s linear infinite;font:400 26px/1 var(--font-display)}
@keyframes tick{to{transform:translateX(-50%)}}
.section{padding-block:64px}
.section h2{font:400 clamp(36px,5.5vw,64px)/.98 var(--font-display);text-wrap:balance;max-width:16ch}
.steps{display:grid;gap:20px;margin-top:36px}
@media(min-width:800px){.steps{grid-template-columns:repeat(3,1fr)}}
.step .num{width:52px;height:52px;border-radius:50%;border:3px solid var(--ink);display:grid;place-items:center;font:400 26px/1 var(--font-display);background:var(--sprout);color:var(--on-bright);margin-bottom:14px}
.step:nth-child(2) .num{background:var(--marigold)}
.step:nth-child(3) .num{background:var(--clay);color:var(--on-clay)}
.step p{color:var(--ink-muted);margin-top:8px}
.samples{display:grid;gap:20px;margin-top:36px}
@media(min-width:800px){.samples{grid-template-columns:repeat(3,1fr)}}
.big-cta{background:var(--brand);color:var(--on-brand);border:3px solid var(--ink);border-radius:var(--r-lg);box-shadow:var(--shadow-pop-lg);padding:clamp(28px,6vw,64px);position:relative;overflow:hidden;display:grid;gap:22px;justify-items:start}
.big-cta h2{max-width:14ch;color:var(--on-brand)}
.big-cta>*{position:relative;z-index:1}
.big-cta .btn{color:var(--ink)}
footer.f{padding-block:40px 56px;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:center}

/* ================= ONBOARDING ================= */
.ob{min-height:100vh;display:grid;align-content:start;justify-items:center;padding:20px 16px 56px;position:relative;overflow:hidden}
.ob>*{position:relative;z-index:1}
.ob .top{width:100%;max-width:680px;display:flex;justify-content:space-between;align-items:center;padding-block:6px 20px}
.prog{display:flex;gap:8px;width:100%;max-width:680px;margin-bottom:20px}
.prog i{flex:1;height:14px;border:3px solid var(--ink);border-radius:var(--r-pill);background:var(--surface-alt)}
.prog i.on{background:var(--sprout)}
.ob .panel{width:100%;max-width:680px;background:var(--surface);border:3px solid var(--ink);border-radius:var(--r-lg);box-shadow:var(--shadow-pop-lg);padding:clamp(20px,4vw,36px);display:grid;gap:20px}
.ob h1{font:400 clamp(34px,6vw,52px)/.98 var(--font-display);text-wrap:balance}
.ob .actions{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}
.opts{display:grid;gap:10px}
.opt{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:3px solid var(--ink);border-radius:var(--r-md);background:var(--surface-alt);cursor:pointer}
.opt input{margin-top:4px;accent-color:var(--brand);width:18px;height:18px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips .chip{font-size:14px;padding:8px 13px}
.sk-row{display:grid;gap:8px;padding:12px 14px;border:3px solid var(--ink);border-radius:var(--r-md);background:var(--surface-alt)}
.sk-row .top2{display:flex;justify-content:space-between;align-items:center;gap:8px;font-weight:800}
.friendpick{display:grid;gap:10px}
.fp{display:flex;align-items:center;gap:12px;padding:10px 12px;border:3px solid var(--ink);border-radius:var(--r-md);background:var(--surface-alt)}

/* ================= APP ================= */
.topbar{position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:3px solid var(--ink)}
.topbar .in-bar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px 16px;padding-block:12px}
@media(max-width:719px){.topbar .in-bar{grid-template-columns:1fr auto}.topbar .search{grid-column:1/-1;order:3}}
.search{position:relative;max-width:720px;width:100%;justify-self:center}
.search svg{position:absolute;left:16px;top:50%;transform:translateY(-50%);pointer-events:none}
.search input{width:100%;padding:13px 44px 13px 48px;background:var(--surface-alt);border:3px solid var(--ink);border-radius:var(--r-pill);box-shadow:var(--shadow-pop);font-size:16px}
.search input:focus-visible{outline-offset:2px}
.search .x[hidden]{display:none}
input[type=search]::-webkit-search-cancel-button{display:none}
.search .x{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:30px;height:30px;border:2px solid var(--ink);border-radius:50%;background:var(--marigold);color:var(--on-bright);cursor:pointer;display:grid;place-items:center;padding:0}
.grid{display:grid;gap:24px;padding-block:24px 64px}
@media(min-width:1000px){.grid{grid-template-columns:300px minmax(0,1fr) 300px;align-items:start}}
.profile{padding:0;overflow:hidden}
.profile .cover{height:76px;background:var(--brand);border-bottom:3px solid var(--ink);position:relative}
.profile .body{padding:0 20px 20px;display:grid;gap:12px}
.profile .av{margin-top:-38px;position:relative;z-index:1}
.profile h2{font:800 24px/1.1 var(--font-sans)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stat{border:2px solid var(--ink);border-radius:var(--r-md);background:var(--surface);padding:8px;text-align:center}
.stat b{display:block;font:400 24px/1 var(--font-display)}
.stat span{font:500 11px/1.2 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}
.hd{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.hd h2{font:800 20px/1.1 var(--font-sans)}
.skrow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:var(--surface);border:2px solid var(--ink);border-radius:var(--r-sm);font-weight:700;font-size:15px}
.skrow .x{background:none;border:0;cursor:pointer;color:var(--ink-muted);padding:2px;line-height:0}
.tabs{display:flex;gap:8px;flex-wrap:wrap}
.tab{padding:10px 18px;border:3px solid var(--ink);border-radius:var(--r-pill);background:var(--surface-alt);font:800 15px/1 var(--font-sans);cursor:pointer}
.tab.on{background:var(--ink);color:var(--surface)}
.actionbar{display:flex;flex-wrap:wrap;gap:12px}
.listing{display:grid;gap:12px}
.listing .foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between}
.listing .who{display:flex;align-items:center;gap:10px;min-width:0}
.listing .who b{display:block;font-size:15px;line-height:1.2}
.tag-you{font:500 11px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;background:var(--ink);color:var(--surface);padding:3px 7px;border-radius:var(--r-pill);margin-left:6px}
.post{display:grid;gap:12px}
.post .acts{display:flex;gap:10px;flex-wrap:wrap}
.empty{text-align:center;padding:32px 20px;display:grid;gap:12px;justify-items:center}
.empty h3{font:400 30px/1 var(--font-display)}
.pers{display:flex;align-items:center;gap:10px;padding:8px 0}
.pers+.pers{border-top:2px dashed var(--ink)}
.pers b{display:block;line-height:1.2;font-size:15px}
.sec-title{font:400 30px/1 var(--font-display);margin-block:8px 2px}
.sr{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface-alt);border:3px solid var(--ink);border-radius:var(--r-md)}
.sr .grow b{display:block;line-height:1.2}

/* modal / toast */
.scrim{position:fixed;inset:0;z-index:50;background:var(--scrim);display:grid;place-items:center;padding:16px;overflow-y:auto}
.modal{width:100%;max-width:520px;background:var(--surface);border:3px solid var(--ink);border-radius:var(--r-lg);box-shadow:var(--shadow-pop-lg);padding:24px;display:grid;gap:16px;max-height:calc(100vh - 32px);overflow-y:auto}
.modal h2{font:400 34px/1 var(--font-display)}
.modal .row.end{justify-content:flex-end}
.thread{display:grid;gap:8px;max-height:260px;overflow-y:auto;padding:4px}
.bub{max-width:82%;padding:9px 13px;border:2px solid var(--ink);border-radius:18px;font-size:15px}
.bub.me{justify-self:end;background:var(--brand);color:var(--on-brand)}
.bub.them{justify-self:start;background:var(--surface-alt)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:60;background:var(--ink);color:var(--surface);padding:12px 20px;border-radius:var(--r-pill);font-weight:700;border:3px solid var(--ink);max-width:calc(100vw - 32px);text-align:center}
.demo-note{font:500 12px/1.4 var(--font-mono);color:var(--ink-muted)}
.hint{padding:10px 14px;border:2px dashed var(--ink);border-radius:var(--r-md);font-size:14px;color:var(--ink-muted)}

/* ================= ILLUSTRATION + MOTION ================= */
svg .o{stroke:var(--ink);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}
svg .nf{fill:none}
svg .ol *{fill:var(--ink);stroke:var(--ink);stroke-width:7;stroke-linejoin:round}
svg .fl *{stroke:none}
.f-brand{fill:var(--brand)} .f-sun{fill:var(--marigold)} .f-clay{fill:var(--clay)} .f-sprout{fill:var(--sprout)} .f-sage{fill:var(--sage)}
.f-blush{fill:var(--blush)} .f-ink{fill:var(--ink)} .f-cream{fill:var(--surface)} .f-alt{fill:var(--surface-alt)} .f-moss{fill:var(--moss)}
.s-brand{stroke:var(--brand)} .s-sun{stroke:var(--marigold)} .s-clay{stroke:var(--clay)} .s-sage{stroke:var(--sage)}
.a-o{stroke:var(--ink);stroke-width:15;stroke-linecap:round;fill:none}
.a-f{stroke-width:9;stroke-linecap:round;fill:none}
.t-o{stroke:var(--ink);stroke-width:9;stroke-linecap:round;fill:none}
.t-f{stroke-width:4;stroke-linecap:round;fill:none}
.face{fill:none;stroke:var(--ink);stroke-width:3.5;stroke-linecap:round}
.rays line{stroke:var(--ink);stroke-width:6;stroke-linecap:round}
svg{overflow:visible}

@keyframes spin{to{transform:rotate(360deg)}}
@keyframes drift{from{transform:translateX(-14px)}to{transform:translateX(28px)}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}
@keyframes wavearm{0%,100%{transform:rotate(-14deg)}50%{transform:rotate(18deg)}}
@keyframes bob{50%{transform:translateY(-6px)}}
@keyframes hop{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes rise{0%{transform:translateY(0) scale(.6);opacity:0}15%{opacity:1}100%{transform:translateY(-90px) scale(1.15);opacity:0}}
@keyframes flap{50%{transform:scaleY(.35)}}
@keyframes sway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
@keyframes soundwave{0%{opacity:0;transform:translateX(-8px)}30%{opacity:1}100%{opacity:0;transform:translateX(16px)}}
@keyframes popIn{from{transform:translateY(24px) scale(.95)}to{transform:none}}
@keyframes wordIn{from{transform:translateY(.45em) rotate(6deg) scale(.9)}to{transform:none}}
@keyframes dotHop{0%,68%,100%{transform:translateY(0) scale(1,1)}76%{transform:translateY(-.3em) scale(.9,1.12)}84%{transform:translateY(0) scale(1.15,.8)}92%{transform:translateY(-.08em)}}
@keyframes wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-12deg) scale(1.08)}75%{transform:rotate(12deg) scale(1.08)}}
@keyframes twinkle{0%,100%{transform:scale(.55) rotate(0);opacity:.75}50%{transform:scale(1.15) rotate(25deg);opacity:1}}
@keyframes beat{0%,100%{transform:scale(1)}15%{transform:scale(1.14)}30%{transform:scale(.97)}45%{transform:scale(1.1)}}
@keyframes lid{0%,50%,100%{transform:rotate(0)}65%,85%{transform:rotate(-16deg)}}
@keyframes grow{from{transform:scale(.15)}to{transform:scale(1)}}
@keyframes toastIn{from{transform:translate(-50%,36px) scale(.9)}to{transform:translate(-50%,0) scale(1)}}
@keyframes modalIn{from{transform:translateY(30px) scale(.92)}to{transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes chipPop{50%{transform:scale(1.18)}}
@keyframes floaty{0%,100%{transform:translateY(0) rotate(var(--r,0deg))}50%{transform:translateY(-10px) rotate(var(--r,0deg))}}

.spin{animation:spin 40s linear infinite}
.drift{animation:drift 9s ease-in-out infinite alternate}
.drift.b{animation-duration:13s;animation-direction:alternate-reverse}
.pulse{transform-box:fill-box;transform-origin:center;animation:pulse .7s ease-in-out infinite}
.warm{animation:wavearm .8s ease-in-out infinite}
.bob{animation:bob 1.5s ease-in-out infinite}
.hop{animation:hop .9s ease-in-out infinite}
.rise{animation:rise 3.2s ease-out infinite}
.flap{transform-box:fill-box;transform-origin:center;animation:flap .5s ease-in-out infinite}
.sway{animation:sway 3s ease-in-out infinite}
.sw{animation:soundwave 1.4s ease-out infinite}
.tw{transform-box:fill-box;transform-origin:center;animation:twinkle 1.9s ease-in-out infinite}
.beat{transform-box:fill-box;transform-origin:center;animation:beat 1.7s ease-in-out infinite}
.lid{transform-box:fill-box;transform-origin:left bottom;animation:lid 2.8s ease-in-out infinite}
.grow-s{animation:grow 1s cubic-bezier(.2,.9,.3,1.3) backwards}
.pop{animation:popIn .6s cubic-bezier(.2,.9,.3,1.25) backwards;animation-delay:var(--d,0ms)}
.w{display:inline-block;animation:wordIn .85s cubic-bezier(.2,.9,.3,1.35) backwards;animation-delay:var(--d,0ms)}
.wm i,.hero h1 i{display:inline-block;animation:dotHop 3.8s ease-in-out infinite}
.rv{translate:0 28px;transition:translate .8s cubic-bezier(.2,.9,.3,1.15)}
.rv.seen{translate:0 0}
.toast{animation:toastIn .5s cubic-bezier(.2,.9,.3,1.4)}
.modal{animation:modalIn .4s cubic-bezier(.2,.9,.3,1.3)}
.scrim{animation:fade .2s ease-out}
.bub{animation:popIn .35s cubic-bezier(.2,.9,.3,1.3) backwards}
button.chip.on{animation:chipPop .35s ease-out}
.btn:hover svg{animation:wiggle .5s ease-in-out}
.ticker:hover div{animation-play-state:paused}

/* hero art */
.art{position:relative;width:100%;max-width:560px;aspect-ratio:1/1;justify-self:center;--mx:0;--my:0}
.scene{display:block;width:100%;height:auto}
.px1{translate:calc(var(--mx)*12px) calc(var(--my)*8px);transition:translate .3s ease-out}
.px2{translate:calc(var(--mx)*22px) calc(var(--my)*10px);transition:translate .3s ease-out}
.a-sticker{position:absolute;padding:14px 16px;border:3px solid var(--ink);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);width:46%;transition:translate .3s ease-out}
.a-sticker h3{font:800 clamp(14px,2.3vw,20px)/1.1 var(--font-sans);margin:6px 0 10px}
.s1{left:-3%;top:2%;background:var(--blush);transform:rotate(-4deg);z-index:2;translate:calc(var(--mx)*-14px) calc(var(--my)*-8px);animation:floaty 5s ease-in-out infinite;--r:-4deg}
.s2{right:-4%;top:37%;background:var(--surface-alt);transform:rotate(3deg);z-index:3;translate:calc(var(--mx)*-18px) calc(var(--my)*-10px);animation:floaty 6s ease-in-out -2s infinite;--r:3deg}
@media(max-width:560px){.s2{display:none}.a-sticker{width:58%;padding:10px 12px}.a-sticker .chip{font-size:11px;padding:4px 8px}}
.sparkle{width:24px;height:24px;flex:none}

/* steps */
.spot{width:120px;height:100px;display:block;margin-bottom:6px}
.step{transition:transform .2s ease,box-shadow .2s ease,translate .8s cubic-bezier(.2,.9,.3,1.15)}
.step:hover{transform:translate(-3px,-3px) rotate(-.6deg);box-shadow:var(--shadow-pop-lg)}
.step:hover .spot .bob,.step:hover .spot .beat{animation-duration:.6s}
.step .eyebrow{margin-bottom:6px}
.cta-sun{position:absolute;right:-30px;bottom:-40px;width:min(260px,52%);z-index:0}
.cta-sun svg{width:100%;height:auto;display:block}
.big-cta>*:not(.cta-sun){position:relative;z-index:1}
.big-cta{overflow:hidden}

/* onboarding art */
.deco-sun{position:absolute;right:-30px;top:-26px;width:190px;z-index:0}
.deco-sun svg,.deco-strip svg{width:100%;height:auto;display:block}
.ob>.deco-sun,.ob>.deco-strip{position:absolute}
.deco-strip{left:0;right:0;bottom:0;height:160px;z-index:0;overflow:hidden}
.deco-strip svg{height:100%}
.ob-head{display:flex;align-items:center;gap:16px}
.ob-head .sproutsvg{width:96px;height:96px;flex:none}
@media(max-width:520px){.ob-head .sproutsvg{width:72px;height:72px}}

/* icon badges */
.ib{flex:none;width:54px;height:54px;border:3px solid var(--ink);border-radius:50%;display:grid;place-items:center}
.ib svg{width:34px;height:34px}
.ib0{background:var(--sprout)} .ib1{background:var(--marigold)} .ib2{background:var(--blush)} .ib3{background:var(--sage)}
.ib.xs{width:32px;height:32px;border-width:2px}
.ib.xs svg{width:20px;height:20px}
.card:hover .ib svg,.sr:hover .ib svg{animation:wiggle .6s ease-in-out}
.lh{display:flex;gap:14px;align-items:flex-start}
.lh .grow h3{margin-top:2px}
.card.listing{transition:transform .2s ease,box-shadow .2s ease,translate .8s cubic-bezier(.2,.9,.3,1.15)}
.card.listing:hover{transform:translate(-3px,-3px) rotate(-.4deg);box-shadow:var(--shadow-pop-lg)}
.skrow .nm{display:flex;align-items:center;gap:8px;min-width:0}

/* home art */
.welcome{position:relative;overflow:hidden;background:var(--brand);color:var(--on-brand)}
.welcome>*:not(.mini){position:relative;z-index:1}
.welcome .mini{position:absolute;right:-6px;bottom:-4px;width:min(300px,46%);height:auto;z-index:0}
@media(max-width:600px){.welcome .mini{opacity:.35;width:70%}}
.welcome h2{max-width:14ch}
.profile .cover{padding:0;overflow:hidden}
.profile .cover .coversvg{position:absolute;inset:0;width:100%;height:100%;display:block}
.empty .sproutsvg{width:110px;height:110px}
.heart-btn.on svg{animation:beat .6s ease-out}

.avimg{padding:0;overflow:hidden;background:var(--surface-alt)}
.avimg img{width:100%;height:100%;object-fit:cover;display:block}
.badge{min-width:20px;height:20px;padding:0 5px;border-radius:99px;background:var(--clay);color:var(--on-clay);border:2px solid var(--ink);font:700 12px/16px var(--font-mono);text-align:center}
button.sr{width:100%;text-align:left;cursor:pointer;font:inherit;color:inherit}
.gwrap{display:flex;justify-content:center;min-height:44px}
.bootscreen{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:12px}
.bootscreen .sunsvg{width:140px;height:auto}
@media(max-width:480px){.inbox-label{display:none}}

.profile h2,.profile .name,.hero h1,.modal h2{overflow-wrap:anywhere}

/* photos, notices, admin */
.photorow{display:flex;align-items:center;gap:16px}
label.btn{cursor:pointer}
.notice{padding:12px 14px;border:3px solid var(--ink);border-radius:var(--r-md);background:var(--sage);display:grid;gap:6px;justify-items:start}
.notice.warn{background:var(--blush)}
.notice.ok{background:var(--sprout);color:var(--on-bright)}
.notice p{margin:0}
.modal.wide{max-width:760px}
.admrow{align-items:flex-start}
.admrow .in{margin-top:4px;padding:8px 10px}
.tabs .badge{margin-left:6px}

/* v3 additions */
.wm{display:inline-flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left}
.wm .wm-t{display:block;font:400 34px/.9 var(--font-display);letter-spacing:-.01em}
.wm .wm-sub{display:block;font:500 10px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}
.wm.on-dark .wm-sub{color:var(--on-brand);opacity:.8}
.profile .cover .bnbtn{position:absolute;right:8px;bottom:8px;padding:6px 10px;border:2px solid var(--ink);border-radius:var(--r-pill);background:var(--surface);font:700 12px/1 var(--font-sans);cursor:pointer;z-index:2}
.bngrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:14px}
@media(min-width:560px){.bngrid{grid-template-columns:repeat(4,1fr)}}
.bn{display:grid;gap:6px;padding:0;border:3px solid var(--ink);border-radius:var(--r-md);background:var(--surface);cursor:pointer;overflow:hidden;text-align:left}
.bn.on{box-shadow:var(--shadow-pop);outline:3px solid var(--moss);outline-offset:2px}
.bn .bnart{display:block;height:64px;position:relative;border-bottom:3px solid var(--ink)}
.bn .bnart .coversvg{position:absolute;inset:0;width:100%;height:100%;display:block}
.bn .bnname{padding:0 10px 8px;font:700 13px/1.2 var(--font-sans)}
.skname{padding:8px 10px;font-weight:700;min-width:0}
.sk-row .top2 .x{flex:none}
.skrow .x.edit{margin-right:2px}
.cmp textarea{min-height:88px}
.cnt{font:500 13px/1 var(--font-mono);color:var(--ink-muted)} .cnt.over{color:var(--clay);font-weight:700}
.pprev{display:grid;gap:8px;justify-items:start}
.pprev img{max-width:100%;max-height:220px;border:3px solid var(--ink);border-radius:var(--r-md);object-fit:cover}
.ptext{font-size:17px;white-space:pre-wrap;overflow-wrap:anywhere}
.pimgwrap{display:block;width:100%;padding:0;border:3px solid var(--ink);border-radius:var(--r-md);overflow:hidden;background:var(--surface);cursor:zoom-in}
.pimg{display:block;width:100%;max-height:480px;object-fit:cover}
.lightimg{display:block;max-width:100%;max-height:70vh;margin:0 auto 14px;border:3px solid var(--ink);border-radius:var(--r-md)}
@media(max-width:560px){.wm .wm-t{font-size:30px}}
