:root{--ink:#14213d;--muted:#667085;--paper:#f7f8fc;--card:#fff;--line:#d9deea;--blue:#1769e0;--green:#0b9b72;--gold:#f4b400;--red:#d92d20;--empty:#e8ebf2;--owned:#e8f4ff;--swap:#e6f8f1}
body[data-theme="dark"]{--ink:#eef2ff;--muted:#a6b0c4;--paper:#101827;--card:#182235;--line:#34415a;--blue:#6ea8ff;--green:#54d5aa;--gold:#ffd166;--red:#ff8f85;--empty:#334155;--owned:#1b3557;--swap:#164438}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.45 system-ui,-apple-system,Segoe UI,sans-serif}
main{max-width:1120px;margin:auto;padding:28px 18px 90px}
h1{font-size:clamp(1.55rem,3vw,2.3rem);margin:0}
h2{font-size:1.1rem;margin:0 0 14px}
h3{font-size:.95rem;margin:16px 0 8px;color:var(--muted)}
p{margin:.35rem 0}
.sub{color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:0 2px 8px #14213d09;margin-bottom:16px}
.stat b{display:block;font-size:1.8rem;margin:.15rem 0}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end}
.field{display:grid;gap:5px;font-size:.85rem;font-weight:600}
.field select,.field input,button{font:inherit;border:1px solid var(--line);border-radius:8px;padding:9px 10px;background:var(--card);color:var(--ink)}
button{cursor:pointer;font-weight:650}
button.primary,.tabs button.active{background:var(--blue);border-color:var(--blue);color:#fff}
.layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:20px;margin-top:20px}
.chartbox{display:grid;place-items:center;gap:14px}
.donut{width:210px;aspect-ratio:1;border-radius:50%;position:relative}
.donut:after{content:'';position:absolute;inset:31%;background:var(--card);border-radius:50%}
.donutlabel{position:absolute;z-index:1;text-align:center;font-weight:700;left:30%;right:30%;top:39%}
.donutlabel small{display:block;color:var(--muted);font-weight:400}
.legend{width:100%;font-size:.85rem}
.legend div{display:flex;justify-content:space-between;gap:8px;margin:5px 0}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:7px}
.countries{margin-top:20px}
.country-list{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}
.country-list button{display:flex;justify-content:space-between;text-align:left}
.country-list button.active{border-color:var(--blue);outline:2px solid #1769e033}
.detail-head{display:flex;align-items:start;justify-content:space-between;gap:10px;margin-bottom:12px}
.summary{color:var(--muted);font-size:.9rem}
.tabs{display:flex;gap:7px;margin:0 0 12px}
.tabs button{padding:6px 10px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}
.sticker{min-height:55px;display:grid;gap:5px;align-content:center;text-align:center}
.sticker b{font-size:.9rem}
.sticker-controls{display:flex;gap:4px}
.sticker-controls button{padding:2px 7px;flex:1}
.sticker.owned{background:var(--owned);border-color:var(--blue)}
.sticker.swap{background:var(--swap);border-color:var(--green)}
.delete{color:var(--red)}
.empty{color:var(--muted);padding:15px 0}
.note{font-size:.84rem;color:var(--muted)}
@media(max-width:720px){.stats{grid-template-columns:1fr}.layout{grid-template-columns:1fr}.country-list{grid-template-columns:repeat(3,1fr)}}
.country-picker{position:relative}.country-picker > button{width:100%;text-align:left}
.country-menu{position:absolute;z-index:5;top:100%;left:0;right:0;max-height:280px;overflow:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:8px;background:var(--card);border:1px solid var(--line);border-radius:8px}
.country-menu button{padding:6px;text-align:left}
.country-menu[hidden]{display:none}
.quickadd #quickInput{width:240px}
.friend-row,.trade-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.88rem}
.friend-row button,.trade-row button{padding:5px 9px;font-size:.78rem}
.friend-chip{display:block;width:100%;text-align:left;margin:4px 0;text-decoration:none;box-sizing:border-box}
.chip-row{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.chip{padding:6px 10px;font-size:.82rem;border-radius:20px}
.chip.selected{background:var(--blue);border-color:var(--blue);color:#fff}
.tabbar{position:fixed;left:0;right:0;bottom:0;display:flex;background:var(--card);border-top:1px solid var(--line);z-index:30;padding-bottom:env(safe-area-inset-bottom)}
.tabbar a{flex:1;text-align:center;padding:11px 4px 9px;font-size:.72rem;color:var(--muted);text-decoration:none;font-weight:650}
.tabbar a.active{color:var(--blue)}
.gate{text-align:center;padding:10px 4px}
.needimage-menu{display:flex;flex-direction:column;grid-template-columns:none;left:auto;right:0;min-width:170px}
.needimage-menu button{text-align:left}
#scanModal{position:fixed;inset:0;z-index:40;display:grid;place-items:center;background:#000c}
#scanModal[hidden]{display:none}
#scanModal .card{max-width:480px;width:92vw;max-height:90vh;overflow-y:auto}
#scanVideo{width:100%;border-radius:10px;background:#000;display:block}
#scanCanvas{display:none}
.close-btn{float:right;background:none;border:none;font-size:1.1rem;padding:4px 8px;box-shadow:none}
