*{box-sizing:border-box}
html,body{margin:0;height:100%;background:#07060c;color:#f3ead8;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
canvas{position:fixed;inset:0;display:block;cursor:crosshair}
.hidden{display:none!important}
.ov{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:10;padding:16px;padding-bottom:64px;overflow:auto}
.ov.dim{background:rgba(5,4,10,.55)}
.panel{background:rgba(16,13,24,.92);border:1px solid rgba(255,190,110,.25);border-radius:20px;padding:22px 24px;max-width:560px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.6),0 0 40px rgba(255,170,80,.08);max-height:calc(100vh - 80px);overflow:auto;margin:auto}
.panel.wide{max-width:900px}
.panel.title{background:rgba(12,10,20,.78)}
h1.logo{margin:0;font-size:clamp(40px,8vw,72px);letter-spacing:1px;font-weight:800;color:#ffd9a0;text-shadow:0 0 24px rgba(255,170,70,.8),0 0 60px rgba(255,140,40,.4);text-align:center;line-height:1}
h1.logo span{color:#fff3dc}
.tag{text-align:center;color:#d8c9b0;margin:10px 0 16px;font-size:17px}
h2{margin:0 0 12px;font-size:28px;color:#ffd9a0}
h3{margin:18px 0 8px;color:#ffd9a0}
.btn{font:inherit;font-size:19px;min-height:56px;padding:10px 18px;border-radius:14px;border:1px solid rgba(255,210,150,.35);background:#221c30;color:#f7ecd9;cursor:pointer;touch-action:manipulation}
.btn:hover,.btn:focus-visible{background:#2f2742;border-color:#ffc27a;outline:none}
.btn:focus-visible{box-shadow:0 0 0 3px #ffc27a}
.btn.primary{background:linear-gradient(180deg,#ffbe5c,#f08a2c);color:#1b1006;border-color:#ffd59a;font-weight:800}
.btn.primary:hover,.btn.primary:focus-visible{background:linear-gradient(180deg,#ffd07e,#ff9d3f)}
.btn.huge{width:100%;font-size:26px;min-height:72px;margin:6px 0 10px}
.btn.small{min-height:48px;font-size:17px;padding:6px 14px}
.btn:disabled{opacity:.45;cursor:default}
.row{display:flex;gap:10px;margin:8px 0;align-items:center;justify-content:center}
.row.wrap{flex-wrap:wrap}
.row>.btn{flex:1 1 auto}
.sect{margin:8px 0}
.lbl{font-size:14px;text-transform:uppercase;letter-spacing:1.5px;color:#bfae93;margin:6px 0 4px;text-align:center;display:flex;align-items:center;justify-content:center;gap:8px}
.chip{font:inherit;font-size:16px;min-height:46px;padding:6px 14px;border-radius:999px;border:1px solid rgba(255,210,150,.35);background:#1d1828;color:#f1e6d2;cursor:pointer;touch-action:manipulation}
.chip:hover,.chip:focus-visible{border-color:#ffc27a;outline:none;background:#2a2238}
.chip.on{background:#ffb454;color:#1a1005;border-color:#ffd59a}
.chip.locked{opacity:.55}
.x{font:inherit;background:none;border:0;color:#bfae93;font-size:18px;cursor:pointer;min-width:40px;min-height:40px;border-radius:10px}
.x:hover{color:#fff;background:rgba(255,255,255,.08)}
.x.big{font-size:24px}
.ship{flex:1 1 110px;max-width:150px;min-height:78px;border-radius:14px;padding:8px;text-align:center;line-height:1.2}
.ship b{display:block;font-size:17px}
.ship small{font-size:12px;color:#cdbb9e}
.shard{color:#ffcf7a;white-space:nowrap}
.shard.big{font-size:20px}
.goal{text-align:center;color:#ffe2b3;margin:10px 0 4px;font-size:16px}
.stat{text-align:center;color:#a9997f;font-size:14px;margin:4px 0}
.how{background:rgba(255,255,255,.04);border-radius:12px;padding:6px 14px;font-size:15px;color:#e5d8c2}
.how p{margin:8px 0}
.vote{margin-top:12px;border-top:1px solid rgba(255,255,255,.08);padding-top:6px}
.phead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.card{background:#1b1626;border:1px solid rgba(255,210,150,.2);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:6px}
.card .n{font-weight:700;font-size:17px}
.card .d{font-size:14px;color:#cdbb9e;flex:1}
.pips{letter-spacing:3px;color:#ffb454}
.mslist{display:grid;gap:6px;font-size:15px}
.mslist div{padding:6px 10px;border-radius:10px;background:rgba(255,255,255,.04)}
.mslist .done{color:#9fe39a}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:6px 0}
.upc{font:inherit;text-align:left;cursor:pointer;background:#1c1628;border:2px solid rgba(255,210,150,.3);border-radius:16px;padding:14px;color:#f5ead6;min-height:150px;display:flex;flex-direction:column;gap:6px;touch-action:manipulation}
.upc:hover,.upc:focus-visible{border-color:#ffc27a;background:#2a2139;outline:none;transform:translateY(-2px)}
.upc .ic{font-size:30px;line-height:1}
.upc .nm{font-size:20px;font-weight:800}
.upc .lv{font-size:13px;letter-spacing:1px;color:#ffc27a;text-transform:uppercase}
.upc .ds{font-size:15px;color:#d6c7ad}
.upc.evo{border-color:#ffe07a;box-shadow:0 0 24px rgba(255,210,90,.35);background:linear-gradient(160deg,#3a2a12,#1c1628)}
.upc .key{font-size:12px;color:#8d7f69;margin-top:auto}
.buildrate{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:8px;color:#cdbb9e;font-size:15px}
.buildicons{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:8px;font-size:14px;color:#cdbb9e}
.buildicons span{background:rgba(255,255,255,.05);border-radius:8px;padding:3px 8px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;text-align:center;margin:6px 0}
.stats div{background:rgba(255,255,255,.05);border-radius:12px;padding:8px 4px}
.stats b{display:block;font-size:22px;color:#fff1d6}
.stats small{color:#bfae93;font-size:12px;text-transform:uppercase;letter-spacing:1px}
.shardline{text-align:center;font-size:18px;color:#ffcf7a;margin:6px 0}
.shardline small{display:block;color:#a9997f;font-size:13px}
.fbsect{margin-top:12px;border-top:1px solid rgba(255,255,255,.08);padding-top:6px}
.emo .chip{font-size:28px;min-width:56px;min-height:56px;padding:4px}
input,textarea{font:inherit;font-size:16px;background:#120f1a;color:#f3ead8;border:1px solid rgba(255,210,150,.3);border-radius:12px;padding:10px 12px;flex:1;min-height:48px;width:100%;-webkit-user-select:text;user-select:text}
textarea{resize:vertical}
.small{font-size:14px;color:#cdbb9e}
.setlist{display:grid;gap:8px;margin-bottom:12px}
.setlist .chip{display:flex;justify-content:space-between;width:100%;border-radius:14px;min-height:54px;font-size:18px;padding:8px 16px}
.corner{position:fixed;top:10px;right:10px;top:calc(10px + env(safe-area-inset-top,0px));right:calc(10px + env(safe-area-inset-right,0px));z-index:20;display:flex;gap:8px}
.cbtn{width:52px;height:52px;border-radius:14px;border:1px solid rgba(255,210,150,.3);background:rgba(20,16,30,.7);color:#f5ead6;font-size:22px;cursor:pointer;touch-action:manipulation}
.cbtn:hover,.cbtn:focus-visible{background:rgba(50,40,70,.9);outline:none;border-color:#ffc27a}
.flare{position:fixed;right:18px;bottom:18px;right:calc(18px + env(safe-area-inset-right,0px));bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:15;width:96px;height:96px;border-radius:50%;border:2px solid rgba(255,230,180,.7);color:#1b1006;font-weight:900;font-size:16px;letter-spacing:1px;cursor:pointer;touch-action:manipulation;background:conic-gradient(#ffd27a calc(var(--p,1)*360deg),rgba(60,45,30,.85) 0);box-shadow:0 0 24px rgba(255,190,90,.35)}
.flare.cd{color:#e8d8bd}
.toast{position:fixed;left:50%;top:70px;transform:translateX(-50%) translateY(-10px);background:rgba(30,24,44,.95);border:1px solid #ffc27a;color:#fff1d6;padding:10px 18px;border-radius:999px;z-index:30;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;font-size:16px;white-space:nowrap}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media (max-width:520px){.panel{padding:16px 14px}.stats{grid-template-columns:repeat(2,1fr)}.btn{font-size:17px}.cards{grid-template-columns:1fr}.upc{min-height:0}}
@media (max-height:560px){.upc{min-height:0}.btn.huge{min-height:60px}}
.upbadge{position:fixed;left:50%;top:92px;transform:translateX(-50%);z-index:15;font:inherit;font-size:18px;font-weight:700;min-height:52px;padding:8px 20px;border-radius:999px;border:2px solid #ffd27a;background:rgba(40,28,10,.85);color:#ffe2b3;cursor:pointer;box-shadow:0 0 20px rgba(255,190,90,.4);animation:pulse 1.2s ease-in-out infinite;touch-action:manipulation}
.upbadge small{font-weight:400;color:#cdbb9e}
@keyframes pulse{50%{box-shadow:0 0 34px rgba(255,190,90,.8)}}
.ratepill{position:fixed;top:72px;right:10px;top:calc(72px + env(safe-area-inset-top,0px));z-index:16;display:flex;align-items:center;gap:6px;background:rgba(20,16,30,.85);border:1px solid rgba(255,210,150,.35);border-radius:999px;padding:4px 6px 4px 14px;font-size:14px;color:#e5d8c2;transition:opacity .6s}
.ratepill .chip{min-height:40px;padding:2px 10px;font-size:20px}
.ratepill.fade{opacity:0}
