:root{--bg:#f4f7fb;--surface:#fff;--ink:#182136;--muted:#6b7280;--line:#dfe6ef;--nav:#101827;--red:#ef4444;--red2:#fb7185;--blue:#4f63d9;--yellow:#facc15;--green:#22c55e;--shadow:0 18px 50px rgba(15,23,42,.09)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-rounded,"Segoe UI",system-ui,sans-serif}button,input,select,textarea{font:inherit}.app{min-height:100vh;display:grid;grid-template-columns:270px minmax(0,1fr)}
.sidebar{height:100vh;position:sticky;top:0;padding:24px 18px;background:radial-gradient(circle at 0 0,rgba(79,99,217,.3),transparent 32%),linear-gradient(180deg,#111a2e,#101827);color:#fff;display:flex;flex-direction:column;z-index:20}
.brand{display:flex;gap:12px;align-items:center;padding:4px 9px 28px}.brand strong,.brand small{display:block}.brand small{margin-top:3px;color:#aeb9ce;font-size:11px}.brand-ball{width:43px;height:43px;flex:0 0 auto;border-radius:50%;display:inline-block;position:relative;background:linear-gradient(#ef4444 0 45%,#151b29 45% 55%,#fff 55%);box-shadow:0 9px 20px rgba(0,0,0,.2)}.brand-ball:after{content:"";position:absolute;width:14px;height:14px;border:5px solid #151b29;border-radius:50%;background:#fff;left:50%;top:50%;transform:translate(-50%,-50%)}
.sidebar nav{display:grid;gap:7px}.nav-link{display:flex;align-items:center;gap:11px;padding:13px 14px;border:0;border-radius:13px;color:#c7d0e0;background:transparent;font-weight:750;font-size:14px;text-align:left;cursor:pointer}.nav-link span{font-size:18px;width:24px;text-align:center}.nav-link:hover,.nav-link.active{background:rgba(255,255,255,.1);color:#fff}.nav-link.active{box-shadow:inset 3px 0 var(--yellow)}.nav-link em{margin-left:auto;font-style:normal;font-size:9px;padding:4px 6px;border-radius:99px;color:#182136;background:var(--yellow)}
.side-note{margin-top:auto;padding:13px;font-size:11px;color:#b5c0d3;border:1px solid rgba(255,255,255,.1);border-radius:13px}.online-dot{width:8px;height:8px;display:inline-block;background:var(--green);border-radius:50%;margin-right:7px}
main{min-width:0}.topbar{min-height:90px;padding:0 32px;display:flex;align-items:center;gap:18px;justify-content:space-between;position:sticky;top:0;z-index:15;background:rgba(244,247,251,.92);backdrop-filter:blur(13px);border-bottom:1px solid rgba(223,230,239,.9)}.topbar h1,.topbar p{margin:0}.topbar h1{font-size:24px}.eyebrow{text-transform:uppercase;letter-spacing:.11em;color:#685bd8;font-weight:900;font-size:10px;margin:0 0 5px}.content{padding:27px 32px 48px}.page{display:none}.page.active{display:block}
.button{border:0;border-radius:12px;padding:11px 16px;font-weight:850;display:inline-flex;justify-content:center;align-items:center;cursor:pointer}.button.primary{color:#fff;background:linear-gradient(135deg,var(--red),var(--red2));box-shadow:0 10px 24px rgba(239,68,68,.2)}.button.secondary{background:#fff;border:1px solid var(--line);color:var(--ink)}.button.danger{background:#fff1f2;color:#dc2626;border:1px solid #fecdd3}.text-button{border:0;background:transparent;color:var(--blue);font-weight:850;cursor:pointer}.menu-button{display:none;border:1px solid var(--line);background:#fff;border-radius:11px;width:42px;height:42px}
.hero{min-height:290px;padding:42px;display:grid;grid-template-columns:1fr 300px;align-items:center;border-radius:28px;color:#fff;background:radial-gradient(circle at 85% 10%,rgba(250,204,21,.24),transparent 26%),radial-gradient(circle at 70% 100%,rgba(79,99,217,.35),transparent 30%),linear-gradient(135deg,#172554,#111827);box-shadow:var(--shadow);overflow:hidden}.hero h2{max-width:680px;font-size:clamp(31px,4vw,52px);line-height:1.04;margin:14px 0}.hero p{max-width:650px;color:#d9e2f2;font-size:16px;margin-bottom:23px}.hero-pill,.wip-badge{display:inline-flex;padding:7px 11px;border-radius:99px;background:rgba(255,255,255,.12);color:#fff2a8;font-weight:850;font-size:11px}.hero-pokeball{justify-self:center;width:185px;height:185px;border-radius:50%;position:relative;background:linear-gradient(#ef4444 0 46%,#111827 46% 54%,#fff 54%);box-shadow:0 25px 50px rgba(0,0,0,.3);transform:rotate(-8deg)}.hero-pokeball i{position:absolute;width:58px;height:58px;border:10px solid #111827;border-radius:50%;background:#fff;left:50%;top:50%;transform:translate(-50%,-50%)}
.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:21px 0}.stats article,.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:0 8px 26px rgba(15,23,42,.04)}.stats span,.stats small{display:block;color:var(--muted);font-size:11px}.stats strong{display:block;font-size:27px;margin:7px 0 3px}.dashboard-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.panel-title{display:flex;justify-content:space-between;align-items:center}.panel-title h3{margin:0}
.recent-list,.progress-list{display:grid;gap:10px;margin-top:16px}.recent-row,.progress-row{border:0;width:100%;cursor:pointer}.recent-row{display:grid;grid-template-columns:45px 1fr auto;align-items:center;gap:11px;padding:9px;border-radius:12px;background:#f8fafc;text-align:left}.recent-row img{width:45px;height:61px;object-fit:contain;border-radius:7px}.recent-row strong,.recent-row small{display:block}.recent-row small{font-size:10px;color:var(--muted);margin-top:3px}.progress-row{display:flex;justify-content:space-between;align-items:center;padding:12px;background:#f8fafc;border-radius:12px;text-align:left}.progress-row strong,.progress-row small{display:block}.progress-row small{font-size:10px;color:var(--muted);margin-top:3px}.progress-row span{color:var(--blue);font-size:11px;font-weight:850}
.toolbar{display:flex;gap:11px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.search{display:flex;align-items:center;gap:8px;flex:1 1 320px;padding:0 13px;background:#fff;border:1px solid var(--line);border-radius:12px}.search input{width:100%;border:0;padding:12px 0;outline:0;background:transparent}select,input,textarea{border:1px solid var(--line);border-radius:11px;padding:11px;background:#fff;color:var(--ink);outline:none}.loading,.result-count{color:var(--muted);font-size:12px;margin-bottom:13px}
.sets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:17px}.set-card{padding:0;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:18px;transition:.2s;text-align:left;cursor:pointer}.set-card:hover,.pokemon-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.set-logo-area{height:160px;padding:20px;display:flex;align-items:center;justify-content:center;position:relative;background:radial-gradient(circle at 20% 20%,rgba(250,204,21,.2),transparent 25%),linear-gradient(135deg,#eef4ff,#fff8ed)}.set-logo{max-width:84%;max-height:95px;object-fit:contain}.set-symbol{position:absolute;right:13px;bottom:12px;width:28px;height:28px;object-fit:contain}.set-logo-placeholder{font-size:50px;font-weight:950;color:#596ae0}.set-card-body{padding:16px}.set-card-body small,.set-card-body p{color:var(--muted);font-size:11px}.set-card-body h2{margin:5px 0;font-size:18px}.set-card-body p{margin:0 0 12px}.set-card-body strong{font-size:22px}
.set-hero{display:flex;justify-content:space-between;align-items:center;gap:25px;background:#fff;border:1px solid var(--line);border-radius:22px;padding:25px;margin-bottom:19px}.set-identity{display:flex;align-items:center;gap:22px}.set-identity>img{width:145px;max-height:80px;object-fit:contain}.set-identity h2,.set-identity p{margin:0}.set-identity h2{font-size:25px}.set-identity p:last-child{color:var(--muted);font-size:12px;margin-top:5px}.set-identity .hero-symbol{width:35px;height:35px}.set-progress{min-width:290px}.set-progress strong{font-size:28px}.set-progress span,.set-progress small{color:var(--muted);font-size:12px}.progress-track{height:9px;background:#edf1f7;border-radius:99px;overflow:hidden;margin:9px 0}.progress-track i{display:block;height:100%;background:linear-gradient(90deg,#4f63d9,#8b5cf6);border-radius:inherit}
.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:16px}.pokemon-card{background:#fff;border:1px solid var(--line);border-radius:17px;overflow:hidden;transition:.2s}.pokemon-card.is-owned{border-color:#86efac;box-shadow:0 0 0 2px rgba(34,197,94,.08)}.card-open{width:100%;padding:0;border:0;background:transparent;text-align:left;color:inherit;cursor:pointer}.card-image-wrap{height:270px;padding:13px;position:relative;display:grid;place-items:center;background:linear-gradient(145deg,#eef5ff,#fff7ed)}.card-image-wrap img{width:100%;height:100%;object-fit:contain}.owned-chip,.quantity-chip,.favorite-chip{position:absolute;top:10px;z-index:2;border-radius:99px;padding:6px 8px;font-size:10px;font-weight:900;box-shadow:0 5px 14px rgba(15,23,42,.14)}.owned-chip{left:10px;color:#166534;background:#dcfce7}.quantity-chip{right:10px;background:#111827;color:#fff}.favorite-chip{left:10px;background:#fff;color:#ef4444}.pokemon-card-body{padding:14px}.pokemon-card-body small,.pokemon-card-body p{color:var(--muted);font-size:10px}.pokemon-card-body h3{margin:4px 0;font-size:16px}.pokemon-card-body p{margin:0 0 10px}.mark-button{display:block;text-align:center;padding:9px;border-radius:10px;color:#4f46e5;background:#eef2ff;font-size:11px;font-weight:900}
.modal-backdrop{display:none;position:fixed;inset:0;z-index:50;padding:20px;background:rgba(15,23,42,.72);place-items:center}.modal-backdrop.open{display:grid}.modal{width:min(790px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:22px;padding:23px;position:relative;box-shadow:0 30px 90px rgba(0,0,0,.35)}.modal-close{position:absolute;right:17px;top:14px;width:38px;height:38px;border:0;border-radius:11px;background:#f1f5f9;font-size:24px}.modal-card-head{display:flex;gap:18px;align-items:center;margin-bottom:18px}.modal-card-head img{width:95px;height:130px;object-fit:contain}.modal-card-head h2,.modal-card-head p{margin:0}.modal-card-head p:last-child{color:var(--muted);font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.form-grid label{display:grid;gap:6px;font-size:11px;font-weight:850}.form-grid .wide{grid-column:1/-1}.form-grid .check{display:flex;align-items:center;gap:8px}.form-grid .check input{width:auto}.modal-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.wip-panel{text-align:center;max-width:760px;margin:30px auto;padding:55px;background:#fff;border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow)}.wip-panel .wip-badge{background:#fff7cc;color:#8a6410}.wip-panel h2{font-size:34px;margin:15px 0}.wip-panel p{color:var(--muted);line-height:1.6}.scanner-graphic{width:200px;height:260px;margin:0 auto 25px;padding:13px;border:3px dashed #93a4bb;border-radius:22px;background:#eff5fb}.scanner-graphic div{height:100%;border-radius:14px;background:linear-gradient(135deg,#3b82f6,#8b5cf6,#ef4444);opacity:.7}
.settings-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.setting-row{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.good{color:#15803d}.button-stack{display:flex;gap:10px;flex-wrap:wrap}.file-button{cursor:pointer}.danger-panel{border-color:#fecdd3}.notice{padding:13px 15px;border-radius:12px;margin-bottom:15px}.notice.error{background:#fff1f2;color:#991b1b;border:1px solid #fecdd3}.empty{text-align:center;padding:20px;color:var(--muted)}.empty.large{grid-column:1/-1;padding:55px;background:#fff;border:1px dashed var(--line);border-radius:18px}.skeleton{min-height:160px;background:linear-gradient(90deg,#fff,#eef2f7,#fff);background-size:200% 100%;animation:pulse 1.4s infinite}@keyframes pulse{to{background-position:-200% 0}}
.toast{position:fixed;right:22px;bottom:22px;z-index:100;background:#111827;color:#fff;padding:12px 16px;border-radius:12px;opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateY(0)}
@media(max-width:1100px){.stats{grid-template-columns:repeat(3,1fr)}.dashboard-grid{grid-template-columns:1fr}.set-hero{align-items:flex-start;flex-direction:column}.set-progress{width:100%}}
@media(max-width:820px){.app{grid-template-columns:1fr}.sidebar{position:fixed;left:-285px;width:270px;transition:.2s}.sidebar.open{left:0}.menu-button{display:block}.topbar{padding:0 18px;justify-content:flex-start}.topbar .button{margin-left:auto}.content{padding:22px 18px}.hero{grid-template-columns:1fr}.hero-pokeball{display:none}.stats{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}.settings-grid{grid-template-columns:1fr}}
@media(max-width:560px){.topbar h1{font-size:19px}.topbar>.button{display:none}.hero{padding:28px}.stats{grid-template-columns:1fr}.set-identity{align-items:flex-start;flex-direction:column}.set-identity>img{max-width:160px}.cards-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.card-image-wrap{height:210px;padding:7px}.pokemon-card-body{padding:10px}.pokemon-card-body h3{font-size:13px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.modal-card-head{align-items:flex-start}.modal-card-head img{width:70px;height:100px}.modal-actions{flex-direction:column-reverse}.modal-actions .button{width:100%}}
