*{box-sizing:border-box} :root{color-scheme:dark;--bg:#1d1c29;--panel:#292736;--line:#45404d;--ink:#f0e9da;--muted:#b6afbd;--gold:#e4c88c;--accent:#baadeb}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);background:#353141;color:var(--ink);border-radius:8px;padding:11px 18px;transition:background .15s,border-color .15s}button:hover:not(:disabled){background:#474053;border-color:#b6a584}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #e5ca88;outline-offset:3px}a{color:inherit;text-decoration:none}a:hover{color:var(--gold)}h1,h2,p{margin:0}h1,h2{font-family:Georgia,"Songti SC","Noto Serif SC",serif;line-height:1.25}p{color:var(--muted)}small{font-size:12px}strong{font-weight:650}input,textarea,select{width:100%;border:1px solid #5a5264;border-radius:7px;background:#211f2b;color:var(--ink);padding:11px 12px}textarea{resize:vertical}label{display:block;font-size:13px;color:var(--muted);margin-bottom:7px}.topbar{max-width:1440px;margin:auto;padding:24px 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:16px}.wordmark{display:flex;align-items:center;gap:12px;font-size:23px;font-family:Georgia,"Songti SC",serif}.wordmark small{display:block;letter-spacing:2.5px;font-size:9px;color:var(--muted);font-family:system-ui}.brand-symbol{font-size:32px;color:var(--gold)}.top-actions{display:flex;align-items:center;gap:20px}.top-actions nav{display:flex;gap:10px;font-size:12px;color:var(--muted)}.rank-mark{color:var(--gold);font-size:13px}.primary{background:var(--gold);color:#28222b;border-color:var(--gold);font-weight:700}.primary:hover:not(:disabled){background:#f0dbac;color:#211d23}.secondary{background:#35313f}.quiet{background:transparent;border-color:transparent;padding:8px 12px;color:var(--muted)}.danger{background:#873e49}.eyebrow{font-size:12px;letter-spacing:3px;color:var(--gold)}.connection{height:0;text-align:center;font-size:13px;position:relative;z-index:100}.connection.lost{height:auto;padding:8px;background:#843e45;color:#fff}.lobby{max-width:1180px;margin:0 auto;padding:46px 36px 30px}.hero-intro{margin-bottom:32px}.hero-intro h1{font-size:clamp(28px,3.6vw,43px);margin:12px 0 14px;letter-spacing:.4px}.hero-intro p{font-size:15px;max-width:650px}.lobby-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:40px}.character-panel{border-top:2px solid var(--accent);padding-top:26px}.chosen-character{display:flex;align-items:center;gap:26px;margin-bottom:20px}.portrait{flex-shrink:0;width:146px;overflow:hidden;border-radius:50% 50% 15% 15%;border:1px solid var(--hero,#b6a8e9);background:#393345}.portrait svg{display:block;width:100%;height:auto}.chosen-character h2{font:26px Georgia,serif;color:var(--accent);margin:4px 0 10px}.chosen-character h2 span{font-size:21px;color:var(--ink);display:block;margin-top:6px}.hero-picker{display:grid;grid-template-columns:repeat(8,1fr);gap:7px}.hero-picker button{font-size:12px;min-height:42px;padding:7px 4px;border-color:#46404f}.hero-picker button.active{background:#51455f;border-color:var(--hero);color:var(--hero)}.hero-description{padding:18px 0 22px;min-height:100px;font-size:13px}.hero-description strong{color:#e4d9ec}.hero-description p+p{margin-top:6px}.deck-controls{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.deck-controls label{grid-column:1/-1;margin:0}.deck-import{margin-top:15px}.deck-import summary{color:var(--muted);cursor:pointer;font-size:13px;padding:8px 0}.deck-import textarea{margin:5px 0 10px}.fine{font-size:12px;line-height:1.8;margin-top:18px}.play-panel{border-left:1px solid var(--line);padding-left:40px}.play-choice{padding:26px 0;border-top:1px solid var(--line)}.choice-heading{display:flex;gap:13px;align-items:center;margin-bottom:9px}.choice-heading h2{font-size:23px}.choice-icon{color:var(--gold);font-size:27px}.play-choice p{font-size:13px;margin-bottom:19px}.play-choice>.primary,.play-choice>.secondary{width:100%;min-height:48px}.player-record{padding-bottom:22px;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.player-record>span{font-size:12px;color:var(--muted)}.player-record strong{font-size:22px;color:var(--gold)}.player-record small{font-size:13px}.player-record p{font-size:12px;margin-left:auto}.account-note{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:22px}.account-note p{font-size:13px;max-width:230px}.account-note button{white-space:nowrap;font-size:13px}#join-form{margin-top:18px}.join-row{display:flex;gap:8px}.join-row input{min-width:0;font-family:monospace}.join-row button{flex-shrink:0;font-size:13px}.lobby-footer{display:flex;gap:16px;flex-wrap:wrap;margin-top:30px;border-top:1px solid var(--line);padding-top:23px;align-items:center;font-size:12px;color:var(--muted)}.lobby-footer a{font-size:14px;color:var(--gold)}.lobby-footer p{width:100%}.waiting-screen{max-width:900px;margin:auto;text-align:center;padding:50px 24px}.waiting-screen h1{font-size:32px;margin:14px 0 24px}.waiting-screen>.secondary{margin-top:24px}.queue-art{display:flex;position:relative;justify-content:center;margin:45px auto;width:190px}.queue-art .portrait{width:170px}.pulse-ring{position:absolute;inset:-10px;border:1px solid var(--gold);border-radius:50%;animation:pulse 2s infinite}@keyframes pulse{50%{opacity:.25;transform:scale(1.07)}}.room-code small{display:block;color:var(--muted)}.room-code strong{font:30px monospace;letter-spacing:5px;color:var(--gold)}.room-seats{display:flex;justify-content:center;gap:75px;margin:32px 0}.room-seats article{width:210px;display:flex;flex-direction:column;align-items:center;gap:10px}.room-seats h2{font:18px system-ui}.room-seats small{font-size:12px;color:var(--muted)}.room-seats .ready{color:#b2d7b2}.empty-seat{height:146px;width:146px;border:1px dashed #6b6071;border-radius:50%;font-size:65px;display:grid;place-items:center;color:#645c70}.room-buttons{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.invite-field{max-width:540px;text-align:left;margin:25px auto 0}.invite-field input{font-size:12px;margin-top:8px}.battle{max-width:1320px;margin:auto;padding:14px 28px 24px;position:relative}.battle-head{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;margin-bottom:12px}.battle-head>span{color:var(--gold)}.battle-head>div{display:flex;gap:14px;align-items:center}.table{background:radial-gradient(ellipse at center,#373443,#282632 75%);border:1px solid #59505c;border-radius:18px;padding:12px 25px;box-shadow:inset 0 0 60px #15121c55}.hero-row{display:flex;gap:16px;align-items:center;min-height:100px}.hero-row .portrait{width:83px;border-radius:10px 10px 45% 45%;border:0}.hero-target{padding:0;position:relative;border:2px solid #6d5b74;border-radius:14px;flex-shrink:0;background:#25202d}.health{display:block;color:#ffb1ac;font-weight:700;background:#272230;border-radius:0 0 10px 10px}.health small{color:#c4d6e5}.hero-status{display:flex;flex-direction:column;font-size:12px}.hero-status>b{font-size:14px}.hero-status>span,.hero-status>small{color:var(--muted)}.hero-status em{font-size:11px;font-style:normal;color:var(--gold)}.mana{color:#aba5ef}.weapon{font-size:11px;padding:3px 6px;text-align:left}.card-backs{margin-left:auto;display:flex;padding-left:16px}.card-backs i{font:24px Georgia;color:#c4ac85;width:32px;height:48px;border:1px solid #8d7b82;background:#443c51;border-radius:5px;display:grid;place-items:center;margin-left:-9px}.power-button{margin-left:auto;font-size:12px;max-width:180px}.board-row{display:flex;gap:12px;justify-content:center;align-items:center;min-height:154px;padding:7px 0}.unit-wrap{width:calc((100% - 72px)/7);max-width:121px;min-width:60px;position:relative}.unit{width:100%;padding:3px 4px 6px;position:relative;display:flex;flex-direction:column;align-items:center;overflow:hidden;background:#403747;border:2px solid #655969;border-radius:12px}.unit-art{width:100%;height:75px;display:block;overflow:hidden}.unit-art svg{width:100%;height:100%;object-fit:cover}.unit b{font-size:11px;white-space:normal;line-height:1.3;min-height:27px}.unit .stats{font-size:14px;width:100%;padding:0 3px}.traits{font-size:9px;line-height:1.3;color:#e1ca97;display:block;min-height:12px}.unit-info{position:absolute;right:1px;top:-9px;border-radius:50%;background:#262330;padding:2px 6px;font-size:12px;z-index:2}.empty-board{font-size:12px;letter-spacing:4px;color:#857a8c}.table-divider{display:flex;align-items:center;justify-content:center;gap:14px;border-top:1px solid #6b5b6c;border-bottom:1px solid #493f4d;padding:5px 0;font-size:12px;color:var(--gold)}.end-turn{padding:7px 15px;font-size:12px;color:var(--gold);margin-left:auto}.table-divider>span:first-child{margin-right:auto}.hand{display:flex;gap:9px;overflow-x:auto;padding:12px 4px 13px;justify-content:flex-start;scrollbar-width:thin;scrollbar-color:#71617a #27232f;min-height:230px}.card{flex-shrink:0;position:relative;width:145px;min-height:205px;background:#e4d8c0;color:#2d2731;padding:7px 7px 5px;border:2px solid #9a7f69;display:flex;flex-direction:column;text-align:center;border-radius:10px;box-shadow:0 3px 8px #100b1840}.card:hover:not(:disabled){background:#f0e3c9;color:#221c25;transform:translateY(-3px)}.cost{position:absolute;top:3px;left:3px;z-index:1;background:#4d4d83;color:white;border:2px solid #b8bbdd;width:27px;height:27px;display:grid;place-items:center;border-radius:50%;font-weight:bold;font-size:17px;line-height:1}.card-art{height:85px;display:block;overflow:hidden;border-radius:5px;margin-bottom:5px}.card-art svg{display:block;width:100%;height:100%}.card b{font-size:12px;line-height:1.3;margin:3px 0 5px}.card-text{font-size:11px;line-height:1.35;display:block;flex:1}.stats{display:flex;justify-content:space-between;gap:10px;font-weight:700;margin-top:5px}.stats>span:first-child{color:#dbc073}.card .stats>span:first-child{color:#7e4b22}.stats>span:last-child{color:#f1a5a7}.card .stats>span:last-child{color:#9e3642}.card-type{font-size:10px;color:#655d67;margin-top:4px}.can-act{border-color:#8cae8a;box-shadow:0 0 0 1px #78ba7550}.target{border-color:#eac97c;box-shadow:0 0 14px #eac97c70;cursor:crosshair}.selected{border-color:#e7c06d;box-shadow:0 0 0 2px #e7c06d}.action-hint{min-height:68px;display:flex;align-items:center;font-size:12px;padding:10px 4px}.action-panel{min-height:68px;display:flex;justify-content:space-between;gap:15px;align-items:center;padding:10px 12px;background:#373041;border-left:3px solid var(--gold);margin-top:8px;border-radius:4px}.action-panel p{font-size:12px}.action-panel strong{font-size:13px}.action-buttons{display:flex;gap:7px;flex-shrink:0}.action-buttons button{padding:7px 12px;font-size:12px}.target-hint{color:var(--gold)}.battle-footer{display:flex;align-items:center;gap:12px}.battle-footer p{font-size:11px;margin-right:auto}.battle-overlay{position:fixed;inset:0;background:#14111cda;z-index:20;display:flex;align-items:center;justify-content:center;overflow-y:auto;padding:30px 18px}.mulligan,.result{max-width:900px;width:100%;background:#2c2737;border:1px solid #756377;border-radius:16px;text-align:center;padding:32px}.mulligan h2{font-size:27px;margin-bottom:12px}.mulligan p{font-size:13px}.mulligan-cards{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin:25px 0}.mulligan-cards .card{width:154px;min-height:235px}.replace{border-color:#e7a49e;opacity:.75;transform:translateY(8px)}.replace-mark{position:absolute;font-size:60px;top:28px;left:50%;transform:translateX(-50%);color:#ffbbb5;text-shadow:0 2px 4px black}.result{max-width:420px}.result-symbol{font-size:70px;color:var(--gold)}.result h1{font-size:45px;margin:8px 0 15px}.result p{margin-bottom:12px}.result strong{display:block;color:var(--gold)}.result button{display:block;margin:25px auto 0;width:80%}dialog{width:min(650px,calc(100vw - 30px));max-height:90dvh;overflow:auto;background:#302a3b;color:var(--ink);border:1px solid #86728e;border-radius:14px;padding:20px;box-shadow:0 20px 70px #0007}dialog::backdrop{background:#15111cc9}.dialog-close{display:block;margin-left:auto;font-size:12px;padding:6px 12px}.dialog-content{padding:12px}.dialog-content>p{margin:12px 0}.dialog-content>button{margin:16px 8px 0 0}.full-card{max-width:310px;margin:auto;background:#e4d8c0;color:#292330;padding:15px;border-radius:14px;position:relative;text-align:center}.full-card .card-art{height:210px}.full-card>b{font-size:23px;display:block;margin:12px 0}.full-card .card-text{font-size:17px;line-height:1.7}.full-card .cost{width:38px;height:38px;font-size:24px}.full-card .stats{font-size:22px}.deck-list{display:flex;flex-direction:column;gap:8px;margin-top:20px}.deck-list button{display:grid;grid-template-columns:25px 1fr 30px;text-align:left;gap:5px;font-size:13px}.deck-list small{grid-column:2/-1;font-size:12px;color:var(--muted)}.logs{font-size:13px;padding-left:22px}.logs li{padding:5px 0;border-bottom:1px solid var(--line)}#notice{position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;max-width:min(550px,90vw);padding:12px 20px;border-radius:9px;background:#ece1c9;color:#302635;z-index:1000;font-size:14px;box-shadow:0 5px 20px #0005;transition:.2s}#notice.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1500px){.lobby{padding-top:65px}.lobby-grid{gap:60px}.hero-intro{margin-bottom:45px}.hero-row{min-height:112px}.board-row{min-height:165px}.unit-art{height:85px}}@media(max-width:800px){.topbar{padding:17px 20px}.wordmark{font-size:19px}.top-actions{gap:8px}.top-actions .quiet{font-size:12px}.rank-mark{display:none}.lobby{padding:30px 20px}.lobby-grid{grid-template-columns:1fr;gap:25px}.hero-intro{margin-bottom:25px}.play-panel{border-left:0;padding-left:0}.chosen-character .portrait{width:120px}.hero-picker{grid-template-columns:repeat(8,1fr)}.battle{padding:10px 12px}.table{padding:9px 12px}.board-row{gap:5px;min-height:125px}.unit-wrap{width:calc((100% - 30px)/7);min-width:0}.unit-art{height:62px}.unit{padding:2px}.unit b{font-size:9px}.unit .stats{font-size:12px;gap:2px}.traits{font-size:8px}.hero-row .portrait{width:64px}.hero-row{gap:12px;min-height:90px}.action-panel{flex-direction:column;align-items:stretch;gap:5px}.action-buttons{justify-content:flex-end}.hand{min-height:218px}.card{width:130px;min-height:195px}.battle-head{font-size:11px}.battle-head .quiet{font-size:11px}.room-seats{gap:20px}.room-seats article{width:170px}.battle-footer{flex-wrap:wrap;gap:0}.battle-footer p{width:100%}.mulligan{padding:22px 10px}.mulligan-cards{gap:9px}.mulligan-cards .card{width:135px;min-height:220px}.card-backs i{width:24px;height:37px;font-size:17px}.hero-status em{display:block}}
@media(max-width:460px){.topbar{padding:13px 14px}.wordmark{font-size:17px;gap:7px}.wordmark small{font-size:7px;letter-spacing:1.5px}.brand-symbol{font-size:25px}.top-actions{gap:3px}.top-actions nav{gap:6px;font-size:10px}.top-actions .quiet{padding:6px}.lobby{padding:26px 16px}.hero-picker{grid-template-columns:repeat(4,1fr)}.hero-picker button{font-size:13px}.chosen-character{gap:18px}.chosen-character h2{font-size:23px}.chosen-character h2 span{font-size:19px}.account-note{align-items:flex-start}.room-code strong{font-size:23px;letter-spacing:3px}.room-seats .portrait,.empty-seat{width:110px}.empty-seat{height:110px}.room-seats article{width:140px}.waiting-screen{padding:30px 16px}.waiting-screen h1{font-size:27px}.battle{padding:6px 6px 20px}.battle-head{gap:4px;flex-wrap:wrap}.battle-head>span{width:100%}.table{padding:6px;border-radius:10px}.hero-status{font-size:10px}.hero-status>b{font-size:12px}.hero-row .portrait{width:55px}.power-button{font-size:10px;padding:9px 6px;max-width:100px}.board-row{gap:3px;min-height:106px}.unit-wrap{width:calc((100% - 18px)/7)}.unit-art{height:43px}.unit b{font-size:8px;min-height:22px}.unit .stats{font-size:10px}.traits{font-size:7px}.unit-info{font-size:10px;padding:1px 4px}.unit{border-radius:7px}.card-backs{padding-left:5px}.card-backs i{width:18px;margin-left:-9px;height:28px;font-size:14px}.hero-status>small{font-size:9px}.card{width:125px}.mulligan h2{font-size:23px}.mulligan-cards .card{width:calc(50% - 12px);max-width:150px;min-height:205px}.mulligan-cards .card-art{height:76px}.mulligan-cards{margin:18px 0}.battle-overlay{padding:16px}.room-buttons button{font-size:13px}.deck-controls{grid-template-columns:1fr}.deck-controls .quiet{text-align:left;padding-left:0}.invite-field input{font-size:10px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Keep a small board legible without reserving seven narrow slots. */
.unit-wrap{width:calc((100% - (var(--units) - 1)*12px)/var(--units))}.unit .stats>span{white-space:nowrap}.plan-list{display:flex;flex-wrap:wrap;gap:4px;max-width:460px}.plan-list button{padding:2px 5px;font-size:10px;color:var(--gold)}.hero-status .mechanic{color:#cfbfdf}.live-traits{margin:18px 0 0;font-size:14px}.live-traits p+p{margin-top:9px}.full-card .stats>span:first-child{color:#7e4b22}.full-card .stats>span:last-child{color:#9e3642}.card-extra{font-size:10px;color:#754250}
@media(max-width:800px){.unit-wrap{width:calc((100% - (var(--units) - 1)*5px)/var(--units))}}
@media(max-width:460px){.unit-wrap{width:calc((100% - (var(--units) - 1)*3px)/var(--units));max-width:83px}.plan-list{max-width:190px}.plan-list button{font-size:9px}.hero-status .mechanic{max-width:180px}.unit .stats{gap:0}.unit .stats>span{font-size:9px}}
@media(min-width:801px) and (max-height:900px){.topbar{padding:10px 28px}.battle{padding-top:8px}.battle-head{margin-bottom:6px}.table{padding:8px 20px}.hero-row{min-height:72px}.hero-row .portrait{width:51px}.hero-status{font-size:11px}.hero-status>small{font-size:10px}.board-row{min-height:93px;padding:4px 0}.unit-art{height:35px}.unit b{font-size:10px;min-height:15px}.unit .stats{font-size:12px;margin-top:2px}.traits{min-height:10px}.action-hint,.action-panel{min-height:44px;padding:6px 4px}.hand{min-height:183px;padding:8px 4px}.hand .card{width:137px;min-height:175px}.hand .card-art{height:60px}.hand .card-text{font-size:10px}.battle-footer p{font-size:10px}.plan-list button{font-size:9px}}
