/* ============ THEME: Manga (default) ============
   White/red/black, pirate-flag + shonen-manga flavor. Card-color identity
   vars (emerald/azure/violet/amber/onyx = the game's actual red/green/blue/
   purple/yellow/black card frames) are shared across both themes on
   purpose — they encode game state, not UI skin, and must stay put. */
:root{
  /* white paper base — manga page, not a dark app */
  --sea-deep:#f3f1ea; --sea-mid:#e7e3d8; --sea-glow:#ffffff;
  --parchment:#161514; --parchment-dim:#6d6a63;
  --surface:#ffffff; --surface2:#f6f3ec;
  --line:#161514; --line-dim:#3d3b37;
  --crimson:#d81c24; --crimson-deep:#7c0d12;
  --emerald:#2c9268; --emerald-deep:#1d6a4c;
  --azure:#2f7fd4; --azure-deep:#1d3f8a;
  --violet:#8f4ec9; --violet-deep:#5a2a8a;
  --amber:#d3a521; --amber-deep:#8a6a10;
  --onyx:#4a5261; --onyx-deep:#2e3542;
  --gold:#e0202a; --gold-deep:#7c0d12; --don:#f2c14e; --ink:#0a0a0a; --heading:#161514;
  --outline:#000; --outline-w:3px; --edge-radius:6px;
  --card-w:118px; --card-h:165px;
  --font-display:'Anton',var(--font-body); --font-body:'Work Sans',sans-serif;
}
/* ============ THEME: Wave (secondary skin) ============
   Styled after the official ONE PIECE CARD GAME website: deep navy
   (#001d5e) chrome, white content, compass-gold accents, seigaiha waves,
   and their Trajan-style serif for display type. */
[data-theme="wave"]{
  --sea-deep:#001d5e; --sea-mid:#00297d; --sea-glow:#0a3a99;
  --parchment:#ffffff; --parchment-dim:#9db1d9;
  --surface:#0a2a72; --surface2:#08245f;
  --line:#c9a227; --line-dim:#3d5da8;
  --crimson:#e6303a; --crimson-deep:#8f0f16;
  --emerald:#2c9268; --emerald-deep:#1d6a4c;
  --azure:#2f7fd4; --azure-deep:#1d3f8a;
  --violet:#8f4ec9; --violet-deep:#5a2a8a;
  --amber:#d3a521; --amber-deep:#8a6a10;
  --onyx:#4a5261; --onyx-deep:#2e3542;
  --gold:#f0c33c; --gold-deep:#c9a227; --don:#f0c33c; --ink:#001d5e; --heading:#f0c33c;
  --outline:#001d5e; --outline-w:2px; --edge-radius:8px;
  --card-w:118px; --card-h:165px;
  --font-display:'Cinzel',serif; --font-body:'Alegreya Sans',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:var(--font-body),sans-serif;color:var(--parchment);overflow-x:hidden;min-height:100%;
  background:radial-gradient(1200px 600px at 50% -10%,var(--sea-glow),transparent 60%),
             radial-gradient(900px 500px at 80% 110%,var(--sea-mid),transparent 55%),var(--sea-deep);}
h1,h2,h3,.display{font-family:var(--font-display),cursive;letter-spacing:.03em;font-weight:400}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit;background:var(--surface);border:1px solid var(--line);color:var(--parchment);border-radius:8px;padding:10px 12px;font-size:15px}
textarea{width:100%;min-height:160px;font-size:13px;line-height:1.4}
input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.screen{display:none;min-height:100vh}
.screen.active{display:block}
.btn{display:inline-block;padding:13px 28px;border-radius:8px;font-size:17px;font-weight:800;background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:var(--ink);box-shadow:0 4px 0 #6d4c0c,0 10px 24px rgba(0,0,0,.45);transition:transform .12s;text-transform:uppercase;letter-spacing:.05em;text-align:center}
.btn:hover{transform:translateY(-2px)} .btn:active{transform:translateY(2px)}
.btn.ghost{background:transparent;color:var(--parchment);box-shadow:inset 0 0 0 2px var(--parchment-dim)}
.btn.danger{background:linear-gradient(180deg,var(--crimson),var(--crimson-deep));color:#fff;box-shadow:0 4px 0 #5c1620}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
.smallbtn{padding:8px 14px;border-radius:6px;font-weight:700;font-size:13px;background:rgba(255,255,255,.1)}
.smallbtn:hover{background:rgba(255,255,255,.22)}
.label{font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--parchment-dim)}
.panel{background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:14px;padding:18px}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:var(--surface2);border:1px solid var(--gold-deep);color:var(--parchment);padding:10px 20px;border-radius:10px;z-index:200;font-weight:700;box-shadow:0 8px 30px rgba(0,0,0,.6);animation:enter .25s ease;max-width:92vw;text-align:center}
.toast.err{border-color:var(--crimson)}

/* ---------- CARDS ---------- */
.card{width:var(--card-w);height:var(--card-h);border-radius:10px;position:relative;flex-shrink:0;background:linear-gradient(160deg,#20344a,#111d2b);border:2px solid var(--frame,#556);box-shadow:0 4px 12px rgba(0,0,0,.5);overflow:hidden;user-select:none;transition:transform .18s,box-shadow .18s,filter .3s}
.card.red{--frame:var(--crimson);--frame-deep:var(--crimson-deep)}
.card.green{--frame:var(--emerald);--frame-deep:var(--emerald-deep)}
.card.blue{--frame:var(--azure);--frame-deep:var(--azure-deep)}
.card.purple{--frame:var(--violet);--frame-deep:var(--violet-deep)}
.card.yellow{--frame:var(--amber);--frame-deep:var(--amber-deep)}
.card.black{--frame:var(--onyx);--frame-deep:var(--onyx-deep)}
.card .art{position:absolute;inset:24px 6px 42px 6px;border-radius:6px;background:radial-gradient(circle at 50% 35%,var(--frame-deep),#0a121c 80%);display:flex;align-items:center;justify-content:center;overflow:hidden}
.card .art img{width:100%;height:100%;object-fit:cover}
.card .art svg{width:64%;height:64%;fill:#ecdcae;opacity:.9;filter:drop-shadow(0 2px 4px rgba(0,0,0,.6))}
.card .cost{position:absolute;top:4px;left:4px;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff3c9,#f2c14e 45%,#a87614);color:#10161f;font-weight:800;font-size:15px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,.6);z-index:2}
.card .name{position:absolute;top:5px;left:34px;right:4px;font-size:10.5px;font-weight:800;line-height:1.05;color:#ecdcae;text-shadow:0 1px 2px #000;z-index:2}
.card .power{position:absolute;bottom:4px;left:6px;font-family:var(--font-display);font-size:20px;color:#fff;text-shadow:0 0 8px var(--frame),0 2px 2px #000;z-index:2}
.card .power .buff{color:var(--don);font-size:13px;vertical-align:top}
.card .counter{position:absolute;bottom:26px;right:-26px;transform:rotate(-90deg);font-size:9px;font-weight:800;color:#10161f;background:#ecdcae;padding:1px 8px;border-radius:3px;z-index:2}
.card .tags{position:absolute;bottom:6px;right:5px;display:flex;gap:3px;z-index:2}
.card .tag{font-size:8.5px;font-weight:800;text-transform:uppercase;padding:2px 5px;border-radius:3px;background:var(--frame);color:#fff}
.card .tag.evt{background:#ecdcae;color:#10161f}
.card .rar{position:absolute;top:26px;left:4px;font-size:8px;font-weight:800;background:rgba(0,0,0,.6);padding:1px 4px;border-radius:3px;z-index:3;color:#cfd8e3}
.card.facedown{background:repeating-linear-gradient(45deg,#132638 0 10px,#0d1c2b 10px 20px);border-color:#2c4a63}
.card.facedown::after{content:"⚓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:44px;color:#2c4a63}
.card.facedown.hasback{background:#0a1420}
.card.facedown.hasback::after{content:none}
.card.facedown.hasback .backimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:8px}
.card.rested{transform:rotate(90deg) scale(.92);filter:brightness(.65)}
/* Small lift only — the big MTG-Arena-style preview (#hoverPreview) handles
   actual zoom, so this never scales/clips near screen edges. */
.card.glow:hover{transform:translateY(-6px);z-index:6;box-shadow:0 0 0 2px #ecdcae,0 0 20px rgba(233,216,166,.5),0 10px 22px rgba(0,0,0,.45)}
.card.attackable{box-shadow:0 0 0 3px var(--gold),0 0 24px rgba(233,180,76,.6);cursor:pointer}
.card.targetable{box-shadow:0 0 0 3px var(--crimson),0 0 24px rgba(209,73,91,.7);cursor:crosshair;animation:pulse .9s ease-in-out infinite alternate}
@keyframes pulse{to{box-shadow:0 0 0 3px var(--crimson),0 0 38px rgba(209,73,91,.95)}}
.card.playable{box-shadow:0 0 0 2px var(--emerald),0 0 18px rgba(63,169,124,.5);cursor:pointer}
.card .donpips{position:absolute;top:26px;right:4px;display:flex;flex-direction:column;gap:2px;z-index:3}
.card .donpip{width:13px;height:13px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff3c9,var(--don) 45%,var(--gold-deep));box-shadow:0 0 6px rgba(242,193,78,.8);animation:donpop .3s ease}
@keyframes donpop{from{transform:scale(0)}}
/* variants */
.card.v-foil::before{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:linear-gradient(115deg,transparent 20%,rgba(120,220,255,.25) 35%,rgba(255,150,255,.3) 45%,rgba(255,255,160,.25) 55%,transparent 70%);background-size:250% 250%;animation:foilsweep 3.2s ease-in-out infinite;mix-blend-mode:screen}
@keyframes foilsweep{0%{background-position:120% 0}50%{background-position:-20% 100%}100%{background-position:120% 0}}
.card.v-alt{border-color:var(--heading);box-shadow:0 0 14px rgba(233,180,76,.45)}
.card.v-alt .art{background:radial-gradient(circle at 50% 30%,var(--gold-deep),#0a121c 85%)}
.card.v-alt::after{content:"ALT ART";position:absolute;bottom:44px;left:0;right:0;text-align:center;font-size:8px;font-weight:800;letter-spacing:.2em;color:var(--heading);z-index:3;text-shadow:0 1px 2px #000}
.card.v-anime{border-color:#fff}
.card.v-anime .art{background:linear-gradient(160deg,#3a1d5a,#1d3a5a,#5a1d3a);background-size:300% 300%;animation:animebg 5s ease infinite}
@keyframes animebg{50%{background-position:100% 100%}}
.card.v-anime::after{content:"✦ SPECIAL ART ✦";position:absolute;bottom:44px;left:0;right:0;text-align:center;font-size:8px;font-weight:800;letter-spacing:.15em;color:#fff;z-index:3;text-shadow:0 0 8px #d17fff}
/* battle anims */
.card.lunge-down{animation:lungeD .45s ease}.card.lunge-up{animation:lungeU .45s ease}
@keyframes lungeD{30%{transform:translateY(70px) scale(1.1) rotate(3deg)}}
@keyframes lungeU{30%{transform:translateY(-70px) scale(1.1) rotate(-3deg)}}
.card.hit{animation:hitshake .4s ease}
@keyframes hitshake{20%{transform:translateX(-7px)}40%{transform:translateX(7px)}60%{transform:translateX(-5px)}80%{transform:translateX(4px)}}
.card.dying{animation:die .5s ease forwards}
@keyframes die{to{transform:scale(.3) rotate(20deg);opacity:0}}
.card.entering{animation:enter .4s ease}
@keyframes enter{from{transform:translateY(40px) scale(.6);opacity:0}}
.card.shakeNo{animation:hitshake .35s ease}

/* ---------- TOPBAR / HUB ---------- */
#topbar{display:none;position:sticky;top:0;z-index:40;background:rgba(6,16,26,.92);backdrop-filter:blur(6px);border-bottom:1px solid #1c3device;border-bottom:1px solid var(--line-dim);padding:8px 14px;align-items:center;gap:14px;flex-wrap:wrap}
#topbar.on{display:flex}
#topbar .brand{font-family:var(--font-display);font-size:22px;color:var(--heading);cursor:pointer}
#topbar nav{display:flex;gap:4px;flex-wrap:wrap}
#topbar nav button{padding:7px 12px;border-radius:6px;font-weight:700;font-size:13px}
#topbar nav button.on,#topbar nav button:hover{background:rgba(233,180,76,.15);color:var(--heading)}
#wallet{margin-left:auto;display:flex;gap:14px;align-items:center;font-weight:800}
#wallet .coin{color:var(--don)} #wallet .dust{color:#9fd8ff}
.hubwrap{max-width:1250px;margin:0 auto;padding:22px 16px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}

/* ranked */
.rankbadge{width:130px;height:130px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at 35% 30%,var(--surface2),var(--surface));border:3px solid var(--gold);box-shadow:0 0 30px rgba(233,180,76,.3);margin:0 auto}
.rankbadge .t{font-family:var(--font-display);font-size:22px;color:var(--heading)}
.rpbar{height:10px;border-radius:5px;background:var(--surface);border:1px solid var(--line);overflow:hidden;margin-top:10px}
.rpbar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold-deep),var(--gold));transition:width .6s}

/* shop */
.packbox{width:190px;height:260px;border-radius:14px;background:linear-gradient(160deg,var(--surface2),var(--surface));border:2px solid var(--gold-deep);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;cursor:pointer;transition:transform .15s,box-shadow .15s;position:relative;overflow:hidden}
.packbox:hover{transform:translateY(-6px) rotate(-1deg);box-shadow:0 0 34px rgba(233,180,76,.4)}
.packbox .setname{font-family:var(--font-display);font-size:26px;color:var(--heading);text-align:center;padding:0 10px}
.packbox::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.12) 48%,transparent 60%);background-size:250% 250%;animation:foilsweep 4s ease-in-out infinite}
/* pack opening */
#packstage{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;padding:20px 0;min-height:200px}
#packstage .card{cursor:pointer}
#packstage .card.unrevealed{background:repeating-linear-gradient(45deg,#1d3550 0 10px,#152a40 10px 20px);border-color:var(--gold-deep)}
#packstage .card.unrevealed::after{content:"?";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:60px;color:var(--gold-deep)}
.revealflip{animation:flip .5s ease}
@keyframes flip{0%{transform:rotateY(90deg) scale(.8)}100%{transform:rotateY(0)}}

/* collection */
.collgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(126px,1fr));gap:14px}
.collslot{position:relative}
.collslot .qty{position:absolute;top:-8px;right:-6px;z-index:5;background:var(--gold);color:var(--ink);font-weight:800;font-size:12px;border-radius:10px;padding:1px 7px;box-shadow:0 2px 4px rgba(0,0,0,.5)}
.collslot .unowned{filter:grayscale(1) brightness(.5)}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}

/* deck manager */
.deckcardrow{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:rgba(255,255,255,.03)}
.deckcardrow .nm{font-weight:800;flex:1}
.deckcardrow .warn{color:var(--crimson);font-size:12px;font-weight:700}
.builder-body{display:flex;gap:22px;flex-wrap:wrap}
.pool{flex:1 1 560px;display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:14px;align-content:start}
.pool .slot{position:relative}
.pool .qty{position:absolute;top:-8px;right:-8px;z-index:4;min-width:24px;height:24px;border-radius:12px;background:var(--gold);color:var(--ink);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;padding:0 5px}
.decklist{flex:0 0 290px;background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:12px;padding:16px;align-self:flex-start;position:sticky;top:64px;max-height:80vh;overflow-y:auto}
.dl-row{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;font-size:13.5px;margin-bottom:3px;background:rgba(255,255,255,.04)}
.dl-row .c{width:20px;height:20px;border-radius:50%;background:var(--don);color:var(--ink);font-weight:800;font-size:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dl-row .n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dl-row button{width:20px;height:20px;border-radius:4px;background:rgba(255,255,255,.12);font-weight:800;flex-shrink:0}
.deckcount.ok{color:var(--emerald)}

/* stats */
.statbar{display:flex;align-items:flex-end;gap:6px;height:130px;padding:10px 0}
.statbar .b{flex:1;background:linear-gradient(180deg,var(--gold),var(--gold-deep));border-radius:4px 4px 0 0;position:relative;min-width:14px}
.statbar .b span{position:absolute;bottom:-20px;left:0;right:0;text-align:center;font-size:10px;color:var(--parchment-dim)}
.statbar .b i{position:absolute;top:-18px;left:0;right:0;text-align:center;font-size:11px;font-weight:800;font-style:normal}
table.stats{width:100%;border-collapse:collapse;font-size:13.5px}
table.stats th,table.stats td{padding:7px 9px;text-align:left;border-bottom:1px solid var(--line-dim)}
table.stats th{color:var(--parchment-dim);font-size:11px;text-transform:uppercase;letter-spacing:.08em}

/* ---------- DUEL ---------- */
#duel{flex-direction:column;height:100dvh;padding:6px 10px;gap:4px}
#duel.active{display:flex}
.zone{display:flex;align-items:center;gap:10px;justify-content:center;min-height:104px}
.fieldrow{flex-wrap:wrap}
.hud{display:flex;align-items:center;gap:14px;background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:12px;padding:8px 14px;flex-wrap:wrap;justify-content:center}
.lifewrap{display:flex;flex-direction:column;align-items:center;gap:2px}
.lifestack{display:flex;gap:3px}
.lifecard{width:16px;height:24px;border-radius:3px;background:linear-gradient(160deg,var(--gold),var(--gold-deep));box-shadow:0 1px 3px rgba(0,0,0,.6);transition:all .3s}
.lifecard.gone{transform:translateY(-14px) rotate(15deg);opacity:0}
.donbar{display:flex;align-items:center;gap:5px;flex-wrap:wrap;max-width:280px}
.doncoin{width:28px;height:28px;border-radius:50%;font-size:10px;font-weight:800;color:var(--ink);background:radial-gradient(circle at 35% 30%,#fff3c9,var(--don) 45%,var(--gold-deep));display:flex;align-items:center;justify-content:center;box-shadow:0 2px 5px rgba(0,0,0,.6);transition:transform .15s,filter .2s}
.doncoin.rested{filter:grayscale(.8) brightness(.55)}
.doncoin.clickable{cursor:pointer;box-shadow:0 0 0 2px var(--emerald),0 0 14px rgba(63,169,124,.7)}
.doncoin.clickable:hover{transform:scale(1.2)}
.doncoin.selected{box-shadow:0 0 0 3px #fff,0 0 20px #fff;transform:scale(1.2)}
.midbar{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line);padding:5px 4px}
.phase{font-family:var(--font-display);font-size:22px;color:var(--heading);white-space:nowrap}
#log{flex:1;max-height:56px;overflow-y:auto;font-size:12.5px;color:var(--parchment-dim);line-height:1.45;padding:0 8px;scrollbar-width:thin}
#log .imp{color:var(--parchment);font-weight:700}
#handrow{min-height:126px;gap:8px;overflow-x:auto;justify-content:flex-start;padding:6px 4px}
.hint{text-align:center;font-size:13px;color:var(--heading);min-height:18px}
.endturn{padding:12px 22px;border-radius:8px;font-weight:800;font-size:14px;text-transform:uppercase;background:linear-gradient(180deg,var(--crimson),var(--crimson-deep));color:#fff;box-shadow:0 3px 0 #5c1620;transition:transform .1s;white-space:nowrap}
.endturn:hover{transform:translateY(-2px)} .endturn:disabled{opacity:.35}
#modal,#zoommodal{position:fixed;inset:0;background:rgba(4,10,16,.82);display:none;align-items:center;justify-content:center;z-index:50;backdrop-filter:blur(3px);padding:12px}
#modal.open,#zoommodal.open{display:flex}
.modalbox{background:linear-gradient(180deg,var(--surface2),var(--surface));border:2px solid var(--gold-deep);border-radius:16px;padding:22px;max-width:660px;width:96%;box-shadow:0 20px 60px rgba(0,0,0,.7);animation:enter .3s ease;max-height:92vh;overflow-y:auto}
.modalbox h3{font-size:28px;color:var(--heading);margin-bottom:6px}
.vs{display:flex;align-items:center;justify-content:center;gap:22px;margin:14px 0;flex-wrap:wrap}
.vs .vslbl{font-family:var(--font-display);font-size:32px;color:var(--crimson)}
.vs .pw{text-align:center;font-size:13px;color:var(--parchment-dim);margin-top:6px}
.vs .pw b{display:block;font-size:22px;color:#fff;font-family:var(--font-display)}
.counteropts{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:12px 0}
.counteropts .card{cursor:pointer}
.counteropts .card.used{opacity:.35;pointer-events:none}
.modal-actions{display:flex;gap:10px;justify-content:center;margin-top:14px;flex-wrap:wrap}
.outcome{font-size:15px;text-align:center;margin-top:8px;min-height:20px;font-weight:700}
.outcome.win{color:var(--emerald)} .outcome.lose{color:var(--crimson)}
.floater{position:fixed;font-family:var(--font-display);font-size:32px;color:var(--crimson);pointer-events:none;z-index:60;text-shadow:0 0 12px rgba(209,73,91,.8),0 2px 2px #000;animation:floatup 1s ease forwards}
@keyframes floatup{to{transform:translateY(-70px);opacity:0}}
#gameover{position:fixed;inset:0;display:none;align-items:center;justify-content:center;flex-direction:column;gap:16px;background:rgba(4,10,16,.92);z-index:70;text-align:center;padding:20px}
#gameover.open{display:flex}
#gameover h2{font-size:clamp(50px,10vw,110px);animation:enter .5s ease}
#gameover h2.w{color:var(--heading);text-shadow:0 0 60px rgba(233,180,76,.5)}
#gameover h2.l{color:var(--crimson);text-shadow:0 0 60px rgba(209,73,91,.5)}
.rewardline{font-size:20px;font-weight:800}
/* auth / starter */
#auth{display:none;align-items:center;justify-content:center;min-height:100vh;padding:20px}
#auth.active{display:flex}
.authbox{width:min(420px,94vw);display:flex;flex-direction:column;gap:12px}
.starterrow{display:flex;gap:18px;flex-wrap:wrap;justify-content:center}
.starteropt{border-radius:14px;padding:14px;border:2px solid var(--line);cursor:pointer;width:220px;text-align:center;transition:border-color .2s,box-shadow .2s;background:rgba(0,0,0,.3)}
.starteropt:hover,.starteropt.sel{border-color:var(--heading);box-shadow:0 0 24px rgba(233,180,76,.3)}
.starteropt h4{font-family:var(--font-display);font-size:20px;margin:8px 0 2px}
.starteropt p{font-size:12.5px;color:var(--parchment-dim)}
@media(max-width:760px){
  :root{--card-w:88px;--card-h:123px}
  .card .power{font-size:15px}.card .name{font-size:8.5px}.card .cost{width:22px;height:22px;font-size:13px}
  .zone{min-height:84px}
  .hud{padding:6px 8px;gap:8px}
  .doncoin{width:22px;height:22px;font-size:8px}
  .phase{font-size:17px}
  .decklist{position:static;max-height:none;flex:1 1 100%}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- SERVER-BUILD ADDITIONS ---------- */
/* fix: prototype had a typo'd border-bottom on #topbar */
#topbar{border-bottom:1px solid var(--line-dim)}
/* lobby */
.lobbyrow{display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:rgba(255,255,255,.03)}
.lobbyrow .host{font-weight:800;font-size:16px}
.pulse-dot{width:10px;height:10px;border-radius:50%;background:var(--emerald);animation:pulse-dot 1.2s ease-in-out infinite}
@keyframes pulse-dot{50%{opacity:.3}}
/* duel extras */
#oppThinking{font-size:12.5px;color:var(--parchment-dim);display:none;align-items:center;gap:8px}
#oppThinking.on{display:inline-flex}
.waitbanner{text-align:center;color:var(--parchment-dim);font-size:13px;padding:4px}
.card.dimmed{filter:brightness(.72)}
.conn{font-size:11px;color:var(--parchment-dim)}
.conn.bad{color:var(--crimson);font-weight:700}
/* deck rows small extras */
.deckcardrow .stub{color:var(--amber);font-size:12px;font-weight:700}
/* admin */
.dropzone{border:2px dashed var(--line);border-radius:12px;padding:26px;text-align:center;color:var(--parchment-dim);cursor:pointer;transition:border-color .2s}
.dropzone.hover,.dropzone:hover{border-color:var(--heading)}
/* stat extras */
.statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-top:8px}
.statgrid .kpi{background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:10px;padding:10px;text-align:center}
.statgrid .kpi b{display:block;font-family:var(--font-display);font-size:26px;color:var(--heading)}
