:root{color-scheme:dark;--bg:#0a121b;--panel:#142431;--panel2:#182c39;--edge:rgba(200,227,239,.16);--ink:#eaf4f9;--muted:#95afc0;--teal:#a3e3d9;--gold:#f3d496;--card-w:105px;--card-h:148px;--scale:1}
*{box-sizing:border-box}body{margin:0;background:#0b1620;color:var(--ink);font:15px/1.45 Inter,'Noto Sans SC','Microsoft YaHei',system-ui,sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:default}.hidden{display:none!important}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:9px clamp(15px,2vw,32px);background:#0a1520ed;border-bottom:1px solid #243a4a;backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:13px;letter-spacing:.12em;font-size:15px;font-weight:500}.brand b{color:var(--gold);font-weight:700}.brand small{display:block;color:#87a1b1;font-size:9px;letter-spacing:.24em}.logo{width:41px;height:41px;display:grid;place-items:center;border:1px solid #7aaec0;border-radius:12px;color:#e1f8f5;font-weight:800;font-size:18px;background:linear-gradient(135deg,#213c4e,#14252f)}.logo span{color:var(--gold)}.topActions{display:flex;gap:7px;flex-wrap:wrap}.btn{border:1px solid #385463;border-radius:9px;color:#e4f3f7;background:#1b313e;padding:9px 14px;transition:background .18s,transform .12s}.btn:hover:not(:disabled){background:#294656}.btn:active{transform:scale(.98)}.btn.primary{border-color:#8dd5c8;background:#b8e9de;color:#152934;font-weight:700}.btn.primary:hover{background:#d3fff1}.btn.ghost{background:#122430}.btn.big{padding:13px 20px;border-radius:10px}.btn.small{padding:8px 11px}.room-meta{color:#abc3ce;font-size:12px;letter-spacing:.02em}
.lobby{min-height:calc(100vh - 65px);display:grid;grid-template-columns:minmax(420px,1fr) minmax(350px,.9fr);max-width:1450px;margin:auto;gap:55px;padding:clamp(40px,7vh,100px) 5vw}.hero{align-self:center}.eyebrow{font-size:11px;letter-spacing:.22em;color:var(--teal)}h1{font-size:clamp(44px,4.4vw,70px);line-height:1.12;letter-spacing:-.04em;margin:20px 0 22px;font-weight:760}h1 em{color:var(--teal);font-style:normal}.hero>p{max-width:520px;color:#a5bdca;line-height:1.9}.hero-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:32px 0}.feature{border-top:1px solid #3c6471;padding-top:12px;display:flex;flex-direction:column;gap:5px}.feature b{font-size:12px;color:#f4d99d}.feature strong{font-size:15px}.feature span{font-size:11px;color:#8da9b7}.lobby-actions{display:flex;gap:9px;flex-wrap:wrap}.joinbox{border:1px solid #27424e;background:#10202c;border-radius:13px;padding:18px;margin-top:35px;max-width:600px}.join-title{font-weight:650;margin-bottom:12px}.joinfields{display:flex;gap:8px}.joinfields input{min-width:0;width:100%;background:#0c1820;border:1px solid #345362;border-radius:8px;padding:10px;color:#fff}.joinfields input:first-child{max-width:155px}.footnote{font-size:11px!important;color:#647e8c!important}.hero-card{display:grid;place-items:center}.felt-preview{height:min(590px,75vh);width:min(100%,530px);position:relative;border-radius:36px;background:radial-gradient(ellipse at center,#284b55,#0c2733 65%,#071722);border:1px solid #31515b;box-shadow:0 28px 110px #0008,inset 0 0 60px #0006;overflow:hidden}.felt-preview:before{content:'';position:absolute;inset:5%;border:1px solid #51717a65;border-radius:28px}.playmat-ring{position:absolute;inset:19%;display:grid;place-items:center;border:2px solid #afc6ba30;border-radius:50%}.playmat-ring:before{content:'';position:absolute;inset:15%;border:1px solid #acbcab56;border-radius:50%}.big-v{font-size:100px;font-weight:850;font-family:Georgia,serif;color:#d9e8de36}.orbit{position:absolute;width:78px;height:110px;border-radius:9px;border:1px solid #c9d8c25d;background:linear-gradient(145deg,#506d7799,#223e4fbb);display:grid;place-items:center;color:#d8e6dd9e;font:50px Georgia,serif;box-shadow:10px 15px 50px #0004}.o1{left:15%;top:19%;transform:rotate(-15deg)}.o2{right:13%;top:43%;transform:rotate(11deg)}.o3{left:26%;bottom:16%;transform:rotate(-8deg)}.preview-caption{position:absolute;bottom:24px;right:27px;text-align:right;font-size:10px;letter-spacing:.19em;color:#d5e1d9}.preview-caption span{font-size:8px;color:#90adba}
.game{min-height:calc(100vh - 65px);background:radial-gradient(ellipse at 50% 45%,#29484b 0,#182c38 44%,#101c28 92%);padding:12px 16px 100px;overflow:auto}.battle-layout{margin:auto;max-width:1500px;background:linear-gradient(180deg,#142f3955,#1c3d3f22 52%,#142f3955);border:1px solid #48606955;box-shadow:inset 0 0 80px #071822a8,0 9px 80px #0006;border-radius:20px;padding:12px 14px 20px;min-width:820px}.player-board{border-radius:15px;padding:4px 10px 10px;min-height:400px}.player-board.enemy{border:1px solid #c0bd9b28;background:linear-gradient(180deg,#14212c70,#1d3b4470)}.player-board.mine{border:1px solid #98baba3b;background:linear-gradient(0deg,#14252c72,#21454b65)}.board-head{display:flex;align-items:center;justify-content:space-between;color:#bdd0d6;font-size:11px;letter-spacing:.09em;padding:3px 4px 8px}.seat-pill{display:inline-block;background:#2c4b58;padding:4px 9px;border-radius:99px;color:#e3e9e7;font-size:11px}.enemy .seat-pill{background:#615a4a}.table-core{display:grid;grid-template-columns:minmax(145px,.7fr) minmax(365px,2fr) minmax(145px,.7fr);gap:14px;align-items:center}.side-stack{display:flex;flex-direction:column;gap:9px;align-items:center}.core-center{display:flex;flex-direction:column;gap:6px}.unit-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));justify-items:center;gap:7px 11px}.unit-slot{min-height:calc(var(--card-h) + 2px);min-width:calc(var(--card-w) + 8px);width:100%;max-width:190px;border:1px dashed #96bfcb60;border-radius:10px;background:#5d81891f;display:flex;align-items:center;justify-content:center;position:relative;transition:background .15s}.unit-slot.over,.pile-slot.over{background:#9cddd75e;outline:2px solid #b2e7d8}.unit-slot .slot-label{position:absolute;top:6px;left:8px;font:10px/1 system-ui;color:#adcbd166;letter-spacing:.1em;pointer-events:none}.unit-slot.v-slot{border-color:#efd6a363;background:#a3a27c10}.unit-slot.v-slot .slot-label{color:#efd4a9}.unit-slot .card{position:relative;z-index:2}.soul-shadows{position:absolute;inset:0;pointer-events:none}.soul-shadows i{position:absolute;display:block;left:50%;top:50%;width:var(--card-w);height:var(--card-h);transform:translate(calc(-50% - var(--dx)),calc(-50% + var(--dy))) rotate(-7deg);background:repeating-linear-gradient(30deg,#3c6583,#304b68 9px,#233f5a 10px);border:2px solid #b9d6e180;border-radius:7px}.soul-count{position:absolute;right:2px;bottom:2px;z-index:4;font-size:10px;background:#edda9d;color:#22313a;padding:2px 5px;border-radius:5px;font-weight:700}.guard-zone{border:1px dashed #80a8b35a;border-radius:10px;min-height:calc(var(--card-w) + 10px);background:#4a7c8330;display:flex;justify-content:center;align-items:center;gap:5px;padding:5px;flex-wrap:wrap;position:relative}.guard-zone .slot-label{position:absolute;left:8px;top:4px;color:#8fb9bc82;font-size:10px}.handstrip{display:flex;justify-content:center;align-items:center;min-height:calc(var(--card-h) + 8px);gap:0;padding-top:6px;overflow-x:auto}.handstrip .card:not(:first-child){margin-left:calc(var(--card-w) * -.32)}.handstrip .card:hover{transform:translateY(-14px);z-index:20!important}.handstrip .card{flex:none;z-index:3;transition:transform .18s}.hand-holder{min-height:calc(var(--card-h) + 8px);border:1px dashed #84a8a83d;border-radius:8px;display:flex;align-items:center;justify-content:center}.hand-placeholder{color:#668b93;font-size:11px}.midline{display:flex;gap:14px;align-items:center;justify-content:center;color:#84afae;font-size:10px;letter-spacing:.3em;margin:8px 0}.midline span{width:28%;height:1px;background:linear-gradient(90deg,transparent,#6e999d,transparent)}
.zone-title{font-size:10px;letter-spacing:.07em;color:#b2cbd0;text-align:center;margin-top:3px}.pile-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:calc(var(--card-w) + 5px);min-height:calc(var(--card-h) + 9px);border-radius:10px;border:1px dashed #86abb454;background:#25495538;position:relative;padding:4px;cursor:pointer}.pile-slot .card{pointer-events:none}.pile-slot .pile-label{position:absolute;bottom:2px;right:3px;font-size:10px;background:#102430e8;padding:1px 5px;border-radius:4px}.deck-stack{width:var(--card-w);height:var(--card-h);position:relative;transform:rotate(-8deg);cursor:default}.deck-stack:before,.deck-stack:after{content:'';position:absolute;inset:0;border:2px solid #c3d2d66c;background:#d9e0d4;border-radius:7px;transform:translate(calc(var(--depth) * .65),var(--depth));box-shadow:0 4px 0 #4b6470}.deck-stack:after{transform:translate(0,0);border-color:#86b6c3;box-shadow:none;background:linear-gradient(135deg,#294c70,#142b46)}.deck-stack .back-art{position:absolute;inset:2px;z-index:2;width:calc(100% - 4px);height:calc(100% - 4px);object-fit:cover;border-radius:5px}.deck-stack strong{position:absolute;z-index:4;bottom:-11px;right:-10px;transform:rotate(8deg);font-size:13px;color:#29373a;background:#c8e9dc;padding:1px 6px;border-radius:9px}.deck-stack .back-symbol{position:absolute;z-index:3;top:38%;left:30%;font:29px Georgia;color:#d8ddd2}.pile-fan{display:flex;align-items:center;min-height:calc(var(--card-w) + 10px);max-width:100%;padding:4px 3px;justify-content:center;cursor:pointer}.pile-fan .card{flex:0 0 auto}.pile-fan.damage .card:not(:first-child){margin-left:calc(var(--card-h) * -.66)}.pile-fan.order .card:not(:first-child){margin-left:calc(var(--card-w) * -.50)}.pile-fan .card.lifted{transform:translateY(calc(var(--card-h) * -.33));z-index:10!important}.side-fan-box{max-width:100%;min-width:135px;min-height:125px;overflow:visible}.side-label{text-align:center;font-size:10px;color:#b5cbd0;margin-bottom:3px}.card{width:var(--card-w);height:var(--card-h);position:relative;overflow:hidden;background:linear-gradient(130deg,#315e75,#152f4a);border:1px solid #b2c8cd;border-radius:7px;box-shadow:0 3px 8px #0008;cursor:grab;user-select:none}.card img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.card .unknown{height:100%;display:grid;place-items:center;font:27px Georgia,serif;color:#e0dfbc;border:5px double #719db6;background:radial-gradient(circle,#42637d,#192d4d)}.card.landscape{width:var(--card-h);height:var(--card-w)}.card.landscape .face-rotate{width:var(--card-w);height:var(--card-h);position:absolute;left:calc((var(--card-h) - var(--card-w))/2);top:calc((var(--card-w) - var(--card-h))/2);transform:rotate(90deg);overflow:hidden}.card.tapped:not(.landscape){transform:rotate(90deg);z-index:5}.card.grab{cursor:grabbing}.card:focus-visible{outline:3px solid #a9eedc}.card .tiny-name{position:absolute;bottom:0;left:0;right:0;font-size:10px;line-height:1.3;background:#06131bd9;padding:3px 4px;color:#e4f1f5;max-height:40px;overflow:hidden}.game .controlbar{position:fixed;z-index:22;bottom:0;left:0;right:0;min-height:66px;background:#091621f5;border-top:1px solid #416170;display:flex;align-items:center;justify-content:space-between;padding:8px 25px;gap:20px;backdrop-filter:blur(12px)}.controlLeft,.controlRight{display:flex;align-items:center;gap:9px}.control{display:flex;align-items:center;gap:8px;border:1px solid #4c6b75;background:#1a3443;color:#eef7f7;border-radius:8px;padding:9px 16px;font-size:18px}.control span{font-size:13px}.judge-control{background:#826734;border-color:#d8b86d}.controlRight{font-size:11px;color:#91b0b9}.controlRight label{display:flex;align-items:center;gap:6px}.controlRight input{width:85px;accent-color:#b7e8d7}
.veil{position:fixed;inset:0;background:#041019df;backdrop-filter:blur(5px);z-index:65;display:flex;align-items:center;justify-content:center;padding:15px}.modal{width:min(960px,98vw);max-height:90vh;overflow:hidden;display:flex;flex-direction:column;background:#142633;border:1px solid #54818e;border-radius:17px;box-shadow:0 30px 90px #000d}.modal>header{display:flex;justify-content:space-between;align-items:center;padding:14px 21px;border-bottom:1px solid #3d5965}.modal h2{font-size:20px;margin:0}.iconBtn{font-size:27px;background:none;border:0;color:#c9e3e4}.modal #modalContent{padding:20px;overflow:auto}.note{color:#9eb7c1;font-size:12px;line-height:1.7}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.field input,.field textarea,.field select,.entry input,.entry select{border:1px solid #4f7280;background:#0d1d26;color:#e8f7fa;padding:10px;border-radius:8px;min-width:0}.field textarea{min-height:115px;width:100%;resize:vertical}.import-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.action-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}.import-list{max-height:300px;overflow:auto;border:1px solid #344c58;border-radius:10px;margin-top:16px}.entry{display:grid;grid-template-columns:48px 1fr 58px 96px 120px 35px;gap:6px;align-items:center;padding:6px;border-bottom:1px solid #344854}.entry img{width:44px;height:60px;object-fit:cover;border-radius:4px}.entry input{padding:6px}.entry select{padding:6px;font-size:11px}.pile-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(125px,1fr));gap:12px}.pile-entry{text-align:center;position:relative;font-size:11px;color:#c2d3d8}.pile-entry .card{margin:0 auto 4px}.context{position:fixed;z-index:99;background:#1b3240;box-shadow:0 14px 36px #000b;border:1px solid #70929c;border-radius:10px;padding:8px;min-width:190px;max-height:75vh;overflow:auto}.context button{display:block;width:100%;border:0;background:transparent;padding:8px 10px;text-align:left;color:#d5e9ed;border-radius:5px;font-size:12px}.context button:hover{background:#365665}.context .context-title{padding:5px 9px 10px;color:#a9d3c9;font-weight:700;font-size:12px}.judgement{position:fixed;inset:0;z-index:55;background:#041421e6;display:grid;place-items:center;backdrop-filter:blur(7px)}.judgeInner{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}.judgeTag{letter-spacing:.3em;color:#c6e8db;font-size:11px}.judgeInner h2{font-size:32px;margin:5px}.judgeInner p{color:#adc3cb;margin:0 0 12px}.judgeInner .card{width:240px;height:340px;box-shadow:0 0 80px #e9cb7455;cursor:default}.judgeInner .card .tiny-name{font-size:14px}.judgeActions{display:flex;gap:14px;margin-top:18px}.judgeActions .btn{font-size:16px;min-width:150px}.toast{position:fixed;z-index:100;bottom:78px;right:24px;max-width:500px;color:#10242a;background:#d4f2e7;padding:12px 18px;border-radius:9px;box-shadow:0 13px 40px #000a;font-size:13px}.log-row{padding:8px;border-bottom:1px solid #345666;font-size:12px}.list-note{color:#86a4b0;font-size:11px}.status-ok{color:#afead5}.status-no{color:#f4bf8e}
@media(max-width:900px){.lobby{grid-template-columns:1fr;gap:20px;padding:25px}.hero-card{display:none}.topbar{flex-wrap:wrap}.topActions .btn{padding:7px}.game{padding:5px 4px 100px}.battle-layout{transform-origin:top left;min-width:820px}.controlRight{display:none}.control{padding:8px;font-size:14px}.control span{font-size:11px}.import-grid{grid-template-columns:1fr}.entry{grid-template-columns:36px 1fr 46px 76px 80px 25px}}

/* v1.1: face-down + off-board piles */
.card.face-down{border-color:#d8cba2;box-shadow:0 3px 9px #0009,inset 0 0 0 2px #d8cba244}
.card.face-down .unknown{background:repeating-linear-gradient(45deg,#153954,#153954 10px,#274d6c 11px,#274d6c 20px);color:#e9dfb9}
.inspect-wrap{display:flex;flex-direction:column;align-items:center;gap:10px}.inspect-wrap .card{width:240px;height:340px;cursor:default}.inspect-wrap .card .tiny-name{font-size:13px}
.offboard-zone{display:flex;flex-direction:column;gap:12px}.offboard-zone .action-row .btn{flex:1}
.pile-entry .card.face-down .tiny-name{display:none}
@media(max-width:1100px){.game .controlbar{flex-wrap:wrap;gap:5px}.controlLeft{flex-wrap:wrap;gap:4px}.control{padding:6px 10px}}

/* V1.2: private X-card deck inspection + explicitly shown-card overlay */
.inspection-panel{display:flex;flex-direction:column;gap:12px}
.inspection-config{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px;border:1px solid #355a67;border-radius:10px}
.inspection-config input{max-width:90px;background:#091923;border:1px solid #436b79;color:white;padding:8px;border-radius:6px}
.inspection-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.inspection-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(147px,1fr));gap:12px;overflow:auto;max-height:52vh;padding:6px}
.inspection-item{background:#122935;border:1px solid #416370;border-radius:10px;padding:9px;display:flex;flex-direction:column;gap:8px;align-items:center;cursor:pointer}
.inspection-item.picked{border-color:#b1eed9;background:#24514f}
.inspection-item input{align-self:flex-start;width:19px;height:19px;accent-color:#a6e7d7}
.inspection-index{font-size:12px;color:#c4e7da}
.inspection-item .card{width:125px;height:177px;cursor:pointer}
.inspection-item .tiny-name{font-size:9px}
.inspection-settings{display:flex;align-items:center;gap:15px;flex-wrap:wrap;padding:13px;border:1px solid #426270;border-radius:10px}
.inspection-settings select{min-width:145px;background:#0d1d26;color:#e8f7fa;border:1px solid #507583;border-radius:8px;padding:9px}
.inspection-settings .inspect-pub{display:flex;align-items:center;gap:7px}
.inspection-settings input{width:17px;height:17px;accent-color:#b1eed9}
.inspect-reveal-overlay{position:fixed;inset:0;z-index:58;background:#07151de8;display:flex;align-items:center;justify-content:center;padding:25px;backdrop-filter:blur(8px)}
.inspect-reveal-inner{max-width:920px;width:100%;max-height:94vh;overflow:auto;background:#1a3442;border:1px solid #a4d7c7;border-radius:18px;padding:24px;text-align:center;box-shadow:0 30px 100px #000d}
.inspect-reveal-inner h2{margin:0 0 17px}
.inspect-reveal-cards{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-bottom:24px}
.inspect-shown-card .card{width:205px;height:289px}
