:root{--h:720}
html{height:100%;overflow:hidden;overscroll-behavior:none}
*{box-sizing:border-box;margin:0;padding:0}
body{background:#0b1410;display:flex;justify-content:center;align-items:center;min-height:100vh;min-height:100dvh;height:100vh;height:100dvh;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;user-select:none;-webkit-user-select:none;overflow:hidden;overscroll-behavior:none;-webkit-overflow-scrolling:touch}
#wrap{position:relative;width:min(100vw,calc(100dvh*480/var(--h)));height:min(100dvh,calc(100vw*var(--h)/480));width:min(100vw,calc(100vh*480/var(--h)));height:min(100vh,calc(100vw*var(--h)/480));overflow:hidden;background:#0e1a12}
@supports (height:100dvh){
  body{min-height:100dvh;height:100dvh}
  #wrap{width:min(100vw,calc(100dvh*480/var(--h)));height:min(100dvh,calc(100vw*var(--h)/480))}
}
canvas{display:block;width:100%;height:100%;touch-action:manipulation}
#game-bg{position:absolute;inset:0;width:100%;height:100%;z-index:0}
#game{z-index:2}
.hidden{display:none!important}

.btn{background:linear-gradient(180deg,#3b82f6,#2563eb);color:#fff;border:none;border-radius:12px;padding:12px 30px;font-size:17px;font-weight:800;cursor:pointer;letter-spacing:.5px;box-shadow:0 4px 0 #1d4ed8,0 6px 14px rgba(0,0,0,.35);transition:transform .08s,box-shadow .08s,filter .1s;min-width:220px}
.btn:hover{filter:brightness(1.12);transform:translateY(-2px);box-shadow:0 6px 0 #1d4ed8,0 8px 18px rgba(0,0,0,.35)}
.btn:active{transform:translateY(2px);box-shadow:0 2px 0 #1d4ed8}
.btn.play{background:linear-gradient(180deg,#f59e0b,#d97706);box-shadow:0 4px 0 #b45309,0 6px 14px rgba(0,0,0,.35);font-size:22px;padding:16px 40px}
.btn.play:hover{box-shadow:0 6px 0 #b45309,0 8px 18px rgba(0,0,0,.35)}
.btn.play:active{box-shadow:0 2px 0 #b45309}
.btn.danger{background:linear-gradient(180deg,#ef4444,#dc2626);box-shadow:0 4px 0 #991b1b,0 6px 14px rgba(0,0,0,.35)}
.btn.danger:hover{box-shadow:0 6px 0 #991b1b,0 8px 18px rgba(0,0,0,.35)}
.btn.danger:active{box-shadow:0 2px 0 #991b1b}

#screen-loading,#screen-menu,#screen-searching,#screen-over,#screen-deck,#screen-settings{position:absolute;inset:0;z-index:10;background:#172034;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#fff;padding:20px}
#screen-menu{background:linear-gradient(180deg,#172034,#0f1728)}
#screen-deck,#screen-settings{background:#0f1728;justify-content:flex-start;padding-top:18px}
#screen-searching{background:linear-gradient(160deg,#4f46e5,#7c3aed,#db2777)}
#screen-auth,#screen-friends,#screen-chat,#screen-board{position:absolute;inset:0;z-index:10;background:linear-gradient(180deg,#172034,#0f1728);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#fff;padding:20px}
#screen-friends,#screen-chat,#screen-board{justify-content:flex-start;padding-top:22px}
#screen-loading{background:linear-gradient(160deg,#4f46e5,#7c3aed,#db2777)}

.radar{position:relative;width:130px;height:130px;margin-bottom:26px}
.radar::before{content:'';position:absolute;inset:0;border-radius:50%;border:3px solid rgba(255,255,255,.55);animation:radarPulse 1.1s ease-out infinite}
.radar::after{content:'';position:absolute;inset:16px;border-radius:50%;border:2px solid rgba(255,255,255,.35);animation:radarPulse 1.1s .45s ease-out infinite}
@keyframes radarPulse{0%{transform:scale(.55);opacity:1}100%{transform:scale(1.3);opacity:0}}
.radar-core{position:absolute;inset:38px;border-radius:50%;background:radial-gradient(circle,#fbbf24,#f59e0b);box-shadow:0 0 26px rgba(245,158,11,.85);animation:pulse 1.4s ease-in-out infinite}
.radar-sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(255,255,255,.4),transparent 70deg,transparent 360deg);animation:spin 1.5s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.search-title{font-size:26px;font-weight:900;letter-spacing:1px;text-shadow:0 2px 14px rgba(0,0,0,.55)}
.search-sub{margin-top:8px;font-size:15px;color:rgba(255,255,255,.85)}

.load-logo{font-size:30px;font-weight:900;letter-spacing:1px;text-shadow:0 2px 12px rgba(0,0,0,.5);margin-bottom:26px;animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
.load-bar{width:300px;height:14px;background:rgba(255,255,255,.2);border-radius:8px;overflow:hidden;border:1px solid rgba(255,255,255,.3)}
#load-fill{width:0%;height:100%;background:linear-gradient(90deg,#fbbf24,#f59e0b);border-radius:8px;transition:width .2s ease}
#load-text{margin-top:12px;font-size:14px;color:rgba(255,255,255,.85);min-height:18px}

.menu-title{font-size:34px;font-weight:900;letter-spacing:1px;line-height:1.2;background:linear-gradient(180deg,#ffe9a8,#f59e0b 55%,#d97706);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 10px rgba(245,158,11,.35))}
.menu-sub{color:#9fd7ff;font-size:15px;margin:4px 0 26px}
.menu-inner{display:flex;flex-direction:column;align-items:center;gap:14px;position:relative;z-index:2}
.menu-deco{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.menu-deco span{position:absolute;font-size:26px;opacity:.22;animation:floatY 5s ease-in-out infinite;animation-delay:var(--d,0s)}
@keyframes floatY{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-16px) rotate(6deg)}}
.menu-help{margin-top:16px;font-size:12px;color:rgba(255,255,255,.55)}
.btn.play{background:linear-gradient(180deg,#fbbf24,#d97706);box-shadow:0 4px 0 #b45309,0 6px 14px rgba(0,0,0,.35),0 0 22px rgba(245,158,11,.35);font-size:22px;padding:16px 40px;animation:playGlow 1.6s ease-in-out infinite}
@keyframes playGlow{0%,100%{box-shadow:0 4px 0 #b45309,0 6px 14px rgba(0,0,0,.35),0 0 14px rgba(245,158,11,.3)}50%{box-shadow:0 4px 0 #b45309,0 6px 14px rgba(0,0,0,.35),0 0 30px rgba(245,158,11,.65)}}

.screen-title{font-size:26px;font-weight:900;margin-bottom:4px;text-shadow:0 2px 10px rgba(0,0,0,.5)}
.deck-hint{font-size:12px;color:rgba(255,255,255,.6);min-height:16px;margin-bottom:6px}
.deck-count{font-size:15px;color:#ffd93b;font-weight:700;margin:6px 0 4px}
#deck-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%;max-width:430px}
.dslot{position:relative;aspect-ratio:1/0.95;min-height:104px;background:rgba(255,255,255,.05);border:2px dashed rgba(255,255,255,.3);border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .08s,border-color .1s,background .1s;touch-action:none}
.dslot:hover{transform:translateY(-2px)}
.dslot.has{border-style:solid;background:linear-gradient(160deg,#2e3a52,#1f2937)}
.dslot.picking{border-color:#ffd93b;box-shadow:0 0 14px rgba(255,217,59,.55);animation:pulse 1s ease-in-out infinite}
.dslot .dslot-num{position:absolute;top:3px;left:6px;font-size:11px;font-weight:800;color:rgba(255,255,255,.45)}
.dslot .dslot-rm{position:absolute;top:2px;right:5px;font-size:11px;color:rgba(255,255,255,.4);display:none}
.dslot.has:hover .dslot-rm{display:block;color:#ff6b6b}
.dslot .dslot-body{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%}
.dslot .s-empty{font-size:30px;color:rgba(255,255,255,.35);line-height:1}
.dslot .s-emoji{font-size:30px;line-height:1}
.dslot .s-cost{position:absolute;top:2px;left:22px;background:#a855f7;color:#fff;font-weight:800;font-size:11px;width:17px;height:17px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.4)}
.dslot .s-name{position:absolute;bottom:3px;font-size:9px;color:#cbd5e1;font-weight:700;max-width:92%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.palette-head{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:430px;margin:6px 0 4px;font-size:13px;font-weight:800;color:rgba(255,255,255,.7)}
#card-palette{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;width:100%;max-width:430px;overflow-y:auto;padding:4px;flex:1;min-height:0;align-content:start}
.pcard{position:relative;background:linear-gradient(160deg,#2e3a52,#1f2937);border:2px solid #4b5a75;border-radius:8px;padding:6px 4px 4px;cursor:pointer;transition:transform .08s,border-color .1s,opacity .1s;touch-action:pan-y;text-align:center}
@media (hover:none){
  .dslot.has .dslot-rm{display:block}
}
.pcard:hover{transform:translateY(-2px)}
.pcard .d-emoji{font-size:22px;line-height:1}
.pcard .d-cost{position:absolute;top:3px;left:5px;background:#a855f7;color:#fff;font-weight:800;font-size:10px;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.4)}
.pcard .d-name{font-size:8.5px;font-weight:700;color:#e5e7eb;margin:3px 0 1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcard .d-stats{font-size:7px;color:#9ca3af;white-space:pre-line;line-height:1.3}
.pcard.in{border-color:#ffd93b;box-shadow:0 0 8px rgba(255,217,59,.3)}
.pcard.sel{border-color:#4ade80;transform:translateY(-2px);box-shadow:0 0 10px rgba(74,222,128,.45)}
.pcard.picking{animation:pulse 1s ease-in-out infinite}
.pcard.dragging{opacity:.4}
.rarity-common{border-color:#4b9fd5!important}
.rarity-rare{border-color:#f0a832!important}
.rarity-epic{border-color:#c084fc!important}
.deck-saved{height:18px;font-size:12px;color:#4ade80;margin:2px 0}
.deck-saved.err{color:#ff6b6b}
.deck-actions{display:flex;gap:10px;margin-top:4px}
.btn.small{min-width:0;padding:8px 14px;font-size:13px;border-radius:9px}
#deck-tabs{display:flex;gap:8px;margin:4px 0 8px;width:100%;max-width:430px}
.deck-tab{flex:1;background:rgba(255,255,255,.06);border:2px solid #4b5a75;color:#cbd5e1;border-radius:9px;padding:7px 0;font-size:13px;font-weight:800;cursor:pointer;letter-spacing:.5px}
.deck-tab.on{background:linear-gradient(180deg,#3b82f6,#2563eb);border-color:#1d4ed8;color:#fff}
#emote-palette{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%;max-width:430px;overflow-y:auto;padding:4px;flex:1;min-height:0;align-content:start}
.ecard{display:flex;align-items:center;justify-content:center;font-size:34px;aspect-ratio:1;background:linear-gradient(160deg,#2e3a52,#1f2937);border:2px solid #4b5a75;border-radius:10px;cursor:pointer;transition:transform .08s,border-color .1s;touch-action:manipulation}
.ecard:hover{transform:translateY(-2px)}
.ecard.sel{border-color:#4ade80;box-shadow:0 0 10px rgba(74,222,128,.45)}
.dslot.drop{border-color:#4ade80;box-shadow:0 0 12px rgba(74,222,128,.4)}
.settings-box{display:flex;flex-direction:column;align-items:center;gap:14px;background:rgba(255,255,255,.06);padding:22px 26px;border-radius:14px;min-width:300px}
.row{display:flex;justify-content:space-between;align-items:center;width:100%;font-size:15px;font-weight:600;color:#e5e7eb}
.row input[type=range]{width:150px;accent-color:#f59e0b}
.row input[type=checkbox]{width:20px;height:20px;accent-color:#f59e0b;cursor:pointer}
.row select{background:#1f2937;color:#fff;border:1px solid #4b5a75;border-radius:8px;padding:6px 10px;font-size:14px;font-weight:600;cursor:pointer;outline:none}
.row select:focus{border-color:#f59e0b}

#hud-top{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:8px 14px;pointer-events:none}
.hud-mid{display:flex;flex-direction:column;align-items:center;gap:4px}
.crowns{font-size:15px;font-weight:800;color:#ffd93b;text-shadow:0 1px 3px rgba(0,0,0,.8);background:rgba(0,0,0,.38);padding:4px 10px;border-radius:16px;border:1px solid rgba(255,217,59,.25)}
#timer{font-size:17px;font-weight:800;color:#fff;background:rgba(0,0,0,.5);padding:4px 14px;border-radius:20px;text-shadow:0 1px 2px rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.15)}
#timer.ot{color:#ff6b6b;animation:pulse 1s ease-in-out infinite}
#timer.warn{color:#ff6b6b;animation:pulse .6s ease-in-out infinite;border-color:rgba(255,107,107,.45)}
.enemy-box{display:flex;flex-direction:column;align-items:center;gap:3px}
#opp-name{font-size:11px;font-weight:700;color:rgba(255,255,255,.85);text-shadow:0 1px 3px rgba(0,0,0,.8);background:rgba(0,0,0,.38);padding:2px 8px;border-radius:10px;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#btn-pause{position:absolute;top:58px;right:14px;z-index:6;width:38px;height:38px;border-radius:50%;background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.3);color:#fff;font-size:16px;display:flex;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto;transition:filter .1s,transform .08s;user-select:none}
#btn-pause:hover{filter:brightness(1.25)}
#btn-pause:active{transform:scale(.92)}
.battle-only{display:none}
#screen-settings.inbattle .battle-only{display:block}
#emote-bar{position:absolute;bottom:160px;left:8px;z-index:6;display:flex;flex-direction:column;gap:6px;pointer-events:auto}
.ebtn{width:40px;height:40px;border-radius:10px;background:rgba(10,15,25,.75);border:2px solid rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;font-size:22px;cursor:pointer;transition:transform .08s,border-color .1s;box-shadow:0 2px 6px rgba(0,0,0,.4)}
.ebtn:hover{transform:translateY(-2px);border-color:#ffd93b}
.ebtn:active{transform:scale(.9)}
.ebtn.empty{opacity:0;pointer-events:none}
#hud-bottom{position:absolute;bottom:0;left:0;right:0;z-index:5;padding:6px 8px 7px;background:linear-gradient(180deg,#0b1120,#070b12);border-top:2px solid rgba(255,255,255,.12)}

/* ---- Elixir bar (redesigned) ---- */
#elixir-line{display:flex;align-items:center;gap:8px;margin-bottom:6px}
#elixir-side{display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;width:52px}
#elixir-drop{width:18px;height:18px;background:radial-gradient(circle at 35% 30%,#c98bff,#7b2ff7);border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 0 7px rgba(123,47,247,.6)}
#elixir-num{margin-top:3px;font-weight:900;color:#ecdcff;font-size:11px;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.7);white-space:nowrap}
#elixir-bar{position:relative;flex:1;height:18px;border-radius:10px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);overflow:hidden}
#elixir-fill{position:absolute;left:0;top:0;bottom:0;width:50%;background:linear-gradient(90deg,#7b2ff7,#a855f7);transition:width .15s linear}
#elixir-segs{position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) calc(10% - 2px),rgba(0,0,0,.42) calc(10% - 2px),rgba(0,0,0,.42) 10%);pointer-events:none}
#elixir-bar::after{content:'';position:absolute;left:0;right:0;top:1px;height:7px;border-radius:8px;background:linear-gradient(rgba(255,255,255,.32),transparent);pointer-events:none}

/* ---- Hand row: separate Next block + 4 cards ---- */
#hand-row{display:flex;gap:6px;justify-content:center;align-items:flex-end}
#next-block{display:flex;flex-direction:column;align-items:center;gap:2px;flex-shrink:0}
#next-label{font-size:8px;font-weight:800;letter-spacing:1.5px;color:rgba(255,255,255,.6)}
#next-card{position:relative;width:50px;height:84px;background:linear-gradient(160deg,#33425e,#222e44);border:2px solid rgba(168,85,247,.55);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;opacity:.85;filter:grayscale(.35) brightness(.93);box-shadow:inset 0 0 0 1px rgba(0,0,0,.35),0 2px 6px rgba(0,0,0,.4)}
.next-card .n-emoji{font-size:28px;line-height:1;text-shadow:0 2px 4px rgba(0,0,0,.5)}
.next-card .n-cost{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);background:radial-gradient(circle at 35% 30%,#c98bff,#7b2ff7);color:#fff;font-weight:800;font-size:11px;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid rgba(255,255,255,.5);box-shadow:0 1px 3px rgba(0,0,0,.5)}

/* ---- Cards (thicker borders, cost bottom-centre, neat hotkeys) ---- */
#hand{display:flex;gap:5px;justify-content:center}
.card{position:relative;width:88px;height:94px;background:linear-gradient(160deg,#2e3a52,#1f2937);border:3px solid #4b5a75;border-radius:11px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:transform .08s,border-color .08s;touch-action:none;overflow:hidden}
.card:hover{transform:translateY(-3px)}
.card.rarity-common{border-color:#4b9fd5}
.card.rarity-rare{border-color:#f0a832}
.card.rarity-epic{border-color:#c084fc}
.card .card-emoji{font-size:34px;line-height:1;text-shadow:0 2px 4px rgba(0,0,0,.5)}
.card .card-name{position:absolute;bottom:28px;font-size:9px;color:#cbd5e1;font-weight:700;letter-spacing:.2px;text-align:center;padding:0 2px;width:100%}
.card .card-cost{position:absolute;bottom:5px;left:50%;transform:translateX(-50%);background:radial-gradient(circle at 35% 30%,#c98bff,#7b2ff7);color:#fff;font-weight:800;font-size:12px;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid rgba(255,255,255,.5);box-shadow:0 1px 3px rgba(0,0,0,.5)}
.card .card-key{position:absolute;top:3px;right:3px;background:rgba(0,0,0,.4);color:#9fb0c4;font-weight:800;font-size:9px;width:15px;height:15px;border-radius:4px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.18)}
.card.dim{filter:grayscale(.8) brightness(.6)}
.card.selected{border-color:#ffd93b;transform:translateY(-6px);box-shadow:0 0 14px rgba(255,217,59,.5)}
.card.shake{animation:shake .25s}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}

#battle-flash{position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;font-size:46px;font-weight:900;letter-spacing:3px;color:#fff;text-shadow:0 3px 18px rgba(0,0,0,.6),0 0 40px rgba(255,217,59,.5);opacity:0;pointer-events:none}
#battle-flash.show{animation:battleFlash 1.3s ease forwards}
@keyframes battleFlash{0%{opacity:0;transform:scale(.55)}18%{opacity:1;transform:scale(1.08)}32%{transform:scale(1)}78%{opacity:1}100%{opacity:0;transform:scale(1.18)}}

#over-title{font-size:44px;font-weight:900;text-shadow:0 2px 14px rgba(0,0,0,.6)}
#over-emoji{font-size:64px;line-height:1;animation:overPop .5s cubic-bezier(.2,1.4,.4,1) both}
@keyframes overPop{0%{transform:scale(0) rotate(-20deg);opacity:0}100%{transform:scale(1) rotate(0);opacity:1}}
#over-crowns{font-size:22px;color:#ffd93b;font-weight:700;margin-bottom:10px}
#screen-over{gap:16px;background:radial-gradient(circle at 50% 38%, rgba(20,30,50,0.82), rgba(8,12,22,0.92));animation:overFade .4s .15s ease both}

/* ---------- VICTORY cinematic banner ---------- */
/* position:fixed so the big VICTORY!/DEFEAT text centers on the whole screen
   instead of being trapped inside the bottom deck bar (#hud-bottom). */
#victory-banner{position:fixed;inset:0;z-index:9;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;opacity:0}
#victory-banner.show{animation:victoryFlash 2.8s ease forwards}
@keyframes victoryFlash{
  0%{opacity:0;transform:scale(.45) rotate(-10deg)}
  12%{opacity:1;transform:scale(1.15) rotate(3deg)}
  24%{transform:scale(1) rotate(0)}
  78%{opacity:1;transform:scale(1.04)}
  100%{opacity:0;transform:scale(1.12)}
}
.victory-title{font-size:54px;font-weight:900;letter-spacing:3px;line-height:1.1;text-align:center;
  background:linear-gradient(180deg,#fff3c4,#fbbf24 50%,#d97706);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  filter:drop-shadow(0 3px 12px rgba(245,158,11,.7));text-shadow:0 0 34px rgba(255,205,80,.9)}
.victory-sub{margin-top:16px;font-size:16px;font-weight:800;color:#ffe7c2;text-shadow:0 1px 6px rgba(0,0,0,.9);text-align:center;padding:0 24px}
#screen-over .btn{animation:overFade .4s .15s ease both}
@keyframes overFade{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:translateY(0)}}

/* ---------- SUDDEN DEATH ---------- */
/* Red pulsing vignette over the play field while sudden death is active. */
#sd-vignette{position:absolute;inset:0;z-index:6;pointer-events:none;animation:sdVignette 1.1s ease-in-out infinite}
@keyframes sdVignette{
  0%,100%{box-shadow:inset 0 0 55px 12px rgba(255,40,40,.22)}
  50%{box-shadow:inset 0 0 95px 32px rgba(255,40,40,.55)}
}

/* Big intro banner shown when sudden death begins. */
#sudden-death{position:absolute;inset:0;z-index:9;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;opacity:0}
#sudden-death.show{animation:sdFlash 2.4s ease forwards}
@keyframes sdFlash{
  0%{opacity:0;transform:scale(.7)}
  12%{opacity:1;transform:scale(1.06)}
  25%{transform:scale(1)}
  82%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:scale(1.12)}
}
.sd-title{
  font-size:42px;font-weight:900;letter-spacing:2px;line-height:1.1;text-align:center;
  background:linear-gradient(180deg,#ff6b6b,#b30000);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.55));
  text-shadow:0 0 26px rgba(255,60,60,.85);
}
.sd-sub{margin-top:12px;font-size:14px;font-weight:700;color:#ffd7d7;text-shadow:0 1px 4px rgba(0,0,0,.85);text-align:center;padding:0 20px}


/* ============================================================
   ONLINE SOCIAL LAYER — auth, friends, chat, leaderboard, modals
   ============================================================ */

/* ---- menu identity header ---- */
#menu-me{
  position:absolute;top:10px;left:12px;z-index:5;display:flex;align-items:center;gap:8px;
  background:rgba(10,14,30,.72);border:1px solid rgba(255,255,255,.16);border-radius:999px;
  padding:5px 14px 5px 6px;backdrop-filter:blur(4px);
}
#menu-me #me-avatar{font-size:22px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}
#menu-me .me-info{display:flex;flex-direction:column;line-height:1.15}
#me-name{font-weight:800;font-size:13px;color:#fff}
#me-trophies{font-size:11px;color:#ffd93b;font-weight:700}

/* ---- auth ---- */
.auth-box{gap:9px;display:flex;flex-direction:column;width:min(320px,84vw)}
.auth-box input{
  background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.22);border-radius:10px;
  color:#fff;padding:11px 12px;font-size:14px;outline:none;font-family:inherit
}
.auth-box input:focus{border-color:#ffd93b}
.auth-err{color:#ff8a8a;font-size:12px;min-height:15px;font-weight:700}
.linkish{background:none;border:none;color:#7fb2ff;cursor:pointer;font:inherit;font-size:13px;padding:4px}
.linkish:hover{text-decoration:underline}

/* ---- shared social layout ---- */
.social-wrap{
  width:min(430px,92vw);max-height:74vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px;
  margin:0 auto;padding-bottom:6px
}
#screen-friends,#screen-board,#screen-chat{
  overflow:hidden;
}
#screen-friends .social-wrap,#screen-board .social-wrap,#screen-chat .social-wrap{
  flex:1;min-height:0;max-height:none;overflow-y:auto;
}
#screen-friends,#screen-board,#screen-chat{justify-content:flex-start;padding-top:14px}
#screen-friends .back-btn,#screen-board .back-btn,#screen-chat .back-btn{
  position:sticky;bottom:0;margin-top:12px;z-index:2;
  background:linear-gradient(180deg,#1a2a4a,#172034);
  box-shadow:0 -8px 16px rgba(16,32,52,0.9);
}
.back-btn{margin-top:4px}
.prof-h{font-size:13px;font-weight:900;letter-spacing:1px;color:#ffd93b;margin:6px 0 2px;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.search-row input{
  width:100%;box-sizing:border-box;background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.22);
  border-radius:10px;color:#fff;padding:10px 12px;font-size:14px;outline:none;font-family:inherit
}
.search-row input:focus{border-color:#ffd93b}
.result-box,.req-section,#friend-list,#chat-list,#board-list{
  display:flex;flex-direction:column;gap:6px
}
.empty-hint{color:rgba(255,255,255,.55);font-size:13px;text-align:center;padding:14px 6px}

/* ---- profile rows (friends / search / chat list) ---- */
.prow{
  display:flex;align-items:center;gap:8px;background:rgba(10,14,30,.66);
  border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:8px 10px;color:#fff
}
.prow.clickable{cursor:pointer;transition:transform .08s ease, border-color .12s ease}
.prow.clickable:hover{transform:translateY(-1px);border-color:rgba(255,217,59,.5)}
.prow-av{font-size:20px}
.prow-main{flex:1;display:flex;flex-direction:column;line-height:1.2;min-width:0}
.prow-name{font-weight:800;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prow-sub{font-size:11px;color:rgba(255,255,255,.6)}
.dot{width:9px;height:9px;border-radius:50%;background:#5a6072;flex-shrink:0}
.dot.on{background:#37e06a;box-shadow:0 0 8px #37e06a88}
.badge{
  background:#e5484d;color:#fff;font-size:10px;font-weight:900;border-radius:999px;
  padding:2px 6px;margin-left:4px
}
button .badge{position:static}

/* ---- chat screen ---- */
.chat-wrap{padding-top:26px}
.thread-head{
  position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:5;
  display:flex;align-items:center;gap:10px;background:rgba(10,14,30,.85);
  border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:5px 16px 5px 6px
}
#chat-thread{
  flex:1;display:flex;flex-direction:column;gap:5px;background:rgba(0,0,0,.35);
  border-radius:12px;padding:10px;min-height:180px;overflow-y:auto
}
.cmsg{
  max-width:78%;padding:7px 10px;border-radius:12px;font-size:13px;line-height:1.3;
  word-wrap:break-word;white-space:pre-wrap
}
.cmsg.mine{align-self:flex-end;background:#2f6bff;color:#fff;border-bottom-right-radius:4px}
.cmsg.theirs{align-self:flex-start;background:rgba(255,255,255,.13);color:#fff;border-bottom-left-radius:4px}
.cmsg-t{display:block;font-size:9px;opacity:.55;margin-top:2px;text-align:right}
#chat-compose{display:flex;gap:6px}
#chat-compose input{
  flex:1;background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.22);border-radius:10px;
  color:#fff;padding:10px 12px;font-size:14px;outline:none;font-family:inherit
}
#chat-compose input:focus{border-color:#ffd93b}
.chat-toast{
  position:fixed;left:50%;bottom:-80px;transform:translateX(-50%);z-index:60;
  background:rgba(10,14,30,.92);border:1px solid rgba(127,178,255,.5);color:#fff;
  border-radius:999px;padding:9px 18px;font-size:13px;font-weight:800;transition:bottom .25s ease;
  pointer-events:none;backdrop-filter:blur(4px)
}
.chat-toast.show{bottom:24px}

/* ---- leaderboard ---- */
.brow{
  display:flex;align-items:center;gap:8px;background:rgba(10,14,30,.66);
  border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:8px 10px;color:#fff
}
.brow.me{border-color:#ffd93b;box-shadow:0 0 12px rgba(255,217,59,.25)}
.brow-rank{width:34px;text-align:center;font-weight:900;font-size:13px}
.brow-t{font-weight:900;color:#ffd93b;font-size:13px}

/* ---- profile modal ---- */
.modal{
  position:absolute;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;
  background:rgba(4,6,14,.72);backdrop-filter:blur(3px)
}
.modal-card{
  width:min(420px,92vw);max-height:82vh;overflow-y:auto;background:#141a30;
  border:1px solid rgba(255,255,255,.18);border-radius:16px;padding:16px;
  display:flex;flex-direction:column;gap:10px;color:#fff;
  box-shadow:0 18px 50px rgba(0,0,0,.6);animation:popIn .18s ease
}
@keyframes popIn{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
.invite-card{text-align:center;font-size:15px;line-height:1.5;padding:18px 14px 14px}
.invite-card #invite-text{font-size:16px;line-height:1.4}
.invite-card #invite-text b{font-size:18px}
.row-btns{display:flex;gap:10px;justify-content:center;margin-top:12px}
.row-btns .btn{flex:1;min-width:0}
/* Compact rematch popup on all devices */
#rematch-popup .modal-card{width:min(300px,86vw);padding:14px 12px 12px;gap:8px}
#rematch-popup #rematch-text{font-size:14px;line-height:1.35}
#rematch-popup #rematch-text b{font-size:15px}
#rematch-popup .row-btns{flex-direction:row}
#rematch-popup .row-btns .btn{padding:10px 12px;font-size:13px;border-radius:10px;min-width:0}
.profile-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.modal-card input{
  background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.22);border-radius:10px;
  color:#fff;padding:10px 12px;font-size:14px;outline:none;font-family:inherit
}
.av-grid{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.av-grid .av{
  font-size:22px;padding:6px;border-radius:10px;cursor:pointer;
  border:2px solid transparent;background:rgba(255,255,255,.07)
}
.av-grid .av.sel{border-color:#ffd93b;background:rgba(255,217,59,.15)}

/* profile viewer content */
.prof-head{display:flex;align-items:center;gap:12px}
.prof-av{font-size:38px;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5))}
.prof-name{font-size:19px;font-weight:900}
.prof-sub{font-size:12px;color:rgba(255,255,255,.65)}
.prof-tr{margin-left:auto;font-weight:900;color:#ffd93b;font-size:16px}
.prof-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;text-align:center;
  font-size:10px;color:rgba(255,255,255,.6);letter-spacing:.4px}
.prof-stats b{display:block;font-size:17px;color:#fff;margin-bottom:2px}
.prof-deck{background:rgba(0,0,0,.32);border-radius:10px;padding:8px 10px;margin-bottom:6px}
.prof-deck-name{font-size:12px;font-weight:800;color:#ffd93b;margin-bottom:4px}
.prof-deck-cards{display:flex;flex-wrap:wrap;gap:4px}
.mini-card{font-size:17px;background:rgba(255,255,255,.09);border-radius:6px;padding:2px 5px}
.log-row{
  display:flex;align-items:center;gap:8px;font-size:12px;padding:6px 9px;border-radius:9px;
  background:rgba(0,0,0,.3);margin-bottom:4px
}
.log-res{font-weight:900;width:44px}
.log-row.win .log-res{color:#4ade67}.log-row.loss .log-res{color:#ff7676}.log-row.draw .log-res{color:#ffd93b}
.log-score{font-weight:700;width:56px}
.log-opp{flex:1;color:rgba(255,255,255,.75);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.log-when{color:rgba(255,255,255,.45);font-size:10px}

/* ---- deck slot chips ---- */
.deck-chips{display:flex;gap:6px;justify-content:center;margin:2px 0 6px}
.deck-chip{
  background:rgba(0,0,0,.42);border:1px solid rgba(255,255,255,.2);color:rgba(255,255,255,.75);
  border-radius:999px;padding:5px 13px;font-size:12px;font-weight:800;cursor:pointer;font-family:inherit
}
.deck-chip.on{background:rgba(255,217,59,.18);border-color:#ffd93b;color:#ffd93b}

.btn.tiny{font-size:11px;padding:5px 9px;border-radius:8px;min-width:0}
.btn.small{font-size:13px;padding:8px 14px}
.btn.ghosted{opacity:.45}
.prow{flex-wrap:wrap}
.prow.friend{padding-right:6px}

/* ---- deck phone polish ---- */
@media (max-width: 520px) {
  #deck-slots{gap:6px;max-width:100%}
  .dslot{min-height:84px}
  .dslot .s-emoji{font-size:22px}
  #card-palette{grid-template-columns:repeat(3,1fr);gap:6px;max-width:100%}
  .pcard{padding:5px 3px 3px}
  .pcard .d-emoji{font-size:18px}
  .pcard .d-name{font-size:7.5px}
  .pcard .d-stats{font-size:6.5px}
  .palette-head{max-width:100%}
  #screen-deck .social-wrap{max-width:100%}
  .deck-actions{position:sticky;bottom:0;z-index:2;padding:8px 0 4px;background:linear-gradient(180deg,rgba(16,32,52,0),#172034 30%);margin-top:8px}
  .prow{padding:6px 8px;gap:6px}
  .prow .btn.tiny{font-size:10px;padding:4px 7px}
  .invite-card{padding:14px 10px}
  #invite-popup .row-btns{flex-direction:column}
  #invite-popup .row-btns .btn{width:100%}
  /* keep rematch compact on phones — side-by-side */
  #rematch-popup .modal-card{width:min(290px,90vw);padding:12px 10px}
  #rematch-popup .row-btns .btn{width:auto}
}

/* ---- menu grid + phone responsive ---- */
.menu-grid{display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:360px}
@media (max-width: 520px), (max-height: 700px) {
  #screen-menu{overflow-y:auto;-webkit-overflow-scrolling:touch;justify-content:flex-start;padding-top:14px;padding-bottom:12px}
  .menu-title{font-size:26px;line-height:1.05}
  .menu-sub{font-size:12px;margin:2px 0 10px}
  .menu-inner{gap:8px;width:100%}
  #menu-me{position:static;margin-bottom:4px}
  .menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;max-width:340px}
  .menu-grid .btn{min-width:0;width:100%;padding:10px 8px;font-size:13px;border-radius:10px}
  .menu-help{margin-top:8px;font-size:10px}
  #screen-friends,#screen-chat,#screen-board,#screen-deck,#screen-settings{padding-top:14px}
  .social-wrap{max-width:96vw;max-height:none}
  .modal-card{width:94vw;max-height:88vh}
  .screen-title{font-size:22px}
  #screen-friends,#screen-board,#screen-chat{display:flex;flex-direction:column;align-items:center;overflow:hidden}
  #screen-friends .social-wrap,#screen-board .social-wrap,#screen-chat .social-wrap{flex:1;min-height:0;overflow-y:auto;width:min(430px,92vw)}
  #screen-friends .back-btn,#screen-board .back-btn,#screen-chat .back-btn{flex-shrink:0;position:sticky;bottom:0;margin-top:10px;width:min(430px,92vw);background:linear-gradient(180deg,#2d4a7a,#1e3458);box-shadow:0 -8px 16px rgba(16,32,52,0.95)}
  #screen-deck{overflow-y:auto;-webkit-overflow-scrolling:touch}
  .invite-card{border:2px solid rgba(255,217,59,0.35);box-shadow:0 8px 30px rgba(0,0,0,.5), 0 0 20px rgba(255,217,59,.15)}
  .invite-card #invite-text{font-size:17px}
  .invite-card #invite-text b{color:#ffd93b}
}
