:root{
  --bg:#08090f;
  --panel:rgba(255,255,255,.05);
  --panel-2:rgba(255,255,255,.04);
  --line:rgba(255,255,255,.11);
  --line-soft:rgba(255,255,255,.07);
  --ink:#e8e6ff;
  --ink-dim:rgba(200,195,255,.62);
  --ink-faint:rgba(200,195,255,.4);
  --ink-ghost:rgba(200,195,255,.28);
  --violet:#6C63D2;
  --violet-deep:#534AB7;
  --violet-soft:#AFA9EC;
  --mint:#9FE1CB;
  --mint-deep:#1D9E75;
  --rose:#D4537E;
  --red:#E24B4A;
  --red-soft:#f09595;
  --amber:#FAC775;
  --amber-deep:#BA7517;
  --disp:'Space Grotesk',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --body:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --r-lg:20px;--r-md:14px;--r-sm:10px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;overscroll-behavior:none}
body{background:var(--bg);font-family:var(--body);color:var(--ink);height:100dvh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased}
canvas#stars{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
canvas#confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:300}
.nebula{position:fixed;border-radius:50%;filter:blur(80px);pointer-events:none;z-index:0}
.n1{width:440px;height:440px;background:rgba(83,74,183,.16);top:-120px;left:-90px}
.n2{width:320px;height:320px;background:rgba(15,110,86,.10);bottom:-90px;right:-70px}
.n3{width:240px;height:240px;background:rgba(212,83,126,.08);top:38%;right:4%}
#root{position:relative;z-index:1;flex:1;display:block;overflow-y:auto;overflow-x:hidden}
.page{display:none;min-height:100%;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem 1.25rem;animation:pageIn .3s cubic-bezier(.22,1,.36,1)}
.page.active{display:flex}
h1,h2,h3,.disp{font-family:var(--disp)}

/* ============ TOASTS ============ */
.toast-stack{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:400;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:min(92vw,420px)}
.toast{background:#161728;border:.5px solid var(--line);border-radius:12px;padding:10px 16px;font-size:13px;color:var(--ink-dim);box-shadow:0 8px 32px rgba(0,0,0,.55);animation:toastIn .28s cubic-bezier(.34,1.4,.64,1);line-height:1.5;text-align:center;max-width:100%}
.toast.ok{border-color:rgba(29,158,117,.4);color:var(--mint)}
.toast.err{border-color:rgba(226,75,74,.4);color:var(--red-soft)}
.toast.warn{border-color:rgba(186,117,23,.45);color:var(--amber)}
.toast.out{animation:toastOut .25s forwards}
@keyframes toastIn{from{opacity:0;transform:translateY(-12px) scale(.95)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(-8px) scale(.96)}}

/* ============ HOME ============ */
.logo-wrap{text-align:center;margin-bottom:1.25rem}
.logo-img{width:132px;height:auto;display:block;margin:0 auto;filter:drop-shadow(0 6px 24px rgba(83,74,183,.35))}
.logo-sub{font-family:var(--disp);font-size:11px;color:var(--ink-faint);letter-spacing:.22em;text-transform:uppercase;margin-top:8px}
.home-card{background:var(--panel);border:.5px solid var(--line);border-radius:var(--r-lg);padding:1.35rem;width:100%;max-width:400px;backdrop-filter:blur(8px)}
.section-title{font-family:var(--disp);font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.12em;margin-bottom:.5rem}
input.fi{width:100%;background:rgba(255,255,255,.07);border:.5px solid rgba(255,255,255,.15);border-radius:12px;padding:12px 14px;color:var(--ink);font-size:15px;outline:none;transition:border .2s,background .2s;font-family:inherit;margin-bottom:.6rem;-webkit-appearance:none;appearance:none}
input.fi:focus{border-color:rgba(127,119,221,.75);background:rgba(127,119,221,.1);box-shadow:0 0 0 3px rgba(108,99,210,.14)}
input.fi::placeholder{color:var(--ink-ghost);text-transform:none;letter-spacing:normal}
input.fi.code-input{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase}
.divider{display:flex;align-items:center;gap:10px;margin:.7rem 0}
.divider span{font-size:11px;color:rgba(200,195,255,.3);white-space:nowrap;font-family:var(--disp);letter-spacing:.08em}
.divider::before,.divider::after{content:'';flex:1;height:.5px;background:rgba(255,255,255,.1)}
button{font-family:var(--disp)}
button.bp{width:100%;padding:13px;border:none;border-radius:12px;background:linear-gradient(135deg,#6C63D2,#4A41A8);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .18s,opacity .2s;box-shadow:0 4px 22px rgba(83,74,183,.4);letter-spacing:.02em}
button.bp:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(83,74,183,.55)}
button.bp:active{transform:scale(.97)}
button.bp:disabled{opacity:.45;cursor:default;transform:none;box-shadow:none}
button.bs{width:100%;padding:12px;border:.5px solid rgba(255,255,255,.16);border-radius:12px;background:rgba(255,255,255,.05);color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;transition:all .18s}
button.bs:hover{background:rgba(255,255,255,.1);transform:translateY(-1px)}
button.bs:active{transform:scale(.97)}
.eb{background:rgba(226,75,74,.12);border:.5px solid rgba(226,75,74,.32);border-radius:10px;padding:10px 14px;margin-bottom:10px;color:var(--red-soft);font-size:13px;display:none;line-height:1.5;animation:fadeIn .22s}
.loading-txt{font-size:13px;color:var(--ink-faint);text-align:center;padding:10px 0 2px;display:none;align-items:center;justify-content:center;gap:8px}
.loading-txt.on{display:flex}
.spinner{width:14px;height:14px;border:2px solid rgba(175,169,236,.25);border-top-color:var(--violet-soft);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
.join-banner{display:none;background:rgba(127,119,221,.12);border:.5px solid rgba(127,119,221,.35);border-radius:12px;padding:10px 14px;margin-bottom:1rem;font-size:13px;color:var(--violet-soft);text-align:center;line-height:1.5}

/* ============ ROOM CODE TILES (signature) ============ */
.code-tiles{display:flex;gap:5px;justify-content:center;margin:2px 0 4px}
.code-tile{font-family:var(--mono);font-weight:700;font-size:19px;color:var(--violet-soft);background:linear-gradient(180deg,rgba(127,119,221,.16),rgba(127,119,221,.06));border:.5px solid rgba(127,119,221,.4);border-radius:9px;width:34px;height:42px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 12px rgba(83,74,183,.25),inset 0 1px 0 rgba(255,255,255,.08);animation:tileIn .4s cubic-bezier(.34,1.5,.64,1) backwards}
.code-tile:nth-child(2){animation-delay:.04s}.code-tile:nth-child(3){animation-delay:.08s}
.code-tile:nth-child(4){animation-delay:.12s}.code-tile:nth-child(5){animation-delay:.16s}
.code-tile:nth-child(6){animation-delay:.2s}.code-tile:nth-child(7){animation-delay:.24s}
@keyframes tileIn{from{opacity:0;transform:translateY(8px) rotate(-4deg)}to{opacity:1;transform:none}}

/* ============ LOBBY ============ */
.lobby-page-inner{width:100%;max-width:540px;display:flex;flex-direction:column}
.lobby-header{text-align:center;margin-bottom:1rem}
.lobby-kicker{font-family:var(--disp);font-size:11px;color:var(--ink-faint);letter-spacing:.16em;text-transform:uppercase;margin-bottom:8px}
.lobby-title{font-family:var(--disp);font-size:20px;font-weight:600;color:var(--ink);margin-top:6px}
.room-control-bar{background:var(--panel-2);border:.5px solid var(--line-soft);border-radius:var(--r-md);padding:10px 13px;margin-bottom:.85rem;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
#p-lobby .room-control-bar{position:sticky;top:0;z-index:60;backdrop-filter:blur(12px);background:rgba(18,20,34,.9);box-shadow:0 6px 20px rgba(0,0,0,.35)}
.room-actions{display:flex;gap:6px;align-items:center}
.rc-btn{font-size:11px;font-weight:500;padding:7px 11px;border-radius:9px;cursor:pointer;border:.5px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);color:var(--ink-dim);transition:all .18s;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.rc-btn:hover{background:rgba(255,255,255,.12);color:var(--ink)}
.rc-btn.copied{color:var(--mint);border-color:rgba(29,158,117,.4)}
.room-lock-toggle{display:none;align-items:center;border-radius:20px;overflow:hidden;border:.5px solid rgba(255,255,255,.15);flex-shrink:0;cursor:pointer;font-size:10px;font-weight:700;letter-spacing:.06em;height:28px;font-family:var(--disp)}
.room-lock-toggle span{padding:0 11px;height:100%;display:flex;align-items:center;transition:all .2s}
.rlt-open{background:var(--mint-deep);color:#fff}
.rlt-closed{background:var(--rose);color:#fff}
.rlt-open.inactive{background:rgba(29,158,117,.18);color:rgba(255,255,255,.35)}
.rlt-closed.inactive{background:rgba(212,83,126,.18);color:rgba(255,255,255,.35)}

/* GAME SELECT */
.game-select-section{margin-bottom:.85rem}
.game-select-label{font-family:var(--disp);font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.12em;margin-bottom:.55rem}
.game-cards{display:flex;gap:8px}
.game-card{flex:1;background:var(--panel-2);border:.5px solid rgba(255,255,255,.1);border-radius:13px;padding:13px 10px;cursor:pointer;transition:all .2s;text-align:center;position:relative;overflow:hidden}
.game-card:hover{background:rgba(255,255,255,.08);transform:translateY(-2px)}
.game-card.selected{background:rgba(127,119,221,.15);border-color:rgba(127,119,221,.55);box-shadow:0 0 0 1px rgba(127,119,221,.25),0 4px 18px rgba(83,74,183,.2)}
.game-card-icon{font-size:23px;margin-bottom:5px}
.game-card-name{font-family:var(--disp);font-size:12px;font-weight:600;color:var(--ink)}
.game-card-desc{font-size:10px;color:var(--ink-faint);margin-top:3px;line-height:1.45}
.selected-game-display{background:rgba(127,119,221,.08);border:.5px solid rgba(127,119,221,.25);border-radius:11px;padding:11px 13px;font-size:13px;color:var(--ink-dim);line-height:1.55}
.selected-game-display strong{color:var(--violet-soft)}
.cat-picker{display:none;margin-top:.6rem}
.cat-picker.on{display:block;animation:fadeIn .25s}
.cat-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:104px;overflow-y:auto;padding:2px}
.cat-chip{font-size:12px;padding:6px 12px;border-radius:18px;background:rgba(255,255,255,.05);border:.5px solid rgba(255,255,255,.12);color:var(--ink-dim);cursor:pointer;transition:all .18s;font-family:var(--disp);font-weight:500}
.cat-chip:hover{background:rgba(255,255,255,.1)}
.cat-chip.selected{background:rgba(29,158,117,.16);border-color:rgba(29,158,117,.5);color:var(--mint)}
.cat-loading{font-size:12px;color:var(--ink-ghost);padding:4px 0}

/* PLAYERS PANEL */
.players-panel{background:var(--panel-2);border:.5px solid rgba(255,255,255,.1);border-radius:16px;padding:1rem 1.1rem;margin-bottom:.85rem}
.players-panel-title{font-family:var(--disp);font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.12em;margin-bottom:.7rem;display:flex;align-items:center;justify-content:space-between}
.players-section-label{font-size:10px;color:rgba(200,195,255,.35);text-transform:uppercase;letter-spacing:.09em;margin:8px 0 4px;padding-top:7px;border-top:.5px solid rgba(255,255,255,.06);font-family:var(--disp)}
.player-row{display:flex;align-items:center;justify-content:space-between;padding:7px 0;border-bottom:.5px solid rgba(255,255,255,.06);animation:fadeIn .25s}
.player-row:last-child{border-bottom:none;padding-bottom:0}
.player-row-left{display:flex;align-items:center;gap:10px;min-width:0}
.avatar{width:33px;height:33px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;color:#fff;font-family:var(--disp);box-shadow:inset 0 -2px 6px rgba(0,0,0,.25)}
.player-row-name{font-size:14px;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.player-row-name.me-name{color:var(--mint)}
.player-row-name.spectator-name{color:rgba(200,195,255,.5);font-style:italic}
.host-badge{font-size:10px;background:rgba(186,117,23,.2);color:var(--amber);border:.5px solid rgba(186,117,23,.4);border-radius:8px;padding:2px 7px;margin-left:6px;white-space:nowrap}
.spectator-badge{font-size:10px;background:rgba(127,119,221,.1);color:rgba(200,195,255,.5);border:.5px solid rgba(255,255,255,.1);border-radius:8px;padding:2px 7px;margin-left:6px;white-space:nowrap}
.reconnecting-badge{font-size:10px;background:rgba(226,75,74,.15);color:var(--red-soft);border:.5px solid rgba(226,75,74,.3);border-radius:8px;padding:2px 7px;margin-left:6px;animation:blink 1.4s infinite;white-space:nowrap}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
.host-actions{display:flex;gap:5px;flex-shrink:0}
.mini-btn{font-size:11px;color:var(--ink-faint);background:rgba(255,255,255,.06);border:.5px solid rgba(255,255,255,.1);border-radius:7px;padding:4px 9px;cursor:pointer;transition:all .18s;white-space:nowrap;font-family:var(--disp);font-weight:500}
.mini-btn:hover{background:rgba(255,255,255,.12);color:var(--ink)}
.mini-btn.amber{color:rgba(250,199,117,.85);background:rgba(186,117,23,.1);border-color:rgba(186,117,23,.3)}
.mini-btn.amber:hover{background:rgba(186,117,23,.2);color:var(--amber)}
.mini-btn.danger{color:rgba(240,149,149,.8);background:rgba(226,75,74,.08);border-color:rgba(226,75,74,.25)}
.mini-btn.danger:hover{background:rgba(226,75,74,.18);color:var(--red-soft)}
.empty-slot{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:.5px solid rgba(255,255,255,.06);opacity:.4}
.empty-slot:last-child{border-bottom:none}
.empty-avatar{width:33px;height:33px;border-radius:50%;background:rgba(255,255,255,.06);border:.5px dashed rgba(255,255,255,.15)}
.empty-name{font-size:13px;color:rgba(200,195,255,.35);font-style:italic}
.lobby-info{font-size:13px;color:var(--ink-faint);text-align:center;margin-bottom:.85rem;line-height:1.6}
.lobby-info strong{color:var(--mint);font-weight:500}
.lobby-buttons{display:flex;flex-direction:column;gap:.6rem}
.host-req-banner{background:rgba(186,117,23,.12);border:.5px solid rgba(186,117,23,.35);border-radius:12px;padding:9px 12px;margin-bottom:.75rem;display:none;animation:slideUp .25s cubic-bezier(.22,1,.36,1)}
.host-req-banner.show{display:flex;align-items:center;justify-content:space-between;gap:10px}
.host-req-text{font-size:13px;color:var(--amber);flex:1;line-height:1.4}
.host-req-btns{display:flex;gap:6px;flex-shrink:0}
.host-req-btns button{padding:5px 11px;border-radius:8px;font-size:12px;cursor:pointer;border:none;transition:all .18s}
.hrb-yes{background:rgba(29,158,117,.2);color:var(--mint);border:.5px solid rgba(29,158,117,.4)!important}
.hrb-yes:hover{background:rgba(29,158,117,.35)!important}
.hrb-no{background:rgba(226,75,74,.15);color:var(--red-soft);border:.5px solid rgba(226,75,74,.3)!important}
.hrb-no:hover{background:rgba(226,75,74,.25)!important}

/* ============ FOOTER ============ */
.site-footer{position:relative;z-index:1;text-align:center;padding:.7rem 1rem 1rem;flex-shrink:0}
.site-footer .copyright{font-size:11px;color:rgba(200,195,255,.25);display:block;margin-bottom:4px}
.site-footer a{font-size:11px;color:rgba(200,195,255,.3);text-decoration:none;margin:0 8px;transition:color .15s;letter-spacing:.04em}
.site-footer a:hover{color:rgba(200,195,255,.6)}

/* ============ GAME ============ */
.game-outer{width:100%;max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:10px;padding:1.25rem;min-height:100%;justify-content:flex-start}
.game-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}
.game-logo{height:26px;width:auto;opacity:.7}
.topbar-right{display:flex;align-items:center;gap:6px}
.leave-btn{font-size:12px;color:var(--ink-faint);background:transparent;border:.5px solid rgba(255,255,255,.1);border-radius:8px;padding:6px 11px;cursor:pointer;transition:all .18s}
.leave-btn:hover{color:var(--red-soft);border-color:rgba(226,75,74,.4);background:rgba(226,75,74,.08)}
.lobby-back-btn{font-size:12px;color:var(--ink-faint);background:transparent;border:.5px solid rgba(255,255,255,.1);border-radius:8px;padding:6px 11px;cursor:pointer;transition:all .18s;display:none}
.lobby-back-btn:hover{color:var(--amber);border-color:rgba(186,117,23,.4);background:rgba(186,117,23,.08)}
.game-main{display:flex;gap:10px;flex:1;min-height:0}
.game-left{flex:1;display:flex;flex-direction:column;gap:10px;min-width:0}
.game-right{width:160px;flex-shrink:0;display:flex;flex-direction:column;gap:8px}
.g-card{background:var(--panel);border:.5px solid var(--line);border-radius:13px;padding:11px 14px;transition:box-shadow .3s,border-color .3s}
.g-card.my-turn-glow{border-color:rgba(159,225,203,.45);box-shadow:0 0 0 1px rgba(159,225,203,.2),0 4px 24px rgba(29,158,117,.18)}
.g-lbl{font-family:var(--disp);font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px}
.g-val{font-size:16px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--disp)}
.g-val.mono{font-family:var(--mono);color:var(--mint);font-weight:700}
.game-info-row{display:flex;gap:8px}
.game-info-row .g-card{flex:1}
.players-sidebar{background:var(--panel-2);border:.5px solid rgba(255,255,255,.1);border-radius:13px;padding:11px 13px;flex:1;overflow-y:auto}
.sidebar-title{font-family:var(--disp);font-size:10px;color:rgba(200,195,255,.38);text-transform:uppercase;letter-spacing:.1em;margin-bottom:9px}
.sidebar-section{font-size:9px;color:rgba(200,195,255,.3);text-transform:uppercase;letter-spacing:.09em;margin:7px 0 5px;padding-top:6px;border-top:.5px solid rgba(255,255,255,.06);font-family:var(--disp)}
.sidebar-player{display:flex;align-items:center;gap:7px;margin-bottom:7px;flex-wrap:wrap}
.sidebar-player:last-child{margin-bottom:0}
.sidebar-avatar{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;color:#fff;font-family:var(--disp)}
.sidebar-name{font-size:12px;color:rgba(200,195,255,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.sidebar-name.active-turn{color:#CECBF6;font-weight:600}
.sidebar-name.elim-name{text-decoration:line-through;opacity:.35}
.sidebar-name.reconn-name{color:var(--red-soft)}
.sidebar-name.spectator-sname{color:rgba(200,195,255,.4);font-style:italic}
.sidebar-turn-dot{width:6px;height:6px;border-radius:50%;background:var(--violet-soft);flex-shrink:0;animation:pulse 1s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.sidebar-mini{font-size:10px;padding:3px 7px;border-radius:6px;cursor:pointer;font-family:var(--disp);font-weight:500;margin-top:3px;width:100%;transition:all .18s}
.sm-amber{background:rgba(186,117,23,.13);color:var(--amber);border:.5px solid rgba(186,117,23,.3)}
.sm-amber:hover{background:rgba(186,117,23,.24)}
.sm-red{background:rgba(226,75,74,.1);color:var(--red-soft);border:.5px solid rgba(226,75,74,.25)}
.sm-red:hover{background:rgba(226,75,74,.2)}
.hint-txt{font-size:13px;color:rgba(200,195,255,.55);min-height:18px;line-height:1.55}
.hint-txt span{color:var(--violet-soft);font-weight:600}
.hint-txt .big-letter{font-family:var(--mono);font-weight:700;color:var(--mint);font-size:14px}
.spectator-banner{background:rgba(127,119,221,.08);border:.5px solid rgba(127,119,221,.2);border-radius:10px;padding:9px 13px;font-size:12px;color:rgba(200,195,255,.55);text-align:center;line-height:1.5}
.game-eb{background:rgba(226,75,74,.12);border:.5px solid rgba(226,75,74,.32);border-radius:10px;padding:9px 13px;color:var(--red-soft);font-size:13px;display:none;line-height:1.5;animation:fadeIn .22s}
.inp-row{display:flex;gap:8px}
.inp-row input.fi{flex:1;margin:0}
.inp-row input.fi.shake{animation:shake .4s}
.inp-row button.bp{width:auto;padding:12px 20px;font-size:14px}
.words-sec{display:flex;flex-direction:column;min-height:74px}
.words-lbl{font-family:var(--disp);font-size:10px;color:rgba(200,195,255,.32);text-transform:uppercase;letter-spacing:.1em;margin-bottom:7px;display:flex;justify-content:space-between}
.words-count{color:rgba(200,195,255,.45)}
.chips{display:flex;flex-wrap:wrap;gap:5px;align-content:flex-start;max-height:118px;overflow-y:auto;padding-bottom:2px}
.chip{font-size:12px;padding:4px 10px;border-radius:20px;background:rgba(255,255,255,.055);border:.5px solid rgba(255,255,255,.08);color:rgba(200,195,255,.65);font-family:var(--mono)}
.chip-new{animation:chipPop .32s cubic-bezier(.34,1.56,.64,1)}
.chip .own{font-size:10px;opacity:.5;margin-left:4px;font-family:var(--body)}
.status-bar{font-size:12px;color:rgba(200,195,255,.4);text-align:center;padding:3px 0;font-family:var(--disp)}
.status-bar.hot{color:var(--mint)}
.event-toast{background:rgba(255,255,255,.07);border:.5px solid rgba(255,255,255,.12);border-radius:10px;padding:8px 13px;font-size:12px;color:rgba(200,195,255,.65);text-align:center;line-height:1.5;animation:fadeIn .25s}
.reconn-banner{background:rgba(226,75,74,.1);border:.5px solid rgba(226,75,74,.3);border-radius:10px;padding:9px 13px;font-size:12px;color:var(--red-soft);text-align:center;display:none;animation:fadeIn .3s;line-height:1.5}
.skip-turn-btn{display:none;margin:0 auto;width:auto;padding:7px 16px;font-size:12px;border-radius:9px;background:rgba(186,117,23,.14);color:var(--amber);border:.5px solid rgba(186,117,23,.35);cursor:pointer;transition:all .18s}
.skip-turn-btn:hover{background:rgba(186,117,23,.25)}

/* ============ VOTE OVERLAY ============ */
.vote-overlay{position:fixed;inset:0;background:rgba(8,9,15,.85);display:none;align-items:center;justify-content:center;z-index:200;backdrop-filter:blur(8px);padding:1.5rem}
.vote-overlay.show{display:flex}
.vote-card{background:#12131f;border:.5px solid rgba(255,255,255,.15);border-radius:18px;padding:1.5rem;max-width:340px;width:100%;animation:slideUp .3s cubic-bezier(.22,1,.36,1);text-align:center}
.vote-title{font-family:var(--disp);font-size:14px;font-weight:700;color:var(--red-soft);margin-bottom:.4rem;letter-spacing:.06em}
.vote-desc{font-size:13px;color:var(--ink-dim);margin-bottom:1.2rem;line-height:1.65}
.vote-desc strong{color:var(--violet-soft)}
.vote-timer-wrap{display:flex;align-items:center;justify-content:center;margin:0 auto 1.15rem;position:relative;width:80px;height:80px}
.vote-timer-svg{transform:rotate(-90deg)}
.vote-timer-track{fill:none;stroke:rgba(255,255,255,.08);stroke-width:5}
.vote-timer-fill{fill:none;stroke:var(--mint);stroke-width:5;stroke-linecap:round;transition:stroke-dashoffset .95s linear,stroke .5s}
.vote-timer-num{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:22px;font-weight:700;color:var(--ink);font-family:var(--mono)}
.vote-result-row{display:flex;justify-content:center;gap:1.5rem;font-size:13px;color:rgba(200,195,255,.55)}
.vote-result-row span strong{color:var(--ink);font-size:16px;font-family:var(--mono)}
.vote-btns{display:flex;gap:8px;margin-top:1rem}
.vote-btns button{flex:1;padding:11px;border-radius:11px;font-size:14px;cursor:pointer;transition:all .18s;border:.5px solid rgba(255,255,255,.13);background:rgba(255,255,255,.06);color:var(--ink);font-weight:600}
.vote-btns button:hover{transform:translateY(-1px)}
.vote-btns button.v-yes{background:rgba(29,158,117,.15);color:var(--mint);border-color:rgba(29,158,117,.4)}
.vote-btns button.v-no{background:rgba(226,75,74,.15);color:var(--red-soft);border-color:rgba(226,75,74,.32)}
.vote-btns button:disabled{opacity:.4;cursor:default;transform:none}
.vote-waiting{font-size:12px;color:var(--ink-ghost);margin-top:.9rem;display:none;font-style:italic}

/* ============ CHAT ============ */
.chat-fab{position:fixed;bottom:1.25rem;right:1.25rem;width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#6C63D2,#4A41A8);border:none;cursor:pointer;display:none;align-items:center;justify-content:center;font-size:20px;box-shadow:0 4px 20px rgba(83,74,183,.5);z-index:50;transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s}
.chat-fab.visible{display:flex}
.chat-fab:hover{transform:scale(1.1)}
.chat-fab:active{transform:scale(.93)}
.chat-fab .chat-unread{position:absolute;top:-2px;right:-2px;min-width:18px;height:18px;background:var(--rose);border-radius:9px;font-size:10px;font-weight:700;color:#fff;display:none;align-items:center;justify-content:center;padding:0 4px}
.chat-fab .chat-unread.show{display:flex}
.chat-panel{position:fixed;bottom:5rem;right:1.25rem;width:302px;max-height:420px;background:#12131f;border:.5px solid rgba(255,255,255,.15);border-radius:16px;display:none;flex-direction:column;z-index:49;animation:slideUp .25s cubic-bezier(.22,1,.36,1);box-shadow:0 8px 32px rgba(0,0,0,.5)}
.chat-panel.open{display:flex}
.chat-header{padding:12px 14px;border-bottom:.5px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.chat-header-title{font-family:var(--disp);font-size:13px;font-weight:600;color:var(--ink)}
.chat-close{background:none;border:none;color:rgba(200,195,255,.4);cursor:pointer;font-size:16px;padding:0;line-height:1;transition:color .15s}
.chat-close:hover{color:var(--red-soft)}
.chat-messages{flex:1;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:6px;min-height:120px}
.chat-msg{font-size:12px;line-height:1.5;animation:fadeIn .2s;word-break:break-word}
.chat-msg .cm-name{font-weight:600;margin-right:5px}
.chat-msg .cm-text{color:rgba(200,195,255,.75)}
.chat-msg.spectator-msg .cm-name{opacity:.6}
.chat-msg.spectator-msg .cm-text{opacity:.5;font-style:italic}
.chat-inp-row{display:flex;gap:6px;padding:8px 10px;border-top:.5px solid rgba(255,255,255,.08);flex-shrink:0}
.chat-inp{flex:1;background:rgba(255,255,255,.07);border:.5px solid rgba(255,255,255,.12);border-radius:8px;padding:7px 10px;color:var(--ink);font-size:13px;outline:none;font-family:inherit;min-width:0}
.chat-inp:focus{border-color:rgba(127,119,221,.5)}
.chat-inp::placeholder{color:var(--ink-ghost)}
.chat-send-btn{background:rgba(127,119,221,.2);border:.5px solid rgba(127,119,221,.4);border-radius:8px;color:var(--violet-soft);cursor:pointer;padding:7px 11px;font-size:13px;transition:all .18s}
.chat-send-btn:hover{background:rgba(127,119,221,.35)}
.chat-system-msg{font-size:11px;color:rgba(200,195,255,.3);text-align:center;font-style:italic}

/* ============ MODAL ============ */
.overlay{position:fixed;inset:0;background:rgba(8,9,15,.82);display:none;align-items:center;justify-content:center;z-index:100;backdrop-filter:blur(6px);padding:1.5rem}
.overlay.show{display:flex}
.modal{background:#12131f;border:.5px solid rgba(255,255,255,.15);border-radius:16px;padding:1.5rem;max-width:330px;width:100%;animation:slideUp .3s cubic-bezier(.22,1,.36,1)}
.modal h3{font-family:var(--disp);font-size:15px;font-weight:600;margin-bottom:.55rem}
.modal p{font-size:13px;color:var(--ink-dim);margin-bottom:1.2rem;line-height:1.65}
.modal-btns{display:flex;gap:8px}
.modal-btns button{flex:1;padding:10px;border-radius:10px;font-size:13px;cursor:pointer;border:.5px solid rgba(255,255,255,.13);background:rgba(255,255,255,.06);color:var(--ink);transition:all .18s}
.modal-btns button:hover{background:rgba(255,255,255,.12);transform:translateY(-1px)}
.modal-btns button.confirm-amber{background:rgba(186,117,23,.15);color:var(--amber);border-color:rgba(186,117,23,.4)}
.modal-btns button.confirm-red{background:rgba(226,75,74,.15);color:var(--red-soft);border-color:rgba(226,75,74,.32)}

/* ============ WIN ============ */
.win-page-inner{width:100%;max-width:400px;text-align:center}
.win-icon{font-size:56px;margin-bottom:.8rem;animation:winPop .5s cubic-bezier(.34,1.56,.64,1)}
@keyframes winPop{from{opacity:0;transform:scale(.4) rotate(-12deg)}to{opacity:1;transform:none}}
.win-title{font-family:var(--disp);font-size:27px;font-weight:700;color:var(--ink);margin-bottom:.5rem}
.win-sub{font-size:14px;color:rgba(200,195,255,.5);margin-bottom:1.4rem;line-height:1.6}
.win-again-status{background:var(--panel);border:.5px solid rgba(255,255,255,.1);border-radius:12px;padding:12px 16px;margin-bottom:1rem;font-size:13px;color:var(--ink-dim);line-height:1.6;display:none}
.win-again-status strong{color:var(--mint);font-weight:500}
.win-easter{font-size:13px;color:var(--ink-faint);font-style:italic;margin-bottom:.75rem;display:none}
.win-buttons{display:flex;flex-direction:column;gap:.6rem;max-width:260px;margin:0 auto}

@keyframes pageIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@keyframes slideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes chipPop{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}
@keyframes shake{0%,100%{transform:none}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}

@media(max-width:600px){
  .game-right{display:none}
  .game-main{flex-direction:column}
  .game-outer{padding:1rem}
  .logo-img{width:140px}
  .game-cards{flex-direction:column}
  .chat-panel{width:calc(100vw - 2.5rem);right:1.25rem}
  .code-tile{width:30px;height:38px;font-size:17px}
}
@media(max-width:480px){.page{padding:1rem}}
@media(orientation:landscape)and(max-height:500px){
  .page{justify-content:flex-start;padding-top:.75rem}
  .logo-wrap{margin-bottom:.75rem}
  .logo-img{width:100px}
  .logo-sub{display:none}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;transition-duration:.001s!important}
}

/* ============ GEÇİŞ EKRANI (site geneli) ============ */
.trans-overlay{position:fixed;inset:0;background:rgba(8,9,15,.96);z-index:500;display:none;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:2rem;backdrop-filter:blur(10px)}
.trans-overlay.show{display:flex;animation:transIn .35s ease}
.trans-overlay.hiding{animation:transOut .4s forwards}
.trans-logo{width:110px;height:auto;filter:drop-shadow(0 6px 28px rgba(83,74,183,.45));animation:transPulse 1.6s ease-in-out infinite;margin-bottom:1.1rem}
.trans-title{font-family:var(--disp);font-size:clamp(19px,4.5vw,27px);font-weight:700;color:var(--ink);line-height:1.4;max-width:520px}
.trans-sub{font-size:14px;color:var(--ink-dim);margin-top:.6rem;line-height:1.7;max-width:460px}
.trans-sub .hl{color:var(--mint);font-weight:600}
@keyframes transIn{from{opacity:0}to{opacity:1}}
@keyframes transOut{to{opacity:0}}
@keyframes transPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}

/* ============ OYUN KART DESTESİ ============ */
/* Boyutlar merkeze uzaklığa (tier) göre SABİT; kart kimliğine bağlı değil.
   Değişkenlerle tanımlı, mobilde tek yerden küçültülüyor. */
.deck-wrap{position:relative;margin:0 auto .4rem;width:100%;max-width:560px;user-select:none;
  --cw:220px;--ch:452px;--x1:118px;--x2:202px;--xh:250px;--sh:472px}
.deck-stage{position:relative;height:var(--sh);overflow:visible}
.deck-card{position:absolute;left:50%;top:50%;border-radius:18px;background:linear-gradient(180deg,#181a2c,#101120);border:.5px solid rgba(255,255,255,.13);box-shadow:0 10px 34px rgba(0,0,0,.5);overflow:hidden;display:flex;flex-direction:column;
  transition:transform .5s cubic-bezier(.22,1,.36,1),width .5s cubic-bezier(.22,1,.36,1),height .5s cubic-bezier(.22,1,.36,1),opacity .45s,box-shadow .3s,border-color .3s;will-change:transform,width,height}
.deck-stage.spinning .deck-card{transition-duration:.13s}
/* --- TIER'LAR --- */
.deck-card.t0{width:var(--cw);height:var(--ch);transform:translate(-50%,-50%);z-index:30;opacity:1;
  border-color:rgba(127,119,221,.65);box-shadow:0 0 0 1px rgba(127,119,221,.3),0 16px 48px rgba(83,74,183,.4);cursor:default}
.deck-card.t1l{width:calc(var(--cw)*.68);height:calc(var(--ch)*.72);transform:translate(-50%,-50%) translateX(calc(var(--x1)*-1)) rotate(-5deg);z-index:20;opacity:.96}
.deck-card.t1r{width:calc(var(--cw)*.68);height:calc(var(--ch)*.72);transform:translate(-50%,-50%) translateX(var(--x1)) rotate(5deg);z-index:20;opacity:.96}
.deck-card.t2l{width:calc(var(--cw)*.5);height:calc(var(--ch)*.55);transform:translate(-50%,-50%) translateX(calc(var(--x2)*-1)) rotate(-9deg);z-index:10;opacity:.82}
.deck-card.t2r{width:calc(var(--cw)*.5);height:calc(var(--ch)*.55);transform:translate(-50%,-50%) translateX(var(--x2)) rotate(9deg);z-index:10;opacity:.82}
.deck-card.thl{width:calc(var(--cw)*.5);height:calc(var(--ch)*.55);transform:translate(-50%,-50%) translateX(calc(var(--xh)*-1)) rotate(-11deg);z-index:4;opacity:0;pointer-events:none}
.deck-card.thr{width:calc(var(--cw)*.5);height:calc(var(--ch)*.55);transform:translate(-50%,-50%) translateX(var(--xh)) rotate(11deg);z-index:4;opacity:0;pointer-events:none}
/* --- HOVER: büyüme + yukarı kalkma + mor kenar ışıltısı --- */
.deck-card.t1l:hover{transform:translate(-50%,-50%) translateX(calc(var(--x1)*-1)) rotate(-5deg) translateY(-16px) scale(1.07);z-index:26;border-color:rgba(159,151,236,.95);box-shadow:0 0 0 1px rgba(159,151,236,.7),0 0 30px 7px rgba(127,119,221,.6),0 20px 44px rgba(83,74,183,.5)}
.deck-card.t1r:hover{transform:translate(-50%,-50%) translateX(var(--x1)) rotate(5deg) translateY(-16px) scale(1.07);z-index:26;border-color:rgba(159,151,236,.95);box-shadow:0 0 0 1px rgba(159,151,236,.7),0 0 30px 7px rgba(127,119,221,.6),0 20px 44px rgba(83,74,183,.5)}
.deck-card.t2l:hover{transform:translate(-50%,-50%) translateX(calc(var(--x2)*-1)) rotate(-9deg) translateY(-14px) scale(1.1);z-index:26;opacity:1;border-color:rgba(159,151,236,.95);box-shadow:0 0 0 1px rgba(159,151,236,.7),0 0 28px 7px rgba(127,119,221,.6),0 18px 40px rgba(83,74,183,.5)}
.deck-card.t2r:hover{transform:translate(-50%,-50%) translateX(var(--x2)) rotate(9deg) translateY(-14px) scale(1.1);z-index:26;opacity:1;border-color:rgba(159,151,236,.95);box-shadow:0 0 0 1px rgba(159,151,236,.7),0 0 28px 7px rgba(127,119,221,.6),0 18px 40px rgba(83,74,183,.5)}
.deck-card:not(.t0) .dc-time-slot{display:none}
/* --- KART İÇİ --- */
.dc-art{height:36%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:44px;background:linear-gradient(135deg,rgba(83,74,183,.35),rgba(29,158,117,.14));border-bottom:.5px solid rgba(255,255,255,.08);position:relative}
.dc-art::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.12),transparent 55%)}
.deck-card.t0 .dc-art{font-size:76px}
.deck-card.t2l .dc-art,.deck-card.t2r .dc-art,.deck-card.thl .dc-art,.deck-card.thr .dc-art{font-size:34px}
.dc-body{padding:10px 12px;display:flex;flex-direction:column;flex:1;min-height:0}
.dc-name{font-family:var(--disp);font-size:13px;font-weight:700;color:var(--ink);line-height:1.25}
.deck-card.t0 .dc-name{font-size:18px}
.dc-desc{font-size:10px;color:var(--ink-faint);margin-top:5px;line-height:1.45;flex:1}
.deck-card.t0 .dc-desc{font-size:12px;margin-top:8px}
.deck-card.t2l .dc-desc,.deck-card.t2r .dc-desc,.deck-card.thl .dc-desc,.deck-card.thr .dc-desc{display:none}
.soon-badge{position:absolute;top:11px;right:-28px;background:var(--rose);color:#fff;font-family:var(--disp);font-size:9px;font-weight:700;letter-spacing:.12em;padding:3px 32px;transform:rotate(38deg);box-shadow:0 2px 8px rgba(0,0,0,.4);z-index:2}
.time-btns{display:flex;gap:5px;margin-top:10px}
.time-btn{flex:1;font-family:var(--disp);font-size:11px;font-weight:600;padding:7px 3px;border-radius:8px;border:.5px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:var(--ink-dim);cursor:pointer;transition:all .15s;white-space:nowrap}
.time-btn:hover{background:rgba(255,255,255,.12)}
.time-btn.selected{background:rgba(29,158,117,.2);border-color:rgba(29,158,117,.55);color:var(--mint)}
.time-btn input{width:100%;background:transparent;border:none;outline:none;color:var(--mint);font-family:var(--mono);font-size:11px;text-align:center;padding:0}
.time-static{margin-top:10px;font-size:11px;color:var(--ink-faint);text-align:center;font-family:var(--disp)}
/* --- OKLAR: merkez karta göre SABİT konum (kart boyutundan bağımsız) --- */
.deck-arrow{position:absolute;top:calc(var(--sh)/2);left:50%;width:44px;height:44px;border-radius:50%;border:.5px solid rgba(255,255,255,.18);background:rgba(20,22,38,.72);color:var(--ink);font-size:19px;cursor:pointer;z-index:40;transition:background .18s,box-shadow .18s;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);box-shadow:0 4px 14px rgba(0,0,0,.5)}
.deck-arrow:hover{background:rgba(127,119,221,.55);box-shadow:0 0 16px 3px rgba(127,119,221,.5)}
.deck-arrow:disabled{opacity:.3;cursor:default}
.deck-arrow.da-left{transform:translate(calc(-50% - var(--cw)/2 - 20px),-50%)}
.deck-arrow.da-right{transform:translate(calc(-50% + var(--cw)/2 + 20px),-50%)}
.deck-arrow.da-left:active{transform:translate(calc(-50% - var(--cw)/2 - 20px),-50%) scale(.9)}
.deck-arrow.da-right:active{transform:translate(calc(-50% + var(--cw)/2 + 20px),-50%) scale(.9)}
.deck-bottom{display:flex;justify-content:center;margin-top:10px}
.deck-random{font-family:var(--disp);font-size:13px;font-weight:600;padding:9px 20px;border-radius:20px;border:.5px solid rgba(186,117,23,.4);background:rgba(186,117,23,.12);color:var(--amber);cursor:pointer;transition:all .18s}
.deck-random:hover{background:rgba(186,117,23,.24);transform:translateY(-1px)}
.deck-random:disabled{opacity:.4;cursor:default;transform:none}
.deck-guest-note{text-align:center;font-size:11px;color:var(--ink-ghost);margin-top:8px;font-family:var(--disp)}
@media(max-width:600px){
  .deck-wrap{max-width:360px;--cw:156px;--ch:322px;--x1:86px;--x2:145px;--xh:180px;--sh:340px}
  .deck-card.t0 .dc-art{font-size:56px}
  .deck-card.t0 .dc-name{font-size:15px}
  .deck-card.t0 .dc-desc{font-size:11px}
}

/* ============ KATILMA AŞAMALARI ============ */
.join-card{background:var(--panel);border:.5px solid var(--line);border-radius:var(--r-lg);padding:1.35rem;width:100%;max-width:400px;backdrop-filter:blur(8px)}
.join-stage{max-height:0;opacity:0;overflow:hidden;transition:max-height .45s cubic-bezier(.22,1,.36,1),opacity .4s,margin .45s;margin:0}
.join-stage.on{max-height:260px;opacity:1;margin-bottom:.35rem}
.stage-note{font-size:13px;color:var(--ink-dim);line-height:1.6;background:rgba(127,119,221,.09);border:.5px solid rgba(127,119,221,.25);border-radius:11px;padding:10px 13px;margin-bottom:.6rem}
.stage-note .hl{color:var(--mint);font-weight:600}
.stage-note.warn-note{background:rgba(186,117,23,.09);border-color:rgba(186,117,23,.3);color:var(--amber)}
.seat-alt-btn{width:100%;padding:11px;border:.5px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.05);color:var(--ink-dim);font-size:13px;font-family:var(--disp);font-weight:500;cursor:pointer;transition:all .18s;margin-top:.45rem}
.seat-alt-btn:hover{background:rgba(255,255,255,.1);color:var(--ink)}
.seat-alt-btn .hl{color:var(--violet-soft);font-weight:600}
.join-cancel{display:inline-block;margin-top:1rem;font-size:12px;color:var(--ink-ghost);background:none;border:none;cursor:pointer;font-family:var(--disp)}
.join-cancel:hover{color:var(--red-soft)}
.adv-toggle{font-size:11px;color:var(--ink-ghost);background:none;border:none;cursor:pointer;font-family:var(--disp);letter-spacing:.06em;padding:4px 0;margin-bottom:.35rem;display:block}
.adv-toggle:hover{color:var(--violet-soft)}
.adv-area{display:none}
.adv-area.on{display:block;animation:fadeIn .25s}

/* ============ AFK & SÜRE ============ */
.afk-big{font-family:var(--disp);font-size:20px;font-weight:700;color:var(--ink);text-align:center;margin-bottom:.6rem}
.afk-count{font-family:var(--mono);font-size:44px;font-weight:700;color:var(--amber);text-align:center;margin:.4rem 0 .9rem;animation:pulse 1s infinite}
.afk-count.danger{color:var(--red)}
.afk-btn{width:100%;padding:13px;border:none;border-radius:12px;background:linear-gradient(135deg,#1D9E75,#157a5a);color:#fff;font-family:var(--disp);font-size:14px;font-weight:600;cursor:pointer;transition:transform .15s;box-shadow:0 4px 20px rgba(29,158,117,.4)}
.afk-btn:active{transform:scale(.96)}
.turn-chip{display:inline-block;font-family:var(--mono);font-size:12px;font-weight:700;color:var(--amber);background:rgba(186,117,23,.14);border:.5px solid rgba(186,117,23,.35);border-radius:8px;padding:1px 8px;margin-left:8px;vertical-align:2px}
.turn-chip.danger{color:var(--red-soft);background:rgba(226,75,74,.12);border-color:rgba(226,75,74,.35);animation:pulse .8s infinite}

/* ============ İZLEYİCİ TERCİHİ ============ */
.spec-pref{display:flex;gap:8px;margin:0 auto 1rem;max-width:320px}
.spec-pref button{flex:1;padding:10px 8px;border-radius:11px;font-family:var(--disp);font-size:11.5px;font-weight:600;cursor:pointer;border:.5px solid rgba(255,255,255,.13);background:rgba(255,255,255,.05);color:var(--ink-dim);transition:all .18s;line-height:1.4}
.spec-pref button.sp-on{background:rgba(29,158,117,.16);border-color:rgba(29,158,117,.5);color:var(--mint)}


/* ================= TEMA AKSANLARI ================= */
:root{--accent:#6C63D2;--accent2:#9FE1CB;--accent-deep:#4A41A8;--glow:rgba(83,74,183,.4)}
body[data-theme="mint"]{--accent:#1D9E75;--accent2:#9FE1CB;--accent-deep:#0f6e56;--glow:rgba(29,158,117,.4)}
body[data-theme="rose"]{--accent:#D4537E;--accent2:#f0a5c0;--accent-deep:#a63a60;--glow:rgba(212,83,126,.4)}
body[data-theme="amber"]{--accent:#E08A3C;--accent2:#FAC775;--accent-deep:#b5661d;--glow:rgba(224,138,60,.38)}
body[data-theme="cyan"]{--accent:#2FA6C4;--accent2:#8fe3f0;--accent-deep:#1b7a92;--glow:rgba(47,166,196,.4)}

/* ================= ATMOSFER KATMANLARI ================= */
.fx-aurora{position:fixed;inset:-20% -10% auto -10%;height:70%;z-index:0;pointer-events:none;opacity:.5;
  background:
    radial-gradient(60% 80% at 20% 30%,color-mix(in srgb,var(--accent) 34%,transparent),transparent 60%),
    radial-gradient(50% 70% at 80% 20%,color-mix(in srgb,var(--accent2) 22%,transparent),transparent 60%),
    radial-gradient(50% 60% at 55% 45%,rgba(212,83,126,.14),transparent 60%);
  filter:blur(48px);animation:auroraShift 24s ease-in-out infinite alternate;will-change:transform,opacity}
@keyframes auroraShift{
  0%{transform:translate3d(-4%,-2%,0) scale(1.05);opacity:.42}
  50%{transform:translate3d(5%,3%,0) scale(1.15);opacity:.58}
  100%{transform:translate3d(-2%,4%,0) scale(1.08);opacity:.48}}
.fx-grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.fx-vignette{position:fixed;inset:0;z-index:3;pointer-events:none;
  background:radial-gradient(120% 100% at 50% 45%,transparent 55%,rgba(4,4,10,.55) 100%)}
/* nebula'ları canlandır */
.nebula{animation:nebFloat 26s ease-in-out infinite alternate;will-change:transform}
.n1{animation-duration:30s}.n2{animation-duration:22s;animation-delay:-6s}.n3{animation-duration:26s;animation-delay:-12s}
@keyframes nebFloat{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(24px,-18px,0) scale(1.12)}100%{transform:translate3d(-16px,20px,0) scale(1.05)}}

/* ================= CAM CİLASI (üst-highlight) ================= */
.home-card,.join-card,.players-panel,.room-control-bar,.game-left,.players-sidebar,.g-card,.win-page-inner,.modal,.vote-card{position:relative}
.home-card::before,.join-card::before,.players-panel::before,.win-page-inner::before,.modal::before,.vote-card::before{
  content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.09),transparent 22%);
  -webkit-mask:linear-gradient(180deg,#000,transparent 40%);mask:linear-gradient(180deg,#000,transparent 40%)}

/* ================= BUTON CİLASI (shine sweep + basış) ================= */
button.bp,button.deck-random,.rc-btn{position:relative;overflow:hidden}
button.bp::after,button.deck-random::after{content:'';position:absolute;top:0;left:-120%;width:60%;height:100%;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-18deg);transition:none}
button.bp:hover::after,button.deck-random:hover::after{animation:shineSweep .8s ease}
@keyframes shineSweep{to{left:130%}}
button.bp:active{transform:scale(.96)}
button.bp{box-shadow:0 4px 22px var(--glow),0 1px 0 rgba(255,255,255,.15) inset}

/* ================= TIKLAMA RIPPLE ================= */
.ripple{position:fixed;border-radius:50%;pointer-events:none;z-index:400;transform:translate(-50%,-50%);
  background:radial-gradient(circle,color-mix(in srgb,var(--accent2) 60%,transparent),transparent 70%);
  animation:rippleOut .6s ease-out forwards}
@keyframes rippleOut{from{width:0;height:0;opacity:.55}to{width:120px;height:120px;opacity:0}}

/* ================= LOGO CANLANMASI ================= */
.logo-img{animation:logoIn 1s cubic-bezier(.22,1,.36,1) both}
@keyframes logoIn{0%{opacity:0;transform:translateY(10px) scale(.9)}60%{opacity:1}100%{opacity:1;transform:none}}
#p-home.active .logo-img{animation:logoIn 1s cubic-bezier(.22,1,.36,1) both, logoFloat 5s ease-in-out 1s infinite}
@keyframes logoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}

/* ================= SAYFA GEÇİŞİ (akışkan) ================= */
@keyframes pageIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.page.active{animation:pageIn .42s cubic-bezier(.22,1,.36,1)}

/* ================= KELİME ZİNCİRİ (gerçek zincir) ================= */
.chips{position:relative}
.chip{position:relative}
.chip:not(:first-child)::before{content:'';position:absolute;left:-13px;top:50%;width:13px;height:3px;
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent2) 70%,transparent));transform:translateY(-50%);border-radius:2px;opacity:.7}
.chip.chip-new{animation:chainSnap .5s cubic-bezier(.34,1.56,.64,1)}
@keyframes chainSnap{0%{opacity:0;transform:scale(.4) translateY(-8px) rotate(-6deg)}55%{transform:scale(1.12) rotate(2deg)}100%{opacity:1;transform:none}}

/* ================= SIRA NABZI (senin sıran) ================= */
.my-turn-ring{position:fixed;inset:0;z-index:6;pointer-events:none;opacity:0;
  box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--accent2) 60%,transparent),inset 0 0 60px color-mix(in srgb,var(--accent2) 30%,transparent)}
.my-turn-ring.on{animation:turnPulse 2s ease-in-out infinite}
@keyframes turnPulse{0%,100%{opacity:0}50%{opacity:.9}}

/* ================= SİNEMATİK KAZANMA / ELEME ================= */
.win-icon{animation:winPop .7s cubic-bezier(.34,1.56,.64,1),winGlow 2.4s ease-in-out .7s infinite}
@keyframes winGlow{0%,100%{filter:drop-shadow(0 0 12px var(--glow))}50%{filter:drop-shadow(0 0 30px var(--accent2))}}
.win-title{animation:winTitleIn .8s cubic-bezier(.22,1,.36,1) both}
@keyframes winTitleIn{0%{opacity:0;transform:scale(.6) translateY(14px);letter-spacing:.3em}100%{opacity:1;transform:none;letter-spacing:normal}}
.elim-flash{position:fixed;inset:0;z-index:150;pointer-events:none;background:radial-gradient(circle at 50% 45%,rgba(226,75,74,.4),transparent 65%);opacity:0;animation:elimFlash .8s ease-out}
@keyframes elimFlash{0%{opacity:0}18%{opacity:1}100%{opacity:0}}
.sidebar-player.elim-out{animation:elimDrop .7s cubic-bezier(.4,0,.7,1) forwards}
@keyframes elimDrop{0%{transform:none;opacity:1}30%{transform:translateX(6px) rotate(2deg)}100%{transform:translateY(60px) rotate(14deg);opacity:0}}

/* ================= OYLAMA GERİLİMİ ================= */
.vote-timer-num.hurry{animation:votePanic .4s ease-in-out infinite;color:var(--red)!important}
@keyframes votePanic{0%,100%{transform:scale(1)}50%{transform:scale(1.22)}}
.vote-tally{display:flex;height:8px;border-radius:5px;overflow:hidden;margin:.6rem 0;background:rgba(255,255,255,.08)}
.vote-tally .vt-yes{background:linear-gradient(90deg,#1D9E75,#25c48f);transition:width .35s cubic-bezier(.22,1,.36,1)}
.vote-tally .vt-no{background:linear-gradient(90deg,#E24B4A,#f06a5f);transition:width .35s cubic-bezier(.22,1,.36,1)}
.vote-card{animation:voteIn .4s cubic-bezier(.34,1.56,.64,1)}
@keyframes voteIn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}

/* ================= PROCEDURAL AVATAR ================= */
.avatar,.sidebar-avatar{overflow:hidden;padding:0;background:transparent!important}
.avatar svg,.sidebar-avatar svg{width:100%;height:100%;display:block}
.gav-wrap{width:100%;height:100%;border-radius:inherit;overflow:hidden;display:block}

/* ================= EMPTY-STATE ================= */
.empty-slot{position:relative}
.empty-avatar{background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 40%,transparent),color-mix(in srgb,var(--accent2) 30%,transparent))!important;animation:emptyPulse 2.4s ease-in-out infinite}
@keyframes emptyPulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:.85;transform:scale(1.06)}}

/* ================= AYARLAR PANELİ + SES TUŞU ================= */
.settings-fab{position:fixed;top:14px;right:14px;z-index:70;width:42px;height:42px;border-radius:50%;
  border:.5px solid rgba(255,255,255,.16);background:rgba(20,22,38,.72);backdrop-filter:blur(8px);color:var(--ink);
  font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s,background .2s;box-shadow:0 4px 16px rgba(0,0,0,.4)}
.settings-fab:hover{background:color-mix(in srgb,var(--accent) 40%,rgba(20,22,38,.72));transform:rotate(40deg)}
.settings-panel{position:fixed;top:64px;right:14px;z-index:71;width:250px;background:rgba(16,18,30,.94);backdrop-filter:blur(16px);
  border:.5px solid var(--line);border-radius:16px;padding:16px;box-shadow:0 16px 50px rgba(0,0,0,.6);
  opacity:0;transform:translateY(-10px) scale(.96);transform-origin:top right;pointer-events:none;transition:all .25s cubic-bezier(.22,1,.36,1)}
.settings-panel.open{opacity:1;transform:none;pointer-events:auto}
.settings-panel h4{font-family:var(--disp);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 6px}
.set-row{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:.5px solid rgba(255,255,255,.06);font-size:13px;color:var(--ink-dim)}
.set-row:last-child{border-bottom:none}
.set-toggle{width:42px;height:24px;border-radius:14px;background:rgba(255,255,255,.14);position:relative;cursor:pointer;transition:background .2s;flex-shrink:0}
.set-toggle.on{background:var(--accent)}
.set-toggle::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.set-toggle.on::after{transform:translateX(18px)}
.theme-dots{display:flex;gap:8px;margin-top:4px}
.theme-dot{width:26px;height:26px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:transform .15s,border .15s}
.theme-dot:hover{transform:scale(1.15)}
.theme-dot.sel{border-color:#fff}
.avatar-picker-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:8px}
.avatar-opt{aspect-ratio:1;border-radius:12px;cursor:pointer;border:2px solid transparent;overflow:hidden;transition:transform .15s,border .15s;background:rgba(255,255,255,.04)}
.avatar-opt:hover{transform:scale(1.08)}
.avatar-opt.sel{border-color:var(--accent2)}

/* ================= GIBLE ================= */
#gible-root{position:fixed;inset:0;z-index:80;pointer-events:none;display:none}
#gible-root.gible-front{z-index:520}
#gible-cover{position:fixed;left:50%;top:50%;width:300vmax;height:300vmax;border-radius:50%;transform:translate(-50%,-50%);
  background:radial-gradient(circle,var(--accent) 0%,var(--accent-deep) 70%,#08090f 100%);opacity:0;pointer-events:none}
#gible-chair{position:absolute;left:0;top:0;pointer-events:none;opacity:0;transition:opacity .5s ease;z-index:1}
#gible-chair *{transition:fill .5s ease}
#gible-wrap{position:absolute;left:0;top:0;width:94px;height:102px;pointer-events:auto;cursor:grab;z-index:2;
  filter:drop-shadow(0 10px 22px rgba(0,0,0,.5));transition:opacity .4s;opacity:0;touch-action:none}
#gible-root.gible-in #gible-wrap{opacity:1}
#gible-wrap:active{cursor:grabbing}
#gible-svg{overflow:visible;width:100%;height:100%;display:block}
#gible-svg rect,#gible-svg path,#gible-svg circle,#gible-svg text,#gible-svg stop{transition:fill .5s ease,stroke .5s ease,stop-color .5s ease}
#gible-svg [id$="eyeL"],#gible-svg [id$="eyeR"],#gible-svg #gb-wingL,#gible-svg #gb-wingR,#gible-svg #gb-head,#gible-svg #gb-torso,#gible-svg #gb-ant,#gible-svg #gb-armL{transition:none}
#gible-fx{position:absolute;inset:0;pointer-events:none;z-index:3}
.gib-heart{position:absolute;font-size:16px;pointer-events:none;animation:heartFloat 1.1s ease-out forwards;will-change:transform,opacity}
@keyframes heartFloat{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}20%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--hx)),calc(-50% + var(--hy))) scale(1.1)}}
.gib-z{position:absolute;left:60%;top:14%;font-family:var(--disp);font-weight:700;color:var(--accent2);opacity:.85;font-size:15px;animation:zFloat 1.6s ease-out forwards}
@keyframes zFloat{0%{opacity:0;transform:translate(0,0) scale(.6)}25%{opacity:.9}100%{opacity:0;transform:translate(16px,-28px) scale(1.25)}}

@media(prefers-reduced-motion:reduce){
  .fx-aurora,.nebula,.logo-img,#p-home.active .logo-img{animation:none!important}
  .gib-heart,.gib-z{display:none}
}

/* avatar seçim satırı */
.avatar-row{display:flex;align-items:center;gap:10px;padding:9px 12px;margin-bottom:.6rem;border-radius:12px;
  border:.5px solid rgba(255,255,255,.14);background:rgba(255,255,255,.05);cursor:pointer;transition:all .18s;font-size:13px;color:var(--ink-dim);font-family:var(--disp)}
.avatar-row:hover{background:rgba(255,255,255,.1);color:var(--ink)}
.avatar-preview{width:34px;height:34px;border-radius:10px;overflow:hidden;flex-shrink:0;background:rgba(255,255,255,.06)}
.avatar-preview svg{width:100%;height:100%;display:block}
.avatar-picker-grid{max-height:260px;overflow-y:auto}


.reduce-fx .fx-aurora,.reduce-fx .fx-grain,.reduce-fx .nebula{animation:none!important}
.reduce-fx .fx-aurora{opacity:.28}
.reduce-fx .ripple,.reduce-fx .my-turn-ring,.reduce-fx button.bp::after,.reduce-fx button.deck-random::after,.reduce-fx .gib-heart,.reduce-fx .gib-z{display:none!important}
.reduce-fx .chip.chip-new{animation:none}
