*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:#0f1218;color:#e8e0d0;-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}a{color:#c9a86c}.app-shell{min-height:100vh;box-sizing:border-box;padding:3rem 1.5rem 4rem;display:flex;flex-direction:column;align-items:center;gap:2rem;background:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(180,120,40,.22),transparent),radial-gradient(ellipse 60% 40% at 80% 80%,rgba(40,60,100,.18),transparent),#0f1218;color:#e8e0d0;font-family:Segoe UI,PingFang SC,Microsoft YaHei,system-ui,sans-serif}.app-shell--wide{align-items:stretch;max-width:52rem;margin:0 auto}.app-header{text-align:center;max-width:40rem}.app-eyebrow{margin:0 0 .75rem;letter-spacing:.18em;text-transform:uppercase;font-size:.75rem;color:#b8a078}.app-title{margin:0;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;letter-spacing:.08em;color:#f5e6c8;text-shadow:0 2px 16px rgba(0,0,0,.45)}.app-subtitle{margin:1rem 0 0;line-height:1.6;color:#a8a090;font-size:1rem}.app-panel{width:min(40rem,100%);padding:1.5rem 1.75rem;border:1px solid rgba(184,160,120,.28);border-radius:12px;background:#141820b8;box-shadow:0 12px 40px #00000059}.app-shell--wide .app-panel{width:100%}.app-panel h2{margin:1.25rem 0 .5rem;font-size:1.05rem;font-weight:600;color:#d4c4a0}.app-panel h2:first-child{margin-top:0}.app-panel ul{margin:0;padding-left:1.2rem;line-height:1.7;color:#c8c0b0}.app-note{margin:1.1rem 0 0;padding-top:1rem;border-top:1px solid rgba(184,160,120,.18);font-size:.9rem;line-height:1.55;color:#988870}.app-nav{margin-top:1.25rem}.app-link{color:#c9a86c;text-decoration:none;border-bottom:1px solid rgba(201,168,108,.4)}.app-link:hover{color:#e8d4a0}.data-error h2{margin-top:0;color:#e8a090}.data-error-message{white-space:pre-wrap;line-height:1.5;color:#d0c0b0}.data-error-hints{margin:1rem 0;color:#a89880}.data-error-retry{margin-top:.5rem;padding:.55rem 1.1rem;border:1px solid rgba(184,160,120,.45);border-radius:8px;background:#28241ce6;color:#f0e4c8;cursor:pointer}.data-error-retry:hover{background:#3c3424f2}.diagnostics-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:.75rem;margin:0 0 1rem}.diagnostics-stats div{padding:.75rem;border-radius:8px;background:#00000040}.diagnostics-stats dt{font-size:.8rem;color:#988870}.diagnostics-stats dd{margin:.25rem 0 0;font-size:1.35rem;font-weight:700;color:#f0e4c8}.diagnostics-list{max-height:16rem;overflow:auto;font-size:.9rem}.app-nav--stack{display:flex;flex-direction:column;gap:.75rem;align-items:flex-start}.app-link--btn{display:inline-block;padding:.55rem 1rem;border-radius:8px;border:1px solid rgba(184,160,120,.45);background:#28241ce6;text-decoration:none}.deck-builder-grid{display:grid;gap:1.25rem}@media(min-width:960px){.deck-builder-grid{grid-template-columns:1fr 1.2fr 1fr}}.deck-char-list,.deck-card-list,.deck-list{list-style:none;margin:.5rem 0;padding:0;max-height:28rem;overflow:auto}.deck-card-list li,.deck-list li{display:flex;justify-content:space-between;align-items:flex-start;gap:.65rem;padding:.55rem 0;border-bottom:1px solid rgba(184,160,120,.12);font-size:.9rem}.deck-card-item-main,.deck-list-entry-body{flex:1;min-width:0}.deck-card-item-title{display:flex;flex-direction:column;gap:.15rem;margin-bottom:.25rem}.deck-card-effect{margin:.2rem 0 .3rem;padding:.4rem .5rem;border-radius:6px;background:#00000047;border-left:2px solid rgba(200,164,92,.45);color:#d4cbb8;font-size:.84rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.deck-card-effect--compact{font-size:.8rem;padding:.3rem .45rem;margin-top:.25rem;color:#b8b0a0}.deck-card-item-meta{display:block;font-size:.78rem}.deck-list-entry{align-items:flex-start}.deck-card-actions{flex-shrink:0;display:flex;flex-direction:column;gap:.25rem}.deck-chip{display:block;width:100%;text-align:left;margin:.25rem 0;padding:.45rem .6rem;border-radius:8px;border:1px solid rgba(184,160,120,.3);background:#0003;color:inherit;cursor:pointer}.deck-chip--active{border-color:#c9a86c;background:#503c1e73}.deck-field,.deck-search{display:block;width:100%;margin:.5rem 0 1rem}.deck-field input,.deck-search{width:100%;margin-top:.35rem;padding:.45rem .6rem;border-radius:6px;border:1px solid rgba(184,160,120,.35);background:#0c0e14;color:#e8e0d0}.deck-card-actions button,.deck-list button{margin-left:.25rem;padding:.2rem .45rem;border-radius:4px;border:1px solid rgba(184,160,120,.35);background:transparent;color:#c9a86c;cursor:pointer}.deck-footer{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.deck-footer button:disabled{opacity:.4;cursor:not-allowed}.card-library-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.card-library-filters label{display:flex;flex-direction:column;gap:.2rem;font-size:.8rem;color:#a89880}.card-library-filters select{min-width:6rem;padding:.3rem .4rem;border-radius:6px;border:1px solid rgba(184,160,120,.35);background:#0c0e14;color:#e8e0d0}.deck-validation{margin-top:1rem;padding-top:.75rem;border-top:1px solid rgba(184,160,120,.18)}.deck-validation h3{margin:0 0 .5rem;font-size:.95rem;color:#d4c4a0}.deck-validation-list{list-style:none;margin:0;padding:0}.deck-rule{display:grid;grid-template-columns:1fr auto auto;gap:.35rem;align-items:center;padding:.35rem 0;font-size:.85rem;border-bottom:1px solid rgba(184,160,120,.1)}.deck-rule--ok .deck-rule-badge{color:#7dcea0}.deck-rule--warn .deck-rule-badge{color:#e8b86d}.deck-rule-badge{font-size:.75rem;font-weight:700}.deck-validation-block{margin-top:.65rem;padding:.55rem .65rem;border-radius:8px;background:#78321e40;border:1px solid rgba(200,100,60,.35);font-size:.85rem}.deck-enter-ok{color:#7dcea0;font-size:.85rem}.deck-enter-block{color:#e8a090;font-size:.85rem}.deck-save-msg{margin:.5rem 0;color:#c9a86c;font-size:.9rem}.deck-saved-item{display:flex;gap:.35rem;align-items:flex-start}.deck-saved-item .deck-chip{flex:1}.deck-delete-btn{margin-top:.25rem;padding:.3rem .45rem;border-radius:6px;border:1px solid rgba(180,80,60,.45);background:transparent;color:#e8a090;cursor:pointer;font-size:.8rem}.deck-clear-link{margin-top:.75rem;background:none;border:none;color:#988870;text-decoration:underline;cursor:pointer;font-size:.85rem;padding:0}.deck-storage-note{margin-bottom:.5rem}.character-picker-detail{margin-top:.75rem;padding:.65rem;border-radius:8px;background:#00000038}.character-picker-detail h3{margin:0 0 .35rem;color:#f5e6c8}.character-picker-detail h4{margin:.5rem 0 .25rem;font-size:.9rem;color:#d4c4a0}.skill-mini-list{list-style:none;margin:0;padding:0}.skill-mini-list li{margin-bottom:.5rem;font-size:.85rem}.table-page{min-height:100vh;background:radial-gradient(ellipse at 50% 40%,#102038,#070e18 55%,#050a12);color:#e8e0d0;font-family:Segoe UI,PingFang SC,Microsoft YaHei,system-ui,sans-serif}.table-page--overlay{display:flex;flex-direction:column;height:100vh;overflow:hidden}.table-page-header{display:flex;justify-content:space-between;align-items:center;padding:.6rem 1rem;border-bottom:1px solid rgba(184,160,120,.2);background:#0f1218f2;flex-shrink:0;z-index:20}.table-page-header--slim{padding:.35rem .85rem;font-size:.9rem;background:#080e16eb;border-bottom-color:#3c5a7859}.table-page-title{color:#a8b8c8;letter-spacing:.04em}.table-stage-full{position:relative;flex:1;min-height:0;overflow:hidden}.table-stage-full .pixi-host{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:none;border-radius:0;overflow:hidden;background:#0a1628;box-shadow:none}.table-stage-full .pixi-host canvas{display:block;margin:0 auto!important}.char-float{position:absolute;z-index:12;max-width:min(280px,42vw);pointer-events:auto}.char-float--opponent{top:12px;left:12px}.char-float--self{bottom:64px;left:12px}.char-float-chip{display:flex;align-items:center;gap:.45rem;width:100%;padding:.35rem .5rem;border-radius:10px;border:1px solid rgba(80,110,140,.55);background:#0a101ae0;color:#e8e0d0;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 6px 20px #00000059;text-align:left}.char-float--turn .char-float-chip{border-color:#64b4ffa6;box-shadow:0 0 0 1px #64b4ff40,0 6px 20px #00000059}.char-float-avatar{width:36px;height:36px;border-radius:8px;background:#243040;border:1px solid rgba(200,164,92,.35);display:flex;align-items:center;justify-content:center;font-weight:700;color:#c8a45c;overflow:hidden;flex-shrink:0}.char-float-avatar img{width:100%;height:100%;object-fit:cover}.char-float-chip-text{display:flex;flex-direction:column;gap:.05rem;min-width:0;flex:1;font-size:.78rem;color:#9ab}.char-float-chip-text strong{color:#f0e6d0;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.char-float-caret{color:#7a90a8;font-size:.75rem}.char-float-body{margin-top:.35rem;padding:.55rem .65rem;border-radius:10px;border:1px solid rgba(80,110,140,.45);background:#0a101af0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 28px #0006;font-size:.82rem}.char-float-meta,.char-float-skill{margin:0 0 .3rem;color:#a8b0b8}.char-float-skill-desc{margin:0 0 .45rem;color:#c8c0b0;line-height:1.45;max-height:4.5em;overflow:auto}.char-float-btn{width:100%;padding:.35rem .5rem;border-radius:6px;border:1px solid rgba(200,164,92,.4);background:#28241cd9;color:#e8d4a0;cursor:pointer;font-size:.82rem}.float-card-detail{position:absolute;z-index:14;top:48px;left:12px;width:min(320px,36vw);max-height:calc(100% - 100px);overflow:visible;padding:.45rem;border-radius:14px;border:1px solid rgba(200,164,92,.35);background:#080c14e0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 16px 48px #0000008c;pointer-events:auto;isolation:isolate}.float-card-detail~.char-float--opponent,.table-stage-full:has(.float-card-detail) .char-float--opponent{left:min(340px,calc(36vw + 24px))}@media(max-width:900px){.float-card-detail{width:min(280px,72vw);top:auto;bottom:72px;left:50%;transform:translate(-50%);max-height:55vh}.table-stage-full:has(.float-card-detail) .char-float--opponent{left:12px}}.float-resources{position:absolute;z-index:13;top:12px;right:12px;width:56px;max-width:min(300px,40vw);border-radius:12px;border:1px solid rgba(80,110,140,.5);background:#0a101ae6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 28px #0006;overflow:hidden;transition:width .15s ease}.float-resources--open{width:min(280px,42vw)}.float-resources-toggle{display:flex;width:100%;justify-content:space-between;align-items:center;gap:.35rem;padding:.45rem .55rem;border:none;background:#142030f2;color:#d8e0e8;cursor:pointer;font-size:.82rem;text-align:left}.float-resources:not(.float-resources--open) .float-resources-toggle{writing-mode:vertical-rl;letter-spacing:.15em;min-height:7rem;justify-content:center;padding:.5rem .35rem}.float-resources:not(.float-resources--open) .float-resources-toggle span:first-child{display:none}.float-resources-peek,.float-resources--open .float-resources-peek{display:none}.float-resources:not(.float-resources--open) .float-resources-peek{display:none}.float-resources-body{padding:.55rem .65rem .7rem;max-height:min(70vh,520px);overflow:auto}.float-resources-hint{margin:.5rem 0 0;font-size:.75rem}.float-actions{position:absolute;z-index:13;left:50%;bottom:12px;transform:translate(-50%);display:flex;flex-wrap:wrap;gap:.35rem;padding:.4rem .55rem;border-radius:999px;border:1px solid rgba(80,110,140,.55);background:#0a101ae6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 24px #00000073}.float-actions button{padding:.4rem .75rem;border-radius:999px;border:1px solid rgba(200,164,92,.35);background:#1e2430e6;color:#e8dcc0;cursor:pointer;font-size:.82rem;white-space:nowrap}.float-actions button:disabled{opacity:.4;cursor:not-allowed}.float-actions button:hover:not(:disabled){border-color:#c8a45cb3;background:#322c20f2}body.table-dragging .char-float,body.table-dragging .float-card-detail,body.table-dragging .float-resources,body.table-dragging .float-actions,body.table-dragging .skill-tooltip{pointer-events:none!important}.skill-tooltip{position:absolute;left:12px;bottom:120px;z-index:15;max-width:14rem;padding:.4rem .6rem;border-radius:6px;background:#0c0e14f2;border:1px solid rgba(184,160,120,.4);color:#e8dcc0;font-size:.8rem;pointer-events:none;box-shadow:0 6px 16px #0006}.skill-list{list-style:none;margin:0;padding:0}.skill-item{padding:.75rem 0;border-bottom:1px solid rgba(184,160,120,.15)}.skill-item-head{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}.skill-desc{margin:0 0 .5rem;line-height:1.5;white-space:pre-wrap;color:#d8d0c0}.skill-cue-btn{margin-top:.35rem;padding:.3rem .55rem;border-radius:6px;border:1px solid rgba(184,160,120,.35);background:transparent;color:#c9a86c;cursor:pointer;font-size:.8rem}.table-page-body{display:none}.pixi-host{width:100%;overflow:auto;border:1px solid rgba(60,90,120,.45);border-radius:12px;background:#0a1628}.card-sidebar-close{position:absolute;top:6px;right:8px;z-index:2;border:none;background:#0000008c;color:#e8e0d0;width:28px;height:28px;border-radius:50%;font-size:1.25rem;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center}.card-sidebar-close:hover{background:#000000bf;color:#fff}.card-sidebar-art{width:100%;margin:0 auto;border-radius:10px;overflow:hidden;background:#0a1018}.card-sidebar-art img{display:block;width:100%;height:auto;max-height:calc(100vh - 140px);object-fit:contain}.card-sidebar-art-ph{aspect-ratio:340 / 510;display:flex;align-items:center;justify-content:center;color:#678}.stat-gold{color:#c8a45c!important}.tag-chip{font-size:.72rem;padding:.15rem .4rem;border-radius:3px;border:1px solid rgba(200,164,92,.25);color:#b8a078;background:#c8a45c14}.card-sidebar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.card-sidebar-header h2{margin:0;font-size:1.05rem;color:#f0e6d0}.card-sidebar-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem;margin-bottom:.5rem;text-align:center}.card-sidebar-stats strong{display:block;font-size:1.25rem;color:#e8e0d0}.card-sidebar-meta{margin:0 0 .4rem;font-size:.85rem;color:#9ab}.card-sidebar-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.5rem}.card-sidebar-desc{margin:0 0 .5rem;font-size:.9rem;line-height:1.55;color:#c8c0b0;white-space:pre-wrap}.card-sidebar-footer{display:flex;justify-content:space-between;align-items:center;margin-top:.75rem;padding-top:.5rem;border-top:1px solid rgba(80,110,140,.3)}.table-hud{padding:.85rem;border:1px solid rgba(184,160,120,.25);border-radius:10px;background:#141820eb}.hud-row{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:.75rem;font-size:.9rem}.hud-turn-active{color:#7ec8ff;font-weight:700}.hud-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem}.hud-error{display:flex;justify-content:space-between;gap:.5rem;padding:.5rem .65rem;margin-bottom:.75rem;border-radius:6px;background:#78281e59;color:#f0c0b0;font-size:.85rem}.hud-error button{border:none;background:transparent;color:#f5e6c8;cursor:pointer;text-decoration:underline}.hud-players{display:grid;gap:.75rem}.hud-player h3{margin:0 0 .25rem;font-size:.95rem;color:#d4c4a0}.hud-muted{color:#8a8070;font-size:.8rem}.hud-stats{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;margin:.4rem 0}.hud-stat{display:flex;flex-direction:column;gap:.2rem;font-size:.8rem;color:#b8a890}.hud-stat input{padding:.3rem .4rem;border-radius:4px;border:1px solid rgba(184,160,120,.35);background:#0c0e14;color:#f0e4c8}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1rem;background:#000000a6}.modal-panel{width:min(28rem,100%);max-height:90vh;overflow:auto;padding:1.1rem 1.25rem;border-radius:12px;border:1px solid rgba(184,160,120,.35);background:#161a22;box-shadow:0 16px 48px #00000080}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem}.modal-header h2{margin:0;font-size:1.15rem;color:#f5e6c8}.detail-grid{margin:0}.detail-grid>div{margin-bottom:.65rem}.detail-grid dt{font-size:.75rem;color:#988870}.detail-grid dd{margin:.15rem 0 0;color:#e0d8c8}.detail-block{white-space:pre-wrap;line-height:1.5}.detail-pre{margin:0;padding:.5rem;border-radius:6px;background:#0c0e14;font-size:.8rem;overflow:auto}.modal-footer{margin-top:.75rem;display:flex;flex-direction:column;gap:.5rem}
