:root{--bg:#EDEBE5;--bg2:#F7F6F3;--bg3:#E3E0D8;--card:#F7F6F3;--border:#CCC8BC;--border2:#B5B0A3;--text:#0D0D0C;--text2:#3D3D36;--text3:#6E6E64;--g:#1A8C46;--gl:#22B85A;--gd:#0D6B30;--gdim:rgba(26,140,70,.08);--gdeep:rgba(26,140,70,.03);--accent:#1A8C46;--amber:#C47A0A;--red:#C43030;--blue:#2563A0;--purple:#6D3AAE;--sh:0 1px 3px rgba(0,0,0,.06);--shm:0 4px 16px rgba(0,0,0,.08);--shl:0 12px 40px rgba(0,0,0,.1);--r:6px;--rl:10px;--rxl:14px;--font:'DM Sans',system-ui,sans-serif;--mono:'Space Mono',monospace;--serif:'Instrument Serif',Georgia,serif}[data-theme="dark"]{--bg:#090B09;--bg2:#0E120E;--bg3:#151A15;--card:#121712;--border:#1E291E;--border2:#2A3A2A;--text:#DDE5DD;--text2:#7FA07F;--text3:#4A6A4A;--g:#27C45E;--gl:#3DE878;--gd:#1BA050;--gdim:rgba(39,196,94,.08);--gdeep:rgba(39,196,94,.03);--accent:#27C45E;--amber:#E8960F;--red:#E84040;--blue:#4890D4;--purple:#9A6CDF;--sh:0 1px 3px rgba(0,0,0,.35);--shm:0 4px 16px rgba(0,0,0,.3);--shl:0 12px 40px rgba(0,0,0,.45)}[data-theme="dark"] .fp{background:linear-gradient(135deg,#0a1f0a,#0d1a0d);border-color:#1a3a1a}[data-theme="dark"] #pg-social{background:linear-gradient(180deg,#0a1a0a,var(--bg) 200px)!important}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font);min-height:100vh;overflow-x:hidden;font-size:14px;line-height:1.55;position:relative}body::after{content:'';position:fixed;inset:0;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.018'/%3E%3C/svg%3E");pointer-events:none;z-index:0}body>*{position:relative;z-index:1}input,textarea,select,button{font-family:var(--font)}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}header{padding:8px 14px;border-bottom:1.5px solid var(--border);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:300;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}[data-theme="light"] header{background:rgba(237,235,229,.88)}[data-theme="dark"] header{background:rgba(9,11,9,.88)}.logo-w{display:flex;align-items:center;gap:9px;cursor:pointer;user-select:none}.logo-m{width:56px;height:56px;border-radius:14px;overflow:hidden;box-shadow:0 3px 14px rgba(26,140,70,.35);position:relative;background:transparent}.logo-t{font-family:var(--mono);font-size:26px;font-weight:700;color:var(--text);letter-spacing:0px}.logo-s{font-size:11px;color:var(--g);letter-spacing:3px;text-transform:uppercase;font-weight:700;font-family:var(--mono);display:block}.hdr-r{display:flex;align-items:center;gap:5px}.btn-i{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;color:var(--text2)}.btn-i:hover{background:var(--bg3);color:var(--text)}.btn-i svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}.btn-xs{padding:6px 13px;border-radius:6px;font-size:11px;font-weight:700;cursor:pointer;transition:all .15s;border:1px solid var(--border);background:transparent;color:var(--text2);font-family:var(--mono);letter-spacing:-.3px}.btn-xs:hover{border-color:var(--g);color:var(--g)}.btn-xs.p{background:var(--g);color:#fff;border-color:var(--g)}.btn-xs.p:hover{background:var(--gl)}.u-chip{display:flex;align-items:center;gap:5px;background:var(--gdim);border:1px solid var(--border2);border-radius:18px;padding:3px 9px 3px 3px;cursor:pointer;transition:all .15s}.u-chip:hover{border-color:var(--g)}.u-menu{position:absolute;top:46px;right:14px;background:var(--card);border:1px solid var(--border);border-radius:var(--rl);box-shadow:var(--shl);padding:6px;min-width:150px;z-index:400;display:none}.u-menu.on{display:block}.um-i{display:flex;align-items:center;gap:6px;padding:7px 9px;border-radius:var(--r);cursor:pointer;font-size:11px;font-weight:600;color:var(--text2);transition:all .1s}.um-i:hover{background:var(--bg3);color:var(--text)}.um-i svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2}.um-dv{height:1px;background:var(--border);margin:3px 0}.u-av{width:24px;height:24px;background:linear-gradient(145deg,var(--gd),var(--g));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;color:#fff;font-weight:700}.u-nm{font-size:10px;color:var(--g);font-weight:700;font-family:var(--mono)}.bnav{position:fixed;bottom:0;left:0;right:0;border-top:1.5px solid var(--border);display:none;z-index:300;padding-bottom:env(safe-area-inset-bottom);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}[data-theme="light"] .bnav{background:rgba(247,246,243,.92)}[data-theme="dark"] .bnav{background:rgba(14,18,14,.92)}.bnav.on{display:flex}.ni{flex:1;display:flex;flex-direction:column;align-items:center;padding:6px 2px 8px;cursor:pointer;transition:all .12s;border:none;background:none;color:var(--text3);font-size:7.5px;letter-spacing:.4px;text-transform:uppercase;gap:2px;font-weight:700;font-family:var(--mono);position:relative}.ni.on{color:var(--g)}.ni.on::after{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:20px;height:2px;background:var(--g);border-radius:0 0 2px 2px}.ni svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}.page{display:none;padding:0 0 82px;max-width:680px;margin:0 auto;min-height:calc(100vh - 50px)}.page.on{display:block;animation:pgIn .12s ease}@keyframes pgIn{from{opacity:0}to{opacity:1}}#pg-onboard{max-width:100%}.ob-w{min-height:calc(100vh - 50px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px 100px;text-align:center;position:relative;overflow:hidden}.ob-bg{position:absolute;inset:0;background:radial-gradient(ellipse 70% 50% at 50% 85%,rgba(26,140,70,.06) 0%,transparent 60%);pointer-events:none}.ob-lm{width:80px;height:80px;background:linear-gradient(145deg,#054018,var(--g),var(--gl));border-radius:20px;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 40px rgba(26,140,70,.3);margin:0 auto 18px;position:relative;overflow:hidden}.ob-lm::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.1),transparent 50%);pointer-events:none}.ob-lm svg{width:48px;height:48px;position:relative;z-index:1}.ob-t{font-family:var(--mono);font-size:42px;font-weight:700;color:var(--text);letter-spacing:-3px;line-height:1}.ob-sub{font-family:var(--serif);font-size:17px;color:var(--g);margin:6px 0 4px;font-style:italic}.ob-d{font-size:12px;color:var(--text3);max-width:340px;margin:0 auto 24px;line-height:1.7}.ob-gr{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;width:100%;max-width:380px;margin:0 auto 22px}.ob-f{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:10px 6px;text-align:center;transition:all .2s}.ob-f:hover{border-color:var(--g)}.ob-fi{width:26px;height:26px;background:var(--gdim);border-radius:6px;display:flex;align-items:center;justify-content:center;margin:0 auto 5px}.ob-fi svg{width:13px;height:13px;stroke:var(--g);fill:none;stroke-width:2}.ob-ft{font-weight:700;font-size:10px;color:var(--text)}.ob-fs{font-size:8px;color:var(--text3);line-height:1.3}.btn-go{width:100%;max-width:380px;padding:14px;background:linear-gradient(145deg,#054018,var(--g));color:#fff;border:none;border-radius:var(--rl);font-family:var(--mono);font-weight:700;font-size:12px;cursor:pointer;transition:all .2s;box-shadow:0 4px 20px rgba(26,140,70,.25);letter-spacing:1px;text-transform:uppercase}.btn-go:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(26,140,70,.35)}.ob-sw{margin-top:12px;font-size:11px;color:var(--text3)}.ob-sw a{color:var(--g);font-weight:700;cursor:pointer;text-decoration:none;font-family:var(--mono)}.auth-box{max-width:380px;margin:24px auto;background:var(--card);border:1px solid var(--border);border-radius:var(--rxl);padding:24px;box-shadow:var(--shl)}.auth-hd{text-align:center;margin-bottom:18px}.auth-ic{width:44px;height:44px;background:linear-gradient(145deg,var(--gd),var(--g));border-radius:12px;display:flex;align-items:center;justify-content:center;margin:0 auto 9px}.auth-ic svg{width:22px;height:22px;stroke:#fff;fill:none;stroke-width:1.8}.auth-t{font-family:var(--mono);font-size:18px;font-weight:700;color:var(--text)}.auth-st{font-size:11px;color:var(--text3);margin-top:2px}.fg{margin-bottom:9px}.fl{font-size:9px;color:var(--text3);font-weight:700;margin-bottom:3px;display:block;text-transform:uppercase;letter-spacing:.8px;font-family:var(--mono)}.fi{width:100%;padding:9px 11px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);font-size:12px;transition:all .15s}.fi:focus{outline:none;border-color:var(--g);box-shadow:0 0 0 2px rgba(26,140,70,.08);background:var(--bg2)}.btn-f{width:100%;padding:11px;background:var(--g);color:#fff;border:none;border-radius:var(--r);font-family:var(--mono);font-size:12px;font-weight:700;cursor:pointer;transition:all .15s;margin-top:4px}.btn-f:hover{background:var(--gl)}.btn-f:disabled{background:var(--border);color:var(--text3);cursor:not-allowed}.btn-f.sec{background:transparent;color:var(--text2);border:1px solid var(--border)}.btn-f.sec:hover{border-color:var(--g);color:var(--g);background:var(--gdim)}.auth-sw{text-align:center;margin-top:10px;font-size:11px;color:var(--text3)}.auth-sw a{color:var(--g);font-weight:700;cursor:pointer;font-family:var(--mono)}.auth-dv{display:flex;align-items:center;gap:10px;margin:10px 0}.auth-dv::before,.auth-dv::after{content:'';flex:1;height:1px;background:var(--border)}.auth-dv span{font-size:9px;color:var(--text3);font-family:var(--mono)}.msg{border-radius:var(--r);padding:7px 11px;font-size:11px;margin-bottom:9px;display:none}.msg-e{background:rgba(196,48,48,.07);border:1px solid rgba(196,48,48,.15);color:var(--red)}.msg-ok{background:var(--gdim);border:1px solid rgba(26,140,70,.15);color:var(--g)}.pg-h{padding:14px 14px 6px;display:flex;align-items:center;justify-content:space-between}.pg-t{font-family:var(--mono);font-size:17px;font-weight:700;color:var(--text);letter-spacing:-.8px}.pg-st{font-size:10px;color:var(--text3);margin-top:1px}.scan-w{padding:14px}.upload-z{border:2px dashed var(--border2);border-radius:var(--rxl);padding:36px 20px;text-align:center;cursor:pointer;transition:all .2s;background:var(--card)}.upload-z:hover,.upload-z.drag{border-color:var(--g);background:var(--gdeep)}.upload-z svg{width:40px;height:40px;stroke:var(--text3);stroke-width:1.5;fill:none;margin-bottom:8px}.upl-t{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--text);margin-bottom:2px}.upl-s{font-size:11px;color:var(--text3)}#fileInput{display:none}.prev-img{width:100%;max-height:220px;object-fit:cover;border-radius:var(--rl);margin-bottom:7px;display:none;border:1px solid var(--border)}.btn-ana{width:100%;padding:13px;background:linear-gradient(145deg,var(--gd),var(--g));color:#fff;border:none;border-radius:var(--rl);font-family:var(--mono);font-size:12px;font-weight:700;cursor:pointer;transition:all .15s;display:none;box-shadow:0 3px 12px rgba(26,140,70,.2);margin-top:7px;text-transform:uppercase;letter-spacing:.5px}.btn-ana:hover{transform:translateY(-1px)}.btn-ana:disabled{background:var(--border);color:var(--text3);cursor:not-allowed;transform:none;box-shadow:none}.scan-modes{display:flex;gap:4px;margin-bottom:10px;background:var(--bg3);border-radius:var(--r);padding:3px;border:1px solid var(--border)}.sm-tab{flex:1;padding:7px;text-align:center;font-size:10px;font-weight:700;color:var(--text3);cursor:pointer;border-radius:5px;transition:all .15s;border:none;background:none;font-family:var(--mono)}.sm-tab.on{background:var(--card);color:var(--text);box-shadow:var(--sh)}.scan-tip{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:9px 11px;margin-top:9px;font-size:10px;color:var(--text3);line-height:1.7}.scan-tip b{color:var(--text2)}.scanner{display:none;text-align:center;padding:28px 16px;background:var(--card);border-radius:var(--rxl);border:1px solid var(--border);box-shadow:var(--shl);margin:14px}.sc-iw{position:relative;display:inline-block;border-radius:var(--rl);overflow:hidden;margin-bottom:14px;width:100%;max-width:220px}.sc-im{width:100%;max-height:170px;object-fit:cover;display:block;border-radius:var(--rl)}.sc-ln{position:absolute;left:0;right:0;height:1.5px;background:linear-gradient(90deg,transparent,var(--g),transparent);animation:scanLn 1.8s linear infinite;top:0;box-shadow:0 0 8px var(--g)}@keyframes scanLn{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}100%{top:100%;opacity:0}}.sc-st{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--g)}.sc-ss{font-size:8px;color:var(--text3);letter-spacing:2px;text-transform:uppercase;margin-top:3px}.sc-dt{display:flex;gap:3px;justify-content:center;margin-top:8px}.sc-dt span{width:4px;height:4px;background:var(--border2);border-radius:50%;animation:sdot 1.4s infinite}.sc-dt span:nth-child(2){animation-delay:.2s}.sc-dt span:nth-child(3){animation-delay:.4s}@keyframes sdot{0%,80%,100%{background:var(--border2)}40%{background:var(--g)}}.weedy-w{display:none;padding:0 14px}.weedy-box{background:var(--card);border:1px solid var(--border);border-radius:var(--rxl);padding:14px;box-shadow:var(--shm)}.weedy-hdr{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border)}.weedy-av{width:36px;height:36px;background:linear-gradient(145deg,var(--gd),var(--g));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.weedy-nm{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--g)}.weedy-st{font-size:9px;color:var(--text3)}.weedy-msgs{max-height:340px;overflow-y:auto;margin-bottom:10px}.wm{margin-bottom:8px;display:flex;gap:6px}.wm-bot{flex-direction:row}.wm-usr{flex-direction:row-reverse}.wm-av{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;flex-shrink:0}.wm-bot .wm-av{background:var(--gdim);color:var(--g);font-weight:700}.wm-usr .wm-av{background:var(--bg3);color:var(--text3)}.wm-txt{padding:7px 10px;border-radius:var(--r);font-size:11px;line-height:1.6;max-width:85%}.wm-bot .wm-txt{background:var(--gdim);color:var(--text2);border:1px solid rgba(26,140,70,.1)}.wm-usr .wm-txt{background:var(--bg3);color:var(--text);border:1px solid var(--border)}.weedy-inp{display:flex;gap:6px}.weedy-inp input{flex:1;padding:9px 11px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);font-size:12px}.weedy-inp input:focus{outline:none;border-color:var(--g)}.weedy-inp button{padding:9px 16px;background:var(--g);color:#fff;border:none;border-radius:var(--r);font-family:var(--mono);font-size:11px;font-weight:700;cursor:pointer}.result{display:none;padding:14px}.r-hero{background:var(--card);border:1px solid var(--border);border-radius:var(--rxl);padding:14px;margin-bottom:7px;box-shadow:var(--shm);position:relative;overflow:hidden}.r-hero::before{content:'';position:absolute;top:0;left:0;right:0;height:2.5px;background:linear-gradient(90deg,var(--gd),var(--g),var(--gl))}.r-pimg{width:100%;max-height:180px;object-fit:cover;border-radius:var(--rl);margin-bottom:10px;border:1px solid var(--border)}.r-hl{font-family:var(--serif);font-size:18px;color:var(--text);margin-bottom:2px;line-height:1.3}.r-enc{font-size:11px;color:var(--text3);font-style:italic;margin-bottom:10px}.score-s{display:flex;align-items:center;gap:10px}.sc-cw{position:relative;width:64px;height:64px;flex-shrink:0}.sc-cw svg{transform:rotate(-90deg)}.sc-bg{fill:none;stroke:var(--border);stroke-width:5}.sc-fl{fill:none;stroke:var(--g);stroke-width:5;stroke-linecap:round;stroke-dasharray:195;stroke-dashoffset:195;transition:stroke-dashoffset 1.2s ease}.sc-nm{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:15px;font-weight:700;color:var(--g)}.sc-ds{flex:1}.sdr{display:flex;justify-content:space-between;align-items:center;padding:3px 0;border-bottom:1px solid var(--border);font-size:10px}.sdr:last-child{border-bottom:none}.sdl{color:var(--text3);font-weight:600}.sdv{font-family:var(--mono);font-weight:600;color:var(--text);font-size:10px}.cpill{font-size:9px;padding:2px 7px;border-radius:16px;background:var(--gdim);color:var(--g);font-weight:700;display:inline-block}.r-sh{display:flex;gap:4px;margin-top:8px}.r-sh button{flex:1;padding:8px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text2);font-size:10px;font-weight:700;cursor:pointer;transition:all .15s;font-family:var(--mono)}.r-sh button:hover{border-color:var(--g);color:var(--g);background:var(--gdim)}.cd{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:12px;margin-bottom:6px;box-shadow:var(--sh)}.cd-h{display:flex;align-items:center;gap:6px;margin-bottom:7px}.cd-i{width:24px;height:24px;background:var(--gdim);border:1px solid rgba(26,140,70,.08);border-radius:5px;display:flex;align-items:center;justify-content:center}.cd-i svg{width:12px;height:12px;stroke:var(--g);fill:none;stroke-width:2}.cd-l{font-size:8px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text3);font-family:var(--mono)}.dg-t{font-size:11px;color:var(--text2);line-height:1.8}.issue{display:flex;gap:7px;padding:6px 0;border-bottom:1px solid var(--border)}.issue:last-child{border-bottom:none}.i-d{width:7px;height:7px;border-radius:50%;flex-shrink:0;margin-top:4px}.sv1{background:var(--g)}.sv2{background:var(--amber)}.sv3{background:var(--red)}.i-nm{font-size:11px;font-weight:700;color:var(--text)}.i-ds{font-size:10px;color:var(--text3);line-height:1.5}.i-sv{font-size:7px;font-weight:700;text-transform:uppercase}.sv-t1{color:var(--g)}.sv-t2{color:var(--amber)}.sv-t3{color:var(--red)}.no-iss{font-size:11px;color:var(--g);font-weight:700;padding:3px 0}.act{display:flex;gap:7px;padding:5px 0;border-bottom:1px solid var(--border)}.act:last-child{border-bottom:none}.act-n{width:22px;height:22px;background:var(--gdim);border-radius:4px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:9px;font-weight:700;color:var(--g);flex-shrink:0}.act-t{font-size:10px;color:var(--text2);line-height:1.6;padding-top:2px}.hi-row{display:flex;gap:3px;flex-wrap:wrap;margin-top:5px}.hi-ch{font-size:9px;padding:2px 7px;border-radius:3px;background:var(--bg3);border:1px solid var(--border);color:var(--text2);font-weight:600}.btn-rst{width:100%;padding:9px;background:transparent;color:var(--text3);border:1px solid var(--border);border-radius:var(--r);font-size:11px;font-weight:700;cursor:pointer;margin-top:4px;transition:all .15s;font-family:var(--mono)}.btn-rst:hover{border-color:var(--g);color:var(--g)}.hist-g{padding:0 14px}.hist-e{text-align:center;padding:36px 20px}.hist-e svg{width:36px;height:36px;stroke:var(--text3);fill:none;stroke-width:1.5;opacity:.35;margin-bottom:8px}.he-t{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--text2);margin-bottom:3px}.he-s{font-size:11px;color:var(--text3)}.hi{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:9px;margin-bottom:5px;display:flex;gap:9px;cursor:pointer;transition:all .12s;box-shadow:var(--sh)}.hi:hover{border-color:var(--border2);box-shadow:var(--shm)}.hi-th{width:48px;height:48px;border-radius:var(--r);background:var(--bg3);flex-shrink:0;overflow:hidden;border:1px solid var(--border)}.hi-th img{width:100%;height:100%;object-fit:cover}.hi-inf{flex:1;min-width:0}.hi-hl{font-weight:700;font-size:11px;color:var(--text);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hi-mt{display:flex;gap:3px;flex-wrap:wrap}.htag{font-size:8px;padding:1px 5px;border-radius:3px;background:var(--gdim);color:var(--g);font-weight:700}.htag.w{background:rgba(196,122,10,.08);color:var(--amber)}.hi-dt{font-size:9px;color:var(--text3);margin-top:2px}.hi-sc{font-family:var(--mono);font-size:16px;font-weight:700;align-self:center;flex-shrink:0}.mo{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:500;display:none;align-items:center;justify-content:center;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:16px 10px}.mo.on{display:flex}.mo-b{background:var(--card);border-radius:14px 14px 0 0;padding:14px;width:100%;max-width:680px;max-height:85vh;overflow-y:auto;-webkit-overflow-scrolling:touch;border-top:1px solid var(--border)}.mo-hn{display:none}.mo-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.mo-t{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--text)}.mo-x{width:26px;height:26px;border-radius:50%;border:1px solid var(--border);background:var(--bg3);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text3);font-size:12px}
.soc-tabs{display:flex;background:var(--bg3);border-radius:var(--r);padding:3px;margin:0 14px 10px;border:1px solid var(--border)}.soc-tab{flex:1;padding:7px;text-align:center;font-size:11px;font-weight:700;color:var(--text3);cursor:pointer;border-radius:5px;transition:all .15s;border:none;background:none;font-family:var(--mono);letter-spacing:-.3px}.soc-tab.on{background:var(--card);color:var(--text);box-shadow:var(--sh)}.compose-w{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:10px;margin:0 14px 10px}.compose-r{display:flex;gap:7px}.c-av{width:32px;height:32px;background:linear-gradient(145deg,var(--gd),var(--g));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;flex-shrink:0;font-weight:700}.c-tx{flex:1;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:7px 9px;color:var(--text);font-size:11px;resize:none;min-height:44px;transition:all .15s}.c-tx:focus{outline:none;border-color:var(--g);background:var(--bg2)}.c-ac{display:flex;justify-content:flex-end;margin-top:5px}.btn-pub{padding:6px 14px;background:var(--g);color:#fff;border:none;border-radius:var(--r);font-family:var(--mono);font-size:10px;font-weight:700;cursor:pointer;transition:all .15s}.btn-pub:hover{background:var(--gl)}.post-c{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);margin:0 14px 8px;overflow:hidden;box-shadow:var(--sh);transition:all .12s}.pc-h{display:flex;align-items:center;gap:8px;padding:9px 11px}.pc-av{width:30px;height:30px;background:linear-gradient(145deg,var(--gd),var(--g));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;font-weight:700;flex-shrink:0}.pc-u{font-size:11px;font-weight:700;color:var(--text)}.pc-tm{font-size:9px;color:var(--text3)}.post-im{width:52px;height:52px;object-fit:cover;border-radius:6px;float:left;margin:6px 8px 4px 11px}.post-bd{display:flex;gap:3px;padding:7px 11px 0;flex-wrap:wrap}.pbdg{font-size:8px;padding:2px 6px;border-radius:3px;background:var(--gdim);color:var(--g);font-weight:700}.post-cp{padding:6px 11px;font-size:12px;color:var(--text2);line-height:1.6;overflow:hidden}.post-ac{display:flex;gap:3px;padding:5px 11px 9px}.pa-b{display:flex;align-items:center;gap:3px;padding:5px 9px;border:1px solid var(--border);border-radius:var(--r);background:transparent;color:var(--text3);font-size:10px;cursor:pointer;transition:all .12s;font-weight:700;font-family:var(--mono);text-decoration:none}.pa-b svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2}.pa-b:hover,.pa-b.liked{border-color:#e74c3c;color:#e74c3c;background:rgba(231,76,60,.08)}.post-cm{padding:0 11px;overflow:hidden;max-height:0;transition:max-height .3s}.post-cm.on{max-height:500px}.cm-ir{display:flex;gap:5px;padding:5px 0}.cm-i{flex:1;background:var(--bg3);border:1px solid var(--border);border-radius:5px;padding:6px 8px;color:var(--text);font-size:10px}.cm-i:focus{outline:none;border-color:var(--g)}.btn-cm{padding:6px 10px;background:var(--g);color:#fff;border:none;border-radius:5px;cursor:pointer;font-weight:700;font-size:10px;font-family:var(--mono)}.cm-it{display:flex;gap:6px;padding:4px 0;border-bottom:1px solid var(--border)}.cm-it:last-child{border-bottom:none}.cm-av{width:20px;height:20px;background:var(--gdim);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:8px;color:var(--g);font-weight:700;flex-shrink:0}.cm-u{font-size:9px;font-weight:700;color:var(--text)}.cm-tx{font-size:9px;color:var(--text2);line-height:1.4;margin-top:1px}.ext-l{display:flex;gap:4px;padding:0 14px 8px;flex-wrap:wrap}.el-b{display:flex;align-items:center;gap:4px;padding:5px 10px;border-radius:var(--r);border:1px solid var(--border);background:var(--card);color:var(--text3);font-size:9px;font-weight:700;cursor:pointer;transition:all .12s;font-family:var(--mono);text-decoration:none}.el-b:hover{border-color:var(--g);color:var(--g)}.el-b svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2}.fr-compose{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:12px;margin:0 14px 10px;display:none}.fr-ct{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--text);margin-bottom:7px}.fi-s{width:100%;padding:7px 9px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);font-size:11px;margin-bottom:5px;transition:all .15s}.fi-s:focus{outline:none;border-color:var(--g)}.fr-fl{display:flex;gap:3px;padding:0 14px;margin-bottom:7px;overflow-x:auto}.ff{padding:4px 10px;border-radius:14px;font-size:9px;font-weight:700;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--text3);transition:all .12s;white-space:nowrap;font-family:var(--mono)}.ff.on{background:var(--g);color:#fff;border-color:var(--g)}.fp{background:linear-gradient(135deg,#f0faf2,#f8fcf8);border:1px solid #c8e6c9;border-radius:var(--rl);margin:0 14px 5px;overflow:hidden;box-shadow:var(--sh);cursor:pointer;transition:all .12s}.fp:hover{border-color:var(--border2)}.fp-ly{display:flex}.fp-v{display:flex;flex-direction:column;align-items:center;padding:7px 6px;gap:1px;background:var(--bg3);border-right:1px solid var(--border);min-width:34px}.vb{width:18px;height:18px;border:none;background:none;color:var(--text3);cursor:pointer;font-size:9px;border-radius:3px;transition:all .12s;display:flex;align-items:center;justify-content:center}.vb:hover{background:var(--border);color:var(--text)}.vb.up.on{color:var(--g)}.vb.down.on{color:var(--red)}.vc{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--text)}.fp-bd{padding:8px 10px;flex:1}.fp-ct{font-size:8px;font-weight:700;padding:1px 5px;border-radius:3px;display:inline-block;margin-bottom:3px;font-family:var(--mono)}.fp-ti{font-weight:700;font-size:11px;color:var(--text);margin-bottom:2px;line-height:1.4}.fp-pr{font-size:10px;color:var(--text3);line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.fp-mt{display:flex;gap:5px;font-size:9px;color:var(--text3);margin-top:3px}.map-h{padding:10px 14px 5px;display:flex;align-items:center;justify-content:space-between}.map-fl{display:flex;gap:3px;padding:0 14px;margin-bottom:7px;overflow-x:auto}.mf{padding:4px 10px;border-radius:14px;font-size:9px;font-weight:700;cursor:pointer;border:1px solid var(--border);background:var(--card);color:var(--text3);transition:all .12s;white-space:nowrap;font-family:var(--mono)}.mf.on{background:var(--g);color:#fff;border-color:var(--g)}#map{height:320px;border-radius:var(--rl);margin:0 14px;border:1px solid var(--border);overflow:hidden;box-shadow:var(--shm)}.map-lg{display:flex;gap:8px;padding:6px 14px;flex-wrap:wrap}.ml-i{display:flex;align-items:center;gap:3px;font-size:9px;color:var(--text3);font-weight:700}.ml-d{width:6px;height:6px;border-radius:50%}.exp-sh{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 4px}.exp-l{padding:0 14px}.exp-c{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:10px;margin-bottom:5px}.ec-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.ec-u{font-size:10px;font-weight:700;color:var(--text)}.ec-loc{font-size:9px;color:var(--text3)}.ec-str{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--g);margin-bottom:2px}.ec-st{font-size:11px;color:var(--amber);letter-spacing:1px;margin-bottom:3px}.ec-ds{font-size:10px;color:var(--text2);line-height:1.5;margin-bottom:4px}.ec-lk{display:flex;align-items:center;gap:3px;padding:4px 9px;border:1px solid var(--border);border-radius:var(--r);background:transparent;color:var(--text3);font-size:9px;cursor:pointer;transition:all .12s;font-weight:700;font-family:var(--mono)}.ec-lk svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2}.ec-lk:hover,.ec-lk.liked{border-color:#e74c3c;color:#e74c3c;background:rgba(231,76,60,.08)}.em-loc{display:flex;align-items:center;justify-content:space-between;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:7px 9px;margin-bottom:7px;font-size:10px;color:var(--text3)}.em-st{font-size:18px;cursor:pointer;letter-spacing:2px;text-align:center;padding:5px;margin-bottom:5px;user-select:none;color:var(--amber)}.anon-r{display:flex;align-items:center;gap:5px;margin-bottom:9px;font-size:10px;color:var(--text2)}.anon-r input{accent-color:var(--g)}.str-c{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:9px;margin-bottom:5px;display:flex;gap:7px;box-shadow:var(--sh);transition:all .12s;cursor:pointer}.str-c:hover{border-color:var(--border2)}.s-rk{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--text3);flex-shrink:0;width:22px;text-align:center;padding-top:2px}.s-rk.t1{color:var(--amber)}.s-rk.t2{color:var(--text3)}.s-rk.t3{color:#A07040}.s-if{flex:1;min-width:0}.s-nm{font-weight:700;font-size:11px;color:var(--text);margin-bottom:2px}.sbdg{font-size:8px;font-weight:700;padding:1px 6px;border-radius:3px;display:inline-block;margin-bottom:2px}.sb-h{background:var(--gdim);color:var(--g)}.sb-s{background:rgba(196,48,48,.07);color:var(--red)}.sb-i{background:rgba(37,99,160,.07);color:var(--blue)}.s-ds{font-size:9px;color:var(--text3);line-height:1.4;margin-bottom:2px}.s-mt{display:flex;gap:5px;flex-wrap:wrap;font-size:8px;color:var(--text3)}.s-mt b{color:var(--g)}.tp-tg{font-size:8px;padding:1px 4px;border-radius:2px;background:rgba(37,99,160,.07);color:var(--blue);display:inline-block;margin:1px 1px 0 0;font-weight:700}.fm-w{background:var(--bg3);border-radius:2px;height:2px;margin-top:3px;overflow:hidden}.fm-b{height:100%;background:linear-gradient(90deg,var(--g),var(--gl));border-radius:2px}.info-tb{display:flex;gap:3px;padding:0 14px;margin-bottom:10px;overflow-x:auto}.it{padding:4px 10px;border-radius:14px;font-size:9px;font-weight:700;cursor:pointer;border:1px solid var(--border);background:var(--card);color:var(--text3);transition:all .12s;white-space:nowrap;font-family:var(--mono)}.it.on{background:var(--g);color:#fff;border-color:var(--g)}#budpediaIndex .it{border-radius:0;border:none;padding:11px 14px;white-space:normal;font-size:11px;display:flex;align-items:center;gap:10px;text-align:left;width:100%;box-sizing:border-box}#budpediaIndex .it.on{background:var(--gdim);color:var(--g);border:none}.myact-item:hover{background:var(--bg3)!important;border-radius:8px}.info-s{display:none;padding:0 14px 6px}.info-s.on{display:block}.ic{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:14px;margin-bottom:7px}.ic-t{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--text);margin-bottom:7px;letter-spacing:-.3px}.ic p{font-size:11px;color:var(--text2);line-height:1.8;margin-bottom:5px}.ic h4{font-weight:700;font-size:10px;color:var(--text);margin:8px 0 4px;padding-top:5px;border-top:1px solid var(--border);font-family:var(--mono);letter-spacing:.5px;text-transform:uppercase}.ic h4:first-of-type{border-top:none;padding-top:0;margin-top:3px}.ih{background:var(--gdim);border-left:2px solid var(--g);border-radius:0 var(--r) var(--r) 0;padding:8px 10px;margin:7px 0;font-size:10px;color:var(--text2);line-height:1.7}.iw{background:rgba(196,122,10,.06);border-left:2px solid var(--amber);border-radius:0 var(--r) var(--r) 0;padding:8px 10px;margin:7px 0;font-size:10px;color:var(--amber);line-height:1.7}.stat-r{display:flex;justify-content:space-between;align-items:flex-start;padding:5px 0;border-bottom:1px solid var(--border);font-size:10px}.stat-r:last-child{border-bottom:none}.stat-k{color:var(--text3);font-weight:600;min-width:120px;flex-shrink:0}.stat-v{color:var(--text);font-weight:600;font-size:10px;text-align:right;flex:1;line-height:1.5}.sd-g{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:5px}.sd-c{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:7px}.sd-l{font-size:7px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px;font-family:var(--mono)}.sd-v{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--g)}.sd-r{font-size:8px;color:var(--text3)}.terp-g{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:5px}.terp-c{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:8px}.tc-n{font-weight:700;font-size:10px;color:var(--text);margin-bottom:1px}.tc-d{font-size:9px;color:var(--text3);line-height:1.4}.tc-e{font-size:8px;margin-top:2px;color:var(--blue);font-weight:700}.eff-g{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;margin-top:5px}.eg-i{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:7px;text-align:center}.eg-l{font-size:9px;font-weight:700;color:var(--text);margin-bottom:1px}.eg-d{font-size:8px;color:var(--text3);line-height:1.3}.lt-w{overflow-x:auto;margin-top:7px;border-radius:var(--r);border:1px solid var(--border)}.lt{width:100%;border-collapse:collapse;font-size:9px;min-width:580px}.lt th{text-align:left;padding:7px 8px;background:var(--bg3);color:var(--text3);font-size:7px;font-weight:700;letter-spacing:1px;text-transform:uppercase;border-bottom:1px solid var(--border);font-family:var(--mono)}.lt td{padding:6px 8px;border-bottom:1px solid var(--border);color:var(--text2);font-size:9px}.lt tr:last-child td{border-bottom:none}.lt tr:hover td{background:var(--bg3)}.lt-sr{width:100%;padding:7px 9px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);font-size:11px;margin-bottom:7px}.lt-sr:focus{outline:none;border-color:var(--g)}.lb{display:inline-block;padding:1px 5px;border-radius:3px;font-size:7px;font-weight:700;font-family:var(--mono)}.lb-f{background:rgba(26,140,70,.1);color:var(--g)}.lb-m{background:rgba(37,99,160,.1);color:var(--blue)}.lb-d{background:rgba(196,122,10,.1);color:var(--amber)}.lb-i{background:rgba(196,48,48,.1);color:var(--red)}.pet-w{padding:0 14px}.pet-st{text-align:center;padding:20px 14px 16px;position:relative;overflow:hidden;background:var(--card);border:1px solid var(--border);border-radius:var(--rxl);margin-bottom:8px;box-shadow:var(--shm);position:relative;overflow:hidden}.pet-sky{position:absolute;top:0;left:0;right:0;height:45%;border-radius:var(--rxl) var(--rxl) 0 0;transition:background 2s;pointer-events:none}.pet-soil{position:absolute;bottom:0;left:0;right:0;height:28px;background:linear-gradient(180deg,#6D4C2E,#3E2723);border-radius:0 0 var(--rxl) var(--rxl);pointer-events:none;overflow:hidden}.pet-cloud{position:absolute;background:var(--bg2);border-radius:50%;opacity:.25;pointer-events:none;animation:cldMv linear infinite}@keyframes cldMv{0%{transform:translateX(-30px)}100%{transform:translateX(140px)}}.pet-star{position:absolute;width:2px;height:2px;background:#fff;border-radius:50%;pointer-events:none;opacity:0;animation:twk 2s infinite}@keyframes twk{0%,100%{opacity:0}50%{opacity:.5}}.pet-soil::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent,transparent 8px,rgba(0,0,0,.05) 8px,rgba(0,0,0,.05) 10px)}.harvest-fx{animation:hvPop .7s ease}@keyframes hvPop{0%{transform:scale(1)}30%{transform:scale(1.15) rotate(3deg)}60%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes wDrop{0%{opacity:1;transform:translateY(-12px)}100%{opacity:0;transform:translateY(30px)}}@keyframes sunG{0%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}100%{opacity:.3;transform:scale(.8)}}@keyframes spk{0%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:scale(.5)}}@keyframes pooAnim{0%{opacity:0;transform:scale(0)}50%{opacity:1;transform:scale(1.2)}100%{opacity:1;transform:scale(1)}}.pfx{position:absolute;pointer-events:none;z-index:10;font-size:14px}.pet-glow{position:absolute;inset:0;background:radial-gradient(ellipse 50% 35% at 50% 75%,rgba(26,140,70,.04) 0%,transparent 70%);pointer-events:none}.pet-nm{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--text);margin-bottom:1px}.pet-lv{font-size:8px;color:var(--text3);font-family:var(--mono);margin-bottom:10px}.pet-vis{position:relative;width:120px;height:140px;margin:0 auto 6px;display:flex;align-items:center;justify-content:center}.pet-vis.dead svg{opacity:.35;filter:grayscale(.7)}.pet-vis.ok svg{animation:pFloat 3s ease-in-out infinite}.pet-vis.great svg{animation:pGreat 2s ease-in-out infinite}@keyframes pFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes pGreat{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-8px) scale(1.02)}}.pet-mood{font-size:10px;color:var(--text3);font-style:italic;margin-top:3px}.pet-xw{background:var(--bg3);border-radius:8px;height:4px;margin:10px 0 0;overflow:hidden}.pet-xb{height:100%;background:linear-gradient(90deg,var(--g),var(--gl));border-radius:8px;transition:width .8s}.pet-xl{font-family:var(--mono);font-size:7px;color:var(--text3);margin-top:3px}.pet-cy{background:var(--gdim);border:1px solid rgba(26,140,70,.08);border-radius:var(--r);padding:6px 9px;margin-top:7px;font-size:9px;color:var(--text2);text-align:center;font-family:var(--mono)}.pet-cy b{color:var(--g);font-weight:700}.pet-sts{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:7px}.ps-c{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:9px}.ps-l{font-size:8px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-family:var(--mono);display:flex;align-items:center;gap:3px}.ps-l svg{width:11px;height:11px;stroke:currentColor;fill:none;stroke-width:2}.ps-bw{background:var(--bg3);border-radius:3px;height:5px;overflow:hidden}.ps-br{height:100%;border-radius:3px;transition:width .8s}.ps-vl{font-family:var(--mono);font-size:9px;font-weight:700;color:var(--text);margin-top:2px}.pet-ac{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:7px}.pa-c{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:10px 5px;text-align:center;cursor:pointer;transition:all .1s;user-select:none}.pa-c:hover{border-color:var(--g);box-shadow:var(--shm);transform:translateY(-1px)}.pa-c:active{transform:scale(.92);box-shadow:none;background:var(--gdim)}.pa-c.splash{animation:splash .5s ease}@keyframes splash{0%{transform:scale(1)}30%{transform:scale(1.15)}60%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes waterDrop{0%{opacity:1;transform:translateY(-20px)}100%{opacity:0;transform:translateY(40px)}}@keyframes sunPulse{0%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}100%{opacity:.3;transform:scale(.8)}}@keyframes leafGrow{0%{transform:scale(.8);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes shakeWind{0%,100%{transform:rotate(0)}25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}.pet-anim{position:absolute;pointer-events:none;z-index:10}.pet-daynight{font-size:8px;color:var(--text3);font-family:var(--mono);text-align:center;margin-bottom:3px}.pet-weeds{display:flex;gap:4px;flex-wrap:wrap;margin:6px 0}.pw-w{width:28px;height:28px;background:var(--bg3);border:1px solid var(--border);border-radius:5px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;transition:all .15s;user-select:none}.pw-w:hover{border-color:var(--red);background:rgba(196,48,48,.06);transform:scale(1.1)}.pw-w:active{transform:scale(.8)}.pet-evt{background:var(--gdim);border:1px solid rgba(26,140,70,.1);border-radius:var(--r);padding:6px 9px;margin:5px 0;font-size:9px;color:var(--text2);text-align:center;font-family:var(--mono);animation:fadeIn .3s}@keyframes fadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.pa-c.cd{pointer-events:none;opacity:.35}.pa-ic{margin-bottom:2px}.pa-ic svg{width:24px;height:24px;stroke:var(--g);fill:none;stroke-width:1.8}.pa-lb{font-family:var(--mono);font-size:9px;font-weight:700;color:var(--text)}.pa-xp{font-size:8px;color:var(--text3)}.pet-hi{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:10px;margin-bottom:7px}.pet-ht{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--text);margin-bottom:7px}.ph-i{display:flex;align-items:center;gap:7px;padding:5px 0;border-bottom:1px solid var(--border);font-size:10px}.ph-i:last-child{border-bottom:none}.ph-ic svg{width:16px;height:16px;stroke:var(--g);fill:none;stroke-width:1.8}.ph-n{font-weight:700;color:var(--text)}.ph-d{color:var(--text3);font-size:8px}.ph-b{margin-left:auto;font-size:8px;padding:2px 5px;border-radius:3px;background:var(--gdim);color:var(--g);font-weight:700;font-family:var(--mono)}.pet-to{position:fixed;bottom:70px;left:50%;transform:translateX(-50%);background:linear-gradient(145deg,var(--gd),var(--g));color:#fff;padding:8px 20px;border-radius:20px;font-size:11px;font-weight:700;z-index:1000;display:none;box-shadow:0 4px 20px rgba(26,140,70,.35);white-space:nowrap;font-family:var(--mono);max-width:85vw;text-overflow:ellipsis;overflow:hidden}.pet-to.on{display:block;animation:tIn .3s cubic-bezier(.2,.8,.3,1.2)}@keyframes tIn{from{opacity:0;transform:translateX(-50%) translateY(8px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.prof-w{padding:0 14px}.prof-hr{background:var(--card);border:1px solid var(--border);border-radius:var(--rxl);padding:18px;text-align:center;margin-bottom:8px;box-shadow:var(--shm);position:relative;overflow:hidden}.prof-hr::before{content:'';position:absolute;top:0;left:0;right:0;height:44px;background:linear-gradient(135deg,var(--gdim),var(--bg3))}.prof-av{width:54px;height:54px;background:linear-gradient(145deg,var(--gd),var(--g));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;margin:6px auto 8px;border:3px solid var(--card);color:#fff;font-weight:700;position:relative;z-index:1;box-shadow:var(--shm)}.prof-nm{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--text)}.prof-em{font-size:10px;color:var(--text3)}.prof-sts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin-top:10px}.pst{background:var(--bg3);border-radius:var(--r);padding:7px 3px;text-align:center;border:1px solid var(--border)}.pst-n{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--g)}.pst-l{font-size:7px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-top:1px;font-family:var(--mono)}.prof-sc{margin-bottom:10px}.prof-st{font-weight:700;font-size:10px;color:var(--text2);margin-bottom:5px;padding-left:2px;text-transform:uppercase;letter-spacing:.5px;font-family:var(--mono)}.prof-cd{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden}.prof-rw{display:flex;align-items:center;justify-content:space-between;padding:10px 11px;border-bottom:1px solid var(--border)}.prof-rw:last-child{border-bottom:none}.prl{font-size:11px;color:var(--text);font-weight:700}.prv{font-size:10px;color:var(--text3);font-family:var(--mono)}.btn-dng{padding:9px;background:transparent;color:var(--red);border:1px solid rgba(196,48,48,.15);border-radius:var(--rl);font-size:11px;font-weight:700;cursor:pointer;width:100%;transition:all .15s;font-family:var(--mono)}.btn-dng:hover{background:rgba(196,48,48,.05);border-color:var(--red)}.s-dv{display:flex;align-items:center;gap:5px;padding:7px 0;margin:2px 0}.s-dv::before,.s-dv::after{content:'';flex:1;height:1px;background:var(--border)}.s-dv span{font-size:7px;font-weight:700;color:var(--text3);letter-spacing:1px;text-transform:uppercase;font-family:var(--mono)}.bdg-p{display:inline-block;padding:2px 7px;border-radius:14px;font-size:8px;font-weight:700;background:var(--gdim);color:var(--g);font-family:var(--mono)}.leaflet-popup-content-wrapper{background:var(--card)!important;border:1px solid var(--border)!important;border-radius:var(--r)!important;box-shadow:var(--shl)!important;color:var(--text)!important;font-family:var(--font)!important}.leaflet-popup-tip{background:var(--card)!important}.leaflet-popup-content{margin:7px 9px!important;font-size:10px!important;line-height:1.5!important}.fav-sec{padding:0 14px 8px}.fav-t{font-family:var(--mono);font-size:9px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:5px}.fav-g{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.fav-av{width:50px;flex-shrink:0;text-align:center;cursor:pointer}.fav-av img{width:42px;height:42px;border-radius:50%;object-fit:cover;border:2px solid var(--g);display:block;margin:0 auto 2px}.fav-av span{font-size:7px;color:var(--text3);font-weight:700;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:50px}.post-img{width:110px;height:110px;object-fit:cover;border-radius:8px;float:left;margin:6px 10px 6px 11px}.fp-title{font-weight:700;font-size:13px;color:var(--text);line-height:1.4;margin-bottom:3px}.fp-preview{font-size:10px;color:var(--text3);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.thread-cmt{display:flex;align-items:flex-start;gap:8px;padding:8px 0;border-bottom:1px solid var(--border)}.thread-cmt:first-child{padding-top:0}.thread-cmt:last-child{border-bottom:none}.thread-cmt img{width:28px;height:28px;border-radius:50%;object-fit:cover;flex-shrink:0}@media(min-width:640px){.pet-ac{grid-template-columns:repeat(5,1fr)}.sd-g{grid-template-columns:repeat(4,1fr)}.eff-g{grid-template-columns:repeat(4,1fr)}.terp-g{grid-template-columns:repeat(3,1fr)}}
/* === PHASE 1 TAMAGOTCHI ADDITIONS === */
@keyframes petDying {
  0%, 100% { transform: rotate(0deg) scale(1); }
  25% { transform: rotate(-2deg) scale(0.98); }
  75% { transform: rotate(2deg) scale(0.98); }
}
.pet-vis.dead { filter: grayscale(0.85) opacity(0.5) !important; }
.pet-vis.dying { animation: petDying 1.5s ease-in-out infinite; }
.pet-vis.warn .pet-soil { background: #8B6914 !important; }
.pet-mood { transition: color 0.4s ease; }
#petReviveBtn button { animation: pulse 1.5s ease-in-out infinite; }
@keyframes pulse { 0%,100%{transform:scale(1);} 50%{transform:scale(1.05);} }
.ps-br { transition: width 0.6s ease, background 0.4s ease; }

/* === PHASE 2 ADDITIONS === */
.pa-c.cd { opacity: 0.35 !important; pointer-events: none !important; position: relative; }
.pa-c.cd .pa-xp { color: var(--amber); font-weight: 700; }
.pa-c.cd::after { content: ''; position: absolute; inset: 0; border-radius: inherit; background: repeating-linear-gradient(45deg, transparent, transparent 3px, rgba(128,128,128,0.08) 3px, rgba(128,128,128,0.08) 6px); pointer-events: none; }
.pet-firefly { position: absolute; width: 4px; height: 4px; border-radius: 50%; background: #ffe066; box-shadow: 0 0 6px 2px #ffe06680; animation: fireflyFloat 4s ease-in-out infinite; pointer-events: none; z-index: 2; }
@keyframes fireflyFloat { 0%,100%{transform:translate(0,0);opacity:0.3;} 25%{transform:translate(8px,-12px);opacity:1;} 50%{transform:translate(-5px,-8px);opacity:0.6;} 75%{transform:translate(12px,-15px);opacity:0.9;} }
.pet-xw { position: relative; overflow: hidden; }
.pet-xb { transition: width 0.8s ease !important; }

/* === PHASE 3: DECISION EVENTS === */
.pet-decision{background:var(--card);border:2px solid var(--amber);border-radius:var(--rl);padding:14px;margin:8px 0;box-shadow:0 4px 20px rgba(196,122,10,.15);animation:decisionPop .4s cubic-bezier(.2,.8,.3,1.2)}
@keyframes decisionPop{0%{opacity:0;transform:scale(.9) translateY(10px)}100%{opacity:1;transform:scale(1) translateY(0)}}
.pd-header{text-align:center;margin-bottom:12px}
.pd-emoji{font-size:32px;display:block;margin-bottom:4px;animation:decEmoji 1s ease-in-out infinite alternate}
@keyframes decEmoji{0%{transform:scale(1) rotate(-5deg)}100%{transform:scale(1.15) rotate(5deg)}}
.pd-title{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--red);letter-spacing:-.3px}
.pd-desc{font-size:10px;color:var(--text2);margin-top:3px}
.pd-opts{display:flex;flex-direction:column;gap:6px}
.pd-btn{padding:10px 14px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg3);color:var(--text);font-size:11px;font-weight:700;cursor:pointer;transition:all .15s;font-family:var(--mono);text-align:left}
.pd-btn:hover{border-color:var(--g);background:var(--gdim);transform:translateX(4px)}
.pd-btn:active{transform:scale(.97)}
.pd-btn:last-child{border-color:rgba(196,48,48,.2);color:var(--red)}
.pd-btn:last-child:hover{border-color:var(--red);background:rgba(196,48,48,.06)}
.pd-timer{text-align:center;font-size:8px;color:var(--amber);font-family:var(--mono);margin-top:8px;padding:4px;background:rgba(196,122,10,.06);border-radius:var(--r)}
.pd-timer b{font-size:12px;color:var(--red)}

/* === PHASE 4: OFFLINE REPORT === */
.offline-report{background:var(--card);border:2px solid var(--blue);border-radius:var(--rl);padding:14px;margin:8px 0;box-shadow:0 4px 20px rgba(37,99,160,.12);animation:decisionPop .4s cubic-bezier(.2,.8,.3,1.2);text-align:center}
.or-header{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--text);margin-bottom:10px}
.or-header b{color:var(--blue)}
.or-items{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}
.or-item{font-family:var(--mono);font-size:10px;font-weight:600;padding:5px 10px;background:var(--bg3);border-radius:var(--r);border:1px solid var(--border)}

/* === PHASE 5: ECONOMY + SHOP + ACHIEVEMENTS === */
.pet-economy{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:10px;margin-bottom:7px}
.pe-header{text-align:center;padding:8px 0;border-bottom:1px solid var(--border);margin-bottom:8px}
.pe-coins{font-family:var(--mono);font-size:20px;font-weight:700;color:var(--amber)}
.pe-label{font-size:8px;color:var(--text3);font-family:var(--mono);text-transform:uppercase;letter-spacing:1px}
.pe-tabs{display:flex;gap:3px;margin-bottom:8px}
.pe-section-t{font-size:8px;font-weight:700;color:var(--text3);font-family:var(--mono);text-transform:uppercase;letter-spacing:1px;margin-bottom:6px}
.shop-item{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:4px;cursor:pointer;transition:all .15s;background:var(--bg3)}
.shop-item:hover{border-color:var(--g);transform:translateX(2px)}
.shop-item.locked{opacity:.4;pointer-events:none}
.shop-item.owned{opacity:.6;border-color:var(--g);background:var(--gdim)}
.si-icon{font-size:20px;flex-shrink:0;width:28px;text-align:center}
.si-info{flex:1;min-width:0}
.si-name{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--text)}
.si-desc{font-size:8px;color:var(--text3)}
.si-price{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--amber);flex-shrink:0}
.si-price.cant{color:var(--red)}
.si-price.owned{color:var(--g);font-size:8px}
.ach-item{display:flex;align-items:center;gap:8px;padding:7px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:3px;background:var(--bg3);opacity:.5}
.ach-item.done{opacity:1;background:var(--gdim);border-color:rgba(26,140,70,.2)}
.ach-icon{font-size:18px;flex-shrink:0;width:26px;text-align:center}
.ach-info{flex:1;min-width:0}
.ach-name{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--text)}
.ach-desc{font-size:8px;color:var(--text3)}
.ach-rw{font-size:9px;font-weight:700;color:var(--amber);flex-shrink:0}

/* === PHASE 6: EDUCATIONAL TIPS + SOCIAL + LEADERBOARD === */
.grow-tip{background:linear-gradient(135deg,var(--gdim),rgba(26,140,70,.04));border:1.5px solid rgba(26,140,70,.2);border-radius:var(--rl);padding:12px;margin:6px 0;display:flex;align-items:flex-start;gap:8px;animation:fadeIn .4s;flex-wrap:wrap}
.gt-icon{font-size:20px;flex-shrink:0}
.gt-text{flex:1;font-size:10px;color:var(--text);line-height:1.6;font-family:var(--mono);min-width:0}
.gt-budpedia{padding:4px 10px;border:1px solid var(--g);border-radius:var(--r);background:transparent;color:var(--g);font-size:8px;font-weight:700;cursor:pointer;font-family:var(--mono);transition:all .15s;margin-top:4px;white-space:nowrap}
.gt-budpedia:hover{background:var(--g);color:#fff}
.lb-row{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:3px;background:var(--bg3);transition:all .15s}
.lb-row.lb-me{background:var(--gdim);border-color:rgba(26,140,70,.3);box-shadow:0 0 8px rgba(26,140,70,.1)}
.lb-rank{font-family:var(--mono);font-size:14px;font-weight:700;width:28px;text-align:center;flex-shrink:0}
.lb-info{flex:1;min-width:0}
.lb-name{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--text)}
.lb-stats{font-size:8px;color:var(--text3)}
.lb-xp{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--amber);flex-shrink:0}

/* === PHASE 7: PARTICLES + TAMAGOTCHI BUBBLE + SOUND TOGGLE === */
.tama-bubble{font-size:9px;color:var(--text2);text-align:center;padding:4px 10px;margin-top:4px;opacity:0;transition:opacity .4s;font-style:italic;min-height:16px}
.tama-bubble.on{opacity:1;animation:tamaBounce .5s ease}
@keyframes tamaBounce{0%{transform:scale(0.8);opacity:0}50%{transform:scale(1.05)}100%{transform:scale(1);opacity:1}}
.particle{position:absolute;pointer-events:none;z-index:15;font-size:12px;animation:particleUp 0.9s ease-out forwards}
.p-heart{animation:particleFloat 1s ease-out forwards}
.p-coin,.p-xp{font-size:9px;font-weight:700;font-family:var(--mono);color:var(--amber);animation:particleUp 1.1s ease-out forwards}
@keyframes particleUp{0%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-35px) scale(0.5)}}
@keyframes particleFloat{0%{opacity:1;transform:translateY(0) scale(0.8)}50%{opacity:1;transform:translateY(-20px) scale(1.2)}100%{opacity:0;transform:translateY(-40px) scale(0.4)}}
.sound-toggle{position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:var(--card);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;z-index:5;transition:all .15s;box-shadow:var(--sh)}
.sound-toggle:hover{border-color:var(--g);transform:scale(1.1)}
.sound-toggle.off{opacity:.4}

/* === PHASE 9: VISUAL REDESIGN — SaaS/Dashboard Aesthetic === */

/* Plant card — cleaner, less "game" more "dashboard widget" */
.pet-st{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:24px 18px 18px;margin-bottom:10px;box-shadow:var(--sh);position:relative;overflow:hidden}
.pet-sky{height:40%;opacity:.6;transition:background 3s ease}
.pet-soil{height:22px;background:linear-gradient(180deg,var(--bg3) 0%,var(--border) 100%);border-radius:0 0 var(--rl) var(--rl);opacity:.7}
.pet-soil::before{display:none}
.pet-glow{background:radial-gradient(ellipse 60% 30% at 50% 80%,var(--gdim) 0%,transparent 70%)}

/* Plant name — refined typography */
.pet-nm{font-family:var(--serif);font-size:26px;font-weight:400;letter-spacing:-.5px;margin-bottom:3px;font-style:italic;line-height:1.1;background:linear-gradient(135deg,#2d9e5f 0%,#1a7a42 40%,#3bbf78 70%,#145c30 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:none;filter:drop-shadow(0 1px 6px rgba(26,140,70,.22));cursor:pointer;transition:filter .2s}.pet-nm:hover{filter:drop-shadow(0 2px 10px rgba(26,140,70,.38))}
.pet-lv{font-size:9px;color:var(--text3);font-family:var(--mono);margin-bottom:12px;letter-spacing:.3px}
.pet-daynight{font-size:9px;color:var(--text3);font-family:var(--mono);letter-spacing:.5px;margin-bottom:6px;opacity:.7}

/* Plant visual — subtle breathing, no bouncing */
.pet-vis{width:110px;height:130px;margin:0 auto 10px}
.pet-vis.ok svg{animation:petBreathe 4s ease-in-out infinite}
.pet-vis.great svg{animation:petBreathe 3s ease-in-out infinite;filter:drop-shadow(0 0 6px rgba(26,140,70,.12))}
.pet-vis.warn svg{animation:petWilt 3s ease-in-out infinite}
.pet-vis.dying svg{animation:petWilt 2s ease-in-out infinite;filter:saturate(.5)}
.pet-vis.dead svg{opacity:.25;filter:grayscale(.8) blur(.5px);animation:none}
@keyframes petBreathe{0%,100%{transform:scale(1) translateY(0)}50%{transform:scale(1.015) translateY(-2px)}}
@keyframes petWilt{0%,100%{transform:rotate(0) translateY(0)}50%{transform:rotate(-1.5deg) translateY(1px)}}

/* Mood — understated */
.pet-mood{font-size:10px;color:var(--text3);font-style:normal;font-family:var(--font);margin-top:6px;letter-spacing:-.1px;opacity:.85}

/* XP bar — thinner, more refined */
.pet-xw{background:var(--bg3);border-radius:10px;height:3px;margin:12px 20px 0;overflow:hidden}
.pet-xb{height:100%;background:var(--g);border-radius:10px;transition:width 1s cubic-bezier(.4,0,.2,1)}
.pet-xl{font-family:var(--mono);font-size:8px;color:var(--text3);margin-top:4px;opacity:.6}

/* Cycle info — lighter touch */
.pet-cy{background:transparent;border:none;padding:4px 0;margin-top:8px;font-size:9px;color:var(--text3);font-family:var(--mono);opacity:.7}
.pet-cy b{color:var(--text2);font-weight:600}

/* Stat bars — desaturated, thin, elegant */
.pet-sts{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}
.ps-c{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:10px 11px 8px;transition:border-color .3s}
.ps-c:hover{border-color:var(--border2)}
.ps-l{font-size:7.5px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.8px;margin-bottom:5px;font-family:var(--mono);display:flex;align-items:center;gap:4px}
.ps-l svg{width:10px;height:10px;stroke:var(--text3);fill:none;stroke-width:1.8;opacity:.6}
.ps-bw{background:var(--bg3);border-radius:6px;height:3px;overflow:hidden}
.ps-br{height:100%;border-radius:6px;transition:width 1s cubic-bezier(.4,0,.2,1),background .6s;opacity:.85}
.ps-vl{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text2);margin-top:3px}

/* Action buttons — minimal, icon-forward */
.pet-ac{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px}
.pa-c{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:12px 6px 10px;text-align:center;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);user-select:none}
.pa-c:hover{border-color:var(--g);background:var(--gdeep);transform:translateY(-1px);box-shadow:var(--sh)}
.pa-c:active{transform:scale(.96);box-shadow:none;background:var(--gdim);border-color:var(--g)}
.pa-c.cd{pointer-events:none;opacity:.28}
.pa-c.cd .pa-xp{color:var(--amber);font-weight:700}
.pa-c.cd::after{display:none}
.pa-ic{margin-bottom:3px}
.pa-ic svg{width:20px;height:20px;stroke:var(--text2);fill:none;stroke-width:1.6;transition:stroke .2s}
.pa-c:hover .pa-ic svg{stroke:var(--g)}
.pa-lb{font-family:var(--mono);font-size:9px;font-weight:600;color:var(--text2);letter-spacing:-.1px}
.pa-xp{font-size:7.5px;color:var(--text3);font-family:var(--mono);opacity:.6;margin-top:1px}
@keyframes splash{0%{transform:scale(1)}40%{transform:scale(1.06)}100%{transform:scale(1)}}

/* Weeds/bugs — cleaner */
.pet-weeds{display:flex;gap:5px;flex-wrap:wrap;margin:8px 0;justify-content:center}
.pw-w{width:30px;height:30px;background:var(--card);border:1px solid var(--border);border-radius:var(--r);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:13px;transition:all .2s}
.pw-w:hover{border-color:var(--red);background:rgba(196,48,48,.04);transform:scale(1.08)}
.pw-w:active{transform:scale(.88)}

/* Events — subtle card */
.pet-evt{background:#ffffff!important;border:1px solid var(--border);border-radius:var(--r);padding:8px 12px;margin:6px 0;font-size:9px;color:var(--text2);text-align:center;font-family:var(--mono);animation:fadeIn .4s cubic-bezier(.4,0,.2,1)}

/* Decision modal — refined */
.pet-decision{background:var(--card);border:1.5px solid var(--amber);border-radius:var(--rl);padding:16px;margin:10px 0;box-shadow:var(--shm);animation:fadeIn .4s cubic-bezier(.4,0,.2,1)}
.pd-emoji{font-size:28px;display:block;margin-bottom:6px;animation:none}
.pd-title{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--text);letter-spacing:-.2px}
.pd-desc{font-size:10px;color:var(--text3);margin-top:4px;line-height:1.5}
.pd-opts{display:flex;flex-direction:column;gap:5px;margin-top:10px}
.pd-btn{padding:10px 14px;border:1px solid var(--border);border-radius:var(--r);background:var(--card);color:var(--text2);font-size:10px;font-weight:600;cursor:pointer;transition:all .2s;font-family:var(--mono);text-align:left}
.pd-btn:hover{border-color:var(--g);background:var(--gdeep);color:var(--text);transform:translateX(3px)}
.pd-btn:last-child{color:var(--text3);border-color:var(--border)}
.pd-btn:last-child:hover{border-color:var(--red);color:var(--red);background:rgba(196,48,48,.03)}
.pd-timer{font-size:8px;color:var(--text3);font-family:var(--mono);margin-top:8px;padding:5px;background:var(--bg3);border-radius:var(--r);text-align:center;opacity:.7}
.pd-timer b{font-size:11px;color:var(--amber)}

/* Toast — more subtle */
.pet-to{position:fixed;bottom:72px;left:50%;transform:translateX(-50%);background:var(--card);color:var(--text);padding:8px 18px;border-radius:var(--r);font-size:10px;font-weight:600;z-index:1000;display:none;box-shadow:var(--shm);border:1px solid var(--border);white-space:nowrap;font-family:var(--mono);max-width:85vw;text-overflow:ellipsis;overflow:hidden}
.pet-to.on{display:block;animation:tIn .3s cubic-bezier(.4,0,.2,1)}

/* Economy section — uniform card */
.pet-economy{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:12px;margin-bottom:10px}
.pe-header{text-align:center;padding:14px 0 12px;border-bottom:1px solid var(--border);margin-bottom:10px}
.pe-coins{font-family:var(--serif);font-size:28px;font-weight:400;color:var(--text);letter-spacing:-.5px;display:flex;align-items:center;justify-content:center;gap:6px;line-height:1}
.pe-label{font-size:9px;color:var(--text3);font-family:var(--mono);text-transform:uppercase;letter-spacing:2px;margin-top:4px}

/* Shop items — cleaner rows */
.shop-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:4px;cursor:pointer;transition:all .2s;background:var(--card)}
.shop-item:hover{border-color:var(--g);background:var(--gdeep)}
.shop-item.locked{opacity:.35;pointer-events:none}
.shop-item.owned{opacity:.5;border-color:var(--g);background:var(--gdeep)}
.si-icon{font-size:18px;flex-shrink:0;width:26px;text-align:center}
.si-name{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text)}
.si-desc{font-size:8px;color:var(--text3);line-height:1.4}
.si-price{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--text2);flex-shrink:0}
.si-price.cant{color:var(--red);opacity:.6}
.si-price.owned{color:var(--g);font-size:8px}

/* Achievements — muted until earned */
.ach-item{display:flex;align-items:center;gap:9px;padding:8px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:3px;background:var(--card);opacity:.4;transition:all .3s}
.ach-item.done{opacity:1;border-color:rgba(26,140,70,.15);background:var(--gdeep)}
.ach-icon{font-size:16px;flex-shrink:0;width:24px;text-align:center}
.ach-name{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text)}
.ach-desc{font-size:8px;color:var(--text3);line-height:1.3}
.ach-rw{font-size:9px;font-weight:600;color:var(--text3);flex-shrink:0}

/* Leaderboard — dashboard table feel */
.lb-row{display:flex;align-items:center;gap:9px;padding:9px 10px;border:1px solid var(--border);border-radius:var(--r);margin-bottom:3px;background:var(--card);transition:all .2s}
.lb-row.lb-me{background:var(--gdeep);border-color:rgba(26,140,70,.2)}
.lb-rank{font-family:var(--mono);font-size:13px;font-weight:700;width:26px;text-align:center;flex-shrink:0;color:var(--text3)}
.lb-name{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text)}
.lb-stats{font-size:8px;color:var(--text3);letter-spacing:.2px}
.lb-xp{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text2);flex-shrink:0}

/* Harvest history — uniform with rest */
.pet-hi{background:var(--card);border:1px solid var(--border);border-radius:var(--rl);padding:12px;margin-bottom:10px}
.pet-ht{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--text3);margin-bottom:8px;text-transform:uppercase;letter-spacing:.8px}

/* Grow tip — subtle education panel */
.grow-tip{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:12px;margin:8px 0;display:flex;align-items:flex-start;gap:10px;animation:fadeIn .4s;flex-wrap:wrap}
.gt-icon{font-size:16px;flex-shrink:0}
.gt-text{flex:1;font-size:10px;color:var(--text2);line-height:1.6;font-family:var(--font);min-width:0}
.gt-budpedia{padding:4px 10px;border:1px solid var(--border);border-radius:var(--r);background:transparent;color:var(--text3);font-size:8px;font-weight:600;cursor:pointer;font-family:var(--mono);transition:all .2s;margin-top:4px}
.gt-budpedia:hover{border-color:var(--g);color:var(--g)}

/* Offline report — dashboard notification */
.offline-report{background:var(--card);border:1.5px solid var(--blue);border-radius:var(--rl);padding:16px;margin:10px 0;box-shadow:var(--sh);animation:fadeIn .4s;text-align:center}
.or-header{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--text);margin-bottom:10px}
.or-header b{color:var(--blue)}
.or-item{font-family:var(--mono);font-size:9px;font-weight:500;padding:5px 10px;background:var(--bg3);border-radius:var(--r);border:1px solid var(--border)}

/* Tamagotchi bubble — minimal */
.tama-bubble{font-size:9px;color:var(--text3);text-align:center;padding:4px 12px;margin-top:5px;opacity:0;transition:opacity .5s;font-family:var(--font);min-height:16px;letter-spacing:-.1px}
.tama-bubble.on{opacity:.8;animation:tamaPop .4s cubic-bezier(.4,0,.2,1)}
@keyframes tamaPop{0%{opacity:0;transform:translateY(4px)}100%{opacity:.8;transform:translateY(0)}}

/* Sound toggle — minimal circle */
.sound-toggle{position:absolute;top:10px;right:10px;width:26px;height:26px;border-radius:50%;border:1px solid var(--border);background:var(--card);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;z-index:5;transition:all .2s;opacity:.5}
.sound-toggle:hover{opacity:1;border-color:var(--text3)}
.sound-toggle.off{opacity:.25}

/* Particles — more subtle */
.particle{position:absolute;pointer-events:none;z-index:15;font-size:10px;animation:particleUp .8s ease-out forwards;opacity:.7}
.p-heart{animation:particleFloat .9s ease-out forwards}
.p-coin,.p-xp{font-size:8px;font-weight:600;font-family:var(--mono);color:var(--text3);animation:particleUp 1s ease-out forwards}

/* Clouds/stars — softer */
.pet-cloud{opacity:.15}
.pet-star{width:1.5px;height:1.5px;opacity:0;animation:twk 3s infinite}
.pet-firefly{width:3px;height:3px;box-shadow:0 0 4px 1px rgba(255,224,102,.3)}

@media(min-width:640px){.pet-ac{grid-template-columns:repeat(4,1fr)}}

/* BudCoin icon */
.budcoin{display:inline-block;width:16px;height:16px;background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALnUlEQVRYw5WXWYzd51nGf99/P9ucM+fMmcWzeMbO2J7YjpPYTpM4DSXUEU0inNAsgqghQiYKpaKbghBUcIdUAeIiAhRogUJDSUsCMSRu2jihWVwn9aJ4tyfjmfGsZ+bMWf/n/Pfv4yIXUNEWeO9evXr1PHqufo/gZ8yzO3OUt5R47MjL/Pn2Pf1b77njQH5i5JO5wfz+dN4cN+24oOuJGQWRF3T8qrvWvtJaar5dvbT03ZePXP/giadvCC69U+Pz52s/VUP8tMPf7U/z6W98nRefenp06ycPPtq/Z+cjpS09uzK97YxproPqQOSBCkFIhBDI2MRva6q5HFVWLm4cu/7e/Nee+/bcOw/dkY+/9V4fb8mZ/93A08DBQ+NceHnOOfDFg4+O3fMLXxq8ZfueVG9M3JyhO38Ff2WeoLGBCjwUCs0QmGkHu9hDZtDBzhnEgcX6bFK79s71vz3x4vSfFEed1dfeNvlOtP5jevp/X7YAv/PZvVSn5wYPPHP4j3Y8+vhXNu3fNUJYYeP4q1SPv0K8cRm7EJEdcsgNp+jZZOP06BjCJ6zWaM/V6FRjrJxBcROp3rGeO52sdevVH9XPP3QwWCm0t3Gisf6TE3j1iRtprtUmdj725LNb7/vl+51ei9rJIzRPfYtU0SO/axS7XEIzdLQkotnwaTR9xkoaKghRUUISxHQqLq2ViMzIAMUxC78D77+8fPndl1Y+//tX3O8d6tvKkY2ZH0/gmwd6cVvu0J7PHH5u8tCv3GemFJXvPUv36j/St79M794pzHwWofWA1EhCnxMzHicX60yWbCwdlN6PsPuwMwGpnE5nYQO/q9NTFpTHUn1J0/u5bz8jL/zup9au/dXpPyTiBx8Z+A0bctJP7zv85FcnH/z0Y2YaKkf/GJpvMvDzO0lvGkCZuxAygngDoQKuLgb4uQAvU6WzZjBeclDOFMocRnizaAJSWQOv0iJSKXqKiny/k++stva9dsZ567bC22tv16KPDJxOEM8c/sXP7Hj40O9lN6WNtde/Do03KH9iN2ahgNLGIPUwKA0RLeB3A85Vu2zetkYoQq5eS7ixlMGM11HeLCKJIE5AKSxHo7vmoWez5AoCLVHlbrUxeGEp8+qyf3uoHdbg+XtHxsbvOfDlwrhpNz74Pv78Ufru2IaZzYPUEfECeEcRwbsI2WGhGpApN8Fs4dgCF4+VdQ9NhYgkQJFC6SWQEqFBOiPprAYIIRjaWWZ4k3H/Df3BQ6tPvYn2TxKx+a59jw/sLE/FrTmaJ/+V4u5+XDOD64YIGaHJAOGdgWADFYQsNTpkSzFuoBFEGiINc0ttVByjYoWSDkrkEYkCBYatgecSBDrZkkH/5h5ruBwdfvLFcsn4s/3FocE944+kCmti49RFDLtOdvwmXr/YwtcEJctkoqSxqRBCovC6IXXZIYNH6OvEUqFsjbXFAJlYKKEjvAptd5mlNnzYjkl3Qz7Wp+O3wRnW6d3cy/Bcde/2evBxY2Tf5N2FMXZIf4nOzDmK2/vQDZ18CqyhKpYpOLNoMr+e5pahNFGYEBmSbiQJAgMvEniRIvATROTj+XBxLWbRBDWqcWomYf9KgDmUwfMTlG7j9OXJZES6mI/v00qTgwezxbYTrNcgrOH0F1BSUrQMVlYlIt1iZGqdWl+FN+bqNFqSSMW0fY2Or9H0NJpdhSZhbj3gtQ2f5S0J6ZtcNow21Q+7TBVNhKZBFKOUwkzrWJZGNp3cpmWKqf2G0cGrNDDTGoZpocKEgYxOZ11QaWi0fY2eUkSnv8Pr000a7RA3hIqrqHmKTktSbcJxTUNMBahcwMKGxtlpyaibMNxnI5VASgGaiWbqCF1gmWpMs1KMaYlP1OxiOgbEEhUZ5EzFkEoxc11Qd3VaHQMrE9IabDG9FtKKNNbbipanWF1KaE5oMBrQ8GOWa4KZdcHGeZ97BywsWwclEboOhoESBkIpbJu8oVtxD3GE9ANMQyBVHvL3QusYdwx7nD+jc81WpG2QiaB32GCpFVNtKJodSZQIysMWfbsMFqoBfqjhKVg46/MAit3b+lGZMqoxh7BthKEjowSlJEIIYZAkEEYIASpWELRR7kUIXXrTKR4YzPEPJzcwt5sIoTBbAiuts1aVuKFAxYKRzSbXVyVdXxIIRf3DkHsaIQ/cnEPv2QT5G5G1RfRMAWHZBG0XVIKUeseI/dhFqpyRdkjqMSpy0VonQWm0PZ3enMWtyubfjvtkp2x0S0ACXgReCLahWK0pwlDRDaB9qcsvScmj+3tI50yS1jVUc5Y4UjjlIkqHTuUqSSTpds1Vw2v5C1KKG528RXtZIeKEiqs4W4upGDFBVhHuMdjuOtQCQcNTuB0I/Zg4Eug2GLYgndLI6IqhyRRe2uRoYnJDTTKZSXBEjHQ2Y5d7ifwunaUKuiUIQnHOcDdap6Ko90a7oFNLTJJuwMKa4qWZFvqUSd4AoWtEGYGHIorBTxTL8zGemzBwg0Nvj4aR13EcAZZgXsBlV/LKbMztHwY8vj2DuX0nRtph7dIC4cYG3UBLGi39P4zK1fWj7Vrpkb6RyLH7SrRXNtgzWuLX2xYvnOhyUheofhNpCLyWJO4qCkWdIJDIWAEaMzMJZq/ATCmU/IjS9IUud/oRByZ0ZGYH2a1biaMWtTMXQMXUW/bSYtU+Zsy8t/rm5IHBC6Wh9N781jzrJ9ZJlwL27sixbcDm4jWXC9WAeiCpe4pz/TbtUGJXfTJoaEIxHEeMXu7iIrGkYkdKsG/A5KbRNJo9hH3LpzCyFpV3P8CdnSGKNCpV7btvXeu9YjxztVvZ9v7y3w9t23pLcUhqmS2D1GdXKG0tkClk2L/bYV/g0e0mfPU9F28l4BO6wttkk1LQXfQ4kQh+bcLh4KiORMdOmehahBfkMHb9KumRITor86y88X1kHFNtGOvzy9bf9Ke7sX4/OqLuzWULzt1DN2RHMmWTbkvgrzaw0wbKyEJmnCSq0xPEHOrXuX93lverimFL8dl9OSaCmJyhmNhcwsgVQXp4QR5z5xNkp3aQuE1mX3gO7/pl/Ejn6jXzL1452/fNY/6C1KdRPP9YoXP0zUYtlzfuH9qastKDWTw/h7dYw7RBs0wM2WakbNPXn8cwoLERMZGBiZEM4wM2I0UTUCRBiM9mnJsfJzu5mcStMf/SX9M480OiSLC4Zhw/O+18WdNpXvDcj4joyCmDtZVwxq67xULRvr08nhKZTRlUboTuegCddTRiUAolTJSM2dKrMdhrIkwHFYfEkU4g+1ADt5G7+S5SAw5+dZm573yN+unjCANWq/rspWvObw73tC/+6Wz7v6C0RsCBlJ1UN+Rpf6U+mTa0qd7RDOm+BGekjEyNEQQ5gq5G3I2JAwWYSFKESY44NYY+vIv0jlEyowma1qFxeZrZF56nffkChi1YXtevX5ixfusPzrlvfO4Lt7Acr/xPLP/CQAo/YnTXFvns7o8VDm07OEFpRxEjZ6GERRKlSAITGX30KQwd3ZHoToRmRshI4S6FVH44Q+PsZRLfJxEaa3X93MVr1he/8oF77MH0OC97cz+5mJzqbOfgYL0137Df9DbcVPNiZZe/3DTjQEfTJLoVYqYCzGyIkfLQzS4q7uBXPWoXaiweu8LCa6fpzC+gVILr6+H8ivHS+enU5+7c2X7/t5/s5d+91Z9dzXLczNMTM5xYzNl3jdYfHOuLv1Quqr25HlPP9qdx8hl0xwEUhBFBp0PU7hK7PlJKTEfQCbS47uqnr68Yf3nqUvqfb53suMenRzjSvfp/LaeKJ4bK3D1W5e3Z4sCWvuC+UjZ+qCeT3Grrst/QlKkJsC0QpkAzBLEUoedTaXb1k9Wm8S9XrluvPXxXfe3oySIn6rv5kfuD/187Bni0f5KStc6ucoOj0xOpbeX6ZD4jb3YsOWXqcsg0hKM5FkHIdT8Q52t1eeqtmdLMUx+f9c/O52iaY3xj5tzPkuA/Aa0m1aBFZNZMAAAAAElFTkSuQmCC') center/contain no-repeat;vertical-align:middle;flex-shrink:0}
.budcoin.sm{width:12px;height:12px}
.budcoin.lg{width:22px;height:22px}
.budcoin.xl{width:32px;height:32px}

/* === PET PAGE BACKGROUND: DAY/NIGHT SKY === */
#pg-pet{position:relative;overflow:hidden}
.pet-bg-sky{position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:0;transition:background 3s ease;overflow:hidden}
#pg-pet>.pg-h,#pg-pet>.pet-w,#pg-pet>.pet-to{position:relative;z-index:1}
.bg-cloud{position:absolute;background:var(--card);border-radius:50%;opacity:.18;pointer-events:none;animation:bgCloudDrift linear infinite;will-change:transform}
.bg-cloud::before{content:'';position:absolute;background:inherit;border-radius:50%;top:-40%;left:20%;width:70%;height:70%}
.bg-cloud::after{content:'';position:absolute;background:inherit;border-radius:50%;top:-25%;left:50%;width:55%;height:55%}
@keyframes bgCloudDrift{0%{transform:translateX(-120px)}100%{transform:translateX(calc(100vw + 120px))}}
.bg-star{position:absolute;border-radius:50%;background:#fff;pointer-events:none;animation:bgTwinkle 3s ease-in-out infinite;will-change:opacity}
@keyframes bgTwinkle{0%,100%{opacity:.1}50%{opacity:.7}}
.bg-moon{position:absolute;width:32px;height:32px;border-radius:50%;background:#e8e4d4;box-shadow:0 0 12px 4px rgba(232,228,212,.15),inset -6px -2px 0 0 rgba(0,0,0,.08);pointer-events:none;opacity:.7;transition:opacity 2s}
.bg-moon::before{content:'';position:absolute;width:6px;height:6px;border-radius:50%;background:rgba(0,0,0,.06);top:8px;left:10px}
.bg-moon::after{content:'';position:absolute;width:4px;height:4px;border-radius:50%;background:rgba(0,0,0,.05);top:18px;left:20px}
.bg-sun{position:absolute;width:36px;height:36px;border-radius:50%;background:radial-gradient(circle,#fff8e1 30%,#ffd54f 70%,transparent 100%);pointer-events:none;opacity:.25;box-shadow:0 0 20px 8px rgba(255,213,79,.12);animation:bgSunPulse 6s ease-in-out infinite}
@keyframes bgSunPulse{0%,100%{transform:scale(1);opacity:.2}50%{transform:scale(1.08);opacity:.3}}

/* === PET BANNER HEADER === */
.pet-banner{position:relative;z-index:2;margin:12px 14px 6px;padding:16px 18px 14px;border-radius:12px;background:linear-gradient(145deg,#1a0a2e 0%,#2d1654 60%,#3a1f6e 100%);border:1px solid rgba(39,196,94,.12);box-shadow:0 4px 24px rgba(0,0,0,.2),0 0 0 1px rgba(39,196,94,.06);display:flex;align-items:center;justify-content:space-between;overflow:hidden}
.pet-banner::before{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse 70% 120% at 10% 50%,rgba(26,140,70,.1),transparent 60%);pointer-events:none}
.pet-banner .pet-banner-title{color:#e8f0ea}
.pet-banner .pet-banner-sub{color:rgba(39,196,94,.6)}
.pet-banner .btn-xs{background:rgba(39,196,94,.12);color:#27c45e;border-color:rgba(39,196,94,.25)}
.pet-banner .btn-xs:hover{background:rgba(39,196,94,.2)}
.pet-banner-inner{display:flex;align-items:center;gap:12px}
.pet-banner-center{display:flex;flex-direction:column;align-items:center;flex:1;gap:4px;padding:4px 0}
.pet-banner-logo{height:52px;width:auto;flex-shrink:0;filter:drop-shadow(0 2px 6px rgba(0,0,0,.25))}
.pet-banner-title{font-family:var(--serif);font-size:22px;font-weight:400;color:var(--text);letter-spacing:-.3px;line-height:1.1}
.pet-banner-sub{font-family:var(--mono);font-size:9px;color:var(--text3);letter-spacing:1.2px;text-transform:uppercase;margin-top:1px}
.pet-banner-btn{position:absolute;top:12px;right:14px;flex-shrink:0}

/* === RENAME MODAL === */
#renameOverlay{position:fixed;inset:0;z-index:2000;background:rgba(0,0,0,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px;animation:rmFadeIn .2s ease}
@keyframes rmFadeIn{from{opacity:0}to{opacity:1}}
.rename-modal{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:28px 24px 22px;width:100%;max-width:300px;box-shadow:0 20px 60px rgba(0,0,0,.2);animation:rmSlideUp .3s cubic-bezier(.2,.8,.3,1);text-align:center}
@keyframes rmSlideUp{from{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
.rm-icon{font-size:36px;margin-bottom:8px}
.rm-title{font-family:var(--serif);font-size:20px;color:var(--text);margin-bottom:4px}
.rm-sub{font-size:11px;color:var(--text3);margin-bottom:16px}
.rm-input{width:100%;padding:12px 14px;background:var(--bg3);border:1.5px solid var(--border);border-radius:var(--r);color:var(--text);font-family:var(--serif);font-size:18px;text-align:center;outline:none;transition:border-color .2s;box-sizing:border-box}
.rm-input:focus{border-color:var(--g);box-shadow:0 0 0 3px var(--gdim)}
.rm-chars{font-family:var(--mono);font-size:9px;color:var(--text3);margin-top:6px;text-align:right}
.rm-btns{display:flex;gap:8px;margin-top:16px}
.rm-cancel{flex:1;padding:10px;border:1px solid var(--border);border-radius:var(--r);background:transparent;color:var(--text3);font-family:var(--mono);font-size:11px;font-weight:600;cursor:pointer;transition:all .15s}
.rm-cancel:hover{background:var(--bg3);color:var(--text)}
.rm-save{flex:1;padding:10px;border:none;border-radius:var(--r);background:var(--g);color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;cursor:pointer;transition:all .15s}
.rm-save:hover{background:var(--gl);transform:translateY(-1px);box-shadow:var(--sh)}
.rm-save:active{transform:scale(.97)}

/* ═══════════════════════════════════════════════════
   PLANTITA FX — screen-space global particle system
   ═══════════════════════════════════════════════════ */

/* ── shared base: all global particles are fixed, pointer-events:none ── */
.pfx-drop-global,.pfx-ripple,.pfx-glow-ring,.pfx-spark-global,
.pfx-leaf-global,.pfx-wind-global,.pfx-confetti-global,
.pfx-bubble-global,.pfx-heart-rain,.pfx-nutrient-dot,.pfx-screen-flash{
  position:fixed;pointer-events:none;z-index:9999;
}

/* ── water drops falling from top ── */
.pfx-drop-global{
  width:7px;height:13px;
  border-radius:50% 50% 50% 50% / 60% 60% 40% 40%;
  background:linear-gradient(180deg,#7ed6fa,#3498db);
  box-shadow:0 0 4px rgba(52,152,219,.4);
  animation:pfxDropFall .75s ease-in forwards;
}
@keyframes pfxDropFall{
  0%  {opacity:1;transform:translateY(0) scaleX(1);}
  70% {opacity:1;transform:translateY(65px) scaleX(1);}
  100%{opacity:0;transform:translateY(82px) scaleX(1.9);}
}

/* ── ripple circle on water impact ── */
.pfx-ripple{
  width:56px;height:18px;
  border:2px solid rgba(52,152,219,.55);
  border-radius:50%;
  animation:pfxRipple .65s ease-out forwards;
}
@keyframes pfxRipple{
  0%  {opacity:.9;transform:scale(.3);}
  100%{opacity:0;transform:scale(2.2);}
}

/* ── golden glow rings (light / levelup) ── */
.pfx-glow-ring{
  border-radius:50%;
  border:3px solid #ffe066;
  box-shadow:0 0 12px #ffe066;
  animation:pfxGlowExpand .7s ease-out forwards;
}
@keyframes pfxGlowExpand{
  0%  {opacity:.95;transform:scale(.3);}
  100%{opacity:0;transform:scale(2.8);}
}

/* ── screen flash overlay (light yellow / harvest green) ── */
.pfx-screen-flash{
  inset:0;
  animation:pfxFlash .55s ease-out forwards;
}
@keyframes pfxFlash{
  0%  {opacity:.5;}
  100%{opacity:0;}
}

/* ── repair / train sparks flying outward ── */
.pfx-spark-global{
  width:5px;height:5px;border-radius:50%;
  animation:pfxSparkFly var(--d,.55s) ease-out forwards;
}
@keyframes pfxSparkFly{
  0%  {opacity:1;transform:translate(0,0) scale(1);}
  100%{opacity:0;transform:translate(var(--tx,40px),var(--ty,-50px)) scale(.15);}
}

/* ── prune leaves tumbling ── */
.pfx-leaf-global{
  font-size:17px;
  animation:pfxLeafTumble 1.1s ease-out forwards;
}
@keyframes pfxLeafTumble{
  0%  {opacity:1;transform:translate(0,0) rotate(0deg);}
  45% {opacity:1;transform:translate(var(--tx,30px),-45px) rotate(200deg);}
  100%{opacity:0;transform:translate(var(--tx,30px),65px) rotate(400deg);}
}

/* ── ventilation wind lines ── */
.pfx-wind-global{
  color:#a8d8ea;opacity:0;
  animation:pfxWindFly .9s ease-out forwards;
}
@keyframes pfxWindFly{
  0%  {opacity:0;transform:translateX(0) skewX(-12deg);}
  18% {opacity:.85;}
  100%{opacity:0;transform:translateX(130px) skewX(-12deg);}
}

/* ── harvest confetti ── */
.pfx-confetti-global{
  width:9px;height:9px;
  animation:pfxConFall var(--d,1.4s) ease-in forwards;
}
@keyframes pfxConFall{
  0%  {opacity:1;transform:translate(0,0) rotate(0deg);}
  100%{opacity:.25;transform:translate(var(--tx,0px),320px) rotate(var(--r,360deg));}
}

/* ── talk bubbles / emojis rising ── */
.pfx-bubble-global{
  font-size:20px;
  animation:pfxBubbleRise .95s ease-out forwards;
}
@keyframes pfxBubbleRise{
  0%  {opacity:0;transform:translateY(0) scale(.6);}
  20% {opacity:1;transform:translateY(-12px) scale(1.1);}
  100%{opacity:0;transform:translateY(-70px) scale(.8);}
}

/* ── heart shower (talk) ── */
.pfx-heart-rain{
  font-size:16px;
  animation:pfxHeartRise 1s ease-out forwards;
}
@keyframes pfxHeartRise{
  0%  {opacity:1;transform:translateY(0) scale(.8);}
  60% {opacity:1;transform:translateY(-55px) scale(1.15);}
  100%{opacity:0;transform:translateY(-90px) scale(.7);}
}

/* ── nutrient dots popping up from soil (feed) ── */
.pfx-nutrient-dot{
  border-radius:50%;
  animation:pfxNutPop var(--animation-duration,.7s) ease-out forwards;
}
@keyframes pfxNutPop{
  0%  {opacity:0;transform:translateY(0) scale(.4);}
  40% {opacity:1;transform:translateY(-38px) scale(1.2);}
  100%{opacity:0;transform:translateY(-75px) scale(.5);}
}

/* ============================================================
   SISTEMA ENGAGEMENT — Racha, Misiones, Clima, Idle, Cosecha
   Estilos 100% nuevos, no sobreescriben nada existente.
   ============================================================ */

/* Panel contenedor */
.eng-panel{
  margin:0 11px 10px;
  background:var(--card);
  border:1px solid var(--border);
  border-radius:10px;
  overflow:hidden;
}

/* Cabecera del panel */
.eng-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:7px 10px 5px;
  border-bottom:1px solid var(--border);
}
.eng-left{
  display:flex;
  align-items:center;
  gap:8px;
}
.eng-right{
  font-size:9px;
  font-weight:700;
  color:var(--text3);
  text-transform:uppercase;
  letter-spacing:.4px;
}

/* Badge de racha */
.eng-streak-badge{
  display:inline-flex;
  align-items:center;
  gap:3px;
  font-size:11px;
  font-weight:700;
  background:linear-gradient(135deg,rgba(255,160,40,.15),rgba(255,80,0,.08));
  border:1px solid rgba(255,130,0,.25);
  border-radius:20px;
  padding:2px 9px;
  color:var(--text1);
  cursor:default;
  transition:background .3s;
}
[data-theme="dark"] .eng-streak-badge{
  background:linear-gradient(135deg,rgba(255,160,40,.12),rgba(255,80,0,.06));
}

/* Etiqueta de clima */
.eng-weather{
  font-size:10px;
  color:var(--text2);
  background:var(--bg2);
  border-radius:12px;
  padding:2px 7px;
  white-space:nowrap;
}

/* Cada misión */
.eng-mission{
  padding:7px 10px 6px;
  border-bottom:1px solid var(--border);
  transition:background .2s;
}
.eng-mission:last-child{border-bottom:none;}
.eng-mission.done{opacity:.55;}

.em-info{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:4px;
}
.em-desc{
  font-size:11px;
  color:var(--text1);
  font-weight:500;
}
.em-reward{
  font-size:10px;
  font-weight:700;
  color:var(--g);
  white-space:nowrap;
  margin-left:6px;
}

/* Barra de progreso de misión */
.em-bar-wrap{
  height:5px;
  background:var(--bg2);
  border-radius:99px;
  overflow:hidden;
  margin-bottom:2px;
}
.em-bar{
  height:100%;
  background:linear-gradient(90deg,var(--g),#2ecc71);
  border-radius:99px;
  transition:width .4s cubic-bezier(.4,0,.2,1);
  min-width:0%;
}
.eng-mission.done .em-bar{background:var(--text3);}

.em-prog{
  font-size:9px;
  color:var(--text3);
  text-align:right;
}

/* ════════════════════════════════════════════════════════════
   PRO LAUNCH LAYER — Estilos
   Prefijo pro- · Nada sobreescrito · Todo additive
   ════════════════════════════════════════════════════════════ */

/* ── Floating XP / BC numbers ── */
.pro-float {
  position: fixed;
  pointer-events: none;
  z-index: 9500;
  font-size: 13px;
  font-weight: 800;
  font-family: var(--mono);
  text-shadow: 0 1px 4px rgba(0,0,0,0.25);
  animation: proFloatUp 0.9s cubic-bezier(0.22,1,0.36,1) forwards;
  transform: translateX(-50%);
  white-space: nowrap;
}
@keyframes proFloatUp {
  0%   { opacity: 1;   transform: translateX(-50%) translateY(0)     scale(0.8); }
  20%  { opacity: 1;   transform: translateX(-50%) translateY(-8px)  scale(1.1); }
  100% { opacity: 0;   transform: translateX(-50%) translateY(-52px) scale(0.9); }
}

/* ── Stat bar pulses ── */
.pro-bar-pulse-up {
  animation: proBarUp 0.5s ease-out;
}
.pro-bar-pulse-down {
  animation: proBarDown 0.5s ease-out;
}
@keyframes proBarUp {
  0%   { filter: brightness(1); }
  40%  { filter: brightness(1.5); box-shadow: 0 0 8px currentColor; }
  100% { filter: brightness(1); }
}
@keyframes proBarDown {
  0%   { filter: brightness(1); }
  40%  { filter: brightness(0.7) saturate(1.5); }
  100% { filter: brightness(1); }
}

/* ── Coin counter flash ── */
.pro-coin-flash {
  animation: proCoinFlash 0.45s ease-out;
}
@keyframes proCoinFlash {
  0%   { transform: scale(1); }
  30%  { transform: scale(1.18); color: #f1c40f; }
  100% { transform: scale(1); }
}

/* ── XP bar bounce ── */
.pro-xp-bounce {
  animation: proXpBounce 0.6s cubic-bezier(0.34,1.56,0.64,1);
}
@keyframes proXpBounce {
  0%   { transform: scaleY(1); }
  40%  { transform: scaleY(1.4); }
  70%  { transform: scaleY(0.9); }
  100% { transform: scaleY(1); }
  transform-origin: left center;
}

/* ── Button tooltip ── */
.pro-btn-tip {
  position: fixed;
  z-index: 9600;
  background: var(--card);
  border: 1px solid var(--border2);
  border-radius: 8px;
  padding: 6px 11px;
  font-size: 11px;
  font-weight: 600;
  color: var(--text2);
  pointer-events: none;
  white-space: nowrap;
  max-width: 200px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.14);
  animation: proTipIn 0.15s ease;
}
@keyframes proTipIn {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── First-run overlay animations ── */
@keyframes proFtFade {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes proFtTip {
  from { opacity: 0; transform: scale(0.92) translateY(6px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}

/* ── Toast upgrades ── */
.pet-to {
  transition: opacity 0.2s ease, transform 0.25s cubic-bezier(0.34,1.56,0.64,1) !important;
  max-width: 88vw;
  text-align: center;
  line-height: 1.4;
}
.pet-to.on {
  animation: proToastIn 0.28s cubic-bezier(0.34,1.56,0.64,1) forwards;
}
@keyframes proToastIn {
  from { opacity: 0; transform: translateX(-50%) translateY(12px) scale(0.88); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0)    scale(1); }
}

/* ── Health alert pulse on stat bar ── */
#psH.pro-bar-pulse-down {
  animation: proHealthAlarm 0.6s ease;
}
@keyframes proHealthAlarm {
  0%, 100% { filter: brightness(1); }
  25%       { filter: brightness(0.5) sepia(1) hue-rotate(-20deg); }
  50%       { filter: brightness(1.2); }
  75%       { filter: brightness(0.6); }
}

/* ── Touch feedback on action buttons ── */
.pa-c {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.pa-c:active {
  transition: transform 0.08s ease, background 0.08s ease !important;
}

/* ── Focus ring for keyboard accessibility ── */
.pa-c:focus-visible {
  outline: 2px solid var(--g);
  outline-offset: 2px;
}


/* ════ GAME LAYER v2 — Estilos ════ */
@keyframes ev2FadeIn { from{opacity:0;transform:scale(0.92)} to{opacity:1;transform:scale(1)} }
.gl2-title-badge{margin:6px 10px 10px;padding:10px 14px;background:linear-gradient(135deg,rgba(26,140,70,.08),rgba(46,204,113,.04));border:1px solid rgba(26,140,70,.2);border-radius:10px;font-size:13px;font-weight:700;color:var(--text);text-align:center;min-height:20px;transition:all .3s}
[data-theme="dark"] .gl2-title-badge{background:linear-gradient(135deg,rgba(26,140,70,.12),rgba(46,204,113,.06))}
.t2-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 6px}
.t2-pts-badge{font-size:11px;font-weight:700;color:var(--g);background:rgba(26,140,70,.1);border:1px solid rgba(26,140,70,.2);border-radius:20px;padding:3px 10px}
.t2-hint{font-size:9px;color:var(--text3)}
.t2-branch{margin:0 10px 10px}
.t2-branch-label{font-size:10px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:5px}
.t2-row{display:flex;gap:6px;flex-wrap:wrap}
.t2-node{flex:1;min-width:72px;max-width:110px;padding:8px 6px;border-radius:9px;border:1px solid var(--border);background:var(--card);text-align:center;cursor:pointer;transition:all .15s;user-select:none}
.t2-node.owned{border-color:rgba(26,140,70,.4);background:rgba(26,140,70,.07)}
.t2-node.available{border-color:rgba(230,162,22,.5);background:rgba(230,162,22,.05)}
.t2-node.available:hover{transform:scale(1.04);border-color:rgba(230,162,22,.8);background:rgba(230,162,22,.1)}
.t2-node.locked{opacity:.45;cursor:not-allowed}
.t2-icon{font-size:18px;margin-bottom:3px}
.t2-name{font-size:9px;font-weight:600;color:var(--text);line-height:1.3;margin-bottom:2px}
.t2-cost{font-size:9px;color:var(--text3);font-weight:700}
.t2-node.owned .t2-cost{color:var(--g)}
.t2-node.available .t2-cost{color:var(--amber)}
#journal2Panel{padding:4px 10px 10px;max-height:220px;overflow-y:auto}
.j2-empty{padding:16px;text-align:center;font-size:11px;color:var(--text3);font-style:italic}
.j2-entry{padding:7px 0;border-bottom:1px solid var(--border)}
.j2-entry:last-child{border-bottom:none}
.j2-meta{display:flex;justify-content:space-between;margin-bottom:2px}
.j2-date{font-size:9px;color:var(--text3)}
.j2-lvl{font-size:9px;font-weight:700;color:var(--g);background:rgba(26,140,70,.1);border-radius:8px;padding:0 5px}
.j2-text{font-size:11px;color:var(--text2);line-height:1.4}

/* ════════════════════════════════════════════════════════════════
   🌱 PLANTITA ANIMATIONS v3 — Sistema desacoplado y seguro
   Todos los estilos son ADITIVOS — no modifican nada existente
   ════════════════════════════════════════════════════════════════ */

/* ── 1. IDLE BREATHING — Animación de vida constante ── */
@keyframes plantBreath {
  0%,100% { transform: scale(1) translateY(0); }
  30%      { transform: scale(1.012) translateY(-2px); }
  60%      { transform: scale(1.008) translateY(-1px); }
}
@keyframes plantSway {
  0%,100% { transform: rotate(0deg) translateY(0); }
  25%     { transform: rotate(.8deg) translateY(-1.5px); }
  75%     { transform: rotate(-.8deg) translateY(-1px); }
}
@keyframes plantPulseGlow {
  0%,100% { filter: drop-shadow(0 0 0px rgba(26,140,70,0)); }
  50%     { filter: drop-shadow(0 0 8px rgba(26,140,70,.18)); }
}

/* Estado OK: respiración suave */
.pv3-idle { animation: plantBreath 4.5s ease-in-out infinite, plantPulseGlow 6s ease-in-out infinite; }
/* Estado GREAT: sway + glow fuerte */
.pv3-great { animation: plantSway 3.5s ease-in-out infinite, plantPulseGlow 4s ease-in-out infinite; }
/* Estado WARN: wilt lento */
.pv3-warn { animation: plantBreath 7s ease-in-out infinite; opacity: .85; }
/* Estado DEAD: ninguna animación */
.pv3-dead { animation: none !important; opacity: .35; filter: grayscale(.8); }

/* ── 2. WATER RIPPLE — Al regar ── */
@keyframes rippleOut {
  0%   { transform: scale(.3); opacity: .9; }
  100% { transform: scale(2.4); opacity: 0; }
}
.pv3-ripple {
  position: absolute;
  width: 48px; height: 48px;
  border-radius: 50%;
  border: 2px solid rgba(37,99,160,.55);
  background: rgba(37,99,160,.08);
  pointer-events: none;
  animation: rippleOut .7s cubic-bezier(.3,.6,.4,1) forwards;
  left: 50%; top: 50%;
  margin-left: -24px; margin-top: -24px;
  z-index: 20;
}

/* ── 3. XP FLOAT — Micro-feedback flotante ── */
@keyframes xpFloat {
  0%   { opacity: 1; transform: translateY(0) scale(.85); }
  20%  { opacity: 1; transform: translateY(-8px) scale(1.05); }
  100% { opacity: 0; transform: translateY(-40px) scale(.8); }
}
.pv3-xp-pop {
  position: fixed;
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 700;
  color: var(--g);
  text-shadow: 0 1px 4px rgba(0,0,0,.2);
  pointer-events: none;
  z-index: 9999;
  animation: xpFloat .9s ease-out forwards;
  white-space: nowrap;
  will-change: transform, opacity;
}
.pv3-xp-pop.neg { color: var(--red); }
.pv3-xp-pop.coin { color: var(--amber); }
.pv3-xp-pop.big {
  font-size: 15px;
  animation: xpFloat 1.1s ease-out forwards;
}

/* ── 4. BUTTON PRESS — Game feel inmediato ── */
@keyframes btnPop {
  0%   { transform: scale(1); }
  35%  { transform: scale(.88); }
  65%  { transform: scale(1.06); }
  100% { transform: scale(1); }
}
.pv3-btn-pop { animation: btnPop .28s cubic-bezier(.4,0,.2,1); }

/* ── 5. STAT BAR FLASH — Feedback en barras ── */
@keyframes barFlash {
  0%,100% { filter: brightness(1); }
  40%     { filter: brightness(1.5); }
}
.pv3-bar-flash { animation: barFlash .4s ease; }

/* ── 6. LEVEL UP EXPLOSION ── */
@keyframes lvlUpRing {
  0%   { transform: scale(.5); opacity: 1; }
  100% { transform: scale(2.8); opacity: 0; }
}
@keyframes lvlUpBadge {
  0%   { transform: translateX(-50%) scale(0) rotate(-10deg); opacity: 0; }
  40%  { transform: translateX(-50%) scale(1.15) rotate(2deg); opacity: 1; }
  70%  { transform: translateX(-50%) scale(.95); opacity: 1; }
  100% { transform: translateX(-50%) scale(1); opacity: 1; }
}
@keyframes lvlUpFadeOut {
  0%   { opacity: 1; transform: translateX(-50%) scale(1); }
  100% { opacity: 0; transform: translateX(-50%) scale(.8) translateY(-10px); }
}
.pv3-lvlup-ring {
  position: absolute;
  width: 90px; height: 90px;
  border-radius: 50%;
  border: 3px solid var(--g);
  pointer-events: none;
  left: 50%; top: 50%;
  margin-left: -45px; margin-top: -45px;
  animation: lvlUpRing .7s ease-out forwards;
  z-index: 15;
}
.pv3-lvlup-badge {
  position: fixed;
  top: 45%;
  left: 50%;
  background: linear-gradient(145deg, var(--gd), var(--g));
  color: #fff;
  font-family: var(--mono);
  font-size: 14px;
  font-weight: 700;
  padding: 10px 24px;
  border-radius: 40px;
  box-shadow: 0 8px 32px rgba(26,140,70,.45), 0 0 0 4px rgba(26,140,70,.12);
  pointer-events: none;
  z-index: 9999;
  animation: lvlUpBadge .5s cubic-bezier(.3,.7,.2,1.3) forwards;
}

/* ── 7. HARVEST EXPLOSION ── */
@keyframes harvestConfetti {
  0%   { opacity: 1; transform: translateY(0) rotate(0deg) scale(1); }
  100% { opacity: 0; transform: translateY(-60px) rotate(360deg) scale(0); }
}
.pv3-confetti {
  position: fixed;
  pointer-events: none;
  z-index: 9999;
  font-size: 16px;
  animation: harvestConfetti .9s ease-out forwards;
}

/* ── 8. GROWTH PULSE — Al subir etapa ── */
@keyframes growthPulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(26,140,70,0); }
  50%     { box-shadow: 0 0 0 12px rgba(26,140,70,.15); }
}
.pv3-growth-pulse { animation: growthPulse .8s ease-in-out 2; }

/* ── 9. WELCOME BACK BANNER ── */
@keyframes wbSlideIn {
  from { transform: translateY(-100%); opacity: 0; }
  to   { transform: translateY(0); opacity: 1; }
}
@keyframes wbSlideOut {
  from { transform: translateY(0); opacity: 1; }
  to   { transform: translateY(-100%); opacity: 0; }
}
.pv3-welcome-back {
  position: fixed;
  top: 0; left: 0; right: 0;
  background: linear-gradient(135deg, var(--gd), var(--g));
  color: #fff;
  padding: 14px 16px;
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 700;
  z-index: 9999;
  display: flex;
  align-items: center;
  gap: 10px;
  box-shadow: 0 4px 20px rgba(26,140,70,.4);
  animation: wbSlideIn .4s cubic-bezier(.3,.7,.2,1.2) forwards;
}
.pv3-welcome-back .wb-icon { font-size: 20px; }
.pv3-welcome-back .wb-text { flex: 1; line-height: 1.4; }
.pv3-welcome-back .wb-sub { font-size: 10px; opacity: .8; font-weight: 400; }
.pv3-welcome-back .wb-close { opacity: .7; cursor: pointer; font-size: 16px; }
.pv3-welcome-back.closing { animation: wbSlideOut .3s ease forwards; }

/* ── 10. PROGRESS RING — Visual de progreso al siguiente nivel ── */
.pv3-progress-hint {
  font-size: 9px;
  color: var(--text3);
  font-family: var(--mono);
  text-align: center;
  margin-top: 2px;
  transition: opacity .3s;
}
.pv3-progress-hint span { color: var(--g); font-weight: 700; }

/* ── 11. ACTION RIPPLE — Feedback táctil en botones ── */
.pa-c { position: relative; overflow: hidden; }
@keyframes touchRipple {
  0%   { transform: scale(0); opacity: .6; }
  100% { transform: scale(3); opacity: 0; }
}
.pv3-touch-ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(26,140,70,.25);
  width: 40px; height: 40px;
  pointer-events: none;
  animation: touchRipple .4s ease-out forwards;
  margin-left: -20px; margin-top: -20px;
}

/* ── 12. IDLE PARTICLES — Hojas flotando ── */
@keyframes leafDrift {
  0%   { transform: translate(0,0) rotate(0deg); opacity: .8; }
  50%  { transform: translate(var(--lx,8px), -20px) rotate(180deg); opacity: 1; }
  100% { transform: translate(var(--lx2,16px), -45px) rotate(360deg); opacity: 0; }
}
.pv3-idle-leaf {
  position: absolute;
  font-size: 10px;
  pointer-events: none;
  z-index: 8;
  animation: leafDrift 2.5s ease-in-out forwards;
}

/* ── 13. HEALTH PULSE — Animación de salud crítica ── */
@keyframes healthCritical {
  0%,100% { border-color: var(--border); }
  50%     { border-color: rgba(196,48,48,.5); box-shadow: 0 0 0 2px rgba(196,48,48,.12); }
}
.pv3-critical { animation: healthCritical 1.5s ease-in-out infinite !important; }

/* ── 14. STREAK BADGE PULSE ── */
@keyframes streakPulse {
  0%,100% { transform: scale(1); }
  50%     { transform: scale(1.08); }
}
.pv3-streak-active { animation: streakPulse 2s ease-in-out infinite; }

/* ── 15. COIN EARN ANIMATION ── */
@keyframes coinSpin {
  0%   { transform: rotateY(0deg) scale(1); }
  50%  { transform: rotateY(180deg) scale(1.1); }
  100% { transform: rotateY(360deg) scale(1); }
}
.pv3-coin-earn { display: inline-block; animation: coinSpin .5s ease; }


/* Botón reiniciar — izquierda del banner */
.pet-banner-btn-left {
  right: auto !important;
  left: 14px !important;
  background: rgba(196,48,48,.12) !important;
  color: var(--red) !important;
  border-color: rgba(196,48,48,.25) !important;
}
.pet-banner-btn-left:hover {
  background: rgba(196,48,48,.22) !important;
}

/* === HEADER + BNAV RESTYLED === */
[data-theme="light"] header{background:rgba(13,107,48,.92);border-bottom-color:rgba(26,140,70,.4)}
[data-theme="dark"] header{background:rgba(7,20,10,.94);border-bottom-color:rgba(39,196,94,.18)}
header .logo-t{color:#fff}
header .logo-s{color:rgba(255,255,255,.7)}
header .btn-i{border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.8)}
header .btn-i:hover{background:rgba(255,255,255,.12);color:#fff}
header .u-chip{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.2)}
header .u-chip:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.35)}
header .u-nm{color:#fff}
header .btn-xs{color:rgba(255,255,255,.8);border-color:rgba(255,255,255,.25)}
header .btn-xs:hover{color:#fff;border-color:#fff;background:rgba(255,255,255,.1)}
header .btn-xs.p{background:#fff;color:var(--gd);border-color:#fff}

[data-theme="light"] .bnav{background:rgba(13,107,48,.95);border-top-color:rgba(26,140,70,.5)}
[data-theme="dark"] .bnav{background:rgba(7,20,10,.97);border-top-color:rgba(39,196,94,.2)}
.ni{color:rgba(255,255,255,.38)}
.ni svg{width:20px;height:20px;stroke-width:1.6;transition:all .18s}
.ni.on{color:#fff}
.ni.on svg{filter:drop-shadow(0 0 6px rgba(255,255,255,.55));stroke-width:2}
.ni.on::after{background:#fff;width:24px;height:2.5px;border-radius:0 0 3px 3px}
.ni:hover:not(.on){color:rgba(255,255,255,.7)}
/* === FIN HEADER + BNAV === */

/* ======= BUDWISE SCAN RESULT - NUEVO DISEÑO ======= */
@keyframes bwFloat {
  0%,100% { transform: translateY(0); }
  50%      { transform: translateY(-3px); }
}
@keyframes bwPulse {
  0%,100% { opacity: 1; }
  50%      { opacity: .5; }
}
@keyframes bwDrawRing {
  from { stroke-dashoffset: 264; }
  to   { stroke-dashoffset: var(--target, 52); }
}
@keyframes bwBarIn {
  from { width: 0; }
}
@keyframes bwFadeUp {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes bwTagPop {
  from { opacity: 0; transform: scale(.75) translateY(6px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}
/* Barras de salud mejoradas */
.bw-health-bar-bg {
  background: var(--bg3);
  border-radius: 100px;
  height: 5px;
  overflow: hidden;
  margin-top: 4px;
}
.bw-health-bar {
  height: 100%;
  border-radius: 100px;
  animation: bwBarIn .9s cubic-bezier(.34,1.4,.64,1) both;
}
.bw-health-row {
  margin-bottom: 10px;
}
.bw-health-label-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.bw-health-label {
  font-size: 11px;
  color: var(--text2);
  font-weight: 500;
}
.bw-health-val {
  font-family: var(--mono);
  font-size: 10px;
  color: var(--text3);
}
/* Issues mejoradas */
.bw-alert-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 8px;
  margin-bottom: 6px;
  border: 1px solid transparent;
}
.bw-alert-item.bw-ok   { border-color: rgba(74,222,128,.2);  background: rgba(74,222,128,.05); }
.bw-alert-item.bw-warn { border-color: rgba(196,122,10,.2);  background: rgba(196,122,10,.05); }
.bw-alert-item.bw-bad  { border-color: rgba(196,48,48,.2);   background: rgba(196,48,48,.05); }
.bw-alert-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; margin-top: 4px; }
.bw-ok   .bw-alert-dot { background: #4ade80; }
.bw-warn .bw-alert-dot { background: var(--amber); }
.bw-bad  .bw-alert-dot { background: var(--red); }
.bw-alert-text { font-size: 11px; color: var(--text2); line-height: 1.5; }
.bw-alert-text strong { color: var(--text); font-weight: 600; }
/* Tags de cepa */
.bw-strain-tag {
  padding: 3px 9px;
  border-radius: 100px;
  font-size: 9px;
  font-weight: 700;
  font-family: var(--mono);
  letter-spacing: .5px;
  text-transform: uppercase;
  animation: bwTagPop .4s ease both;
}
.bw-tag-sativa  { background: rgba(196,48,48,.2);  border: 1px solid rgba(196,48,48,.4);  color: #ff7777; }
.bw-tag-indica  { background: rgba(109,58,174,.2); border: 1px solid rgba(109,58,174,.4); color: #c084fc; }
.bw-tag-hibrida { background: rgba(37,99,160,.2);  border: 1px solid rgba(37,99,160,.4);  color: #93c5fd; }
.bw-tag-floracion { background: rgba(196,122,10,.2); border: 1px solid rgba(196,122,10,.4); color: #fbbf24; }
.bw-tag-calidad { background: var(--gdim); border: 1px solid rgba(26,140,70,.3); color: var(--gl); }
.bw-tag-generic { background: rgba(255,255,255,.06); border: 1px solid var(--border); color: var(--text2); }
/* Acciones resultado */
.bw-action-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: 8px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--border);
  margin-bottom: 6px;
}
.bw-action-icon {
  width: 32px;
  height: 32px;
  border-radius: 7px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 15px;
}
.bw-action-title { font-size: 12px; font-weight: 600; color: var(--text); }
.bw-action-sub   { font-size: 10px; color: var(--text3); font-family: var(--mono); }
/* Animación reveal resultado */
.result.bw-revealed { animation: bwFadeUp .5s ease both; }


/* ================================================================
   BUDWISE RESULT PAGE — Bebas Neue + design compacto premium
================================================================ */
@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap');

/* Animaciones */
@keyframes resPulse    { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.4;transform:scale(.85)} }
@keyframes resBarIn    { from{width:0!important} }
@keyframes resFadeUp   { from{opacity:0;transform:translateY(18px)} to{opacity:1;transform:translateY(0)} }
@keyframes resTagIn    { from{opacity:0;transform:scale(.75) translateY(5px)} to{opacity:1;transform:scale(1) translateY(0)} }
@keyframes resScanLine {
  0%  { top:0%;    opacity:0 }
  5%  { opacity:1 }
  95% { opacity:1 }
  100%{ top:100%;  opacity:0 }
}

/* Página entera */
#pg-result { animation: resFadeUp .3s ease both; }

/* Cards */
.res-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px;
  margin-bottom: 10px;
  position: relative;
}
.res-card-head {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 12px;
}
.res-card-icon {
  width: 28px; height: 28px;
  border-radius: 7px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.res-card-title { font-weight: 700; font-size: 13px; color: var(--text); line-height: 1.2; }
.res-card-sub   { font-size: 9px; color: var(--text3); font-family: var(--mono); margin-top: 1px; }

/* Métricas */
.res-metric {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 11px;
  padding: 11px 8px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.res-metric::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 2.5px;
  background: var(--acc, var(--g));
  border-radius: 0 0 11px 11px;
}
.res-metric-lbl { font-family: var(--mono); font-size: 7px; letter-spacing: 1.8px; color: var(--text3); text-transform: uppercase; margin-bottom: 4px; }
.res-metric-val { font-family: 'Bebas Neue', var(--mono); font-size: 16px; color: var(--text); letter-spacing: .5px; }

/* Health bars */
.res-hrow        { margin-bottom: 9px; }
.res-hrow:last-child { margin-bottom: 0; }
.res-hlabel-row  { display: flex; justify-content: space-between; margin-bottom: 4px; }
.res-hlabel      { font-size: 11px; color: var(--text2); font-weight: 500; }
.res-hval        { font-size: 10px; font-family: var(--mono); color: var(--text3); }
.res-hbg         { background: var(--bg3); border-radius: 100px; height: 5px; overflow: hidden; }
.res-hbar        { height: 100%; border-radius: 100px; animation: resBarIn .8s cubic-bezier(.34,1.5,.64,1) both; }

/* Issues */
.res-issue       { display:flex; align-items:flex-start; gap:8px; padding:8px 10px; border-radius:9px; margin-bottom:6px; border:1px solid transparent; }
.res-issue:last-child { margin-bottom:0; }
.res-issue.ok    { border-color:rgba(26,140,70,.2);  background:rgba(26,140,70,.04); }
.res-issue.warn  { border-color:rgba(196,122,10,.2); background:rgba(196,122,10,.04); }
.res-issue.bad   { border-color:rgba(196,48,48,.2);  background:rgba(196,48,48,.04); }
.res-issue-dot   { width:7px; height:7px; border-radius:50%; flex-shrink:0; margin-top:4px; }
.ok  .res-issue-dot { background: var(--g); }
.warn .res-issue-dot{ background: var(--amber); }
.bad .res-issue-dot { background: var(--red); }
.res-issue-text  { font-size:11px; color:var(--text2); line-height:1.55; }
.res-issue-text strong { color:var(--text); }

/* Actions */
.res-action      { display:flex; align-items:flex-start; gap:9px; padding:9px 10px; border-radius:9px; background:rgba(255,255,255,.02); border:1px solid var(--border); margin-bottom:6px; }
.res-action:last-child { margin-bottom:0; }
.res-action-num  { width:22px; height:22px; border-radius:6px; background:var(--gdim); border:1px solid rgba(26,140,70,.12); display:flex; align-items:center; justify-content:center; font-family:var(--mono); font-size:9px; font-weight:700; color:var(--g); flex-shrink:0; }
.res-action-text { font-size:11px; color:var(--text2); line-height:1.55; padding-top:2px; }

/* Tags */
.res-tag         { padding:3px 9px; border-radius:100px; font-size:8px; font-weight:700; font-family:var(--mono); letter-spacing:.6px; text-transform:uppercase; animation:resTagIn .4s ease both; border:1px solid transparent; }
.res-tag-sativa  { background:rgba(196,48,48,.18);  border-color:rgba(196,48,48,.35);  color:#ff8888; }
.res-tag-indica  { background:rgba(109,58,174,.18); border-color:rgba(109,58,174,.35); color:#c084fc; }
.res-tag-hibrida { background:rgba(37,99,160,.18);  border-color:rgba(37,99,160,.35);  color:#93c5fd; }
.res-tag-floracion{ background:rgba(196,122,10,.18);border-color:rgba(196,122,10,.35); color:#fbbf24; }
.res-tag-ok      { background:var(--gdim); border-color:rgba(26,140,70,.3); color:var(--gl); }
.res-tag-generic { background:rgba(255,255,255,.07); border-color:var(--border); color:var(--text2); }

/* Explore buttons */
.res-explore-btn {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 13px 11px;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s;
  text-align: left;
  width: 100%;
}
.res-explore-btn:hover,
.res-explore-btn:active { border-color:var(--border2); box-shadow:var(--shm); }

/* Modal compartir scan */
#res-share-modal {
  position: fixed;
  inset: 0;
  z-index: 600;
  display: none;
  align-items: flex-end;
  justify-content: center;
  padding: 0 0 env(safe-area-inset-bottom,0);
}
#res-share-modal.on { display: flex; }
.res-share-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(6px);
}
.res-share-sheet {
  position: relative;
  width: 100%;
  max-width: 680px;
  background: var(--card);
  border-radius: 20px 20px 0 0;
  border: 1px solid var(--border);
  padding: 18px 16px 20px;
  z-index: 1;
  animation: resFadeUp .28s ease both;
}

@keyframes bwToastIn{from{opacity:0;transform:translateX(-50%) translateY(10px) scale(.95)}to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}
@keyframes navDotPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.7}}



/* ============================================================
   BW PATCHES — CSS centralizado
   Todo el CSS de los patches de app.js movido aquí.
   ============================================================ */

/* --- Banner resultado persistente (bw-rp-css) --- */
@keyframes bwBannerIn {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}
#bw-result-banner:hover  { filter: brightness(1.06); }
#bw-back-to-result:hover { filter: brightness(1.1); }

/* --- Modal mapa: z-index sobre controles Leaflet y bottom-sheet --- */
/* Leaflet zoom controls tienen z-index ~1000; subimos el modal por encima */
#expModal {
  z-index: 1100 !important;
  align-items: flex-end !important;
  padding: 0 !important;
}
#expModal .mo-b {
  max-height: 92vh !important;
  height: auto !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  border-radius: 18px 18px 0 0 !important;
  padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 16px) !important;
}
/* Tablet / desktop: volver a centrado proporcional */
@media (min-width: 600px) {
  #expModal {
    align-items: center !important;
    padding: 16px !important;
  }
  #expModal .mo-b {
    max-height: 80vh !important;
    border-radius: 14px !important;
    max-width: 480px !important;
    margin: 0 auto !important;
  }
}

/* ══════════════════════════════════════════
   RESULT REDESIGN — Título llamativo + Score centrado
   ══════════════════════════════════════════ */

/* Título principal en el hero — color dinámico por JS */
#res-strain {
  font-family: 'Bebas Neue', var(--mono) !important;
  font-size: 40px !important;
  font-weight: 400 !important;
  line-height: 1.05 !important;
  letter-spacing: 1.5px !important;
  text-shadow: 0 2px 24px rgba(0,0,0,.6) !important;
  margin-bottom: 4px !important;
  word-break: break-word !important;
  /* color se setea por JS según resultado */
}

/* Score card: layout vertical centrado */
.res-score-layout {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 4px 0;
}

/* El ring ahora ocupa más espacio y está centrado */
.res-ring-wrap {
  position: relative;
  width: 120px;
  height: 120px;
  flex-shrink: 0;
}

/* Texto dentro del círculo: score grande, sin "SCORE" abajo */
.res-ring-inner {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  line-height: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}

#res-score-num {
  font-family: 'Bebas Neue', var(--mono) !important;
  font-size: 42px !important;
  letter-spacing: 0 !important;
  line-height: 1 !important;
}

.res-score-label {
  font-size: 8px;
  font-family: var(--mono);
  color: var(--text3);
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-top: 2px;
}

/* Verdict + diag-short + conf debajo del ring, centrado */
.res-score-text {
  text-align: center;
  width: 100%;
}

#res-verdict {
  font-family: 'Bebas Neue', var(--mono) !important;
  font-size: 26px !important;
  letter-spacing: .8px !important;
  line-height: 1.1 !important;
  margin-bottom: 6px !important;
  text-align: center !important;
}

#res-diag-short {
  font-size: 11px !important;
  color: var(--text2) !important;
  line-height: 1.55 !important;
  text-align: center !important;
  margin-bottom: 8px !important;
}

#res-conf-pill {
  display: inline-flex !important;
  margin: 0 auto !important;
}

/* Animación de entrada del número del score */
@keyframes resScoreCount {
  from { opacity: 0; transform: scale(.7); }
  to   { opacity: 1; transform: scale(1); }
}
#res-score-num.scored {
  animation: resScoreCount .5s cubic-bezier(.34,1.56,.64,1) both;
}
