/* Cloud Haven UI: glass, heavenly palette, Plus Jakarta Sans (OFL, vendored) */
@font-face{font-family:'Plus Jakarta Sans';src:url(vendor/fonts/PlusJakartaSans-var.woff2) format('woff2');font-weight:200 800;font-display:swap}
:root{--ink:#1f2a44;--ink2:#56607a;--mute:#7b8499;--sky:#7cb8ff;--sky2:#d9ecff;--gold:#e0a52b;--gold2:#f7d27a;--goldInk:#7a5300;
 --glass:rgba(255,255,255,.62);--glass2:rgba(255,255,255,.8);--line:rgba(255,255,255,.75);--line2:rgba(31,42,68,.08);
 --sh:0 10px 30px rgba(52,78,140,.14),0 2px 6px rgba(52,78,140,.08);--r:20px;--r2:16px;--ease:cubic-bezier(.2,.8,.2,1);--blur:saturate(160%) blur(18px)}
*{box-sizing:border-box}
html,body{height:100%}
html,body{width:100%;height:100%;height:100dvh;max-width:100vw;overflow:hidden;overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;position:fixed;inset:0;overflow:hidden;touch-action:none;font-family:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI','Noto Sans SC',sans-serif;color:var(--ink);background:#dfeeff;-webkit-font-smoothing:antialiased;font-size:15px}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
:focus-visible{outline:3px solid rgba(124,184,255,.9);outline-offset:2px;border-radius:12px}
.ic{width:20px;height:20px;flex:none;display:block}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
#c{position:fixed;left:0;top:0;width:100%;height:100%;height:var(--vh,100dvh);touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;display:block;z-index:0}
.glass{background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--line);box-shadow:var(--sh)}

/* top bar */
.topbar{position:fixed;top:0;left:0;right:0;z-index:8;display:flex;align-items:center;gap:10px;padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top));pointer-events:none}
.topbar>*{pointer-events:auto}
.logo{display:flex;align-items:center;gap:10px;padding:6px 14px 6px 8px;border-radius:999px;text-decoration:none;color:var(--ink)}
.logo .mark{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 50% 40%,#fff 0,#fff7df 55%,#ffe7a8 100%);box-shadow:inset 0 0 0 1px rgba(224,165,43,.35),0 0 18px rgba(247,210,122,.7)}
.logo b{font-weight:800;letter-spacing:-.01em;font-size:16px}.logo small{display:block;font-size:11px;color:var(--mute);font-weight:500;margin-top:-2px}
.seg{display:flex;gap:2px;padding:4px;border-radius:999px;margin:0 auto}
.seg button{display:flex;align-items:center;gap:6px;border:0;background:none;padding:7px 14px;border-radius:999px;color:var(--ink2);font-weight:600;font-size:13px;transition:background .25s var(--ease),color .25s}
.seg button.on{background:#fff;color:var(--ink);box-shadow:0 2px 8px rgba(52,78,140,.14)}
.seg button:hover:not(.on){background:rgba(255,255,255,.5)}
.actions{display:flex;gap:4px;padding:4px;border-radius:999px;align-items:center}
.ib{border:0;background:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:var(--ink2);transition:background .2s,transform .2s var(--ease)}
.ib:hover{background:rgba(255,255,255,.7);color:var(--ink)}.ib:active{transform:scale(.92)}
.ib.wide{width:auto;padding:0 12px;display:flex;gap:6px;border-radius:999px;font-size:13px;font-weight:600}
.pill{border:0;display:flex;align-items:center;gap:8px;padding:7px 14px 7px 8px;border-radius:999px;background:linear-gradient(180deg,#fff,#f4f8ff);color:var(--ink);font-weight:700;font-size:13px;box-shadow:inset 0 0 0 1px var(--line2)}
.pill .av{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--sky2),#fff3d6);color:var(--ink2)}
.pill .av .ic{width:15px;height:15px}
#areaName{position:fixed;top:calc(max(12px,env(safe-area-inset-top)) + 58px);left:50%;transform:translateX(-50%);z-index:5;display:flex;align-items:center;gap:6px;padding:6px 14px 6px 10px;border-radius:999px;font-weight:700;font-size:13px;color:var(--ink);pointer-events:none;animation:chipIn .5s var(--ease)}
#areaName .ic{width:16px;height:16px;color:var(--gold)}
@keyframes chipIn{from{opacity:0;transform:translate(-50%,-6px)}}

/* dock */
.dock{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:6;display:flex;align-items:center;gap:8px;padding:6px;border-radius:999px}
.dock button{border:0;background:none;display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;color:var(--ink2);font-weight:600;font-size:13px;transition:background .2s,transform .2s var(--ease)}
.dock button:hover{background:rgba(255,255,255,.7);color:var(--ink)}.dock button:active{transform:scale(.96)}
.dock .cta{background:linear-gradient(180deg,#ffe39a,#f2bb45);color:#4a3200;font-weight:800;padding:12px 22px;box-shadow:0 6px 20px rgba(224,165,43,.45),inset 0 1px 0 rgba(255,255,255,.7)}
.dock .cta:hover{background:linear-gradient(180deg,#ffe8ad,#f5c45a);color:#4a3200}
.tip{position:fixed;bottom:2px;width:100%;text-align:center;font-size:11px;color:var(--ink2);opacity:.75;z-index:5;margin:0 0 2px;pointer-events:none}

/* proximity prompt */
#prompt{position:fixed;bottom:96px;left:50%;transform:translateX(-50%);z-index:6;display:none;align-items:center;gap:10px;border:0;padding:8px 16px 8px 8px;border-radius:999px;font-weight:600;color:var(--ink);animation:rise .35s var(--ease)}
#prompt[style*="block"]{display:flex!important}
#prompt kbd{display:grid;place-items:center;min-width:28px;height:28px;border-radius:9px;background:#fff;box-shadow:inset 0 -2px 0 rgba(31,42,68,.12),0 1px 3px rgba(31,42,68,.12);font:800 13px 'Plus Jakarta Sans',sans-serif;color:var(--ink)}
#prompt .tap{display:none}#prompt b{font-weight:800}
@keyframes rise{from{opacity:0;transform:translate(-50%,8px)}}

/* joystick */
#joy{position:fixed;left:22px;bottom:110px;width:110px;height:110px;border-radius:50%;background:rgba(255,255,255,.28);border:1px solid rgba(255,255,255,.8);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:6;display:none;touch-action:none}
#joy div{position:absolute;left:35px;top:35px;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.95);box-shadow:var(--sh)}

/* modal / sheet */
.modal{position:fixed;inset:0;z-index:20;background:rgba(214,230,252,.35);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;padding:16px}
.modal.open{display:flex;animation:fadeIn .25s ease}
.card{position:relative;width:min(480px,calc(100vw - 32px));max-height:min(86vh,820px);overflow:auto;overscroll-behavior:contain;padding:22px;border-radius:24px;background:rgba(255,255,255,.82);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid rgba(255,255,255,.9);box-shadow:0 30px 80px rgba(40,70,140,.25);color:var(--ink);animation:pop .32s var(--ease)}
.card.wide{width:min(640px,calc(100vw - 32px))}
.card h2{font-size:20px;font-weight:800;letter-spacing:-.01em;margin:2px 40px 4px 0}
.card .sub{color:var(--mute);font-size:13px;margin:0 0 12px}
.card p{line-height:1.55}
.card .c{text-align:center}
.x{position:absolute;top:14px;right:14px;z-index:3;width:34px;height:34px;border-radius:50%;border:0;background:rgba(31,42,68,.06);display:grid;place-items:center;color:var(--ink2)}
.x:hover{background:rgba(31,42,68,.1)}
@keyframes fadeIn{from{opacity:0}}@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.98)}}@keyframes sheet{from{transform:translateY(100%)}}
.row{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 0}
.btn,.row button,.card form button{border:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 16px;border-radius:999px;background:rgba(31,42,68,.06);color:var(--ink);font-weight:700;font-size:14px;transition:background .2s,transform .15s var(--ease),box-shadow .2s}
.btn:hover,.row button:hover{background:rgba(31,42,68,.1)}.btn:active,.row button:active{transform:scale(.97)}
.btn.primary,.row .go,.card form button.primary{background:linear-gradient(180deg,#ffe39a,#f2bb45);color:#4a3200;box-shadow:0 6px 18px rgba(224,165,43,.35),inset 0 1px 0 rgba(255,255,255,.7)}
.btn.sky{background:linear-gradient(180deg,#eaf4ff,#d5e8ff);color:#1d4f8f}
.btn.block,.row .block{flex:1 1 auto}
.btn .ic{width:18px;height:18px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:rgba(31,42,68,.06);font-size:12px;font-weight:600;color:var(--ink2)}
.chip.gold{background:#fff3d2;color:var(--goldInk)}
.chip .ic{width:14px;height:14px}
.say{background:linear-gradient(180deg,#fffaf0,#fff4dc);border:1px solid #ffeec2;border-radius:var(--r2);padding:12px 14px;margin-top:12px;color:#5b4a24;font-size:14px;line-height:1.55}

/* forms */
form label{display:block;margin:12px 0 6px;font-size:13px;font-weight:700;color:var(--ink2)}
form input,form select,form textarea{width:100%;padding:11px 13px;border:1px solid rgba(31,42,68,.12);border-radius:14px;background:rgba(255,255,255,.85);transition:border-color .2s,box-shadow .2s}
form input:focus,form select:focus,form textarea:focus{outline:0;border-color:var(--sky);box-shadow:0 0 0 4px rgba(124,184,255,.25)}
.field{position:relative}.field .ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--mute)}.field input{padding-left:40px}
.tabs{display:flex;padding:4px;border-radius:999px;background:rgba(31,42,68,.06);margin:10px 0 4px}
.tabs button{flex:1;border:0;background:none;padding:9px;border-radius:999px;font-weight:700;color:var(--ink2);transition:background .25s var(--ease)}
.tabs button[aria-selected=true]{background:#fff;color:var(--ink);box-shadow:0 2px 8px rgba(52,78,140,.14)}
.divider{display:flex;align-items:center;gap:10px;color:var(--mute);font-size:12px;margin:14px 0 4px}.divider::before,.divider::after{content:'';flex:1;height:1px;background:rgba(31,42,68,.1)}
.msg{min-height:20px;font-size:13px;color:#b03a5b;margin:8px 0 0;text-align:center}.msg.ok{color:#2d7a4f}
.fine{font-size:12px;color:var(--mute);text-align:center;margin:10px 0 0}

/* grave popup */
.gal{position:relative;margin:-22px -22px 14px;height:240px;border-radius:24px 24px 0 0;overflow:hidden;background:linear-gradient(135deg,#eaf4ff,#fff4dc);display:grid;place-items:center}
.gal img{width:100%;height:100%;object-fit:cover;animation:fadeIn .35s ease}
.gal .ph{color:#9fb3d6}.gal .ph .ic{width:72px;height:72px;stroke-width:1.2}
.gal .gp,.gal .gn{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border:0;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.75);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink);box-shadow:var(--sh)}
.gal .gp{left:12px}.gal .gn{right:12px}
.dots{position:absolute;bottom:12px;left:0;right:0;display:flex;gap:6px;justify-content:center}
.dots i{width:7px;height:7px;border-radius:999px;background:rgba(255,255,255,.65);cursor:pointer;transition:width .25s var(--ease),background .25s}.dots i.on{width:20px;background:#fff}
.gal .count{position:absolute;top:12px;left:12px;padding:3px 9px;border-radius:999px;background:rgba(31,42,68,.45);color:#fff;font-size:12px;font-weight:700}
.ttl{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.ttl h2{margin:0}.ttl .yrs{color:var(--mute);font-weight:600;font-size:14px;margin-top:2px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.info{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 0}
.info div{background:rgba(255,255,255,.7);border:1px solid rgba(31,42,68,.06);border-radius:14px;padding:9px 12px}
.info small{display:block;color:var(--mute);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.info span{font-weight:700;font-size:14px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:12px}
.stats div{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;border-radius:14px;background:rgba(255,255,255,.7);border:1px solid rgba(31,42,68,.06);font-size:11px;color:var(--mute);font-weight:600}
.stats b{font-size:18px;color:var(--ink);font-weight:800}.stats .ic{width:16px;height:16px;color:var(--gold)}
.giftlist{margin-top:12px}.giftlist h3{font-size:13px;margin:0 0 6px;color:var(--ink2)}
.giftlist .chips{margin:0}
.actions2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.actions2 .full{grid-column:1/-1}
.minor{display:flex;justify-content:space-between;gap:8px;margin-top:8px}
.minor button{border:0;background:none;display:flex;align-items:center;gap:6px;color:var(--ink2);font-weight:600;font-size:13px;padding:8px 10px;border-radius:999px}.minor button:hover{background:rgba(31,42,68,.06)}

/* pickers */
.pv{display:flex;gap:14px;align-items:center;padding:12px;border-radius:20px;background:linear-gradient(135deg,rgba(234,244,255,.9),rgba(255,244,220,.9));border:1px solid #fff;margin:6px 0 12px}
.pv img{width:120px;height:120px;flex:none;filter:drop-shadow(0 8px 14px rgba(52,78,140,.18));animation:pop .3s var(--ease)}
.pv.sm img{width:72px;height:72px}
.pv b{font-size:17px;font-weight:800}.pv p{margin:4px 0;font-size:13px;color:var(--ink2)}
.pv .price{display:inline-flex;padding:4px 12px;border-radius:999px;background:#fff;color:var(--goldInk);font-weight:800;font-size:16px;box-shadow:inset 0 0 0 1px #ffe2a0}
.pv a{color:#2f6fca;font-weight:700;text-decoration:none}
.pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;max-height:40vh;overflow:auto;padding:2px 2px 8px;margin:0 -2px}
.pk{position:relative;border:1.5px solid rgba(31,42,68,.06);background:rgba(255,255,255,.75);border-radius:18px;padding:10px 6px 8px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px;font-weight:600;color:var(--ink);transition:transform .2s var(--ease),border-color .2s,box-shadow .2s}
.pk:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(52,78,140,.12)}
.pk img{width:70px;height:70px}
.pk span{line-height:1.2;text-align:center}
.pk b{padding:2px 9px;border-radius:999px;background:#fff3d2;color:var(--goldInk);font-weight:800;font-size:12px}
.pk.on{border-color:var(--gold);background:#fffaf0;box-shadow:0 0 0 4px rgba(247,210,122,.35)}
.pk .tick{position:absolute;top:6px;right:6px;width:20px;height:20px;border-radius:50%;background:var(--gold);color:#fff;display:none;place-items:center}.pk.on .tick{display:grid}.pk .tick .ic{width:13px;height:13px;stroke-width:3}
.sheetfoot{position:sticky;bottom:-22px;margin:8px -22px -22px;padding:12px 22px 18px;background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.95) 30%);display:flex;gap:8px}
.sheetfoot{flex-direction:column}.sheetfoot .btn{flex:1}.sheetfoot .secure{margin:0}.btn small{font-weight:600;opacity:.75}
.secure{display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;color:var(--mute);margin-top:8px}.secure .ic{width:14px;height:14px}
.phs{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}.phs img{width:54px;height:54px;object-fit:cover;border-radius:12px;box-shadow:var(--sh)}

/* areas + settings */
.areas{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-top:8px}
.area{border:1px solid rgba(255,255,255,.9);border-radius:20px;padding:14px;text-align:left;background:linear-gradient(160deg,var(--c),var(--d));color:var(--ink);display:flex;flex-direction:column;gap:4px;box-shadow:0 6px 18px rgba(52,78,140,.14);transition:transform .2s var(--ease)}
.area:hover{transform:translateY(-3px)}
.area .ae{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:rgba(255,255,255,.75);color:var(--ink);margin-bottom:4px}
.area b{font-weight:800}.area small{font-size:12px;color:var(--ink2)}.area .n{margin-top:4px;font-weight:700;font-size:11px}
.area.night{color:#fff}.area.night small{color:rgba(255,255,255,.85)}
.set{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid rgba(31,42,68,.07)}
.set:last-child{border:0}.set b{display:block;font-weight:700}.set small{color:var(--mute);font-size:12px}
.set .tabs{margin:0;min-width:200px}
.switch{position:relative;width:48px;height:28px;border-radius:999px;border:0;background:rgba(31,42,68,.15);transition:background .25s}
.switch::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.15);transition:transform .25s var(--ease)}
.switch[aria-checked=true]{background:var(--sky)}.switch[aria-checked=true]::after{transform:translateX(20px)}

/* loader + fade */
#loader{position:fixed;inset:0;z-index:50;background:radial-gradient(circle at 50% 35%,#fff 0,#eef5ff 45%,#dbe9ff 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .8s;text-align:center;color:var(--ink)}
#loader h1{margin:10px 0 4px;font-size:30px;font-weight:800;letter-spacing:-.02em}#loader p{color:var(--ink2);margin:4px}.arch{width:200px}
#pct{font-size:13px;color:var(--mute)!important}
#fade{position:fixed;inset:0;z-index:30;background:#f6faff;opacity:0;pointer-events:none;transition:opacity .45s}#fade.on{opacity:1}

/* night */
body.night{--glass:rgba(30,36,70,.55);--line:rgba(255,255,255,.18);--ink:#f2f4ff;--ink2:#c9cfe8;--mute:#a3abc8}
body.night .seg button.on,body.night .pill{background:rgba(255,255,255,.18);color:#fff}
body.night .ib:hover,body.night .dock button:hover{background:rgba(255,255,255,.12)}
body.night .tip{color:#e5e8ff}

/* mobile: bottom sheets */
@media (pointer:coarse){#joy{display:block}.tip{display:none}#prompt{bottom:max(96px,calc(env(safe-area-inset-bottom) + 88px))}#prompt kbd{display:none}#prompt .tap{display:inline}}
@media (max-width:720px){
 .topbar{padding:10px;gap:6px}.logo small{display:none}.logo b{font-size:14px}.logo{padding:5px 10px 5px 6px}
 .seg{position:fixed;top:calc(max(10px,env(safe-area-inset-top)) + 54px);left:10px;margin:0}.seg button span{display:none}.seg button{padding:7px 9px}
 #areaName{top:calc(max(10px,env(safe-area-inset-top)) + 58px);left:auto;right:10px;transform:none;animation:none}
 .hide-m{display:none!important}.pill .nm{display:none}.pill{padding:5px}
 .dock{left:10px;right:10px;transform:none;justify-content:space-between}.dock button span{font-size:11px}.dock button:not(.cta){flex-direction:column;gap:2px;padding:6px 10px}.dock .cta{flex:1;justify-content:center}
 .modal{align-items:flex-end;padding:0}
 .card,.card.wide{width:100%;max-height:88vh;border-radius:24px 24px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom));animation:sheet .38s var(--ease)}
 .card::before{content:'';display:block;width:40px;height:5px;border-radius:999px;background:rgba(31,42,68,.18);margin:-8px auto 10px}
 .gal{margin:-18px -18px 12px;height:210px}.gal::before{content:none}
 .sheetfoot{bottom:calc(-18px - env(safe-area-inset-bottom));margin:8px -18px calc(-18px - env(safe-area-inset-bottom));padding:12px 18px calc(16px + env(safe-area-inset-bottom))}
 .pick{grid-template-columns:repeat(3,1fr);max-height:36vh}.pv img{width:96px;height:96px}
 .set{flex-wrap:wrap}.set .tabs{min-width:0;width:100%}
}
@media (min-width:721px){.show-m{display:none!important}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
@media (pointer:coarse){#prompt .hide-tap{display:none}}
@media (max-width:720px){.card::before{position:absolute;top:8px;left:50%;margin:0 0 0 -20px;z-index:4;background:rgba(255,255,255,.85);box-shadow:0 0 0 1px rgba(31,42,68,.08)}}
.card:focus,.card:focus-visible{outline:none}

/* v6: iOS viewport fixes */
*,*::before,*::after{box-sizing:border-box}
input,select,textarea{font-size:16px!important}
#joy{left:max(16px,env(safe-area-inset-left));bottom:calc(max(18px,env(safe-area-inset-bottom)) + 84px)}
@media (max-width:430px){
 .dock{left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));max-width:calc(100vw - 16px);gap:4px;flex-wrap:nowrap;overflow:hidden}
 .dock button{min-width:0;flex-shrink:1}.dock .cta{min-width:0;padding:11px 12px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .dock .cta span{overflow:hidden;text-overflow:ellipsis}
 #joy{width:96px;height:96px}#joy div{left:28px;top:28px}
}
@media (max-width:360px){.dock .cta{font-size:12px;padding:10px 8px}.dock button:not(.cta){padding:5px 6px}}

/* v7: characters + invite */
.chargrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin:12px 0}
.charopt{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:12px;border-radius:18px;border:1px solid rgba(31,42,68,.1);background:rgba(255,255,255,.6);transition:transform .2s var(--ease),box-shadow .2s,border-color .2s;cursor:pointer;min-width:0}
.charopt:hover{transform:translateY(-2px);box-shadow:var(--sh)}.charopt.on{border-color:var(--sky);box-shadow:0 0 0 3px rgba(124,184,255,.35);background:rgba(255,255,255,.9)}
.charopt .sw{width:40px;height:40px;border-radius:14px;display:grid;place-items:center;color:#4a3200;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
.charopt b{font-size:14px}.charopt small{font-size:11.5px;color:var(--mute);line-height:1.35}
.minor .inv{color:#b07a00;font-weight:700}
.toast{position:fixed;left:50%;top:calc(max(12px,env(safe-area-inset-top)) + 64px);transform:translate(-50%,-10px);z-index:50;padding:10px 16px;border-radius:999px;font-weight:600;font-size:13px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s var(--ease);max-width:calc(100vw - 24px);text-align:center;overflow-wrap:anywhere}
.toast.on{opacity:1;transform:translate(-50%,0)}
@media (max-width:360px){.chargrid{grid-template-columns:1fr 1fr}}

/* v8: suggestions */
#sug .cats{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 12px}
#sug .cat{position:relative}#sug .cat input{position:absolute;opacity:0;width:1px;height:1px}
#sug .cat span{display:inline-block;padding:8px 14px;border-radius:999px;border:1px solid rgba(31,42,68,.12);background:rgba(255,255,255,.6);font-weight:600;font-size:13px;cursor:pointer;transition:all .2s}
#sug .cat input:checked+span{background:linear-gradient(180deg,#ffe39a,#f2bb45);border-color:transparent;color:#4a3200;box-shadow:0 4px 14px rgba(224,165,43,.35)}
#sug .cat input:focus-visible+span{outline:2px solid var(--sky)}
#sug .lbl{display:block;font-size:12.5px;font-weight:700;color:var(--ink2);margin-bottom:10px;position:relative}#sug .lbl i{font-weight:500;color:var(--mute);font-style:normal}
#sug .lbl input,#sug .lbl textarea{margin-top:5px;resize:vertical}
#sug .cnt{position:absolute;right:10px;bottom:8px;font-size:11px;color:var(--mute);font-weight:500}
#sug .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width:480px){#sug .two{grid-template-columns:1fr}}
#sug .hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0}
#sug .err{color:#c0392b;font-size:13px;min-height:1em;margin:4px 0}
#mt .ic{vertical-align:-3px;color:#e0a52b}
#mcard h2#mt:has(.ic){display:flex;align-items:center;gap:8px}

/* v9: breed combobox */
.combo{position:relative}.combo-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;max-height:220px;overflow:auto;border-radius:14px;padding:4px;display:none;background:rgba(255,255,255,.96)}
.combo-list.on{display:block}.combo-list button{display:block;width:100%;text-align:left!important;justify-content:flex-start!important;border:0!important;background:none!important;box-shadow:none!important;font-weight:600;padding:10px 12px;border-radius:10px;font-size:15px;color:var(--ink)}
.combo-list button:hover,.combo-list button:focus{background:rgba(124,184,255,.18)!important}

/* v10: My pets */
.mylist{display:flex;flex-direction:column;gap:8px;margin-top:12px;max-height:min(60vh,520px);overflow:auto}
.myrow{display:flex;align-items:center;gap:12px;width:100%;padding:10px;border-radius:18px;border:1px solid rgba(31,42,68,.08);background:rgba(255,255,255,.65);text-align:left;cursor:pointer;transition:transform .2s var(--ease),box-shadow .2s,background .2s;min-width:0}
.myrow:hover{transform:translateY(-1px);box-shadow:var(--sh);background:rgba(255,255,255,.9)}.myrow:active{transform:scale(.98)}
.myrow .th{flex:0 0 56px;width:56px;height:56px;border-radius:14px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(135deg,#eaf3ff,#fff4dc);color:var(--sky)}
.myrow .th img{width:100%;height:100%;object-fit:cover}.myrow .tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.myrow .tx b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.myrow .tx small{font-size:12.5px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.myrow .ar{display:flex;align-items:center;gap:4px}.myrow .ar .ic{width:14px;height:14px}.myrow .go{color:var(--mute)}
.empty{text-align:center;padding:18px 6px 4px;color:var(--mute)}.empty>.ic{width:42px;height:42px;color:var(--sky)}.empty p{margin:8px 0 16px}
/* night mode: popups/sheets keep a solid light panel with dark text (readable on iPhone) */
body.night .card,body.night .combo-list,body.night .toast{--ink:#1f2a44;--ink2:#56607a;--mute:#6b7489;--line:rgba(31,42,68,.1);color:var(--ink)}
body.night .card{background:rgba(255,255,255,.97)}
body.night .toast{background:rgba(255,255,255,.95)}
