@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500;600;700;900&family=Space+Mono:wght@400;700&display=swap');
:root{--ink:#e8e0d0;--paper:#171512;--panel:#201d18;--line:#4b4438;--muted:#9e9688;--gold:#d8ad5b;--red:#b94834;--jade:#5d8d79;--black:#100f0d;--serif:'Noto Serif SC',serif;--mono:'Space Mono',monospace}*{box-sizing:border-box}html{background:var(--black);color:var(--ink);font-family:var(--serif);font-size:16px}body{margin:0;min-height:100vh;background:radial-gradient(circle at 18% 8%,#2b241c 0,transparent 34%),linear-gradient(135deg,#11100e,#191713 60%,#0e0d0c);overflow-x:hidden}.paper-noise{position:fixed;inset:0;opacity:.16;pointer-events:none;z-index:10;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.28'/%3E%3C/svg%3E")}button,input,select{font:inherit}button{color:inherit}.topbar{height:76px;border-bottom:1px solid #4b443877;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,4vw,64px);position:sticky;top:0;z-index:20;background:#100f0dee;backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:12px;background:none;border:0;text-align:left;cursor:pointer}.brand b{display:block;font-weight:900;letter-spacing:.16em}.brand small{display:block;color:var(--muted);font:9px var(--mono);letter-spacing:.28em}.seal{width:38px;height:38px;border:1px solid var(--red);color:#e16c55;display:grid;place-items:center;transform:rotate(-2deg);font-size:20px;font-weight:900}.topbar nav{display:flex;height:100%;gap:6px}.topbar nav button{padding:0 22px;border:0;border-bottom:2px solid transparent;background:none;color:var(--muted);cursor:pointer}.topbar nav button:hover,.topbar nav button.active{color:var(--ink);border-color:var(--gold)}.status-pill{font:11px var(--mono);color:var(--muted);display:flex;gap:8px;align-items:center}.status-pill i{width:7px;height:7px;border-radius:50%;background:var(--jade);box-shadow:0 0 12px var(--jade)}main{min-height:calc(100vh - 76px)}.primary,.secondary,.create-room,.end-turn,.file-btn{border:1px solid var(--gold);background:var(--gold);color:#15120d;padding:12px 18px;font-weight:800;cursor:pointer}.primary:hover,.create-room:hover{filter:brightness(1.12)}.secondary{background:transparent;color:var(--ink);border-color:var(--line)}button:disabled{opacity:.35;cursor:not-allowed}.lobby-page{min-height:calc(100vh - 76px);display:grid;grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);position:relative}.lobby-copy{padding:clamp(60px,9vw,130px) clamp(28px,7vw,110px);border-right:1px solid var(--line)}.eyebrow,.page-title>div>span{font:11px var(--mono);letter-spacing:.28em;color:var(--gold)}.lobby-copy h1{font-size:clamp(54px,7.2vw,112px);line-height:.94;letter-spacing:-.06em;margin:24px 0 34px;font-weight:900}.lobby-copy h1 em{font-style:normal;color:transparent;-webkit-text-stroke:1px #b9aa91}.lobby-copy>p{max-width:560px;color:#beb5a6;font-size:18px;line-height:1.9}.lobby-actions{display:flex;gap:12px;margin-top:40px}.lobby-note{margin-top:34px;font:12px var(--mono);color:var(--muted);display:flex;align-items:center;gap:10px}.lobby-note b{color:var(--ink)}.lobby-note span{width:28px;border-top:1px solid var(--line)}.room-panel{align-self:center;margin:48px clamp(24px,5vw,76px);padding:34px;border:1px solid var(--line);background:linear-gradient(145deg,#242019cc,#151310cc);box-shadow:18px 18px 0 #09080766}.panel-no{font:10px var(--mono);color:var(--red);letter-spacing:.2em}.room-panel h2{font-size:30px;margin:18px 0 12px}.room-panel p{color:var(--muted);line-height:1.7}.room-panel label{display:grid;gap:9px;margin:24px 0 16px;color:#c8beae;font-size:14px}.room-panel input,.room-panel select,.toolbar input,.toolbar select,.deck-stack input,.deck-stack select,.mini-filter input{width:100%;background:#11100d;border:1px solid var(--line);color:var(--ink);padding:12px;outline:none}.room-panel input:focus,.toolbar input:focus{border-color:var(--gold)}.room-code{display:grid;grid-template-columns:1fr 76px}.room-code input{font:700 19px var(--mono);letter-spacing:.18em;text-transform:uppercase}.room-code button{background:#312b22;border:1px solid var(--line);border-left:0;cursor:pointer}.create-room{width:100%;margin-top:12px}.room-panel>small{display:block;margin-top:16px;color:#746e64;line-height:1.6}.crossroads-mark{position:absolute;left:51%;bottom:5%;opacity:.09;transform:rotate(12deg)}.crossroads-mark i{position:absolute;display:block;width:220px;border-top:18px solid var(--gold);transform-origin:center}.crossroads-mark i:nth-child(2){transform:rotate(90deg)}.crossroads-mark i:nth-child(3){transform:rotate(35deg)}.crossroads-mark i:nth-child(4){transform:rotate(-35deg)}.page{padding:38px clamp(20px,5vw,72px) 70px}.page-title{display:flex;align-items:end;justify-content:space-between;margin-bottom:28px}.page-title h1{font-size:clamp(38px,5vw,68px);margin:4px 0 0;letter-spacing:-.04em}.page-title>button{margin-left:8px}.toolbar{display:grid;grid-template-columns:auto 150px 150px minmax(180px,1fr);gap:10px;border-block:1px solid var(--line);padding:14px 0}.seg{display:flex}.seg button{background:transparent;border:1px solid var(--line);padding:9px 14px;cursor:pointer}.seg .on{background:var(--ink);color:var(--black)}.result-line{font:11px var(--mono);color:var(--muted);padding:18px 0}.result-line b{color:var(--gold)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px}.game-card{position:relative;min-height:350px;border:1px solid #5b5142;background:#1c1915;padding:12px;display:flex;flex-direction:column;box-shadow:0 12px 30px #0005;cursor:pointer;transition:.18s}.game-card:hover{transform:translateY(-5px);border-color:var(--gold)}.game-card:before{content:"";position:absolute;inset:5px;border:1px solid #ffffff0b;pointer-events:none}.rarity-I{border-color:#b98e42}.rarity-II{border-color:#6f857d}.card-head,.card-meta,.stats{display:flex;align-items:center;justify-content:space-between}.card-head b{font-size:17px}.card-head span{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:#18130c;font:700 14px var(--mono)}.card-art{height:130px;margin:10px 0;background:radial-gradient(circle at 40% 30%,#6d4630,#1d1713 65%);display:grid;place-items:center;position:relative;overflow:hidden}.card-art:before,.card-art:after{content:"";position:absolute;width:120%;border-top:1px solid #d8ad5b44;transform:rotate(28deg)}.card-art:after{transform:rotate(-28deg)}.card-art>span{font-size:64px;color:#d8ad5b55}.card-art i{position:absolute;bottom:8px;left:9px;font:8px var(--mono);letter-spacing:.1em;color:#d5c8b7}.art-1{background:radial-gradient(circle at 35% 25%,#684932,#181411 68%)}.art-2{background:radial-gradient(circle at 65% 30%,#355149,#141816 68%)}.art-3{background:radial-gradient(circle at 40% 60%,#50363a,#171315 68%)}.art-4{background:radial-gradient(circle at 60% 30%,#594f36,#181611 68%)}.art-5{background:radial-gradient(circle at 50% 50%,#3a4659,#13161b 68%)}.card-meta{font:10px var(--mono);color:var(--muted);letter-spacing:.12em}.stats{border-block:1px solid var(--line);margin-top:10px;padding:8px 2px}.stats code{font:12px var(--mono);color:var(--gold);letter-spacing:.12em}.game-card p{font-size:13px;line-height:1.7;color:#c1b9ab;margin:11px 2px}.count{position:absolute;right:8px;bottom:8px;background:var(--red);padding:4px 8px;font:12px var(--mono)}.deck-summary{display:grid;grid-template-columns:160px 160px 1fr auto;gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:24px}.deck-summary>div,.deck-summary>button,.deck-summary>label{background:var(--panel);padding:18px}.deck-summary b{font:700 28px var(--mono);display:block;color:var(--gold)}.deck-summary span{font-size:12px;color:var(--muted)}.deck-summary button,.file-btn{color:var(--ink);border:0;cursor:pointer;text-align:center}.file-btn input{display:none}.deck-list{display:grid;gap:10px}.deck-row{display:grid;grid-template-columns:64px minmax(200px,1fr) 150px auto;align-items:center;gap:20px;border:1px solid var(--line);background:#1b1814;padding:16px 20px}.deck-emblem{width:52px;height:52px;border:1px solid var(--red);display:grid;place-items:center;font-size:26px;color:#df725e}.deck-row h2{margin:2px 0}.deck-row span,.deck-row small{color:var(--muted)}.deck-count{display:grid;grid-template-columns:auto 1fr;align-items:end}.deck-count b{font:700 28px var(--mono);color:var(--red)}.deck-count.valid b{color:var(--jade)}.deck-count small{grid-column:1/3;font-size:11px}.row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.row-actions button,.debug button,.detail-copy button{background:transparent;border:1px solid var(--line);padding:8px 10px;cursor:pointer}.row-actions .danger{color:#dc7160}.builder{display:grid;grid-template-columns:320px 1fr;gap:22px}.deck-stack{border:1px solid var(--line);background:#191713;padding:18px;position:sticky;top:94px;height:calc(100vh - 120px);display:flex;flex-direction:column;gap:12px}.deck-stack label{display:grid;gap:6px;font-size:12px;color:var(--muted)}.stack-list{overflow:auto;display:grid;gap:4px}.stack-list button{display:grid;grid-template-columns:28px 1fr 24px 28px;align-items:center;background:#231f1a;border:0;border-left:2px solid var(--gold);color:var(--ink);padding:8px;text-align:left;cursor:pointer}.stack-list i,.stack-list em{font:10px var(--mono);color:var(--muted)}.deck-validation{border-top:1px solid var(--line);padding-top:12px;color:#dc7160}.deck-validation.valid{color:#76a590}.deck-validation b{display:block;font:700 24px var(--mono)}.deck-validation span{font-size:12px}.mini-filter{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;margin-bottom:12px}.mini-filter span{font-size:12px;color:var(--muted)}.builder-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:7px}.mini-card{display:grid;grid-template-columns:32px 1fr 38px;align-items:center;text-align:left;background:#1d1a16;border:1px solid #38332b;color:var(--ink);padding:10px;cursor:pointer}.mini-card:hover{border-color:var(--gold)}.mini-card>span{width:27px;height:27px;border-radius:50%;background:var(--gold);color:#16120c;display:grid;place-items:center;font:700 12px var(--mono)}.mini-card b,.mini-card small{display:block}.mini-card small{color:var(--muted);font:10px var(--mono);margin-top:4px}.mini-card em{text-align:right;color:var(--muted);font:11px var(--mono)}.empty-state{text-align:center;padding:10vh 20px}.empty-state>div{font-size:100px;color:#d8ad5b22}.battle-page{padding:16px clamp(10px,2vw,28px) 30px}.battle-top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:12px}.hq{border-left:2px solid var(--red);padding:8px 14px;background:#211d18}.hq span,.hq small{display:block;color:var(--muted);font-size:11px}.hq b{font-size:17px}.hq em{font:700 20px var(--mono);color:#e36b58;margin-left:12px}.enemy-hq{max-width:340px}.turn-stamp{text-align:center}.turn-stamp span,.turn-stamp small{display:block;font:10px var(--mono);color:var(--muted);letter-spacing:.12em}.turn-stamp b{font-size:18px}.end-turn{justify-self:end}.battle-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:14px}.board-wrap{position:relative;border:1px solid var(--line);background:radial-gradient(circle at center,#2a251d,#16130f 70%);padding:10px}.row-label{font:9px var(--mono);color:#746b5e;letter-spacing:.16em;margin:3px}.board-row{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.slot,.board-unit{aspect-ratio:1.5/1;border:1px solid #4a4336;background:#ffffff05;position:relative}.slot:after{content:"";position:absolute;inset:12%;border:1px dashed #746b5e33}.slot.legal{border-color:var(--jade);background:#5d8d7922;box-shadow:inset 0 0 28px #5d8d7922}.board-unit{background:linear-gradient(145deg,#332d24,#1b1814);color:var(--ink);padding:7px;text-align:left;cursor:pointer;overflow:hidden}.board-unit:hover,.board-unit.target{border-color:var(--red);box-shadow:0 0 0 2px #b9483433}.board-unit.selected{border-color:var(--gold)}.board-unit>span{position:absolute;right:6px;top:5px;font:700 11px var(--mono);color:var(--gold)}.board-unit>b{font-size:clamp(11px,1.3vw,16px);display:block;padding-right:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-unit>small{font:9px var(--mono);color:var(--gold)}.board-unit>div{display:flex;gap:10px;margin-top:8px}.board-unit em{font:10px var(--mono);font-style:normal}.board-unit>i{position:absolute;bottom:4px;right:5px;font:8px var(--mono);color:var(--muted)}.board-unit.concealed:after{content:'隐';position:absolute;inset:0;display:grid;place-items:center;background:#171b1acc;color:var(--jade);font-size:28px}.midline{height:24px;margin:4px 0;display:flex;align-items:center}.midline:before,.midline:after{content:"";height:1px;background:var(--red);flex:1}.midline span{padding:0 14px;color:var(--red);font-size:11px;letter-spacing:.3em}.game-sidebar{display:flex;flex-direction:column;gap:10px}.resource{border:1px solid var(--line);padding:13px;background:#1c1915}.resource b{font:700 30px var(--mono);color:var(--gold)}.resource span{color:var(--muted);font-size:12px}.log{border:1px solid var(--line);background:#15130f;padding:12px;min-height:240px;overflow:hidden}.log h3{margin:0 0 10px;font-size:14px}.log p{font-size:11px;color:#a79e90;border-top:1px solid #332e27;padding:6px 0;margin:0}.game-sidebar details{font-size:12px}.debug{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:7px}.debug select,.debug pre{grid-column:1/3;background:#100f0d;color:var(--muted);border:1px solid var(--line);padding:7px;max-width:100%;overflow:auto}.hand{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.hand-label{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.hand-cards{display:flex;gap:8px;overflow-x:auto;padding:10px 2px 18px}.hand-card{width:142px;min-width:142px;padding:0;border:0;background:none;color:inherit;cursor:pointer}.hand-card .game-card{min-height:205px;padding:7px}.hand-card .card-art{height:52px;margin:5px 0}.hand-card .card-art>span{font-size:28px}.hand-card .card-art i,.hand-card .card-meta{display:none}.hand-card .card-head b{font-size:12px}.hand-card .card-head span{width:23px;height:23px}.hand-card .stats{font-size:10px;padding:4px 0}.hand-card .stats code{font-size:8px}.hand-card .game-card p{font-size:9px;line-height:1.35}.hand-card.selected .game-card{border-color:var(--gold);transform:translateY(-5px)}.combat-pop{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#100f0df2;border:1px solid var(--gold);padding:14px 18px;display:flex;gap:9px;align-items:center;box-shadow:0 15px 50px #000;z-index:3}.combat-pop b{color:var(--gold)}.combat-pop .dice{font:12px var(--mono)}.target{animation:pulse 1s infinite}.modal-back{position:fixed;inset:0;background:#080706dd;display:grid;place-items:center;z-index:50;padding:20px}.card-dialog{display:grid;grid-template-columns:270px minmax(280px,420px);gap:28px;background:#191612;border:1px solid var(--line);padding:24px;max-width:760px}.card-dialog .game-card{min-height:390px}.detail-copy{align-self:center}.detail-copy>span,.detail-copy>i{display:block;color:var(--muted);font:11px var(--mono)}.detail-copy h2{font-size:34px;margin:10px 0 4px}.detail-copy p{line-height:1.8;color:#c4bbad}.keywords{display:flex;gap:8px;margin:20px 0}.keywords b{border:1px solid var(--jade);color:#8ab4a2;padding:6px 10px;font-size:12px}.waiting{background:#1b1814;border:1px solid var(--line);padding:40px;text-align:center}.waiting span{display:block;color:var(--muted)}.waiting b{display:block;font:700 52px var(--mono);letter-spacing:.22em;color:var(--gold);margin:20px}.waiting button{background:none;border:1px solid var(--line);padding:10px 18px;color:var(--ink)}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);opacity:0;background:#e7ddca;color:#15120f;padding:11px 18px;z-index:80;transition:.2s;pointer-events:none}#toast.show{opacity:1;transform:translate(-50%,0)}#toast.bad{background:#b94834;color:#fff}@keyframes pulse{50%{box-shadow:0 0 0 4px #b9483433}}
@media(max-width:900px){.status-pill{display:none}.topbar{padding:0 14px}.topbar nav button{padding:0 10px}.lobby-page{grid-template-columns:1fr}.lobby-copy{border-right:0;border-bottom:1px solid var(--line);padding:60px 24px}.room-panel{margin:28px 20px}.builder{grid-template-columns:1fr}.deck-stack{position:relative;top:0;height:auto}.stack-list{max-height:260px}.battle-layout{grid-template-columns:1fr}.game-sidebar{display:grid;grid-template-columns:1fr 1fr}.log{grid-column:1/3}.deck-row{grid-template-columns:52px 1fr 110px}.row-actions{grid-column:1/4}.toolbar{grid-template-columns:1fr 1fr}.toolbar .seg,.toolbar input{grid-column:1/3}.card-grid{grid-template-columns:repeat(auto-fill,minmax(175px,1fr))}.game-card{min-height:320px}}
@media(max-width:600px){.brand span:last-child{display:none}.topbar{height:64px}.topbar nav{overflow-x:auto}.topbar nav button{font-size:13px}.page{padding:24px 12px 50px}.page-title{align-items:center}.page-title h1{font-size:36px}.deck-summary{grid-template-columns:1fr 1fr}.deck-summary>button,.deck-summary>label{grid-row:2}.deck-row{grid-template-columns:44px 1fr 76px;padding:12px 8px;gap:8px}.deck-row h2{font-size:16px}.builder-grid{grid-template-columns:1fr}.battle-page{padding:8px 4px 24px}.battle-top{grid-template-columns:1fr auto}.turn-stamp{display:none}.enemy-hq{font-size:12px}.end-turn{padding:9px}.board-wrap{padding:4px}.board-row{gap:3px}.board-unit{aspect-ratio:1.15/1;padding:4px}.board-unit>b{font-size:10px}.board-unit>small{display:none}.board-unit>div{display:block;margin-top:4px}.game-sidebar{grid-template-columns:1fr 1fr}.game-sidebar .hq{padding:7px}.game-sidebar details{display:none}.hand-card{width:118px;min-width:118px}.card-dialog{grid-template-columns:1fr;max-height:92vh;overflow:auto}.card-dialog .game-card{display:none}.lobby-copy h1{font-size:52px}.lobby-actions{flex-direction:column}.card-grid{grid-template-columns:repeat(2,1fr);gap:8px}.card-grid .game-card{min-height:292px}.card-grid .game-card p{font-size:11px}.card-grid .card-art{height:90px}}

.account-pill{font:11px var(--mono);color:var(--muted);display:flex;gap:8px;align-items:center;background:transparent;border:1px solid var(--line);padding:9px 12px;max-width:240px;cursor:pointer}.account-pill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-pill i{width:7px;height:7px;border-radius:50%;background:#746e64}.account-pill.signed-in{color:var(--ink);border-color:var(--jade)}.account-pill.signed-in i{background:var(--jade);box-shadow:0 0 12px var(--jade)}.auth-dialog{width:min(430px,100%);background:#191612;border:1px solid var(--line);padding:30px;box-shadow:18px 18px 0 #0005}.auth-dialog h2{font-size:32px;margin:12px 0 6px}.auth-dialog>p,.auth-dialog>small{display:block;color:var(--muted);line-height:1.7}.auth-dialog label{display:grid;gap:7px;margin:12px 0;color:#bdb4a5;font-size:13px}.auth-dialog input{background:#100f0d;border:1px solid var(--line);color:var(--ink);padding:12px;outline:0}.auth-dialog input:focus{border-color:var(--gold)}.google-button{width:100%;margin-top:22px;background:#eee9df;color:#181512;border:0;padding:12px;cursor:pointer;font-weight:700}.google-button b{font-family:Arial,sans-serif;margin-right:8px;color:#4285f4}.auth-divider{display:flex;align-items:center;gap:10px;color:#777064;font-size:11px;margin:18px 0}.auth-divider:before,.auth-divider:after{content:"";height:1px;background:var(--line);flex:1}.auth-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}.text-button{display:block;margin:14px auto 0;background:none;border:0;color:var(--muted);font-size:12px;cursor:pointer}.auth-notice{background:#35271e;border-left:2px solid var(--gold);padding:10px 12px;color:#c9bba8;font-size:12px;line-height:1.6;margin-top:15px}@media(max-width:900px){.account-pill{max-width:120px}}@media(max-width:600px){.account-pill{width:38px;height:38px;padding:0;justify-content:center}.account-pill span{display:none}}
