:root{--bg:#0b1020;--bg2:#141a30;--card:#1b2340;--line:#2a3358;--ink:#eaf0ff;--muted:#93a0c8;--accent:#ffcb05;--accent2:#3b6cff;--good:#58d68d;--bad:#ff6b6b}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0;overflow-x:hidden;max-width:100%}body{background:radial-gradient(1000px 500px at 50% -10%,#1a2347 0,var(--bg) 60%) fixed,var(--bg);color:var(--ink);font-family:ui-rounded,SF Pro Rounded,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.app{max-width:540px;margin:0 auto;padding:16px 16px 64px;min-height:100vh}.title{text-align:center;margin:8px 0 4px}.title h1{font-size:26px;margin:0;letter-spacing:.5px}.title h1 .y{color:var(--accent)}.title p{color:var(--muted);margin:4px 0 0;font-size:13px}.reels{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:8px;gap:8px;margin:16px 0}.reel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 8px;text-align:center;min-height:96px;display:flex;flex-direction:column;justify-content:center;gap:4px}.reel .label{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}.reel .value{font-size:16px;font-weight:800}.reel .sub{font-size:11px;color:var(--muted)}.reel.spinning .value{animation:flick .4s linear infinite}@keyframes flick{0%,to{opacity:1}50%{opacity:.25}}.btn{display:block;width:100%;border:0;border-radius:14px;padding:16px;font-size:17px;font-weight:800;cursor:pointer;color:#0b1020;background:linear-gradient(180deg,#ffe06b,var(--accent));box-shadow:0 6px 0 #b8910a,0 8px 20px rgba(0,0,0,.4);transition:transform .05s}.btn:active{transform:translateY(3px);box-shadow:0 3px 0 #b8910a}.btn[disabled]{filter:grayscale(.7) brightness(.7);cursor:not-allowed;box-shadow:none}.btn.secondary{background:var(--card);color:var(--ink);border:1px solid var(--line);box-shadow:none}a.btn{text-decoration:none;text-align:center;line-height:1.4}.constraints{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:12px;margin:12px 0;font-size:13px}.constraints b{color:var(--accent)}.pill{display:inline-block;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:12px;margin:2px}.section-head{display:flex;align-items:center;justify-content:space-between;margin:14px 0 8px}.section-head h2{font-size:14px;margin:0;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.counter{font-weight:800}.counter.ok{color:var(--good)}.counter.no{color:var(--bad)}.search{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:15px;margin-bottom:8px}.grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:6px;gap:6px}.mon{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 6px;text-align:center;cursor:pointer;font-size:12px;position:relative}.mon.picked{border-color:var(--accent);background:#2a2f12}.mon.anchor{box-shadow:inset 0 0 0 1px var(--accent2)}.mon .nm{font-weight:700;text-transform:capitalize;display:block}.mon .ty{font-size:9px;color:var(--muted)}.mon img{width:56px;height:56px;image-rendering:pixelated;display:block;margin:0 auto}.type-tag{font-size:9px;padding:1px 5px;border-radius:4px;color:#0b1020;font-weight:800;text-transform:uppercase}.team{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:4px;gap:4px;margin:8px 0}.slot{aspect-ratio:1;background:var(--bg2);border:1px dashed var(--line);border-radius:8px;display:flex;align-items:center;justify-content:center;position:relative}.slot img{width:100%;image-rendering:pixelated}.slot .x{position:absolute;top:-6px;right:-6px;background:var(--bad);color:#fff;border-radius:50%;width:18px;height:18px;font-size:12px;line-height:18px}.result-hero{text-align:center;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;margin:12px 0}.score-big{font-size:56px;font-weight:900;color:var(--accent);line-height:1}.grade{font-size:22px;font-weight:800}.winrate{font-size:15px;color:var(--muted);margin-top:6px}.mult{color:var(--accent2);font-weight:800}.boss-row{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:13px}.boss-row .nm{width:118px;flex:0 0 auto;display:flex;flex-direction:column;line-height:1.15}.boss-row .nm b{font-size:12px}.boss-row .nm em{font-size:10px;color:var(--muted);font-style:normal;text-transform:capitalize}.bar{flex:1 1;height:14px;background:var(--bg2);border-radius:7px;overflow:hidden;border:1px solid var(--line)}.bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--accent2),var(--good))}.boss-row .pc{width:42px;text-align:right;color:var(--muted)}.btn-row{display:flex;gap:8px}.btn-row .btn{flex:1 1;margin:0}.crosslink{display:block;text-align:center;margin:14px 0 4px;color:var(--accent2);font-weight:700;font-size:13px;text-decoration:none}.crosslink:hover{text-decoration:underline}.loading{text-align:center;padding:40px;color:var(--muted)}.spinner{width:40px;height:40px;border:4px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 12px}@keyframes spin{to{transform:rotate(1turn)}}.slots-col{display:flex;flex-direction:column;gap:8px}.slotcard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;min-width:0;overflow:hidden}.slotcard.filled{border-color:var(--accent)}.slothead{display:flex;align-items:center;gap:8px;min-height:24px}.slothead .slottag{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}.respin{margin-left:auto;background:var(--bg2);color:var(--ink);border:1px solid var(--line);border-radius:8px;font-size:11px;padding:4px 8px;cursor:pointer}.spinslot{width:100%;margin-top:8px;border:0;border-radius:10px;cursor:pointer;background:linear-gradient(180deg,#ffe06b,var(--accent));color:#0b1020;font-weight:900;font-size:15px;padding:12px 0}.spinslot:active{transform:translateY(2px)}.rolltype{text-align:center;font-size:22px;font-weight:900;text-transform:capitalize;padding:14px 0;animation:flick .12s linear infinite}.chooser{display:flex;gap:6px;padding:8px 2px 2px;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.choosemon{position:relative;flex:0 0 auto;width:60px;text-align:center;cursor:pointer;border:1px solid var(--line);border-radius:8px;padding:4px 2px;background:var(--bg2)}.choosemon.uncommon{border-color:#4fd17a;box-shadow:inset 0 0 0 1px #4fd17a,0 0 8px rgba(79,209,122,.35);background:linear-gradient(180deg,#122e1d,var(--bg2))}.choosemon.rare{border-color:#b98bff;box-shadow:inset 0 0 0 1px #b98bff,0 0 8px rgba(185,139,255,.4);background:linear-gradient(180deg,#241a3a,var(--bg2))}.choosemon.legendary{border-color:#ffa733;box-shadow:inset 0 0 0 1px #ffa733,0 0 10px rgba(255,167,51,.55);background:linear-gradient(180deg,#3a2810,var(--bg2))}.choosemon.shiny{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent),0 0 8px rgba(255,203,5,.35)}.choosemon.sel{border-color:var(--accent2);box-shadow:inset 0 0 0 2px var(--accent2)}.rare-badge{position:absolute;top:-6px;left:-4px;font-size:11px;z-index:1}.rare-badge.uncommon{color:#7ee6a0;text-shadow:0 0 4px #1f8f4a}.rare-badge.rare{color:#d9c2ff;text-shadow:0 0 4px #8b5cf6}.rare-badge.legendary{font-size:12px}.choosemon .shiny-spark{position:absolute;top:-6px;right:-4px;font-size:12px;z-index:1}.choosemon img{width:46px;height:46px;image-rendering:pixelated;display:block;margin:0 auto}.choosemon .nm{font-size:9px;text-transform:capitalize;display:block;line-height:1.1;margin-top:2px}.chooser-legend{display:flex;flex-wrap:wrap;gap:10px;font-size:10px;color:var(--muted);padding:8px 2px 2px}.chooser-legend b{font-weight:700}.lg-uncommon{color:#7ee6a0}.lg-rare{color:#c7a8ff}.lg-legend{color:#ffa733}.lg-shiny{color:var(--accent)}.lg-sel{color:var(--accent2)}.toggle-row{display:flex;align-items:center;justify-content:space-between;margin:6px 2px 0;font-size:13px;color:var(--ink)}.toggle{width:46px;height:26px;border-radius:999px;border:1px solid var(--line);background:var(--bg2);position:relative;cursor:pointer;padding:0;flex:0 0 auto}.toggle.on{background:var(--good);border-color:var(--good)}.toggle .knob{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .15s}.toggle.on .knob{left:22px}.slots-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.tile{min-width:0;min-height:84px;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.tile.filled{border-color:var(--accent)}.tile.open{outline:2px solid var(--accent2)}.tile .tnum{font-size:9px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}.tile img{width:48px;height:48px;image-rendering:pixelated}.tile .tnm{font-size:12px;font-weight:700;text-transform:capitalize}.tile .tspin{font-size:14px;font-weight:900;color:var(--accent);text-align:center;line-height:1.2}.tile .tchoose{font-size:10px;color:var(--accent)}.tile .rolltype{font-size:17px;padding:4px 0}.slots-grid .drawer{grid-column:1/-1;margin:0;scroll-margin-bottom:260px}.tile{position:relative}.shiny-hint{display:block;margin-top:4px;font-size:12px}.shiny-hint,.shiny-hint b{color:var(--accent)}.tile.shiny{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 14px rgba(255,203,5,.45);background:linear-gradient(180deg,#2a2710,var(--card))}.shiny-badge{position:absolute;top:-7px;right:-4px;background:linear-gradient(180deg,#ffe06b,var(--accent));color:#0b1020;font-size:9px;font-weight:900;padding:2px 6px;border-radius:999px;text-transform:uppercase;letter-spacing:.3px}.shiny-badge.inline{position:static;margin-left:6px}.slot.shiny{border-style:solid;border-color:var(--accent);box-shadow:0 0 10px rgba(255,203,5,.4)}.slot .shiny-spark{position:absolute;top:-4px;right:-4px;font-size:13px}.drawer{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:8px;margin:8px 0;min-width:0;overflow:hidden}.drawer-head{justify-content:space-between;font-size:12px;gap:6px;margin-bottom:2px}.drawer-head,.pickedmon{display:flex;align-items:center}.pickedmon{gap:10px;margin-top:6px;cursor:pointer}.pickedmon img{width:52px;height:52px;image-rendering:pixelated}.pickedmon .pm-info{display:flex;flex-direction:column;gap:3px}.pickedmon .pm-info .nm{font-weight:700;text-transform:capitalize;font-size:14px}.pickedmon .pm-info .ty{display:flex;gap:3px}.pickedmon .change{margin-left:auto;font-size:11px;color:var(--accent)}.kicker{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:24px 16px;text-align:center;margin:12px 0 16px}.kicker.spinning{animation:flick .12s linear infinite}.k-emoji{font-size:56px;line-height:1}.k-label{font-size:22px;font-weight:900;margin-top:8px}.k-desc{font-size:13px;color:var(--muted);margin-top:4px}.k-mult{font-size:30px;font-weight:900;color:var(--accent2);margin-top:10px}.kicker.compact{display:flex;align-items:center;gap:12px;text-align:left;padding:12px 14px;margin:8px 0 4px}.kicker.compact .k-emoji{font-size:34px;flex:0 0 auto}.kicker.compact .k-body{flex:1 1;min-width:0}.kicker.compact .k-label{font-size:16px;margin:0}.kicker.compact .k-desc{font-size:12px;margin-top:2px}.kicker.compact .k-mult{font-size:22px;margin:0;flex:0 0 auto}.kicker.compact .k-hint{font-size:12px;color:var(--accent);font-weight:800;flex:0 0 auto}.k-repull{display:block;margin:0 0 8px auto}.foot{text-align:center;color:var(--muted);font-size:11px;margin-top:20px}.help-body{margin-top:6px}.help-body p{font-size:14px;line-height:1.5;color:var(--ink);margin:10px 0}.help-body b{color:var(--accent)}.help-body .shiny-hint{margin-top:14px}.footer-spacer{height:280px}.footer-repull{display:block;margin:8px auto 0}.footer-repull[disabled]{color:var(--muted);cursor:not-allowed;text-decoration:none;opacity:.7}.respin[disabled]{opacity:.5;cursor:not-allowed}.footer{position:fixed;left:0;right:0;bottom:0;z-index:45;max-width:540px;margin:0 auto;background:var(--bg);border-top:1px solid var(--line);padding:10px 12px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -6px 20px rgba(0,0,0,.45)}.footer-cta .btn{margin:0}.roster{display:flex;justify-content:center;gap:8px;margin-top:10px}.roster-slot{flex-direction:column;gap:4px;flex:0 0 auto;width:50px;background:none;border:0;padding:0;cursor:pointer}.roster-circ,.roster-slot{display:flex;align-items:center}.roster-circ{width:48px;height:48px;border-radius:50%;border:2px dashed var(--line);background:var(--bg2);justify-content:center;overflow:hidden;font-size:14px;font-weight:800;color:var(--muted)}.roster-circ img{width:44px;height:44px;image-rendering:pixelated}.roster-slot.filled .roster-circ{border-style:solid;border-color:var(--line);background:var(--card)}.roster-slot.active .roster-circ{border-style:solid;border-color:var(--accent);color:#0b1020;background:linear-gradient(180deg,#ffb347,var(--accent));box-shadow:0 0 12px rgba(255,203,5,.5)}.roster-slot.shiny .roster-circ{border-style:solid;border-color:var(--accent);box-shadow:0 0 10px rgba(255,203,5,.45)}.roster-label{font-size:10px;color:var(--muted);text-transform:capitalize;max-width:52px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-slot.active .roster-label{color:var(--accent);font-weight:800}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.topbar a.ghost-btn{text-decoration:none}.rank-note{background:var(--bg2);border:1px solid var(--accent);border-radius:10px;padding:10px 12px;margin:0 0 8px;font-size:13px}.ghost-btn,.link,.rank-note b{color:var(--accent)}.ghost-btn,.link{background:none;border:0;font-weight:700;cursor:pointer;font-size:13px;padding:4px 0}.link{text-decoration:underline}.submit-row{display:flex;gap:8px;align-items:stretch}.submit-row .search{margin:0;flex:1 1}.submit-btn{width:auto;padding:0 16px;font-size:14px}.submitted{background:#16341f;border:1px solid #2c5e3a;color:#b6f0c8;border-radius:10px;padding:10px 12px;font-size:13px}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:flex-end;justify-content:center;z-index:50}.modal{background:var(--bg);border:1px solid var(--line);border-radius:18px 18px 0 0;width:100%;max-width:540px;max-height:88vh;overflow-y:auto;padding:16px 16px 32px}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal-head h2{margin:0;font-size:20px}.x-btn{background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:50%;width:32px;height:32px;cursor:pointer;font-size:14px}.tabs{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px;margin:12px 0 4px}.tabs button{background:var(--card);border:1px solid var(--line);color:var(--muted);border-radius:10px;padding:10px;font-weight:800;cursor:pointer}.tabs button.on{color:#0b1020;background:var(--accent);border-color:var(--accent)}.lb-sub{font-size:12px;margin:4px 2px 10px}.lb-empty,.lb-sub{color:var(--muted)}.lb-empty{text-align:center;padding:30px 10px}.lb-list{display:flex;flex-direction:column;gap:6px}.lb-row{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.lb-rank{font-weight:900;color:var(--muted);width:22px;text-align:center;flex:0 0 auto}.lb-mid{flex:1 1;min-width:0}.lb-name{font-weight:700;font-size:14px}.lb-grade{color:var(--accent);font-weight:900;margin-left:4px}.lb-team{display:flex;gap:1px;margin:2px 0}.lb-team img{width:26px;height:26px;image-rendering:pixelated}.lb-meta{font-size:11px;color:var(--muted)}.lb-score{font-size:24px;font-weight:900;color:var(--accent);flex:0 0 auto}.fb-text{min-height:110px;resize:vertical;font-family:inherit;margin:10px 0 8px}.fb-contact,.fb-text{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:15px}.fb-contact{margin-bottom:10px}.fb-err{color:var(--bad);font-size:13px;margin-bottom:8px}.result-actions{display:flex;gap:8px;margin-top:8px}.result-actions .btn{margin:0;flex:1 1;text-align:center;text-decoration:none;line-height:1.4}.btn.donate{background:linear-gradient(180deg,#ff7a9c,#e8456e);color:#fff;border:0}.previewimg{width:100%;border-radius:12px;border:1px solid var(--line);display:block;margin:10px 0}.share-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.share-btn{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:12px;font-size:14px;font-weight:700;cursor:pointer;text-decoration:none}.share-btn .ic{flex:0 0 auto}.toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%);background:var(--accent);color:#0b1020;font-weight:800;padding:10px 18px;border-radius:999px;z-index:60}