/* Donate page. Shares its design system with index.html: same tokens, fonts, pill nav, cards and motion. */
:root{--bg:#e6f1ff;--sc:#f1f7ff;--sh:#d9e9ff;--on:#0c1b33;--onv:#44546f;--pri:#1560d4;--onpri:#fff;--pc:#d3e4ff;--onpc:#001c3b;--tc:#dfe0ff;--cc:#c4ecff;--ink:#0c1b33;--inkon:#fff;--good:#14804f;--ol:rgba(12,27,51,.14);color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#000;--sc:#0d1424;--sh:#16213a;--on:#e4ecfa;--onv:#9fb1ce;--pri:#a8c8ff;--onpri:#00315e;--pc:#0b3e7d;--onpc:#d3e4ff;--tc:#27285a;--cc:#00394f;--ink:#e4ecfa;--inkon:#0a0f1a;--good:#6fdca4;--ol:rgba(228,236,250,.18);color-scheme:dark}}
:root[data-theme="dark"]{--bg:#000;--sc:#0d1424;--sh:#16213a;--on:#e4ecfa;--onv:#9fb1ce;--pri:#a8c8ff;--onpri:#00315e;--pc:#0b3e7d;--onpc:#d3e4ff;--tc:#27285a;--cc:#00394f;--ink:#e4ecfa;--inkon:#0a0f1a;--good:#6fdca4;--ol:rgba(228,236,250,.18);color-scheme:dark}

*,*::before,*::after{box-sizing:inherit}
html{scroll-behavior:smooth;scroll-padding-top:calc(92px + env(safe-area-inset-top,0px));-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--on);font:400 16px/1.65 "Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif;transition:background .3s,color .3s;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:21;background:var(--bg)}
h1,h2,h3{margin:0;line-height:1.06;letter-spacing:-.03em;font-weight:800}
a{color:inherit}
svg.i{width:24px;height:24px;fill:currentColor;flex:none}
.wrap{max-width:1040px;margin:0 auto;padding:0 20px}
.col{max-width:720px}
[hidden]{display:none!important}
a:focus-visible,button:focus-visible,.addr:focus-visible{outline:3px solid var(--pri);outline-offset:3px}
main:focus{outline:none}

#bg{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none;display:block}
main,footer{position:relative;z-index:1}

.skip{position:absolute;left:16px;top:-80px;z-index:30;padding:10px 18px;border-radius:999px;background:var(--pri);color:var(--onpri);font-weight:600;text-decoration:none}
.skip:focus{top:calc(12px + env(safe-area-inset-top,0px))}

/* floating pill nav, same as the home page */
header{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;pointer-events:none}
nav{pointer-events:auto;display:flex;align-items:center;gap:4px;height:58px;margin-top:12px;padding:0 8px 0 16px;border-radius:999px;background:var(--sc);background:color-mix(in srgb,var(--sc) 78%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);border:1px solid color-mix(in srgb,var(--on) 9%,transparent);box-shadow:0 10px 30px -12px rgba(12,27,51,.28)}
.logo{display:flex;align-items:center;gap:9px;margin-right:auto;text-decoration:none;font:400 24px/1 "Bagel Fat One","Plus Jakarta Sans",sans-serif;letter-spacing:-.01em;color:var(--on);padding-right:8px}
.logo svg{width:30px;height:30px;color:var(--pri);animation:spin 24s linear infinite}
.logo:hover svg{animation-duration:3s}
nav a.l{text-decoration:none;color:var(--onv);font-weight:600;font-size:14px;padding:9px 15px;border-radius:999px;transition:background .2s,color .2s}
nav a.l:hover{background:var(--sh);color:var(--on)}
.ib{position:relative;overflow:hidden;width:40px;height:40px;border:0;border-radius:50%;background:none;color:var(--onv);display:grid;place-items:center;cursor:pointer;transition:transform .5s,background .2s,color .2s;margin-right:2px;padding:0}
.ib:hover{background:var(--sh);color:var(--on)}
#tog:hover{transform:rotate(180deg)}
@media(max-width:620px){nav a.l{display:none}nav{padding-left:14px}.logo{font-size:22px}}

.btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:52px;padding:0 26px;border:0;border-radius:999px;background:var(--pri);color:var(--onpri);font:600 15px "Plus Jakarta Sans",system-ui,sans-serif;text-decoration:none;cursor:pointer;transition:box-shadow .2s,transform .2s,background .2s,color .2s;-webkit-tap-highlight-color:transparent}
.btn:hover{box-shadow:0 6px 18px rgba(0,0,0,.25);transform:translateY(-2px)}
.btn:active{transform:none;box-shadow:none}
.btn.t{background:var(--pc);color:var(--onpc)}
.btn.t:hover{box-shadow:0 6px 18px rgba(0,0,0,.14)}
.btn.sm{height:40px;padding:0 18px 0 12px;font-size:14px}
.btn.sm .i{width:20px;height:20px}
.ico{width:22px;height:22px;flex:none;fill:currentColor}
.ripple{position:absolute;border-radius:50%;background:currentColor;opacity:.16;transform:scale(0);pointer-events:none;animation:ripple .55s cubic-bezier(.05,.7,.1,1) forwards}
@keyframes ripple{to{transform:scale(1);opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes beat{0%,100%{transform:scale(1)}15%{transform:scale(1.22)}30%{transform:scale(1)}45%{transform:scale(1.14)}}
@keyframes morph{0%,100%{border-radius:50% 50% 50% 12%}33%{border-radius:30% 60% 40% 60%}66%{border-radius:60% 30% 60% 30%}}
@keyframes ring{0%{transform:scale(.8);opacity:.6}100%{transform:scale(1.7);opacity:0}}
@keyframes pop{from{transform:scale(.3);opacity:0}to{transform:none;opacity:1}}
@keyframes milepop{0%{transform:scale(.5)}60%{transform:scale(1.25)}100%{transform:none}}
@keyframes shine{0%,60%{left:-60%}100%{left:130%}}
@keyframes scan{0%{transform:translateY(-100%);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translateY(240%);opacity:0}}

.rv{opacity:0;transform:translateY(28px) scale(.97);transition:opacity .7s,transform .7s cubic-bezier(.2,.8,.2,1);transition-delay:var(--d,0s)}
.rv.in{opacity:1;transform:none}

/* hero */
.intro{padding:56px 0 36px}
.heart-btn{position:relative;display:grid;place-items:center;width:84px;height:84px;margin:0 0 26px;padding:0;border:0;background:var(--pri);color:var(--onpri);border-radius:50% 50% 50% 14%;cursor:pointer;animation:morph 9s ease-in-out infinite;transition:transform .3s cubic-bezier(.3,1.5,.5,1);-webkit-tap-highlight-color:transparent}
.heart-btn:hover{transform:scale(1.07)}
.heart-btn:active{transform:scale(.92)}
.heart-btn svg{width:44px;height:44px;fill:currentColor;animation:beat 2.4s infinite}
.heart-ring{position:absolute;inset:0;border-radius:inherit;border:2px solid var(--pri);opacity:0;pointer-events:none;animation:ring 2.4s ease-out infinite}
.intro h1{font-size:clamp(40px,8.4vw,84px);max-width:11ch}
.intro h1 .g{color:var(--pri)}
.lede{max-width:40ch;margin:22px 0 0;font-size:clamp(17px,2.4vw,20px);color:var(--onv)}

h2{font-size:clamp(28px,4.6vw,40px);max-width:15ch}
.card{background:var(--sc);border-radius:36px;padding:clamp(24px,5vw,44px)}

/* monthly goal */
.goal{margin:0 0 20px}
.goal-head{display:flex;align-items:center;gap:12px}
.goal-ico{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:50%;background:var(--pc);color:var(--onpc)}
.goal-ico svg{width:20px;height:20px;fill:currentColor}
.goal-label{margin:0;max-width:none;color:var(--onv);font:600 14px/1.4 "Plus Jakarta Sans",system-ui,sans-serif;letter-spacing:.01em}
.goal-amount{margin:14px 0 22px;font:400 clamp(54px,14vw,84px)/1 "Bagel Fat One","Plus Jakarta Sans",sans-serif;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.goal-amount .of{font:600 17px "Plus Jakarta Sans",system-ui,sans-serif;letter-spacing:0;color:var(--onv)}
.progress{position:relative;height:16px;border-radius:999px;background:var(--pc)}
.progress-fill{position:relative;height:100%;width:0;border-radius:inherit;background:var(--pri);overflow:hidden;transition:width 1.2s cubic-bezier(.2,.8,.2,1)}
.progress-fill::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:shine 3.4s ease-in-out infinite}
.progress.done .progress-fill{background:var(--good)}
.miles{position:relative;height:70px;margin:6px 0 0;padding:0;list-style:none}
.mile{position:absolute;top:0;display:grid;justify-items:center;gap:5px;transform:translateX(-50%)}
.mile:last-child{transform:translateX(-100%)}
.mile-dot{display:grid;place-items:center;width:34px;height:34px;margin-top:6px;border-radius:50%;background:var(--sh);color:var(--onv);transition:background .3s,color .3s}
.mile-dot svg{width:18px;height:18px;fill:currentColor}
.mile-label{color:var(--onv);font:600 12px/1 "Plus Jakarta Sans",system-ui,sans-serif;font-variant-numeric:tabular-nums}
.mile.reached .mile-dot{background:var(--pri);color:var(--onpri);animation:milepop .55s cubic-bezier(.3,1.5,.5,1)}
.mile.reached .mile-label{color:var(--on)}
.mile:last-child.reached .mile-dot{background:var(--good);color:var(--bg)}
.goal-foot{margin:6px 0 0;color:var(--onv);font-size:15px}

/* supporters */
.thanks{display:flex;align-items:center;gap:14px;margin:0 0 20px;padding:14px 18px;border-radius:24px;background:var(--pc);color:var(--onpc)}
.thanks p{margin:0;font-size:15px;line-height:1.4}
.avatars{display:flex;flex:none}
.avatar{display:grid;place-items:center;width:38px;height:38px;margin-left:-9px;border:2px solid var(--pc);border-radius:50%;color:#fff;font:800 14px/1 "Plus Jakarta Sans",system-ui,sans-serif;background:hsl(var(--h,220) 55% 42%)}
.avatar:first-child{margin-left:0}

.actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:28px}
.actions .btn{flex:1 1 220px}

/* other ways to help: one tidy row of pills */
.pills{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 56px}
.pill{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 18px 0 14px;border:0;border-radius:999px;background:var(--sc);color:var(--on);font:600 14px "Plus Jakarta Sans",system-ui,sans-serif;text-decoration:none;cursor:pointer;transition:background .2s,color .2s,transform .3s cubic-bezier(.3,1.5,.5,1);-webkit-tap-highlight-color:transparent}
.pill svg{width:20px;height:20px;color:var(--pri);transition:color .2s}
.pill:hover{background:var(--pri);color:var(--onpri);transform:translateY(-3px)}
.pill:hover svg{color:inherit}
.pill[hidden]{display:none}

/* footer */
.foot{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:4px;padding-bottom:calc(28px + env(safe-area-inset-bottom,0px));font-size:14px;color:var(--onv)}
.flink{color:var(--onv);font-weight:600;text-underline-offset:3px}
.flink:hover{color:var(--on)}

/* crypto sheet: bottom sheet on phones, centred card on larger screens */
.sheet{position:fixed;inset:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--on);overflow:hidden}
.sheet[open]{display:flex;align-items:flex-end;justify-content:center}
.sheet::backdrop{background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .3s}
.sheet.open::backdrop{opacity:1}
.sheet-body{width:100%;max-width:480px;max-height:94dvh;max-height:94vh;overflow-y:auto;overscroll-behavior:contain;padding:8px 22px calc(26px + env(safe-area-inset-bottom,0px));border-radius:36px 36px 0 0;background:var(--sc);color:var(--on);transform:translateY(100%);transition:transform .26s ease-in}
.sheet.open .sheet-body{transform:none;transition:transform .5s cubic-bezier(.05,.7,.1,1)}
@supports (height:1dvh){.sheet-body{max-height:94dvh}}
.handle{width:36px;height:4px;margin:6px auto 12px;border-radius:999px;background:var(--onv);opacity:.4}
.sheet-head{display:flex;align-items:center;justify-content:space-between;margin:0 -6px 16px 0}
.sheet-head h2{font-size:28px;max-width:none}
@media(min-width:600px){.handle{display:none}.sheet[open]{align-items:center}.sheet-body{border-radius:36px;padding-bottom:26px;transform:translateY(40px) scale(.95);opacity:0;transition:transform .2s,opacity .2s}.sheet.open .sheet-body{opacity:1;transform:none;transition:transform .45s cubic-bezier(.2,1.2,.3,1),opacity .25s}}

.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border-radius:999px;background:var(--sh)}
.seg button{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:9px;height:44px;padding:0 10px;border:0;border-radius:999px;background:none;color:var(--onv);font:600 14px "Plus Jakarta Sans",system-ui,sans-serif;cursor:pointer;transition:background .2s,color .2s;-webkit-tap-highlight-color:transparent}
.seg button:hover{color:var(--on)}
.seg button[aria-selected="true"]{background:var(--pri);color:var(--onpri)}
.seg .coin-dot{flex:none;width:12px;height:12px;border-radius:50%;background:var(--c,var(--pri));box-shadow:0 0 0 2px rgba(255,255,255,.7);transition:transform .35s cubic-bezier(.3,1.5,.5,1)}
.seg button[aria-selected="true"] .coin-dot{transform:scale(1.25)}
.seg button small{font-size:inherit;opacity:.75;font-weight:500}

.pay{display:grid;justify-items:center;gap:16px;margin-top:22px}
.qr-wrap{position:relative;padding:20px;border-radius:28px;background:#fff;overflow:hidden}
.qr{position:relative;width:min(58vw,192px);height:min(58vw,192px)}
.qr svg.code{display:block;width:100%;height:100%;fill:none}
.qr .coin{position:absolute;inset:0;margin:auto;width:40px;height:40px;border-radius:50%;background:#fff;display:grid;place-items:center}
.qr .coin span{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#26a17b;color:#fff;font:700 18px/1 "Plus Jakarta Sans",system-ui,sans-serif}
.corner{position:absolute;width:22px;height:22px;border:0 solid #1560d4;transition:transform .5s cubic-bezier(.3,1.5,.5,1)}
.corner.tl{top:8px;left:8px;border-top-width:3px;border-left-width:3px;border-top-left-radius:10px}
.corner.tr{top:8px;right:8px;border-top-width:3px;border-right-width:3px;border-top-right-radius:10px}
.corner.bl{bottom:8px;left:8px;border-bottom-width:3px;border-left-width:3px;border-bottom-left-radius:10px}
.corner.br{bottom:8px;right:8px;border-bottom-width:3px;border-right-width:3px;border-bottom-right-radius:10px}
.scan{position:absolute;left:0;right:0;top:0;height:56px;opacity:0;pointer-events:none;background:linear-gradient(to bottom,transparent,rgba(21,96,212,.28) 85%,rgba(21,96,212,.6))}
.qr-wrap.scanning .scan{animation:scan 1.1s cubic-bezier(.4,0,.2,1) both}
.net-note{margin:0;text-align:center;color:var(--onv);font-size:15px}
.info-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.info-chip{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 13px 0 10px;border-radius:999px;background:var(--pc);color:var(--onpc);font:600 13px/1 "Plus Jakarta Sans",system-ui,sans-serif}
.info-chip svg{width:16px;height:16px;fill:currentColor}
.addr{width:100%;margin:0;padding:14px 16px;border-radius:20px;background:var(--sh);font:600 14px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-align:center;overflow-wrap:anywhere;user-select:all;-webkit-user-select:all}
.pay>.btn{width:100%}
.ico-check{display:none}
.btn.done{background:var(--good);color:var(--bg)}
.btn.done .ico-copy{display:none}
.btn.done .ico-check{display:block;animation:pop .4s cubic-bezier(.3,1.5,.5,1)}
.warn{display:flex;align-items:flex-start;gap:8px;margin:0;color:var(--onv);font-size:13px;line-height:1.5}
.warn svg{flex:none;width:18px;height:18px;margin-top:1px;fill:currentColor}

.bit{position:fixed;left:0;top:0;z-index:100;pointer-events:none;will-change:transform,opacity}
.bit svg{display:block;width:100%;height:100%}
.live{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

@media(max-width:420px){.btn{padding:0 20px}.intro{padding-top:36px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}html{scroll-behavior:auto}.sheet-body{transform:none}}
