:root{--bg:#fffaf5;--card:#fff;--ink:#2b2233;--mute:#7a6f85;--pri:#ff5a7a;--pri2:#ffb347;--acc:#7b61ff;--ok:#22a06b;--warn:#f0a500;--line:#f0e6dc;--r:14px}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink);line-height:1.5}
a{color:var(--acc)}h1,h2,h3{line-height:1.2}
.nav{position:sticky;top:0;z-index:9;background:#fffdfb;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:6px;padding:10px 18px;flex-wrap:wrap}
.nav .brand{font-weight:800;margin-right:12px;text-decoration:none;color:var(--ink)}.nav .brand span{color:var(--pri)}
.nav a.l{text-decoration:none;color:var(--mute);font-size:14px;padding:6px 10px;border-radius:99px}.nav a.l:hover,.nav a.l.on{background:#ffe9ee;color:var(--pri)}
.wrap{max-width:1100px;margin:0 auto;padding:24px 18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:0 2px 10px #2b223308}
.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.btn{display:inline-block;border:0;border-radius:99px;padding:9px 16px;font-weight:600;cursor:pointer;text-decoration:none;font-size:14px;background:var(--pri);color:#fff}
.btn.sec{background:#f3eefc;color:var(--acc)}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}.btn.sm{padding:5px 11px;font-size:13px}.btn.danger{background:#ffe5e5;color:#c0392b}
.hero{background:#fff1f4;border-radius:24px;padding:48px 28px;text-align:center}
.hero h1{font-size:clamp(30px,5vw,52px);margin:.2em 0}.mute{color:var(--mute)}.pill{display:inline-block;font-size:12px;padding:2px 9px;border-radius:99px;background:#f3eefc;color:var(--acc);font-weight:600}
.pill.warn{background:#fff3d6;color:#a26b00}.pill.ok{background:#dff5ea;color:var(--ok)}.pill.red{background:#ffe5e5;color:#c0392b}
.avatar{width:42px;height:42px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:#fff;flex:none}
.row{display:flex;gap:12px;align-items:center}.between{justify-content:space-between}.wrapf{flex-wrap:wrap}
table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px;border-bottom:1px solid var(--line)}
.cols{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media(max-width:800px){.cols{grid-template-columns:1fr}}
.col h3{font-size:15px;text-transform:uppercase;letter-spacing:.05em;color:var(--mute)}
.saying{background:#fff8ef;border-radius:10px;padding:8px 10px;margin:6px 0;font-size:14px;display:flex;gap:6px;align-items:center;justify-content:space-between}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:99px;opacity:0;transition:.3s;pointer-events:none}.toast.show{opacity:1}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal div{min-height:78px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:4px;font-size:12px}
.cal .h{min-height:auto;background:none;border:0;text-align:center;font-weight:700;color:var(--mute)}.cal .ev{display:block;background:#ffe9ee;color:var(--pri);border-radius:6px;padding:1px 4px;margin-top:2px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cal .today{outline:2px solid var(--pri)}
pre{background:#1e1b26;color:#e8e3f5;padding:14px;border-radius:10px;overflow:auto;font-size:12.5px}
.toggle{appearance:none;width:36px;height:20px;background:#ddd;border-radius:99px;position:relative;cursor:pointer;vertical-align:middle}.toggle:checked{background:var(--ok)}.toggle::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:.2s}.toggle:checked::after{left:18px}
.wall{columns:3 260px;gap:14px}.wall .card{break-inside:avoid;margin-bottom:14px}
.box{border:2px solid var(--line);border-radius:12px;padding:12px;background:#fff}.layer{border-radius:16px;padding:16px;margin-bottom:12px}
.modal{position:fixed;inset:0;background:#0006;display:none;align-items:center;justify-content:center;z-index:20}.modal.show{display:flex}.modal .card{max-width:520px;width:92%}
input,select,textarea{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:10px;width:100%}
footer{text-align:center;color:var(--mute);font-size:12px;padding:24px 12px}footer a{color:var(--mute)}
/* ---- design system polish ---- */
:root{--sh:0 1px 2px #2b22330a,0 6px 20px #2b22330d;--grad:var(--pri)}
body{font-size:15.5px;-webkit-font-smoothing:antialiased}
h1{font-size:clamp(26px,4vw,36px);letter-spacing:-.02em}h2{letter-spacing:-.01em}
.card{box-shadow:var(--sh);transition:transform .15s,box-shadow .15s}a.card:hover,.card.hov:hover{transform:translateY(-2px)}
.btn{transition:filter .15s,transform .1s}.btn:hover{filter:brightness(1.05)}.btn:active{transform:scale(.97)}.btn:not(.sec):not(.ghost):not(.danger){background:var(--grad)}
input:focus,select:focus,textarea:focus{outline:2px solid #ff5a7a55;border-color:var(--pri)}
label{font-size:14px;font-weight:600;color:var(--ink)}label input,label select,label textarea{margin-top:4px;font-weight:400}
.nav{background:#fffdfb;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav a.l{white-space:nowrap}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:18px}.page-head h1{margin:0}
.welcome{background:var(--grad);color:#fff;border-radius:var(--r);padding:16px 18px;margin-bottom:18px;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.welcome a{color:#fff;font-weight:700}
.stat{font-size:28px;font-weight:800}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:18px}
@media(max-width:600px){.wrap{padding:16px 12px}.hero{padding:32px 16px}.cal div{min-height:54px;font-size:10px}.cal .ev{font-size:10px}.btn{padding:9px 14px}table{font-size:13px}}
.yearcard{border-left:5px solid var(--pri)}.chip{display:inline-flex;align-items:center;gap:4px;background:#fff3e6;border-radius:99px;padding:3px 10px;margin:2px;font-size:13px}
.photos{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.photos div{aspect-ratio:1;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:28px;background:#fff3e6}
.nav .brand{white-space:nowrap;flex:none}
/* ---- site structure: marketing top nav + app shell ---- */
.topnav{position:sticky;top:0;z-index:9;display:flex;align-items:center;gap:18px;padding:12px 22px;background:#fffdfb;border-bottom:1px solid var(--line)}
.topnav .brand,.side .brand{font-weight:800;text-decoration:none;color:var(--ink);white-space:nowrap}.topnav .brand span,.side .brand span{color:var(--pri)}
.topnav .sp{flex:1}.topnav a.l{color:var(--mute);text-decoration:none;font-size:14px}.topnav a.l:hover{color:var(--pri)}
@media(max-width:640px){.topnav a.l.hide-m{display:none}}
body.shell-app{padding-left:232px}
.side{position:fixed;left:0;top:0;bottom:0;width:232px;background:#fffdfb;border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:2px;z-index:10;overflow:auto}
.side .brand{padding:4px 10px 16px;font-size:17px}
.side a.i{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:10px;color:var(--ink);text-decoration:none;font-size:14.5px}
.side a.i:hover{background:#fff1f4}.side a.i.on{background:#ffe9ee;color:var(--pri);font-weight:700}
.side .sec{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);padding:14px 10px 4px}
.side .me{margin-top:auto;display:flex;gap:8px;align-items:center;padding:10px;border-top:1px solid var(--line);font-size:13px}
.tabbar{display:none}
@media(max-width:860px){body.shell-app{padding-left:0;padding-bottom:70px}.side{display:none}
 .tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:10;background:#fffdfb;border-top:1px solid var(--line);justify-content:space-around;padding:6px 0 calc(6px + env(safe-area-inset-bottom))}
 .tabbar a{display:flex;flex-direction:column;align-items:center;font-size:11px;color:var(--mute);text-decoration:none;gap:1px;min-width:56px}.tabbar a b{font-size:20px;font-weight:400}.tabbar a.on{color:var(--pri);font-weight:700}
 .mtop{display:flex!important}}
.mtop{display:none;position:sticky;top:0;z-index:9;background:#fffdfb;border-bottom:1px solid var(--line);padding:10px 14px;align-items:center;justify-content:space-between}
.mtop .brand{font-weight:800;text-decoration:none;color:var(--ink)}.mtop .brand span{color:var(--pri)}
.steps3{counter-reset:s}.steps3 .card h3::before{counter-increment:s;content:counter(s);display:inline-flex;width:28px;height:28px;border-radius:50%;background:var(--grad);color:#fff;align-items:center;justify-content:center;margin-right:8px;font-size:14px}
.section{margin:56px 0}.section>h2{text-align:center;font-size:clamp(22px,3vw,30px)}
.tier h3{margin-top:0}.tier ul{padding-left:18px;margin:8px 0}.tier .price{font-size:22px;font-weight:800}
.mini{font-size:13px}.list-item{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.list-item:last-child{border:0}
@media print{.side,.tabbar,.mtop,.topnav{display:none!important}body.shell-app{padding:0}}
.gtag{display:inline-flex;gap:3px;align-items:center;font-size:12px;font-weight:600;padding:1px 8px;border-radius:99px;border:1px solid;margin:1px 2px 1px 0;white-space:nowrap}
.chipbar{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}.chipf{border:1px solid var(--line);background:#fff;border-radius:99px;padding:5px 12px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;color:var(--ink)}
.chipf.on{background:var(--ink);color:#fff;border-color:var(--ink)}.chipf.on .mute{color:#ddd}
.swatch{width:26px;height:26px;border-radius:50%;border:2px solid #fff;outline:1px solid var(--line);cursor:pointer}.swatch.on{outline:3px solid var(--ink)}
.phero{display:flex;gap:18px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-top:6px solid var(--c,var(--pri));border-radius:18px;padding:22px;margin-bottom:16px}
.pmeta{margin:6px 0;color:var(--ink)}.pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.pgrid .psec:first-child{grid-row:span 2}
.kv{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:14.5px}.kv:last-child{border:0}
.wish{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.wish:last-child{border:0}.wish.claimed b{text-decoration:line-through;color:var(--mute)}
.chip.no{background:#f4f1f6}.star{background:none;border:0;cursor:pointer;font-size:18px;padding:0 4px;opacity:.35}.star.on{filter:none;opacity:1}
.claim{display:flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:0 0 0 12px;flex:1 1 100%}.claim span{color:var(--mute);white-space:nowrap}.claim input{border:0;padding-left:2px}

/* claim form: desktop row, mobile stack (12px gaps, joined prefix+username, full-width Claim) */
.claimform{display:flex;flex-wrap:wrap;gap:12px;align-items:stretch}.claimform>*{min-width:0}
.claimform .claim{flex:2 1 260px;min-width:0;overflow:hidden}.claimform .claim .pre{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.claimform .claim input{flex:1 1 90px;min-width:0;width:auto}
.claimform .cf-bd,.claimform .cf-em{flex:1 1 160px;width:auto}.claimform .readback{order:9;flex:1 0 100%;margin-top:-6px}.claimform .readback:empty{display:none}
@media(max-width:640px){.claimform{flex-direction:column;gap:12px}.claimform>*,.claimform .claim,.claimform .cf-bd,.claimform .cf-em{width:100%;flex:0 0 auto}.claimform .claim{flex-wrap:wrap}.claimform .cf-go{width:100%;min-height:44px}
 input,select,textarea{font-size:16px!important}}
@media(max-width:380px){.claimform .claim{padding:8px 12px 0}.claimform .claim .pre{flex-basis:100%;font-size:14px;text-align:left}.claimform .claim input{padding-left:0}}
/* spacing scale 4/8/12/16/24/32 · forms: full-width stacked 48px inputs, 16px font, one primary button */
:root{--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px}
.field{display:block;margin:0 0 var(--s4)}.field>input,.field>select,.field>textarea{margin-top:var(--s2)}.field .hint{font-weight:400}
.form-error:empty{display:none}.form-error{margin:0 0 var(--s3)}
.claimform input,.claimform .claim{min-height:48px}
@media(max-width:640px){
 input:not([type=checkbox]):not([type=radio]):not([type=file]),select{min-height:48px;padding:12px}
 .claimform .claim{padding:0 0 0 var(--s3)}.claimform .claim input{min-height:46px;padding:0 var(--s3) 0 2px}
 .card{padding:var(--s5) var(--s4)}.wrap{padding-left:var(--s4);padding-right:var(--s4)}
 .grid2{grid-template-columns:1fr!important;gap:0 var(--s3)}
 .btn{min-height:48px}.btn.sm{min-height:36px}
 form .row{flex-wrap:wrap;gap:var(--s3)}
 .addrow{flex-direction:column;gap:var(--s3)}.addrow>*{width:100%;flex:0 0 auto!important}.addrow .btn{width:100%}
 .claimform .claim{order:1}.claimform .cf-bd{order:2}.claimform .readback{order:3;margin-top:-4px}.claimform .cf-em{order:4}.claimform .cf-go{order:5}
 .hero{padding-left:0;padding-right:0}.hero h1{font-size:30px}
}
.si-line{font-size:20px;font-weight:700;margin:0 0 var(--s3)}.si-line s{color:var(--mute);font-weight:600}.si-line .si{color:var(--pri);text-decoration:none;border:0}
/* flat line icons + mobile app shell */
.ic{flex:none;display:block}.side a.i .ic{color:var(--mute)}.side a.i.on .ic{color:var(--pri)}
.tabbar a{gap:var(--s1)!important}.tabbar a .ic{margin:0 auto}
.mtop{gap:var(--s2)}.mtop .sp{flex:1}.mbell{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;color:var(--ink);border-radius:10px}.mbell .count{position:absolute;top:2px;right:0;margin:0}
.pill.demo{background:#fff4d6;color:#8a5a00;font-weight:700}
.add-m{display:none}
@media(max-width:760px){
 .grid,.grid2,.grid3,.g2,.g3,#dash,[style*="grid-template-columns"]{grid-template-columns:1fr!important}
 .page-head{flex-wrap:wrap;gap:var(--s3);margin-bottom:var(--s4)}.page-head h1{font-size:26px;margin:0}
 .card{margin-bottom:var(--s3)}
 .addrow.inline{display:none}.add-m{display:flex;width:100%;margin:0 0 var(--s4)}
 .chipbar{overflow-x:auto;flex-wrap:nowrap;gap:var(--s2);padding-bottom:var(--s1);margin-bottom:var(--s3)}
 main.wrap{padding-bottom:96px}
}
/* calm step sheet (claim + mobile add) */
.steps-flow{max-width:420px;margin:0 auto;text-align:left}
.steps-flow .dots{display:flex;gap:var(--s2);justify-content:center;margin:0 0 var(--s5)}.steps-flow .dots i{width:8px;height:8px;border-radius:99px;background:var(--line)}.steps-flow .dots i.on{background:var(--pri);width:24px}
.steps-flow .step{display:none}.steps-flow .step.on{display:block}
.steps-flow h2{font-size:26px;line-height:1.2;margin:0 0 var(--s2)}.steps-flow .lead{color:var(--mute);margin:0 0 var(--s5)}
.steps-flow .big{min-height:56px!important;font-size:18px!important;padding:0 var(--s4)!important;border-radius:14px}
.steps-flow .claim.big{padding:0 0 0 var(--s4)!important;display:flex;align-items:center;flex-wrap:nowrap}.steps-flow .claim.big .pre{color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60%}.steps-flow .claim.big input{border:0;min-height:54px;font-size:18px;padding:0 var(--s4) 0 2px;flex:1;min-width:0;background:transparent}
.steps-flow .status{min-height:24px;margin:var(--s2) 0 var(--s5);font-size:15px}
.steps-flow .go{width:100%;min-height:52px;font-size:17px}
.steps-flow .back{background:none;border:0;color:var(--mute);font-size:15px;padding:var(--s2) 0;margin:0 0 var(--s3);cursor:pointer}
.steps-flow .fine{font-size:13px;color:var(--mute);margin:var(--s4) 0 0;text-align:center}
@media(max-width:380px){.steps-flow .claim.big{flex-wrap:wrap;padding:var(--s3) var(--s4) 0!important}.steps-flow .claim.big .pre{max-width:100%;font-size:14px}.steps-flow .claim.big input{padding-left:0}}
.steps-flow .claim.big{border:1px solid var(--line);background:#fff}.steps-flow .claim.big:focus-within{border-color:var(--pri);box-shadow:0 0 0 3px #ffe1e8}
.steps-flow .claim.big input,.steps-flow .claim.big input:focus{border:0!important;box-shadow:none!important;outline:none!important}

/* clean list rows (ideas, notes, wishlist): circle tick on the left, tap row to edit, no button clusters */
.clist{list-style:none;margin:0 0 var(--s3);padding:0}.clist li{display:flex;align-items:center;gap:var(--s3);min-height:48px;border-bottom:1px solid var(--line)}.clist li:last-child{border-bottom:0}
.clist .tick{flex:none;width:24px;height:24px;border-radius:99px;border:2px solid var(--line);background:#fff;padding:0;cursor:pointer}.clist .tick:hover{border-color:var(--pri)}.clist .tick.done{background:var(--pri);border-color:var(--pri);position:relative}.clist .tick.done:after{content:"";position:absolute;left:7px;top:3px;width:6px;height:11px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.clist .crow{flex:1;min-width:0;display:flex;align-items:baseline;gap:var(--s2);background:none;border:0;padding:var(--s3) 0;text-align:left;font:inherit;color:inherit;cursor:pointer}.clist .crow.static{cursor:default}.clist .crow .t{flex:1;min-width:0;overflow-wrap:anywhere}.clist .crow .m{flex:none;color:var(--mute);font-size:14px}
.clist .x{flex:none;width:44px;height:44px;border:0;background:none;color:var(--mute);font-size:22px;cursor:pointer;border-radius:10px}.clist .x:hover{background:#f6f2ee;color:var(--ink)}
.oneline{margin:0 0 var(--s2)}.oneline input{width:100%}
.danger-text{color:#c0392b!important}

/* visibility pill (one compact select per section) + who-can-see hint */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.visp{position:relative;display:inline-flex;flex:none}.visp select{appearance:none;-webkit-appearance:none;min-height:36px!important;height:36px;padding:0 30px 0 12px!important;border-radius:99px;font-size:14px!important;font-weight:700;border:1.5px solid var(--line);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23776' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center;width:auto;cursor:pointer}
.visp.v-public select{border-color:#2e9e6b;color:#1f7a50;background-color:#eefaf3}.visp.v-groups select{border-color:var(--acc);color:var(--acc);background-color:#f3eefc}.visp.v-private select{border-color:#999;color:#555;background-color:#f4f2f0}
.vis-hint{margin:calc(-1 * var(--s2)) 0 var(--s3);font-size:13px;color:var(--mute)}.vis-hint .saved.ok{color:#1f7a50;font-weight:700}.vis-hint .saved.bad{color:#c0392b}
.sechead{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);flex-wrap:nowrap}.sechead h3{margin:0;min-width:0}

.tagl{margin:0 0 var(--s4)}.tagl h4{margin:0 0 var(--s2);font-size:15px}.tagl .chips,.tagl .sugg{display:flex;flex-wrap:wrap;gap:var(--s2)}.tagl .sugg{margin-top:var(--s2)}
.chip{display:inline-flex;align-items:center;gap:var(--s1);min-height:36px;padding:0 var(--s3);border-radius:99px;border:1px solid var(--line);background:#fff;font:inherit;font-size:14px;cursor:pointer;color:var(--ink)}
.chip.on{background:#fff1f4;border-color:#ffc9d5}.chip.s{color:var(--mute);border-style:dashed;background:transparent}
.chip-in{flex:1 1 140px;min-width:120px;min-height:36px!important;height:36px;border-radius:99px;padding:0 var(--s3)!important;font-size:16px!important}

/* calendar: segmented control, options menu, square grid with dots on mobile */
.seg{display:inline-flex;background:#f4efea;border-radius:12px;padding:var(--s1);gap:var(--s1);margin:0 0 var(--s4)}.seg a{min-height:36px;display:flex;align-items:center;padding:0 var(--s4);border-radius:9px;text-decoration:none;color:var(--mute);font-weight:600;font-size:14px}.seg a.on{background:#fff;color:var(--ink);box-shadow:0 1px 2px #0001}
.menu{position:relative}.menu summary{list-style:none;display:inline-flex;align-items:center;gap:var(--s2)}.menu summary::-webkit-details-marker{display:none}
.menu-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:20;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh);min-width:220px;padding:var(--s1)}.menu-pop .mi{display:block;width:100%;text-align:left;padding:var(--s3);min-height:44px;border:0;background:none;font:inherit;color:var(--ink);text-decoration:none;border-radius:8px;cursor:pointer}.menu-pop .mi:hover{background:#f6f2ee}
.calwrap{display:grid;grid-template-columns:minmax(0,2fr) minmax(220px,1fr);gap:var(--s4);align-items:start}
.cal .dots{display:none}
@media(max-width:760px){.calwrap{grid-template-columns:1fr}.seg{display:flex}.seg a{flex:1;justify-content:center;padding:0 var(--s2)}
 .cal{grid-template-columns:repeat(7,1fr)!important;gap:2px!important}.cal>div{aspect-ratio:1/1;min-height:0!important;height:auto!important;padding:4px!important;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;overflow:hidden}
 .cal .h{aspect-ratio:auto!important;font-size:12px;text-align:center;padding:var(--s1) 0!important}.cal .evs{display:none}.cal .dots{display:flex;gap:2px;margin-top:auto;margin-bottom:4px}.cal .dots i{width:6px;height:6px;border-radius:99px;background:var(--pri)}
 .iconbtn .t{display:none}.iconbtn{min-height:44px;min-width:44px;justify-content:center}}
[data-star]{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;background:none;border:0;cursor:pointer}
.add-m{justify-content:center;align-items:center}
@media(max-width:640px){.visp select{font-size:16px!important}}
/* wishes: celebration, flat colors */
.confetti.burst{position:fixed;inset:0;z-index:90}.confetti.burst i{animation-duration:2.2s}
.wish-burst{display:flex;gap:12px;align-items:center;background:#fff4e6;border-radius:14px;padding:12px 14px}
.wishes .wish-head{margin-bottom:12px}.wishes .seg{display:flex;gap:4px;background:#f4f2f0;border-radius:99px;padding:4px;margin:0 0 12px;overflow-x:auto}
.wishes .seg a{flex:1 0 auto;text-align:center;padding:8px 12px;border-radius:99px;text-decoration:none;color:var(--mute);font-weight:700;font-size:14px;min-height:36px;box-sizing:border-box}
.wishes .seg a.on{background:#fff;color:var(--pri);box-shadow:0 0 0 1px var(--line)}
.wishrow{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--line)}.wishrow:first-child{border-top:0}
.wishrow .wbody{margin:4px 0 8px;font-size:16px;line-height:1.4}.wishrow .wact{display:flex;flex-wrap:wrap;gap:8px}
.wdot{flex:none;width:40px;height:40px;border-radius:50%;background:#f3eefc;color:var(--acc);display:grid;place-items:center;font-weight:800}
.wset{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}.wset summary,.quiet summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px}
.card.quiet{margin-top:16px;background:#fbfaf8}
.wall{margin-top:16px}.wall .wishrow .wbody{margin-bottom:0}
.composer{margin-top:12px;background:#f7f3ff;border-radius:16px;padding:16px}.composer textarea{width:100%;font-size:16px;min-height:72px;border-radius:12px}
.composer .who{display:flex;gap:8px;margin:8px 0}.composer .who label{flex:1}.composer .who input{position:absolute;opacity:0}.composer .who span{display:block;text-align:center;padding:10px;border-radius:99px;border:1.5px solid var(--line);background:#fff;font-weight:700;min-height:44px;box-sizing:border-box}
.composer .who input:checked+span{border-color:var(--acc);color:var(--acc);background:#fff}
.sent-yay{text-align:center;padding:16px;background:#eefaf3;border-radius:16px;margin-top:12px}.sent-yay b{display:block;font-size:20px;margin:6px 0 2px}
.connect-cta{text-align:center;padding:16px;background:#f7f3ff;border-radius:16px;margin-top:12px}
.brandcard .offer{margin:16px 0;padding:16px;border-radius:16px;background:#fff4e6}.brandcard .offer b{display:block;font-size:22px}.brandcard .offer span{display:block;color:var(--mute);margin-top:4px}
.brand-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;text-align:center}.brand-stats .stat b{display:block;font-size:24px;color:var(--acc)}.brand-stats .stat span{font-size:13px;color:var(--mute)}
.wishrow .code{margin:4px 0 8px;font-size:15px}.wishrow .code b{letter-spacing:2px;background:#f3eefc;color:var(--acc);padding:2px 8px;border-radius:8px}
.qrbox svg{width:100%;height:auto}
.ownerbar{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 16px;margin-bottom:12px;border-radius:99px;background:#f3eefc;color:var(--acc);font-weight:700;font-size:14px}.ownerbar span{flex:1}.ownerbar.pv{background:#fff4e6;color:#9a5b00}
.ownerbar .btn{min-height:36px!important}
.topnav a.signin{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;color:var(--ink);font-weight:700;text-decoration:none;font-size:15px}
.have-acct{text-align:center;margin:16px 0 0;font-size:15px;color:var(--mute)}.have-acct a{font-weight:700}
@media(max-width:640px){.btn.sm,.btn{min-height:44px!important}.chip,.pill{min-height:32px}}
.logo-ic{vertical-align:-5px;margin-right:6px}
@media(max-width:640px){.visp select{min-height:44px!important;height:44px}.chip-in{min-height:44px!important;height:44px}}
@media(max-width:640px){[data-tabs] button{min-height:44px}}
.topnav a.signin{white-space:nowrap}

/* ==== Design system v2 (final layer, wins over everything above) ====
   spacing 4/8/12/16/24/32/48 · type 13/16/20/28/40 · one control height (48) and one radius (12) for inputs + buttons
   pills/circles only for icon buttons, chips and avatars · flat colors, no gradients, no shadows heavier than 1px */
:root{--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;
 --t1:13px;--t2:16px;--t3:20px;--t4:28px;--t5:40px;
 --h:48px;--h-sm:40px;--rc:12px;--r:16px;--maxw:1080px;--readw:640px;--sh:0 0 0 1px var(--line);--grad:var(--pri)}
body{font-size:var(--t2);line-height:1.5}
h1{font-size:var(--t4);line-height:1.2;letter-spacing:-.02em;margin:0 0 var(--s3)}
h2{font-size:var(--t3);line-height:1.25;margin:0 0 var(--s3)}
h3,h4{font-size:var(--t2);line-height:1.3;font-weight:700;margin:0 0 var(--s2)}
p{margin:0 0 var(--s3)}.mini,.hint,.fine,small,footer,.pill,.chip,.meta{font-size:var(--t1)}
.lead{font-size:var(--t2);color:var(--mute);margin:0 0 var(--s5)}
.wrap{max-width:var(--maxw);padding:var(--s6) var(--s4)}
.card{padding:var(--s5);border-radius:var(--r);box-shadow:none;margin:0 0 var(--s4)}.card>:last-child{margin-bottom:0}
.card .card{border:0;padding:0;margin:0;background:transparent}
.grid,.grid2,.grid3,.g2,.g3{gap:var(--s4)}
.page-head{margin:0 0 var(--s5);align-items:center}.page-head h1{margin:0;font-size:var(--t4)}
/* controls: inputs and buttons share height + radius */
input:not([type=checkbox]):not([type=radio]):not([type=file]):not(.toggle),select{min-height:var(--h);height:var(--h);padding:0 var(--s4);border-radius:var(--rc);font-size:16px;border:1px solid #e6dccf;background:#fff}
textarea{font-size:16px;border-radius:var(--rc);padding:var(--s3) var(--s4)}
.btn,.btn.sec,.btn.ghost,.btn.danger,.btn.go{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:var(--h);padding:0 var(--s5);border-radius:var(--rc)!important;font-size:var(--t2);font-weight:600;line-height:1;white-space:nowrap;background-image:none}
.btn.sm{min-height:var(--h-sm);padding:0 var(--s4);font-size:var(--t1)}
.btn:active{transform:none}
/* form stack: one gap everywhere */
.stack{display:grid;gap:var(--s4)}.stack>*{margin:0!important}
.field{margin:0 0 var(--s4)}.stack .field{margin:0}.field>input,.field>select,.field>textarea{margin-top:var(--s2)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4)}.grid2>.field{margin:0}
form.stack .grid2{gap:var(--s4)}
.actions{display:flex;gap:var(--s2);justify-content:flex-end;align-items:center}.actions .btn.ghost{margin-right:auto}
label.check{display:flex;align-items:center;gap:var(--s3);min-height:44px;font-weight:500}
/* readback (onboarding): plain text, no inputs */
dl.readback{display:grid;gap:0;margin:0 0 var(--s4);border:1px solid var(--line);border-radius:var(--rc)}
dl.readback>div{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);min-height:var(--h);padding:0 var(--s4);border-top:1px solid var(--line)}dl.readback>div:first-child{border-top:0}
dl.readback dt{color:var(--mute);font-size:var(--t1)}dl.readback dd{margin:0;font-weight:600;text-align:right;min-width:0;overflow-wrap:anywhere}
.photo-row{gap:var(--s4)!important;margin:0 0 var(--s4)}
/* inline add row: name · date · Add, all 48px, 8px gaps, 88px button */
.addrow.inline{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,200px) 88px;gap:var(--s2);align-items:start;margin:0 0 var(--s2)}
.addrow.inline>.btn{width:88px;padding:0;height:var(--h)}
.addrow.inline input{margin:0}
.addrow.inline .readback{font-size:var(--t1);margin-top:var(--s1);color:var(--mute)}.addrow.inline .readback:empty{display:none}
.addrow.inline .form-error{grid-column:1/-1}
.add-m{display:none!important}
.readback.ok{color:var(--ok)}.readback.bad{color:#c0392b}
/* homepage */
.home-hero{text-align:center;max-width:var(--readw);margin:0 auto;padding:var(--s7) 0 var(--s6)}
.home-hero h1{font-size:var(--t5);line-height:1.1;margin:0 0 var(--s3)}
.home-hero .si-line{font-size:var(--t3);margin:0 0 var(--s3)}
.home-hero .lead{margin:0 auto var(--s5);max-width:480px}
.home-hero .claimbox{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:var(--s5);text-align:left}
.hiw{max-width:var(--maxw);margin:0 auto;padding:var(--s6) 0 var(--s7);border-top:1px solid var(--line)}
.hiw h2{text-align:center;margin:0 0 var(--s5)}
.hiw ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s5)}
.hiw li{display:grid;gap:var(--s2);align-content:start}.hiw .n{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#ffe9ee;color:var(--pri);font-weight:700;font-size:var(--t1)}
.hiw li b{font-size:var(--t2)}.hiw li span{color:var(--mute)}
.hero{background:transparent}
/* footer: 4 columns, stacks on mobile */
footer.cols4{text-align:left;border-top:1px solid var(--line);padding:var(--s6) var(--s4) var(--s5);margin-top:var(--s6)}
footer.cols4 .fwrap{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s5)}
footer.cols4 h4{font-size:var(--t1);text-transform:uppercase;letter-spacing:.06em;color:var(--ink);margin:0 0 var(--s2)}
footer.cols4 a{display:flex;align-items:center;min-height:32px;color:var(--mute);text-decoration:none;font-size:var(--t1)}footer.cols4 a:hover{color:var(--ink)}
footer.cols4 .fnote{max-width:var(--maxw);margin:var(--s5) auto 0;color:var(--mute);font-size:var(--t1)}
/* nav */
.topnav{padding:0 var(--s4);min-height:64px;gap:var(--s4)}.topnav .btn{min-height:var(--h-sm)}
/* lists */
.row{gap:var(--s3)}.kv{font-size:var(--t2);min-height:44px;align-items:center;padding:0}
.ownerbar,.ownerbar .btn{border-radius:var(--rc)!important}
.steps-flow .big{border-radius:var(--rc)!important;font-size:16px!important}.steps-flow .go{min-height:var(--h);font-size:var(--t2)}
.steps-flow h2{font-size:var(--t4)}.steps-flow .status{font-size:var(--t1)}
.composer .who span{border-radius:var(--rc)}
@media(max-width:760px){
 :root{--t4:24px;--t5:32px}
 .wrap{padding:var(--s5) var(--s4)}
 .card{padding:var(--s4)}
 .grid2{grid-template-columns:1fr}
 .btn,.btn.sm{min-height:44px!important}
 .btn.sm{padding:0 var(--s4)}
 .addrow.inline{grid-template-columns:1fr;gap:var(--s2)}
 .addrow.inline>.btn{width:100%}
 .hiw ol{grid-template-columns:1fr;gap:var(--s4)}
 .hiw li{grid-template-columns:32px 1fr;column-gap:var(--s3)}.hiw li span{grid-column:2}
 footer.cols4 .fwrap{grid-template-columns:1fr 1fr;gap:var(--s5) var(--s4)}
 .home-hero{padding:var(--s6) 0 var(--s5)}
 .home-hero .claimbox{padding:var(--s4)}
 .topnav{min-height:56px;gap:var(--s2)}
}
@media(max-width:400px){footer.cols4 .fwrap{grid-template-columns:1fr}}
.topnav .btn{padding:0 var(--s4)}
@media(max-width:760px){.topnav .btn{padding:0 var(--s3)}.topnav a.signin{padding:0 var(--s2)}.topnav .brand{font-size:15px;min-width:0;overflow:hidden;text-overflow:ellipsis}}
/* claim field: prefix + input share one baseline, size and line-height; input has no padding/border of its own */
.steps-flow .claim.big,.claim{display:flex!important;align-items:center!important;flex-wrap:nowrap!important;min-height:56px;padding:0 var(--s4)!important;border:1px solid #e6dccf;border-radius:var(--rc)!important;background:#fff;gap:0}
.steps-flow .claim.big .pre,.claim .pre,.claim>span{font-size:16px!important;line-height:24px!important;font-weight:500;color:var(--mute);flex:0 1 auto;max-width:65%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0;margin:0}
.steps-flow .claim.big input,.claim input{font-size:16px!important;line-height:24px!important;height:24px!important;min-height:24px!important;padding:0!important;margin:0!important;border:0!important;background:transparent;flex:1 1 auto;min-width:60px;font-weight:500;color:var(--ink)}
@media(max-width:380px){.steps-flow .claim.big{flex-wrap:nowrap!important;padding:0 var(--s3)!important}.steps-flow .claim.big .pre{font-size:16px!important}}
.steps-flow .claim.big input,.claim input{height:54px!important;min-height:54px!important;line-height:normal!important}
.wrap.narrow{max-width:480px}
.home-hero .claimbox{border:1px solid var(--line)}.claimbox #claim-form,.wrap.narrow #claim-form{max-width:none}
.hiw li{grid-template-columns:32px 1fr;column-gap:var(--s3);row-gap:var(--s1)}.hiw .n{grid-row:span 2}.hiw li b,.hiw li span{grid-column:2}
@media(min-width:761px){.hiw li{grid-template-columns:1fr}.hiw .n{grid-row:auto}.hiw li b,.hiw li span{grid-column:1}}
.steps-flow .claim.big .pre,.claim .pre{flex:none!important;max-width:none!important}
@media(max-width:400px){footer.cols4 .fwrap{grid-template-columns:1fr 1fr}}
#claim-form.card{max-width:440px;margin:0 auto;padding:var(--s5);text-align:left}
@media(max-width:760px){#claim-form.card{padding:var(--s5) var(--s4)}}
.hiw li span:not(.n){grid-column:2}@media(min-width:761px){.hiw li span:not(.n){grid-column:1}}
.chipf{text-decoration:none;display:inline-flex;align-items:center;min-height:36px;padding:0 var(--s3)}
.chipbar{display:flex;flex-wrap:wrap;gap:var(--s2);margin:0 0 var(--s4)}
.steps-flow .status{min-height:20px;margin:var(--s2) 0 var(--s3)}
@media(max-width:760px){.topnav .brand{font-size:14px}.topnav .brand .logo-ic{width:20px;height:20px;margin-right:4px}}
form.row:has(input[type=search]){margin:0 0 var(--s3)}
.empty .ico{display:none}
@media(min-width:761px){.home-hero{max-width:760px}}

/* homepage restored sections (pass 2) */
.home-hero .stickers-row{display:flex;justify-content:center;gap:var(--s2);margin:0 0 var(--s4)}
.home-hero .home-start{text-align:center;margin:var(--s3) 0 0}
.home-feats{max-width:var(--maxw);margin:0 auto;padding:var(--s6) 0;border-top:1px solid var(--line)}
.home-feats h2{text-align:center;margin:0 0 var(--s5)}
.home-feats .frow{display:grid;grid-template-columns:1fr 1fr;gap:var(--s7);align-items:center;padding:var(--s6) 0}
.home-feats .frow:nth-of-type(even) .ftext{order:2}
.home-feats .ftext{max-width:440px;justify-self:center}.home-feats .ftext h3{font-size:var(--t3);margin:0 0 var(--s2)}.home-feats .ftext p{color:var(--mute);margin:0 0 var(--s5)}.home-feats .ftext p:last-child{margin:0}
.home-feats .fshot{margin:0;justify-self:center;width:100%;max-width:380px}.home-feats .fshot img{display:block;width:100%;height:auto;border-radius:var(--r)}
.home-oss{max-width:var(--maxw);margin:var(--s4) auto var(--s6);text-align:center;padding:var(--s6) var(--s5)}.home-oss h2{margin:0 0 var(--s2)}.home-oss p{max-width:520px;margin:0 auto var(--s4)}
@media(max-width:760px){.home-feats .frow{grid-template-columns:1fr;gap:var(--s5);padding:var(--s5) 0}.home-feats .frow:nth-of-type(even) .ftext{order:0}.home-feats .ftext{justify-self:start}.home-feats .fshot{max-width:340px}.home-oss{padding:var(--s5) var(--s4)}}
button,input,select,textarea{font-family:inherit}
/* ---------- QA pass 2 ---------- */
/* one toggle size, aligned with its label */
.toggle{flex:none;width:44px;height:26px;margin:0}.toggle::after{width:22px;height:22px;top:2px;left:2px}.toggle:checked::after{left:20px;transform:none}
label.check{align-items:center;gap:var(--s3);line-height:1.35}label.check .toggle{align-self:center}
.toggle:focus-visible{outline:2px solid #ff5a7a66;outline-offset:2px}.toggle:focus:not(:focus-visible){outline:0}
/* person rows: quiet name link, svg star */
.row .grow>a{color:var(--ink);text-decoration:none}.row .grow>a:hover b{text-decoration:underline}
.star{display:inline-grid;place-items:center;width:44px;height:44px;padding:0;color:#d8cfc6;opacity:1}.star.on{color:#f0a500}
/* add-row hint */
.addrow-hint{margin:var(--s2) 0 var(--s4)}
/* disclosure cards */
details.disclose summary,details.quiet summary,details.wset summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:var(--s2);min-height:44px;font-weight:600}
details.disclose summary::-webkit-details-marker,details.quiet summary::-webkit-details-marker,details.wset summary::-webkit-details-marker{display:none}
details.disclose summary::after,details.quiet summary::after,details.wset summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--mute);border-bottom:2px solid var(--mute);transform:rotate(45deg);transition:transform .15s}
details[open].disclose summary::after,details[open].quiet summary::after,details[open].wset summary::after{transform:rotate(-135deg)}
details.disclose>p{margin:var(--s2) 0 var(--s3)}
/* input + copy button on one line */
.inline-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s2);margin:0 0 var(--s4)}.inline-copy input{margin:0;min-width:0}
pre{white-space:pre!important;overflow-x:auto;word-break:normal!important;font-size:12.5px;line-height:1.5}
/* visibility picker: one size */
.visp select{min-height:36px!important;height:36px!important;font-size:14px!important;font-weight:600}
@media(max-width:760px){.visp select{min-height:44px!important;height:44px!important;font-size:16px!important}}
/* page heads on phones: title, then actions on their own row */
@media(max-width:560px){.page-head{flex-wrap:wrap}.page-head>.row,.page-head>div:last-child:not(:first-child){width:100%}.page-head>.row .btn{flex:1}}
/* onboarding */
.wrap.onb{max-width:560px;padding-top:var(--s6);padding-bottom:var(--s7)}
.stepper+p{margin:var(--s2) 0 var(--s4)}
.grid2.citystate{grid-template-columns:minmax(0,1fr) 96px!important}
.askline{display:flex;align-items:center;flex-wrap:wrap;gap:var(--s2);margin:var(--s4) 0}
.onb .empty{padding:var(--s5) 0}.onb .empty .btn{margin-top:var(--s2)}
.onb .row[style*="space-between"] .btn,.onb .actions .btn{min-width:120px}
/* tabbar never covers the last card */
@media(max-width:860px){body.shell-app main.wrap{padding-bottom:calc(96px + env(safe-area-inset-bottom))}}
/* empty states */
.empty{text-align:center;padding:var(--s5) var(--s3)}.empty p{color:var(--mute);margin:0 0 var(--s3)}.empty .btn{margin:var(--s1)}
.grid2>*,.grid>*{min-width:0}pre{max-width:100%}
.toggle:focus-visible{outline:0;box-shadow:0 0 0 3px #ff5a7a33}
/* homepage claim card: one height for field + button, one gap, even padding */
#claim-form.card{padding:var(--s5)!important;border-radius:var(--r)!important}
#claim-form .step.on{display:grid;gap:var(--s3)}#claim-form .step>*{margin:0!important}
#claim-form .step h2{margin:0!important}#claim-form .step .lead{margin:calc(var(--s2) * -1) 0 var(--s1)!important}
#claim-form .claim.big,#claim-form input.big{min-height:52px!important;height:52px!important;border-radius:var(--rc)!important}
#claim-form .claim.big input{height:50px!important;min-height:50px!important}
#claim-form .btn.go,#claim-form button[type=submit]{min-height:52px!important;height:52px;width:100%;border-radius:var(--rc)!important}
#claim-form .status:empty,#claim-form .avail:empty{display:none}
#claim-form .dots{margin:0 0 var(--s1)!important}
#claim-form>p,#claim-form .alt{margin:var(--s4) 0 0!important;text-align:center}
@media(max-width:760px){#claim-form.card{padding:var(--s5) var(--s4)!important}}
#claim-form .status,#claim-form .avail{display:block!important;min-height:20px;line-height:20px;font-size:var(--t1);margin:calc(var(--s1) * -1) 0!important}
#claim-form .step .back{justify-self:start;min-height:32px;padding:0;background:none;border:0;color:var(--mute);font:inherit;font-size:var(--t1);cursor:pointer}
#claim-form .step .fine{font-size:var(--t1);color:var(--mute);text-align:center}
#claim-form [data-step=birthday] .status:empty{display:none!important}
#claim-form .readback{display:block;min-height:20px;line-height:20px;font-size:var(--t1);margin:calc(var(--s1) * -1) 0!important;color:var(--mute)}
/* Loves / No thanks: two labeled groups, distinct flat chips */
.prefs h3{margin:0 0 var(--s3)}.prefs .pgroup+.pgroup{margin-top:var(--s4)}
.prefs h4,.tagl h4{font-size:var(--t1);text-transform:uppercase;letter-spacing:.06em;color:var(--mute);margin:0 0 var(--s2)}
.prefs .chips{display:flex;flex-wrap:wrap;gap:var(--s2)}.prefs .chip{margin:0}
.chip.love{background:#ffe9ee;border-color:#ffd3dd;color:#b3264a}
.chip.nope{background:#f4f2f0;border-color:#e6e1dc;color:#7a726b;text-decoration:line-through;text-decoration-color:#b7aea6}
.chip.nope::before{content:"–";text-decoration:none;display:inline-block;margin-right:2px}
.tagl+.tagl{margin-top:var(--s5);padding-top:var(--s4);border-top:1px solid var(--line)}
.tagl-likes .chip.on{background:#ffe9ee;border-color:#ffd3dd;color:#b3264a}
.tagl-dislikes .chip.on{background:#f4f2f0;border-color:#e6e1dc;color:#7a726b}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.sharecard{display:grid;gap:var(--s4);margin-top:var(--s4)}.sharecard>*{margin:0!important}
.qrbox{display:flex;gap:var(--s4);align-items:center;flex-wrap:wrap}.qrbox img{border:1px solid var(--line);border-radius:var(--rc);background:#fff;padding:var(--s2)}
.qrbox .qact{display:flex;flex-direction:column;gap:var(--s2);flex:1 1 160px}.qrbox .qact .btn{width:100%}
.have-acct{text-align:center;margin:var(--s3) 0 0}
/* How it works: each step is a white card, equal heights, one gap */
.hiw ol{align-items:stretch;gap:var(--s4)!important}
.hiw li{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:var(--s5);height:100%;box-sizing:border-box}
@media(max-width:760px){.hiw li{padding:var(--s4)}}
.hiw li{grid-template-columns:1fr!important;row-gap:var(--s2)!important}.hiw li>*{grid-column:1!important;grid-row:auto!important}
.home-feats .ftext{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:var(--s5);width:100%;box-sizing:border-box}
@media(max-width:760px){.home-feats .ftext{padding:var(--s4)}}
/* Occasions: small list + one-line add form; birthday stays the hero */
.occ-list{list-style:none;margin:0 0 var(--s3);padding:0}
.occ-list li{display:flex;align-items:center;gap:var(--s3);padding:10px 0;border-top:1px solid var(--line)}
.occ-list li:first-child{border-top:0}
.occ-add{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:start}
.occ-add .btn{min-height:44px}
.occ-add select,.occ-add input{min-height:44px;margin:0}
.occ-add .readback,.occ-add .form-error{grid-column:1/-1;margin:0}
.occ-add .readback:empty{display:none}
.card.occ{margin-bottom:16px}
/* public wall: one clean list (the legacy .wall columns rule split posts across columns) */
.card.wall{columns:auto}
.card.wall .wishrow{break-inside:avoid}
.prefs .ghint{margin:var(--s3) 0 0;padding-top:var(--s3);border-top:1px solid var(--line)}
.ownerbar a:not(.btn){font-weight:600}
.nowrap{white-space:nowrap}
/* /business (hosted): reuses home rows; flat cards, even grids */
.biz .eyebrow{font-size:var(--t1);text-transform:uppercase;letter-spacing:.08em;color:var(--pri);font-weight:700;margin:0 0 var(--s2)}
.biz .cta-row{display:flex;gap:var(--s3);justify-content:center;flex-wrap:wrap;margin-top:var(--s4)}
.biz .cta-row .btn{min-height:52px;padding:0 var(--s5)}
.biz-sec{margin:var(--s7) 0}.biz-sec h2{text-align:center;margin:0 0 var(--s2)}.biz-sec .sub{text-align:center;color:var(--mute);margin:0 auto var(--s5);max-width:560px}
.bgrid4,.bgrid3{display:grid;gap:var(--s4);grid-template-columns:repeat(4,minmax(0,1fr))}.bgrid3{grid-template-columns:repeat(3,minmax(0,1fr))}
.bgrid4 .card,.bgrid3 .card{margin:0;padding:var(--s5)}.bgrid4 h3,.bgrid3 h3{margin:0 0 var(--s2);font-size:var(--t3)}.bgrid4 p,.bgrid3 p{margin:0;color:var(--mute)}
.biz .frow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:var(--s6);align-items:center;margin:var(--s7) 0}
.biz .frow.rev .ftext{order:2}
.biz .ftext{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:var(--s5)}
.biz .ftext h2{margin:0 0 var(--s3)}.biz .ftext p:last-child{margin-bottom:0}
.biz .ticks{margin:var(--s3) 0 0;padding-left:1.1em}.biz .ticks li{margin:6px 0}
.bshot{margin:0;display:flex;justify-content:center}.bshot img{width:100%;max-width:340px;height:auto;display:block;border-radius:16px}
.biz .faq details{margin:0 0 var(--s3)}.biz .faq{max-width:720px;margin-left:auto;margin-right:auto}
.cta-card{max-width:720px;margin:var(--s7) auto;padding:var(--s6)}.cta-card h2{margin:0 0 var(--s2);text-align:center}.cta-card>p{text-align:center}
.cta-card .kinds{border:0;padding:0;margin:0 0 var(--s3);display:flex;gap:var(--s4);flex-wrap:wrap}.cta-card .kinds legend{font-weight:600;margin-bottom:var(--s2);padding:0}
.cta-card .btn.go{width:100%;min-height:52px}.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
footer.cols4 .fwrap{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:900px){.bgrid4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.bgrid4,.bgrid3{grid-template-columns:1fr}.biz .frow{grid-template-columns:1fr;gap:var(--s4);margin:var(--s6) 0}.biz .frow.rev .ftext{order:0}.cta-card{padding:var(--s5)}footer.cols4 .fwrap{grid-template-columns:1fr 1fr}}
/* blog (hosted) */
.blog .crumbs{display:flex;gap:var(--s2);flex-wrap:wrap;font-size:var(--t1);color:var(--mute);margin:var(--s4) 0 var(--s4)}.blog .crumbs a{color:var(--mute)}.blog .crumbs [aria-current]{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.blog .postlist{display:grid;gap:var(--s4);margin:var(--s5) 0}.blog .postlist .card{margin:0;padding:var(--s5)}.blog .postlist h2{margin:0 0 var(--s2);font-size:var(--t4)}.blog .postlist h2 a{color:var(--ink);text-decoration:none}
.postgrid{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:var(--s6);align-items:start}
.prose{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:var(--s6);font-size:17px;line-height:1.7;min-width:0}
.prose h1{font-size:var(--t5);line-height:1.15;margin:0 0 var(--s3)}.prose .byline{margin:0 0 var(--s5)}
.prose h2{font-size:var(--t4);margin:var(--s6) 0 var(--s3);line-height:1.25;scroll-margin-top:80px}.prose h3{font-size:var(--t3);margin:var(--s5) 0 var(--s2);scroll-margin-top:80px}
.prose .anchor{margin-left:8px;color:var(--mute);text-decoration:none;opacity:0;font-weight:400}.prose h2:hover .anchor,.prose h3:hover .anchor,.prose .anchor:focus{opacity:1}
.prose blockquote{margin:var(--s4) 0;padding:var(--s2) var(--s4);border-left:3px solid var(--pri);background:#fff7f9;border-radius:0 12px 12px 0}.prose blockquote p{margin:0}
.prose img{max-width:100%;height:auto;border-radius:12px}.prose ul,.prose ol{padding-left:1.3em}.prose li{margin:4px 0}.prose hr{border:0;border-top:1px solid var(--line);margin:var(--s6) 0}
.prose .card{font-size:var(--t2);line-height:1.5}.prose .nl{margin:var(--s6) 0}
.toc-d{position:sticky;top:88px;font-size:var(--t1)}.toc-d ol,.toc-m ol{list-style:none;margin:0;padding:0}.toc-d li,.toc-m li{margin:0}.toc-d a,.toc-m a{display:block;padding:6px 0;color:var(--mute);text-decoration:none;line-height:1.35}.toc-d a:hover{color:var(--ink)}.toc-d .l3,.toc-m .l3{padding-left:var(--s3)}
.toc-m{display:none;margin:0 0 var(--s5)}.toc-m summary{font-weight:600;cursor:pointer}
.nl h3,.nl h4{margin:0 0 var(--s1)}.nl .inline-copy{margin-top:var(--s3)}.nl-ok{margin:var(--s3) 0 0}
.related h2{margin-top:0}.relgrid,.prevnext{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4)}.relgrid .card,.prevnext .card{margin:0;display:flex;flex-direction:column;gap:4px;text-decoration:none;color:var(--ink);padding:var(--s4)}
.prevnext{margin-top:var(--s5)}.prevnext .ghost{opacity:.6}
.bizcta{display:flex;align-items:center;gap:var(--s4);justify-content:space-between;margin:var(--s5) 0;padding:var(--s4) var(--s5)}.bizcta p{margin:4px 0 0}
.fnl{max-width:var(--maxw);margin:var(--s5) auto 0;display:grid;grid-template-columns:1fr minmax(0,420px);gap:var(--s4);align-items:center;padding-top:var(--s5);border-top:1px solid var(--line)}.fnl h4{margin:0 0 4px}.fnl p{margin:0;color:var(--mute);font-size:var(--t1)}
.tbl{width:100%;border-collapse:collapse;font-size:var(--t1)}.tbl th,.tbl td{text-align:left;padding:8px;border-bottom:1px solid var(--line)}
@media(max-width:900px){.postgrid{grid-template-columns:1fr}.toc-d{display:none}.toc-m{display:block}}
@media(max-width:640px){.prose{padding:var(--s4);font-size:16px}.prose h1{font-size:var(--t4)}.relgrid,.prevnext{grid-template-columns:1fr}.bizcta{flex-direction:column;align-items:stretch}.fnl{grid-template-columns:1fr}}
.prose figure{margin:var(--s5) auto;max-width:320px}.prose figure img{display:block;width:100%;border:1px solid var(--line)}
