:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft JhengHei,sans-serif;color:#f5f7ff;background:#070a14;font-synthesis:none;--cyan: #55e8ff;--gold: #ffd36e;--violet: #a985ff;--panel: rgba(15, 22, 45, .88);--line: rgba(153, 191, 255, .2)}*{box-sizing:border-box}html,body,#root{min-width:0;min-height:100%;margin:0}body{min-height:100vh;overflow-x:auto;background:radial-gradient(circle at 50% -10%,rgba(76,105,255,.3),transparent 36rem),radial-gradient(circle at 15% 55%,rgba(0,224,255,.12),transparent 30rem),radial-gradient(circle at 85% 75%,rgba(160,73,255,.14),transparent 30rem),#070a14}button,input{font:inherit}button{color:inherit}button:not(:disabled){cursor:pointer}button:disabled{opacity:.45}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.glass{border:1px solid var(--line);border-radius:20px;background:linear-gradient(135deg,rgba(255,255,255,.06),transparent),var(--panel);box-shadow:0 24px 80px #00000061;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.primary{border-color:#55e8ff80!important;color:#04131a!important;background:linear-gradient(135deg,#8ff5ff,#58c9ff)!important;box-shadow:0 8px 28px #55e8ff40;font-weight:800}.eyebrow{margin:0;color:var(--cyan);font-size:.78rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase}.error,.toast-error{color:#ffb1b8}.lobby-shell{width:min(1160px,calc(100% - 48px));margin:0 auto;padding:56px 0 80px}.title-lockup{margin-bottom:30px;text-align:center}.title-lockup span{color:var(--cyan);font-weight:800;letter-spacing:.22em}.title-lockup h1{margin:8px 0 0;font-size:clamp(3.2rem,8vw,6.4rem);font-weight:950;line-height:.95;letter-spacing:-.08em;text-shadow:0 0 30px rgba(85,232,255,.28),0 18px 60px rgba(74,93,255,.38)}.title-lockup p{color:#8994b4;letter-spacing:.08em}.profile-panel{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:end;padding:24px}.profile-panel label{display:grid;gap:10px;color:#aeb8d6;font-size:.82rem;font-weight:700}.profile-panel input,.join-row input{min-height:48px;border:1px solid rgba(128,167,255,.28);border-radius:12px;outline:none;color:#fff;background:#040712ad;padding:0 16px}.profile-panel input:focus,.join-row input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px #55e8ff1f}.avatar-row{display:flex;gap:8px}.avatar-row button{width:48px;height:48px;border:1px solid var(--line);border-radius:12px;background:#040712ad;font-size:1.3rem}.avatar-row button.active{border-color:var(--cyan);background:#55e8ff24}.sound-consent{min-height:48px;border:1px solid rgba(85,232,255,.46);border-radius:12px;color:#eefdff;background:linear-gradient(135deg,#2d84b938,#664bc433),#050c1df5;padding:0 18px;font-weight:800;box-shadow:inset 0 0 22px #55e8ff12}.sound-consent:hover,.sound-consent:focus-visible{border-color:var(--cyan);outline:none;box-shadow:0 0 0 3px #55e8ff21,inset 0 0 24px #55e8ff1f}.deck-chooser{margin-top:22px;padding:26px;border:1px solid var(--line);border-radius:22px;background:#060a19b8}.deck-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.deck-tabs button{display:grid;gap:7px;min-height:96px;border:1px solid var(--line);border-radius:14px;color:#f3f6ff;background:#101830e6;padding:18px;text-align:left}.deck-tabs button.active{border-color:var(--cyan);background:linear-gradient(135deg,#55e8ff29,#8959ff24),#101830e6;box-shadow:inset 0 0 30px #55e8ff14}.deck-tabs span{color:#929dbc;font-size:.85rem}.deck-chooser .eyebrow{margin-top:24px}.hero-order{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:12px}.hero-order>div{position:relative;display:grid;grid-template-columns:44px 74px 1fr auto;gap:12px;align-items:center;overflow:hidden;min-height:100px;border:1px solid rgba(164,189,255,.17);border-radius:15px;background:#ffffff09;padding:12px}.hero-order img{width:74px;height:74px;border-radius:11px;object-fit:cover}.hero-order>div>span{color:var(--gold);font-size:.8rem;font-weight:800}.hero-order>div>div{display:grid;gap:4px}.hero-order button{border:1px solid var(--line);border-radius:7px;background:#050914cc}.deck-count{margin:18px 0 0;color:#818cab;text-align:right}.room-actions{display:grid;grid-template-columns:1fr 1.3fr;gap:18px;margin-top:22px;padding:24px}.room-actions button{min-height:52px;border:1px solid var(--line);border-radius:13px;background:#121c37e6}.join-row{display:grid;grid-template-columns:1fr 112px;gap:10px}.room-actions .error{grid-column:1 / -1;margin:0}.waiting-screen{display:grid;min-height:100vh;place-items:center}.waiting-card{min-width:440px;padding:44px;text-align:center}.waiting-card h1{margin:10px 0;color:var(--gold);font-size:4rem;letter-spacing:.12em}.waiting-card button{min-height:44px;margin:8px;border:1px solid var(--line);border-radius:10px;background:#121c37e6;padding:0 18px}.battle-shell{position:relative;display:grid;grid-template-rows:54px 1fr 104px 1fr 170px;min-height:100vh;overflow:hidden;background:linear-gradient(#040812d6,#040812d6),radial-gradient(ellipse at center,#1c3465,#080b17 68%)}.battle-shell:before{position:absolute;top:54px;right:0;bottom:170px;left:0;border-top:1px solid rgba(85,232,255,.12);border-bottom:1px solid rgba(85,232,255,.12);background:linear-gradient(90deg,transparent 49.8%,rgba(85,232,255,.08) 50%,transparent 50.2%),linear-gradient(0deg,transparent 49.8%,rgba(85,232,255,.08) 50%,transparent 50.2%);content:"";pointer-events:none}.battle-topbar{z-index:8;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line);background:#050814f2;padding:0 18px;color:#9ca8c7;font-size:.82rem}.battle-topbar strong{color:#fff}.battle-settings{display:flex;justify-content:flex-end;gap:8px}.battle-settings button,.end-turn,.surrender{border:1px solid var(--line);border-radius:8px;background:#121c37e6;padding:7px 12px}.online,.offline{display:inline-block;width:8px;height:8px;margin-right:7px;border-radius:50%;background:#64f69b;box-shadow:0 0 10px #64f69b}.offline{background:#ff6878;box-shadow:0 0 10px #ff6878}.player-side{z-index:2;display:grid;grid-template-columns:235px 1fr;gap:20px;align-items:center;min-height:220px;padding:12px 280px 12px 24px}.player-side.opponent{grid-template-columns:1fr 235px}.player-side.opponent .player-core{grid-column:2;grid-row:1}.player-side.opponent .unit-row{grid-column:1;grid-row:1}.opponent-hand{position:absolute;top:68px;left:50%;z-index:1;display:flex;transform:translate(-50%);pointer-events:none}.opponent-hand span{display:grid;width:48px;height:64px;place-items:center;border:1px solid rgba(255,211,110,.35);border-radius:7px;color:#ffd36eb8;background:repeating-linear-gradient(45deg,#19264ef5,#19264ef5 6px,#0b122cfa 6px,#0b122cfa 12px);font-size:.55rem;font-weight:900;box-shadow:0 8px 18px #00000057}.player-core{display:grid;gap:5px;border:1px solid var(--line);border-radius:16px;background:#080d1ed1;padding:18px}.player-core b{color:var(--gold);font-size:1.65rem}.player-core span{color:#8f9ab9;font-size:.78rem}.player-core em{color:#ffbb73;font-size:.78rem}.player-core.legal-target{border-color:#ff697c;box-shadow:0 0 24px #ff4c6773;cursor:crosshair}.unit-row{display:flex;justify-content:center;gap:15px}.unit-slot{position:relative;min-width:126px}.card-face{position:relative;display:grid;width:126px;height:156px;overflow:hidden;border:2px solid rgba(117,148,218,.32);border-radius:13px;color:#fff;background:linear-gradient(160deg,#26325d,#0a1027 65%);padding:0;text-align:left;box-shadow:0 12px 22px #00000047;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.fast .card-face{transition-duration:70ms}.card-face:not(:disabled):hover{z-index:8;transform:translateY(-6px) scale(1.035)}.card-face img{width:100%;height:116px;object-fit:cover}.card-name{position:absolute;inset:6px 6px auto;overflow:hidden;border-radius:6px;background:#040712c7;padding:4px 6px;font-size:.7rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.card-stats{display:flex;justify-content:space-between;align-items:center;padding:5px 7px;color:#bac4df;font-size:.63rem}.card-face.legal{border-color:var(--cyan);box-shadow:0 0 0 2px #55e8ff21,0 0 24px #55e8ff57}.card-face.selected{transform:translateY(-12px);border-color:var(--gold);box-shadow:0 0 30px #ffd36e7a}.card-face.dead{filter:grayscale(.9) brightness(.45);transform:rotate(8deg)}.card-face.compact{position:absolute;right:-22px;bottom:-10px;width:58px;height:74px;border-radius:7px}.card-face.compact img{height:74px}.card-face.compact .card-name{display:none}.card-back{display:grid;width:100%;height:100%;place-items:center;color:var(--gold);background:linear-gradient(135deg,#55e8ff17,#a049ff1f),repeating-linear-gradient(45deg,#111a3a,#111a3a 8px,#0b1129 8px,#0b1129 16px);font-size:.9rem;font-weight:900;letter-spacing:.15em}.shield,.statuses{position:absolute;top:39px;right:5px;border-radius:6px;background:#1d74cae6;padding:3px 5px;font-size:.62rem}.statuses{top:auto;right:4px;bottom:33px;left:4px;background:#842da2e6;text-align:center}.battle-center{z-index:3;position:relative;display:grid;place-items:center}.phase-orb{display:grid;width:94px;height:94px;place-items:center;border:1px solid rgba(85,232,255,.42);border-radius:50%;background:radial-gradient(circle,#3d7cde66,#070c1df7 66%);box-shadow:inset 0 0 25px #55e8ff33,0 0 28px #55e8ff33;text-align:center}.phase-orb span{color:var(--cyan);font-size:.64rem;letter-spacing:.14em}.phase-orb b{margin-top:-22px;font-size:.72rem}.action-prompt{position:absolute;left:calc(50% + 62px);display:flex;gap:10px;align-items:center;border:1px solid var(--gold);border-radius:10px;background:#0f1322f2;padding:10px 13px;color:var(--gold);font-size:.78rem;font-weight:700}.end-turn{position:absolute;right:292px;min-width:110px;border-color:#ffd36e73;color:var(--gold)}.hand-zone{z-index:6;display:flex;justify-content:center;gap:10px;overflow:visible;border-top:1px solid var(--line);background:linear-gradient(180deg,#080d1de0,#03060ffa);padding:8px 300px 6px 20px}.hand-zone .card-face{width:112px;height:148px}.hand-zone .card-face img{height:110px}.event-log{z-index:7;position:absolute;top:67px;right:12px;bottom:12px;width:260px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#040813e0}.event-log h3{margin:0;border-bottom:1px solid var(--line);padding:12px 14px;font-size:.82rem}.event-log ol{height:calc(100% - 45px);margin:0;overflow-y:auto;padding:8px 12px 24px;list-style:none}.event-log li{border-bottom:1px solid rgba(133,161,222,.1);padding:8px 0;color:#aab4d0;font-size:.72rem;line-height:1.45}.event-log time{margin-right:7px;color:#596787}.decision-overlay{z-index:10;position:absolute;top:50%;left:50%;min-width:380px;transform:translate(-50%,-50%);border:1px solid rgba(85,232,255,.36);border-radius:18px;background:#060a19f5;padding:28px;box-shadow:0 30px 100px #0009;text-align:center}.decision-overlay button{min-width:120px;min-height:46px;margin:8px;border:1px solid var(--line);border-radius:10px;background:#121c37f2}.dice-values{display:flex;justify-content:center;gap:26px;margin:18px;color:var(--gold)}.surrender{z-index:8;position:absolute;right:286px;bottom:12px;color:#ff8f9b}.modal-backdrop{z-index:30;position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#01030ac2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.confirm-modal,.result-modal{width:min(470px,calc(100% - 40px));padding:34px;text-align:center}.confirm-modal p,.result-modal p{color:#9ca8c7}.confirm-modal button,.result-modal button{min-width:120px;min-height:44px;margin:8px;border:1px solid var(--line);border-radius:10px;background:#121c37f2}.result-modal h1{margin:10px 0;color:var(--gold);font-size:4rem}.toast-error{z-index:40;position:fixed;right:24px;bottom:24px;max-width:380px;border:1px solid rgba(255,93,112,.45);border-radius:12px;background:#43111bf0;padding:14px 18px;box-shadow:0 15px 50px #00000073}@media (max-height: 780px){.battle-shell{grid-template-rows:50px 1fr 78px 1fr 142px}.player-side{min-height:180px}.card-face{width:108px;height:138px}.card-face img{height:100px}.hand-zone .card-face{height:130px}}.battle-shell{--slot-width: clamp(76px, 6.7vw, 106px);--slot-height: clamp(106px, 14vh, 132px);position:relative;display:grid;grid-template-rows:48px minmax(0,1fr) 128px;width:100%;height:100vh;min-height:600px;overflow:hidden;background:linear-gradient(#030711e0,#030711f0),radial-gradient(ellipse at center,#203f76,#080b17 66%)}.battle-shell:before{position:absolute;top:48px;right:0;bottom:128px;left:0;border-block:1px solid rgba(85,232,255,.12);background:linear-gradient(90deg,transparent 49.85%,rgba(85,232,255,.07) 50%,transparent 50.15%),radial-gradient(circle at center,rgba(85,232,255,.08),transparent 32%);content:"";pointer-events:none}.battle-topbar{z-index:20;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-width:0;border-bottom:1px solid var(--line);background:#040711f7;padding:0 14px;color:#9ca8c7;font-size:.78rem}.battle-topbar strong{overflow:hidden;color:#fff;text-overflow:ellipsis;white-space:nowrap}.battle-settings{display:flex;justify-content:flex-end;gap:6px}.battle-settings button,.end-turn,.surrender,.inspector-toggle{min-height:34px;border:1px solid var(--line);border-radius:9px;color:inherit;background:#121c37f0;padding:6px 10px}.battle-layout{z-index:2;min-width:0;min-height:0}.battle-board{display:grid;grid-template-rows:minmax(0,1fr) 46px minmax(0,1fr);height:100%;min-width:0;min-height:0;padding:3px 12px}.player-side{z-index:2;display:flex;flex-direction:column;min-width:0;min-height:0;padding:0}.player-side.opponent .player-strip{order:1}.player-side.opponent .field-grid{order:2}.player-side.self .field-grid{order:1}.player-side.self .player-strip{order:2}.player-strip{position:relative;display:flex;width:min(100%,760px);min-height:30px;margin:0 auto;align-items:center;justify-content:center;gap:8px}.player-core{display:flex;min-width:min(430px,72vw);min-height:29px;align-items:center;justify-content:center;gap:12px;border:1px solid var(--line);border-radius:10px;color:#9ba7c6;background:#070c1ceb;padding:4px 12px;font-size:.7rem}.player-core strong{max-width:145px;overflow:hidden;color:#fff;text-overflow:ellipsis;white-space:nowrap}.player-core b{color:var(--gold);font-size:1rem}.player-core em{color:#ffbb73;font-style:normal}.player-core.legal-target{border-color:#ff6478;box-shadow:0 0 0 2px #ff64782e,0 0 22px #ff4c675c}.exile-chip{min-height:28px;border:1px solid rgba(160,135,255,.25);border-radius:8px;color:#b9a9ff;background:#191236d9;padding:3px 9px;font-size:.67rem}.opponent-hand{position:static;top:auto;left:auto;z-index:auto;display:flex;height:29px;align-items:center;transform:none;pointer-events:none}.opponent-hand span{display:grid;width:25px;height:34px;place-items:center;border:1px solid rgba(255,211,110,.35);border-radius:4px;color:#ffd36ec2;background:repeating-linear-gradient(45deg,#19264e,#19264e 4px,#0b122c 4px,#0b122c 8px);font-size:.35rem;font-weight:900;box-shadow:0 5px 12px #00000059}.field-grid{display:grid;grid-template-columns:repeat(5,var(--slot-width));grid-template-rows:repeat(2,var(--slot-height));gap:4px 7px;width:fit-content;max-width:100%;margin:auto}.field-slot{position:relative;display:grid;min-width:0;min-height:0;overflow:visible;border:1px dashed rgba(145,166,214,.34);border-radius:9px;background:linear-gradient(150deg,rgba(255,255,255,.045),transparent 58%),#080e1f9e;box-shadow:inset 0 0 20px #00000038}.field-slot:after{position:absolute;top:2px;right:2px;bottom:2px;left:2px;border:1px solid transparent;border-radius:7px;content:"";pointer-events:none}.slot-label{position:absolute;top:3px;left:5px;z-index:5;display:flex;align-items:center;gap:3px;color:#8d99b8;font-size:clamp(.52rem,.65vw,.67rem);font-weight:800;letter-spacing:.02em;pointer-events:none}.slot-label b{color:currentColor}.zone-hero{border-color:#dae2f57a}.zone-hero .slot-label{color:#e4e9f6}.zone-equipment{border-color:#55d3ff7a}.zone-equipment .slot-label{color:#64d8ff}.zone-summon{border-color:#ff5b6780}.zone-summon .slot-label{color:#ff7a86}.zone-magic{border-color:#56e27e80}.zone-magic .slot-label{color:#6de78f}.zone-deck{border-color:#a878ff8a}.zone-deck .slot-label{color:#b28aff}.zone-graveyard{border-color:#ffbe4a8c}.zone-graveyard .slot-label{color:#ffc45d}.field-slot.targetable,.field-slot.searchable{border-style:solid;border-color:var(--cyan);box-shadow:0 0 0 2px #55e8ff26,0 0 22px #55e8ff47;animation:targetPulse 1.15s ease-in-out infinite alternate}@keyframes targetPulse{to{box-shadow:0 0 0 3px #55e8ff33,0 0 30px #55e8ff75}}.empty-slot{display:grid;width:100%;height:100%;place-items:center;border:0;border-radius:inherit;color:#a9b8db57;background:transparent;padding:17px 4px 4px}.empty-slot:disabled{opacity:1}.empty-slot>span{font-size:clamp(1.05rem,2vw,1.65rem)}.empty-slot>b{position:absolute;right:6px;bottom:5px;display:grid;min-width:22px;height:22px;place-items:center;border-radius:999px;color:#fff;background:#040813e6;font-size:.7rem}.field-slot>.card-face{width:calc(100% - 8px);height:calc(100% - 21px);margin:17px 4px 4px}.card-face{--rotation: 0deg;position:relative;display:flex;width:96px;height:122px;flex-direction:column;flex:0 0 auto;overflow:hidden;border:2px solid rgba(117,148,218,.34);border-radius:8px;color:#fff;background:linear-gradient(160deg,#26325d,#0a1027 65%);padding:0;text-align:left;box-shadow:0 8px 17px #00000052;transform:rotate(var(--rotation));transform-origin:center;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.card-face.orientation-90{--rotation: 90deg;transform:rotate(var(--rotation)) scale(.78)}.card-face.orientation-180{--rotation: 180deg}.card-face.orientation-270{--rotation: 270deg;transform:rotate(var(--rotation)) scale(.78)}.fast .card-face{transition-duration:65ms}.card-face:hover,.card-face:focus-visible{z-index:9;outline:none;border-color:#ffffffb8;transform:rotate(var(--rotation)) translateY(-3px) scale(1.025)}.card-face.orientation-90:hover,.card-face.orientation-90:focus-visible,.card-face.orientation-270:hover,.card-face.orientation-270:focus-visible{transform:rotate(var(--rotation)) scale(.83)}.card-face img{width:100%;min-height:0;aspect-ratio:1 / 1;object-fit:contain;object-position:center;background:#060916;pointer-events:none}.card-name{position:absolute;inset:3px 3px auto;overflow:hidden;border-radius:4px;color:#fff;background:#030711d1;padding:2px 4px;font-size:clamp(.47rem,.55vw,.62rem);font-weight:800;text-overflow:ellipsis;white-space:nowrap}.card-stats{display:flex;min-height:18px;align-items:center;justify-content:space-between;margin-top:auto;padding:2px 5px;color:#bac4df;background:#050916f5;font-size:clamp(.44rem,.5vw,.58rem)}.card-stats b{color:#6bffae}.card-stats strong{color:#ffbd6b}.card-face.actionable{border-color:var(--cyan);box-shadow:0 0 0 2px #55e8ff1f,0 0 18px #55e8ff4d}.card-face.targetable{border-color:#ff7386;box-shadow:0 0 0 2px #ff5d7326,0 0 24px #ff5d736b}.card-face.selected{border-color:var(--gold);box-shadow:0 0 0 2px #ffd36e2b,0 0 24px #ffd36e85}.card-face.dead{filter:grayscale(.85) brightness(.5)}.action-badge,.target-badge{position:absolute;right:3px;bottom:20px;border-radius:4px;color:#04131a;background:var(--cyan);padding:2px 4px;font-size:.45rem;font-weight:900}.target-badge{color:#fff;background:#df4058}.shield,.statuses{position:absolute;top:25px;right:3px;border-radius:4px;background:#1d74caf0;padding:2px 4px;font-size:.5rem}.statuses{top:auto;right:3px;bottom:20px;left:3px;overflow:hidden;background:#842da2f0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.card-back{display:grid;width:100%;height:100%;place-items:center;color:var(--gold);background:linear-gradient(135deg,#55e8ff17,#a049ff1f),repeating-linear-gradient(45deg,#111a3a,#111a3a 7px,#0b1129 7px,#0b1129 14px);font-size:.72rem;font-weight:900;letter-spacing:.13em}.battle-center{z-index:8;position:relative;display:flex;align-items:center;justify-content:center;gap:14px}.phase-orb{display:flex;min-width:128px;height:38px;align-items:center;justify-content:center;gap:8px;border:1px solid rgba(85,232,255,.42);border-radius:999px;background:radial-gradient(circle,#3d7cde6e,#070c1dfa 70%);box-shadow:inset 0 0 18px #55e8ff2e,0 0 20px #55e8ff29}.phase-orb span{color:var(--cyan);font-size:.58rem;letter-spacing:.12em}.phase-orb b{margin:0;font-size:.68rem}.action-prompt{display:flex;align-items:center;gap:8px;border:1px solid var(--gold);border-radius:9px;color:var(--gold);background:#0f1322f7;padding:7px 10px;font-size:.68rem;font-weight:800}.action-prompt button{border:0;color:#fff;background:transparent}.end-turn{position:absolute;right:6px;display:grid;min-width:118px;color:var(--gold);border-color:#ffd36e75;font-weight:800}.end-turn small{color:#aab4d0;font-size:.52rem;font-weight:500}.hand-zone{z-index:15;display:grid;grid-template-columns:78px minmax(0,1fr);min-width:0;min-height:0;overflow:hidden;border-top:1px solid var(--line);background:linear-gradient(180deg,#080d1de8,#03060ffc);padding:5px 110px 5px 10px}.hand-label{display:grid;place-content:center;color:#8f9ab9;font-size:.66rem;text-align:center}.hand-label b{color:#fff}.hand-scroll{display:flex;min-width:0;align-items:flex-end;justify-content:center;overflow-x:auto;overflow-y:hidden;padding:1px 30px 3px;scrollbar-width:thin}.hand-scroll>.card-face{width:86px;height:114px;flex-shrink:0}.hand-scroll>.card-face+.card-face{margin-left:-20px}.hand-scroll>.card-face:hover,.hand-scroll>.card-face.selected{z-index:10}.inspector{z-index:35;position:fixed;top:48px;right:0;bottom:0;display:grid;grid-template-rows:auto minmax(0,1fr);width:min(350px,94vw);overflow:hidden;border-left:1px solid rgba(133,167,238,.26);color:#edf2ff;background:#040813fa;box-shadow:-20px 0 60px #0000008a;transform:translate(104%);transition:transform .18s ease}.inspector.open{transform:translate(0)}.inspector-tabs{display:grid;grid-template-columns:repeat(3,1fr) 34px;border-bottom:1px solid var(--line)}.inspector-tabs button{min-height:42px;border:0;border-right:1px solid rgba(133,167,238,.12);color:#8f9ab9;background:#0d142aeb;padding:5px;font-size:.67rem}.inspector-tabs button.active{color:var(--cyan);background:#55e8ff17;box-shadow:inset 0 -2px var(--cyan)}.inspector-close{color:#fff!important;font-size:1.2rem!important}.card-inspector,.event-log{min-height:0;overflow-y:auto}.card-inspector{padding:14px}.inspector-art{width:min(100%,260px);aspect-ratio:1;margin:0 auto 12px;overflow:hidden;border:1px solid rgba(146,179,248,.25);border-radius:12px;background:#050814}.inspector-art img{width:100%;height:100%;object-fit:contain}.inspector-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-bottom:10px}.inspector-heading span,.inspector-heading>b{color:#7e8bad;font-size:.62rem;letter-spacing:.09em;text-transform:uppercase}.inspector-heading h2{margin:3px 0 0;color:var(--gold);font-size:1.25rem}.inspector-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin:11px 0}.inspector-stats span{display:flex;justify-content:space-between;border:1px solid rgba(133,167,238,.15);border-radius:7px;color:#8f9ab9;background:#ffffff06;padding:7px;font-size:.68rem}.inspector-stats b{color:#fff}.card-inspector h3{margin:14px 0 5px;color:#b6c1df;font-size:.74rem}.rules-text{margin:0;color:#e0e5f3;font-size:.8rem;line-height:1.62;white-space:pre-line}.ruling-note{border-left:3px solid var(--violet);color:#9ca8c7;background:#a985ff12;padding:9px 11px;font-size:.72rem;line-height:1.5}.rulings-list{display:grid;gap:8px;margin:0;padding-left:1.35rem;color:#e0e5f3;font-size:.78rem;line-height:1.55}.rulings-list li::marker{color:var(--cyan);font-weight:800}.ruling-sources{margin-top:14px;border:1px solid rgba(133,167,238,.15);border-radius:8px;background:#ffffff06;padding:8px 10px;color:#98a5c5;font-size:.68rem;line-height:1.5}.ruling-sources summary{cursor:pointer;color:#b6c1df}.ruling-sources ul{margin:8px 0 0;padding-left:1rem}.status-list{display:flex;flex-wrap:wrap;gap:6px}.status-list span{border-radius:999px;color:#f2c9ff;background:#842da257;padding:5px 8px;font-size:.65rem}.inspector-actions{position:sticky;bottom:-14px;display:grid;gap:7px;margin:18px -14px -14px;border-top:1px solid var(--line);background:#040813f7;padding:11px 14px 14px}.inspector-actions button{min-height:42px;border:1px solid var(--line);border-radius:9px;background:#121c37f5}.inspector-empty{display:grid;height:100%;place-content:center;padding:30px;color:#8f9ab9;text-align:center}.inspector-empty>span{color:#55e8ff5c;font-size:4rem}.inspector-empty h2{margin:8px 0;color:#fff;font-size:1.05rem}.inspector-empty p{max-width:260px;margin:0;font-size:.75rem;line-height:1.55}.event-log{height:100%;margin:0;padding:8px 13px 28px;list-style:none}.event-log li{border-bottom:1px solid rgba(133,161,222,.1);padding:8px 0;color:#b3bdd6;font-size:.72rem;line-height:1.45}.event-log time{margin-right:7px;color:#5f6d8d}.inspector-toggle{z-index:24;position:fixed;right:10px;bottom:52px;max-width:150px;overflow:hidden;border-color:#55e8ff6b;color:var(--cyan);text-overflow:ellipsis;white-space:nowrap}.surrender{z-index:24;position:fixed;right:10px;bottom:10px;color:#ff9aa6}.resolution-lock{z-index:28;position:fixed;top:56px;left:50%;transform:translate(-50%);border:1px solid rgba(86,226,126,.48);border-radius:999px;color:#9dffb7;background:#05180ef0;padding:7px 13px;font-size:.7rem;box-shadow:0 0 22px #56e27e33}.decision-overlay{z-index:40;position:fixed;top:50%;left:50%;width:min(420px,calc(100% - 28px));min-width:0;transform:translate(-50%,-50%);border:1px solid rgba(85,232,255,.36);border-radius:17px;color:#fff;background:#060a19f7;padding:25px;box-shadow:0 30px 100px #000000a6;text-align:center}.decision-overlay button{min-width:116px;min-height:44px;margin:7px;border:1px solid var(--line);border-radius:9px;background:#121c37f5}.pre-game-timer{color:var(--gold);font-size:.78rem}.dice-values{display:flex;justify-content:center;gap:20px;margin:16px;color:var(--gold)}.modal-backdrop,.zone-drawer-backdrop{z-index:60;position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#01030acc;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px)}.confirm-modal,.result-modal{width:min(470px,calc(100% - 30px));padding:30px;text-align:center}.confirm-modal p,.result-modal p{color:#a3aec9;line-height:1.55}.confirm-modal button,.result-modal button{min-width:116px;min-height:42px;margin:7px;border:1px solid var(--line);border-radius:9px;background:#121c37f5}.result-modal h1{margin:8px 0;color:var(--gold);font-size:clamp(2.8rem,8vw,4rem)}.zone-drawer-backdrop{place-items:end center}.zone-drawer{width:min(940px,calc(100% - 22px));max-height:min(72vh,680px);overflow:hidden;border-radius:18px 18px 0 0;padding:0}.zone-drawer>header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:14px 18px}.zone-drawer h2{margin:3px 0 0;font-size:1.15rem}.zone-drawer>header>button{width:38px;height:38px;border:1px solid var(--line);border-radius:9px;background:#121c37f2;font-size:1.25rem}.zone-help{margin:0;border-bottom:1px solid rgba(133,167,238,.12);color:#aab4d0;background:#55e8ff0b;padding:9px 18px;font-size:.72rem}.zone-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:12px;max-height:calc(72vh - 108px);overflow-y:auto;padding:16px}.zone-card-choice{display:grid;justify-items:center;gap:5px;border:1px solid rgba(133,167,238,.15);border-radius:11px;background:#ffffff06;padding:9px;text-align:center}.zone-card-choice .card-face{width:96px;height:122px}.zone-card-choice>span{color:#7f8ba9;font-size:.6rem}.zone-card-choice>b{min-height:30px;font-size:.7rem}.zone-card-choice>button{width:100%;min-height:36px;border:1px solid var(--line);border-radius:8px}.zone-empty{grid-column:1 / -1;padding:45px;color:#8f9ab9;text-align:center}.summon-choice{width:min(560px,calc(100% - 26px));padding:28px;text-align:center}.summon-choice>p{color:#aab4d0}.summon-choice-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.summon-choice-cards>div{display:grid;justify-items:center;gap:7px;border:1px solid rgba(133,167,238,.17);border-radius:12px;background:#ffffff06;padding:13px}.summon-choice-cards .card-face{width:112px;height:142px}.summon-choice-cards span{color:#8f9ab9;font-size:.66rem}.summon-choice-cards button{width:100%;min-height:40px;border:1px solid var(--line);border-radius:8px}.toast-error{z-index:90;position:fixed;right:18px;bottom:18px;max-width:min(380px,calc(100% - 36px));border:1px solid rgba(255,93,112,.45);border-radius:11px;color:#ffb1b8;background:#43111bf5;padding:12px 15px;box-shadow:0 15px 50px #0000007a}@media (min-width: 1700px){.battle-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px}.inspector{position:relative;top:auto;right:auto;bottom:auto;width:340px;height:100%;transform:none;box-shadow:-12px 0 40px #0000004d}.inspector-close,.inspector-toggle{display:none}.hand-zone{padding-right:350px}.surrender{right:350px}}@media (max-height: 780px){.battle-shell{--slot-height: clamp(98px, 13.2vh, 106px);grid-template-rows:44px minmax(0,1fr) 112px;min-height:560px}.battle-shell:before{top:44px;right:0;bottom:112px;left:0}.battle-topbar{font-size:.7rem}.inspector{top:44px}.battle-board{grid-template-rows:minmax(0,1fr) 40px minmax(0,1fr)}.player-strip{min-height:25px}.player-core{min-height:25px;padding-block:2px}.field-slot>.card-face{margin-top:16px;height:calc(100% - 20px)}.hand-scroll>.card-face{width:76px;height:100px}.inspector-art{width:205px}}@media (max-width: 1100px){.battle-shell{--slot-width: clamp(58px, 17vw, 82px);--slot-height: clamp(94px, 13.5vh, 112px)}.battle-board{padding-inline:4px}.field-grid{gap:3px}.battle-settings button:first-child{display:none}.player-core{min-width:min(360px,66vw);gap:7px;padding-inline:7px}.player-core span,.opponent-hand{display:none}.hand-zone{grid-template-columns:58px minmax(0,1fr);padding-right:96px}.hand-scroll{justify-content:flex-start;padding-inline:14px}.end-turn{right:0;min-width:96px}}@media (max-width: 1699px){.battle-shell.inspector-open .end-turn{right:360px}}@media (max-width: 700px){.battle-topbar{grid-template-columns:1fr auto}.battle-topbar>strong{grid-column:2}.battle-settings{display:none}.player-core strong{max-width:90px}.exile-chip{display:none}.slot-label{left:2px;font-size:.47rem}.slot-label b,.hand-label span{display:none}.inspector-toggle{max-width:100px;font-size:.65rem}.summon-choice{max-height:92vh;overflow-y:auto}}@media (max-width: 760px){.lobby-shell{width:min(100% - 24px,640px);padding-top:28px}.profile-panel,.room-actions,.deck-tabs,.hero-order{grid-template-columns:1fr}.hero-order>div{grid-template-columns:32px 64px 1fr auto}.waiting-card{width:calc(100% - 24px);min-width:0;padding:28px 18px}}.battle-shell{isolation:isolate}.presentation-input-lock{position:fixed;top:56px;right:0;bottom:0;left:0;z-index:30;cursor:progress;background:#02081214}.presentation-layer{--presentation-color: #7bdfff;position:fixed;top:0;right:0;bottom:0;left:0;z-index:28;pointer-events:none;overflow:hidden}.presentation-layer:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 45%,color-mix(in srgb,var(--presentation-color) 18%,transparent),transparent 34%),linear-gradient(90deg,transparent,rgb(1 7 17 / .28),transparent);animation:presentation-screen-pulse .7s ease-out both}.presentation-lines{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 8px var(--presentation-color))}.presentation-lines line{stroke:var(--presentation-color);stroke-width:3;stroke-linecap:round;stroke-dasharray:12 10;animation:presentation-line-flow .45s linear infinite}.presentation-banner{position:absolute;top:clamp(78px,15vh,150px);left:50%;min-width:min(520px,86vw);padding:10px 28px 12px;transform:translate(-50%);text-align:center;border-block:1px solid color-mix(in srgb,var(--presentation-color) 72%,white);background:linear-gradient(90deg,transparent,rgb(2 10 24 / .94) 18% 82%,transparent);color:#fff;text-shadow:0 0 16px var(--presentation-color);animation:presentation-banner-in .26s ease-out both}.presentation-banner span{display:block;color:var(--presentation-color);font-size:.7rem;font-weight:800;letter-spacing:.22em}.presentation-banner strong{display:block;margin-top:3px;font-size:clamp(1.25rem,2.8vw,2rem);letter-spacing:.08em}.presentation-source-card{position:absolute;left:50%;top:48%;width:clamp(112px,12vw,168px);aspect-ratio:.72;transform:translate(-50%,-50%);border:2px solid var(--presentation-color);border-radius:12px;overflow:hidden;background:#06101e;box-shadow:0 0 0 5px #ffffff0f,0 0 30px var(--presentation-color),0 20px 60px #000000a6;animation:presentation-card-in .42s cubic-bezier(.2,.9,.25,1.25) both}.presentation-source-card img{width:100%;height:100%;object-fit:cover}.presentation-source-card.source-kind-hero,.presentation-source-card.source-kind-summon{width:clamp(118px,12vw,158px);aspect-ratio:1;border-radius:50%}.presentation-source-card.source-kind-hero img,.presentation-source-card.source-kind-summon img{object-fit:cover;object-position:50% 20%}.presentation-source-card.source-kind-equipment img,.presentation-source-card.source-kind-magic img{object-fit:contain;background:#030813}.presentation-source-card b{position:absolute;inset:auto 0 0;padding:9px 6px;text-align:center;background:linear-gradient(transparent,#000000eb);color:#fff}.presentation-source-card em{position:absolute;top:8px;left:8px;border:1px solid color-mix(in srgb,var(--presentation-color) 75%,white);border-radius:999px;background:#010812e0;padding:3px 8px;color:#fff;font-size:.68rem;font-style:normal;font-weight:900;letter-spacing:.08em}.presentation-summary{position:absolute;left:50%;top:min(69%,650px);max-width:min(680px,90vw);transform:translate(-50%);border:1px solid color-mix(in srgb,var(--presentation-color) 65%,white);border-radius:999px;background:#010812e6;padding:8px 18px;color:#f5f8ff;font-size:clamp(.88rem,1.7vw,1.08rem);font-weight:800;text-align:center;text-shadow:0 0 10px var(--presentation-color);animation:presentation-result-rise .26s ease-out both}.presentation-target{position:absolute;width:1px;height:1px;transform:translate(-50%,-50%)}.presentation-target span{position:absolute;left:50%;top:50%;width:clamp(70px,7vw,110px);aspect-ratio:.72;transform:translate(-50%,-50%);border:3px solid var(--presentation-color);border-radius:11px;box-shadow:0 0 10px var(--presentation-color),inset 0 0 18px color-mix(in srgb,var(--presentation-color) 45%,transparent);animation:presentation-target-hit .52s ease-out both}.presentation-target b{position:absolute;left:50%;top:-62px;min-width:max-content;transform:translate(-50%);padding:5px 10px;border:1px solid currentColor;border-radius:999px;background:#010812eb;color:#fff;font-size:clamp(.9rem,1.6vw,1.15rem);text-shadow:0 0 10px currentColor;animation:presentation-result-rise .42s ease-out both}.presentation-target.tone-damage b{color:#ff6c7c}.presentation-target.tone-heal b{color:#6ff0af}.presentation-target.tone-shield b{color:#63d9ff}.presentation-target.tone-death b{color:#f6f8ff;border-color:#ff6c7c}.dice-values .submitted{border-color:#6df;color:#bff5ff;box-shadow:inset 0 0 18px #3cbeff29}.dice-reveal-overlay{--dice-roll-duration: 2.5s;--dice-result-duration: 2s;overflow:hidden}.dice-reveal-overlay:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 44%,rgb(59 187 255 / .18),transparent 42%),repeating-linear-gradient(90deg,transparent 0 48px,rgb(106 221 255 / .035) 49px 50px);pointer-events:none}.dice-reveal-board{position:relative;display:flex;justify-content:center;gap:clamp(34px,9vw,110px);margin:24px auto 18px}.revealed-die{display:grid;gap:10px;justify-items:center;min-width:128px}.revealed-die span{max-width:180px;overflow:hidden;color:#b7cde4;text-overflow:ellipsis;white-space:nowrap}.revealed-die b{display:grid;width:clamp(78px,9vw,112px);aspect-ratio:1;place-items:center;border:2px solid #8be5ff;border-radius:18px;background:radial-gradient(circle at 35% 30%,#eefcff,#56bce9 48%,#123e70);color:#05111e;font-size:clamp(2.6rem,6vw,4.8rem);box-shadow:inset 0 0 22px #ffffffa6,0 0 26px #4bcdffb8;animation:dice-authoritative-roll var(--dice-roll-duration) cubic-bezier(.2,.75,.25,1) both}.revealed-die:nth-child(2) b{animation-name:dice-authoritative-roll-reverse}.dice-reveal-result{position:relative;padding:12px 24px;color:#fff0a8;font-size:clamp(1.05rem,2.3vw,1.55rem);font-weight:800;text-shadow:0 0 16px #ffcf4b;opacity:0;animation:dice-result-hold var(--dice-result-duration) ease-out var(--dice-roll-duration) forwards}@keyframes dice-authoritative-roll{0%{filter:blur(8px);opacity:0;transform:rotate(-540deg) scale(.45)}18%{opacity:1}76%{filter:blur(5px);transform:rotate(500deg) scale(1.12)}to{filter:blur(0);transform:rotate(0) scale(1)}}@keyframes dice-authoritative-roll-reverse{0%{filter:blur(8px);opacity:0;transform:rotate(540deg) scale(.45)}18%{opacity:1}76%{filter:blur(5px);opacity:1;transform:rotate(-500deg) scale(1.12)}to{filter:blur(0);opacity:1;transform:rotate(0) scale(1)}}@keyframes dice-result-hold{0%{opacity:0;transform:translateY(12px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.inspector{z-index:35}.decision-overlay{z-index:40}.modal-backdrop,.zone-drawer-backdrop{z-index:60}.toast-error{z-index:90}@keyframes presentation-screen-pulse{0%{opacity:0}35%{opacity:1}to{opacity:.35}}@keyframes presentation-line-flow{to{stroke-dashoffset:-22}}@keyframes presentation-banner-in{0%{opacity:0;transform:translate(-50%,-18px) scaleX(.78)}to{opacity:1;transform:translate(-50%) scaleX(1)}}@keyframes presentation-card-in{0%{opacity:0;transform:translate(-50%,-50%) scale(.68) rotateY(-18deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1) rotateY(0)}}@keyframes presentation-target-hit{0%{opacity:0;transform:translate(-50%,-50%) scale(1.55)}45%{opacity:1;transform:translate(-50%,-50%) scale(.88)}to{opacity:.82;transform:translate(-50%,-50%) scale(1)}}@keyframes presentation-result-rise{0%{opacity:0;transform:translate(-50%,18px) scale(.8)}to{opacity:1;transform:translate(-50%) scale(1)}}@media (max-width: 720px){.presentation-banner{top:66px;min-width:94vw;padding-inline:16px}.presentation-source-card{top:43%;width:104px}.presentation-source-card.source-kind-hero,.presentation-source-card.source-kind-summon{width:96px}.presentation-summary{top:66%;max-width:92vw;border-radius:14px}.presentation-target span{width:58px}.presentation-target b{top:-52px;max-width:132px;min-width:0;white-space:nowrap}.dice-reveal-board{gap:24px}.revealed-die{min-width:104px}}@media (prefers-reduced-motion: reduce){.presentation-layer *,.presentation-layer:before{animation:none!important}.presentation-lines line{stroke-dasharray:none}}
