*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}:root{--bg: #0a0c14;--bg-2: #10131f;--panel: #161a29;--panel-2: #1d2234;--line: #2a3048;--line-soft: #212639;--ink: #e9eef8;--ink-dim: #a3adc4;--ink-faint: #6f7998;--gold: #d8b25a;--gold-bright: #ffd970;--fire: #ff8a3d;--water: #4fb4ff;--grass: #63d46a;--undead: #b06ee0;--light: #ffd970;--common: #9fb0c4;--rare: #59a5ff;--legendary: #ffb32e;--danger: #ff5b5b;--ok: #6ee08a;--f-display: "Cinzel", "Trajan Pro", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--f-body: "Inter", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--f-mono: "JetBrains Mono", "Cascadia Code", Consolas, "SF Mono", monospace;--radius: 10px;--radius-lg: 16px;--shadow-1: 0 2px 8px rgba(0, 0, 0, .35);--shadow-2: 0 12px 36px rgba(0, 0, 0, .5);color-scheme:dark}body{background:radial-gradient(1100px 620px at 78% -12%,#1a2136 0%,transparent 62%),radial-gradient(880px 520px at 8% 106%,#17182c 0%,transparent 58%),var(--bg);color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--f-display);font-weight:600;letter-spacing:.01em;margin:0 0 .5em}h1{font-size:26px}h2{font-size:19px}h3{font-size:15px}p{margin:0 0 .8em}a{color:var(--gold)}button,input,select,textarea{font:inherit;color:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#3a4260;background-clip:content-box}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(180deg,var(--panel-2),var(--panel));color:var(--ink);cursor:pointer;font-size:13px;font-weight:500;transition:border-color .14s,transform .08s,background .14s,opacity .14s;white-space:nowrap;user-select:none}.btn:hover:not(:disabled){border-color:#3d456a}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.btn-primary{background:linear-gradient(180deg,#6b5620,#4a3a12);border-color:#8a6f2b;color:#ffeec2;font-weight:600}.btn-primary:hover:not(:disabled){border-color:var(--gold)}.btn-danger{border-color:#5c2630;color:#ffc9c9}.btn-danger:hover:not(:disabled){border-color:var(--danger)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--panel);border-color:var(--line)}.btn-sm{padding:5px 10px;font-size:12px}.btn-lg{padding:12px 22px;font-size:15px}input[type=text],input[type=password],input[type=number],select,textarea{background:#0d1020;border:1px solid var(--line);border-radius:var(--radius);padding:9px 12px;width:100%;transition:border-color .14s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold)}label{display:block;font-size:12px;color:var(--ink-dim);margin-bottom:5px}.field{margin-bottom:14px}.muted{color:var(--ink-dim)}.faint{color:var(--ink-faint)}.mono{font-family:var(--f-mono);font-size:12px}.center{text-align:center}.row{display:flex;gap:10px;align-items:center}.row-wrap{flex-wrap:wrap}.spacer{flex:1}.hidden{display:none!important}.panel{background:linear-gradient(180deg,#1d2234b3,#161a29b3);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px}.divider{height:1px;background:var(--line-soft);margin:16px 0;border:0}.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:9000;pointer-events:none;max-width:min(380px,calc(100vw - 32px))}.toast{pointer-events:auto;background:var(--panel-2);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:var(--radius);padding:11px 14px;box-shadow:var(--shadow-2);font-size:13px;animation:toast-in .22s ease-out}.toast.error{border-left-color:var(--danger)}.toast.success{border-left-color:var(--ok)}.toast.leaving{animation:toast-out .18s ease-in forwards}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}}@keyframes toast-out{to{opacity:0;transform:translate(20px)}}.modal-backdrop{position:fixed;inset:0;background:#04060cc7;backdrop-filter:blur(4px);display:grid;place-items:center;z-index:8000;padding:20px;animation:fade-in .15s}.modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);max-width:560px;width:100%;max-height:86vh;overflow:auto;padding:22px}.modal-wide{max-width:900px}@keyframes fade-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.card{--card-scale: 1;font-size:calc(10px * var(--card-scale));--c-w: 30em;--c-h: 42em;--c-pad: 1.6em;--art-w: 26.8em;--art-h: 18.4em;--cf-name: 1.4em;--cf-type: .95em;--cf-rule-label: 1em;--cf-rule: 1.05em;--cf-flavor: .95em;--cf-stat: 1.7em;--cf-stat-label: .8em;--cf-cost: 1.7em;--cf-meta: .85em;--el: var(--gold);--el-deep: #1a1206;--rar: var(--common);position:relative;width:var(--c-w);height:var(--c-h);flex:0 0 auto;border-radius:1.4em;padding:var(--c-pad);display:flex;flex-direction:column;background:linear-gradient(165deg,color-mix(in srgb,var(--el) 16%,#10131f),#0b0e18 46%,#080a12);border:.12em solid color-mix(in srgb,var(--rar) 55%,#2a3048);box-shadow:0 0 0 .1em #0009 inset,0 .8em 2.4em #0000008c;font-family:var(--f-body);color:var(--ink);text-align:left;overflow:hidden;user-select:none;transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}.card:before{content:"";position:absolute;inset:.55em;border:.1em solid color-mix(in srgb,var(--el) 30%,transparent);border-radius:1em;pointer-events:none;z-index:1}.card.rarity-rare,.card.rarity-legendary{background:linear-gradient(165deg,color-mix(in srgb,var(--el) 22%,#10131f),#0b0e18 44%,#080a12)}.card.rarity-legendary{border-color:color-mix(in srgb,var(--legendary) 78%,#2a3048);box-shadow:0 0 0 .1em #0009 inset,0 0 1.6em color-mix(in srgb,var(--legendary) 26%,transparent),0 .8em 2.6em #0009}.card.rarity-rare .card-foil,.card.rarity-legendary .card-foil{--foil-angle: 24deg;position:absolute;inset:0;pointer-events:none;z-index:4;overflow:hidden;border-radius:inherit;background:linear-gradient(calc(90deg - var(--foil-angle)),transparent 42%,color-mix(in srgb,var(--rar) 10%,transparent) 50%,transparent 58%);mix-blend-mode:screen}.card.rarity-rare .card-foil:before,.card.rarity-legendary .card-foil:before{content:"";position:absolute;inset:-60%;background:linear-gradient(90deg,transparent 44%,color-mix(in srgb,var(--rar) 26%,transparent) 48%,rgba(255,255,255,.16) 50%,color-mix(in srgb,var(--rar) 26%,transparent) 52%,transparent 56%);animation:foil-sweep 7s ease-in-out infinite;will-change:transform}.card.rarity-legendary .card-foil{--foil-angle: 28deg}.card.rarity-legendary .card-foil:before{animation-duration:4.6s;background:linear-gradient(90deg,transparent 42%,color-mix(in srgb,var(--legendary) 34%,transparent) 47%,rgba(255,255,255,.24) 50%,color-mix(in srgb,var(--legendary) 34%,transparent) 53%,transparent 58%)}@keyframes foil-sweep{0%{transform:rotate(var(--foil-angle)) translate(-115%)}to{transform:rotate(var(--foil-angle)) translate(115%)}}.card-head{position:relative;z-index:2;display:flex;align-items:center;gap:.6em}.card-titles{flex:1;min-width:0}.card-name{font-family:var(--f-display);font-size:calc(var(--cf-name) * var(--name-fit, 1));line-height:1.14;font-weight:600;letter-spacing:.005em;text-align:left;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-shadow:0 .1em .2em rgba(0,0,0,.8)}.card-cost{flex:0 0 auto;width:2.5em;height:2.5em;border-radius:50%;display:grid;place-items:center;font-family:var(--f-display);font-size:calc(var(--cf-cost) * .62);font-weight:700;color:#0a0c14;background:radial-gradient(circle at 35% 30%,#fff 0%,var(--el) 42%,color-mix(in srgb,var(--el) 60%,#000) 100%);box-shadow:0 0 .5em color-mix(in srgb,var(--el) 55%,transparent),0 .1em .3em #0009;border:.12em solid rgba(255,255,255,.35)}.card-cost span{font-size:calc(var(--cf-cost) / .62 * .62);line-height:1}.card-type{position:relative;z-index:2;margin-top:.18em;font-size:var(--cf-type);letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb,var(--el) 72%,var(--ink));display:flex;align-items:center;gap:.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-type .el-glyph{font-size:1.15em;filter:saturate(1.2)}.card-art{position:relative;z-index:2;margin-top:.42em;width:var(--art-w);height:var(--art-h);flex:0 0 auto;border-radius:.5em;overflow:hidden;background:#05070d;border:.1em solid color-mix(in srgb,var(--el) 34%,#000);box-shadow:0 .2em .7em #0009 inset}.card-art img,.card-art canvas{display:block;width:100%;height:100%;object-fit:cover}.card-art .art-placeholder{width:100%;height:100%;display:grid;place-items:center;font-size:3em;opacity:.3;background:linear-gradient(145deg,#12162a,#0a0d18)}.card-gem{position:absolute;right:.5em;bottom:.5em;z-index:3;font-size:var(--cf-meta);letter-spacing:.12em;text-transform:uppercase;font-weight:700;padding:.25em .6em;border-radius:.3em;color:#080a12;background:var(--rar);box-shadow:0 .1em .4em #000000b3}.card-rules{position:relative;z-index:2;margin-top:.7em;flex:1 1 auto;min-height:0;overflow:hidden;background:linear-gradient(180deg,#0a0d18d1,#060810d1);border:.1em solid color-mix(in srgb,var(--el) 20%,transparent);border-radius:.45em;padding:.6em .7em;display:flex;flex-direction:column;gap:.4em}.rule{font-size:calc(var(--cf-rule) * var(--rule-fit, 1));line-height:1.32;color:#d6dded}.rule b{font-family:var(--f-display);font-size:calc(var(--cf-rule-label) * var(--rule-fit, 1));color:color-mix(in srgb,var(--el) 80%,#fff);font-weight:600}.rule.vanilla{color:var(--ink-faint);font-style:italic}.card-flavor{margin-top:auto;padding-top:.35em;border-top:.1em solid rgba(255,255,255,.06);font-size:calc(var(--cf-flavor) * var(--flavor-fit, 1));line-height:1.28;font-style:italic;color:#8d97b0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.card-foot{position:relative;z-index:2;margin-top:.6em;display:flex;align-items:flex-end;gap:.5em;min-height:3.2em}.card-stats{display:flex;gap:.45em;flex:1}.stat{flex:1;text-align:center;padding:.28em .2em .32em;border-radius:.4em;background:linear-gradient(180deg,#ffffff12,#0000004d);border:.1em solid rgba(255,255,255,.08);line-height:1}.stat-label{display:block;font-size:var(--cf-stat-label);letter-spacing:.14em;color:var(--ink-faint);margin-bottom:.25em}.stat-value{display:block;font-family:var(--f-display);font-size:var(--cf-stat);font-weight:700;line-height:1}.stat.hp .stat-value{color:#7fe08f}.stat.atk .stat-value{color:#ff9a6a}.stat.def .stat-value{color:#7ec4ff}.stat-buffed .stat-value{color:var(--gold-bright)!important}.card-meta{position:relative;z-index:2;margin-top:.4em;display:flex;justify-content:space-between;align-items:center;gap:.5em;font-size:var(--cf-meta);color:#5d667f;letter-spacing:.04em;white-space:nowrap;overflow:hidden}.card-meta .seed{font-family:var(--f-mono)}.kind-badge{flex:1;text-align:center;padding:.55em .4em;border-radius:.4em;font-family:var(--f-display);font-size:1.1em;letter-spacing:.18em;text-transform:uppercase;color:color-mix(in srgb,var(--el) 85%,#fff);background:linear-gradient(180deg,color-mix(in srgb,var(--el) 18%,transparent),#00000052);border:.1em solid color-mix(in srgb,var(--el) 30%,transparent)}.card-btn{background:none;border:none;padding:0;margin:0;cursor:pointer;display:block;border-radius:1.4em;text-align:left;font:inherit;color:inherit;letter-spacing:inherit;-webkit-appearance:none;appearance:none}.card-btn:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.card.is-interactive:hover{transform:translateY(-6px)}.card.is-selected{box-shadow:0 0 0 .22em var(--gold),0 .8em 2.4em #0009}.card.is-dimmed{filter:grayscale(.65) brightness(.6)}.card-back{width:var(--c-w, 30em);height:var(--c-h, 42em);border-radius:1.4em;border:.12em solid #2a3048;background:repeating-linear-gradient(45deg,#141a2e 0 .8em,#111629 .8em 1.6em),#10131f;display:grid;place-items:center;color:#3f4967;font-family:var(--f-display);font-size:calc(10px * var(--card-scale, 1));box-shadow:0 .8em 2.4em #00000080}.card-back span{font-size:3em}.app{height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:18px;padding:10px 18px;border-bottom:1px solid var(--line);background:#0a0c14d1;backdrop-filter:blur(10px);position:sticky;top:0;z-index:500}.brand{display:flex;align-items:center;gap:9px}.brand-mark{color:var(--gold);font-size:17px}.brand-name{font-family:var(--f-display);font-size:17px;letter-spacing:.11em;text-transform:uppercase}.tabs{display:flex;gap:3px;flex:1;overflow-x:auto}.tab{background:none;border:1px solid transparent;border-radius:var(--radius);padding:7px 15px;color:var(--ink-dim);cursor:pointer;font-size:13px;font-weight:500;white-space:nowrap;transition:color .14s,background .14s}.tab:hover{color:var(--ink);background:var(--panel)}.tab.active{color:var(--gold-bright);background:var(--panel);border-color:var(--line)}.topbar-right{display:flex;gap:6px;align-items:center}.view{flex:1 1 auto;min-height:0;overflow-y:auto;padding:22px;max-width:1500px;width:100%;margin:0 auto}.view.view-flush{padding:0;overflow:hidden;max-width:none;display:flex;flex-direction:column}.view.view-flush>*{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.view-head{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:18px}.view-head h1{margin:0}.view-head .sub{color:var(--ink-dim);font-size:13px}.forge{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:start}@media(max-width:1080px){.forge{grid-template-columns:minmax(0,1fr)}}.stage{position:relative;aspect-ratio:4 / 3;max-height:min(54vh,520px);margin-inline:auto;width:100%;border-radius:var(--radius-lg);container-type:inline-size;overflow:hidden;background:#05070d;border:1px solid var(--line);display:grid;place-items:center}.stage.is-dragover{border-color:var(--gold);box-shadow:0 0 0 3px #d8b25a33}.stage video,.stage img.preview,.stage canvas.preview{width:100%;height:100%;object-fit:cover;display:block}.stage video.mirrored{transform:scaleX(-1)}.stage-empty{text-align:center;color:var(--ink-faint);padding:30px}.stage-empty .big{font-size:44px;margin-bottom:10px;opacity:.5}.stage-tools{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;align-items:center}.stage.has-cropper{aspect-ratio:auto;max-height:none;border:0;background:none;display:block}.cropper{width:100%}.cropper-frame{position:relative;--crop-max-h: min(54vh, 520px);--crop-aspect: 1.4565;width:100%;max-width:calc(var(--crop-max-h) * var(--crop-aspect));aspect-ratio:var(--crop-aspect);margin-inline:auto;overflow:hidden;border-radius:var(--radius-lg);background:#05070d;border:1px solid var(--line);cursor:grab;touch-action:none;user-select:none}.cropper-frame.is-dragging{cursor:grabbing}.cropper-frame.is-dragover{border-color:var(--gold);box-shadow:0 0 0 3px #d8b25a33}.cropper-surface{position:absolute;inset:0}.cropper-media{position:absolute;top:0;left:0;display:block;will-change:transform;-webkit-user-drag:none}.cropper-frame:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(to right,transparent calc(33.333% - 1px),rgba(255,255,255,.16) calc(33.333% - 1px),rgba(255,255,255,.16) 33.333%,transparent 33.333%),linear-gradient(to right,transparent calc(66.666% - 1px),rgba(255,255,255,.16) calc(66.666% - 1px),rgba(255,255,255,.16) 66.666%,transparent 66.666%),linear-gradient(to bottom,transparent calc(33.333% - 1px),rgba(255,255,255,.16) calc(33.333% - 1px),rgba(255,255,255,.16) 33.333%,transparent 33.333%),linear-gradient(to bottom,transparent calc(66.666% - 1px),rgba(255,255,255,.16) calc(66.666% - 1px),rgba(255,255,255,.16) 66.666%,transparent 66.666%);opacity:0;transition:opacity .15s}.cropper-frame:hover:after,.cropper-frame.is-dragging:after{opacity:1}.crop-hint{font-size:11.5px;color:var(--ink-faint);margin-left:auto;white-space:nowrap}.zoom-group{display:flex;align-items:center;gap:6px}.zoom-group input[type=range]{width:130px}.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px}.choice{position:relative;border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);padding:11px 8px;cursor:pointer;text-align:center;transition:border-color .14s,background .14s,transform .08s}.choice:hover{border-color:#3d456a}.choice:active{transform:translateY(1px)}.choice.active{border-color:var(--pick, var(--gold));background:color-mix(in srgb,var(--pick, var(--gold)) 12%,var(--panel));box-shadow:0 0 0 1px var(--pick, var(--gold)) inset}.choice .glyph{font-size:20px;display:block;margin-bottom:4px}.choice .label{display:block;font-size:12px;font-weight:600}.choice .hint{display:block;font-size:10.5px;color:var(--ink-faint);margin-top:3px;line-height:1.3}.forge-panel{width:340px}@media(max-width:1080px){.forge-panel{width:100%}}.forge-result{display:flex;flex-direction:column;align-items:center;gap:14px}.forge-progress{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-dim)}.spinner{width:15px;height:15px;border:2px solid var(--line);border-top-color:var(--gold);border-radius:50%;animation:spin .7s linear infinite;flex:0 0 auto}@keyframes spin{to{transform:rotate(360deg)}}.reveal{animation:reveal .5s cubic-bezier(.2,.8,.3,1)}@keyframes reveal{0%{opacity:0;transform:translateY(18px) scale(.94) rotateX(12deg)}}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.filters select,.filters input{width:auto;min-width:130px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:18px;justify-items:center}.empty-state{text-align:center;padding:70px 20px;color:var(--ink-faint)}.empty-state .big{font-size:52px;opacity:.35;margin-bottom:12px}.card-slot{position:relative}.card-slot .slot-actions{position:absolute;inset-inline:0;bottom:-10px;display:flex;justify-content:center;gap:6px;opacity:0;transition:opacity .14s}.card-slot:hover .slot-actions,.card-slot:focus-within .slot-actions{opacity:1}.in-deck-badge{position:absolute;top:8px;left:8px;z-index:10;background:var(--gold);color:#0a0c14;font-size:10px;font-weight:700;letter-spacing:.08em;padding:3px 7px;border-radius:5px;text-transform:uppercase;pointer-events:none}.deck-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:22px;align-items:start}@media(max-width:940px){.deck-layout{grid-template-columns:1fr}}.deck-stat-row{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:13px}.deck-stat-row:last-child{border-bottom:0}.deck-stat-row b{font-family:var(--f-display)}.curve{display:flex;align-items:flex-end;gap:4px;height:82px;margin-top:10px}.curve-bar{flex:1;background:linear-gradient(180deg,var(--gold),#6b5620);border-radius:3px 3px 0 0;min-height:2px;position:relative}.curve-bar span{position:absolute;bottom:-17px;inset-inline:0;text-align:center;font-size:10px;color:var(--ink-faint)}.curve-bar b{position:absolute;top:-15px;inset-inline:0;text-align:center;font-size:10px;color:var(--ink-dim);font-weight:500}.curve-wrap{padding-bottom:20px}.mini-list{display:flex;flex-direction:column;gap:4px;max-height:420px;overflow-y:auto}.mini-card{display:flex;align-items:center;gap:9px;padding:6px 9px;border-radius:7px;background:var(--panel);border:1px solid var(--line-soft);border-left:3px solid var(--mc, var(--gold));cursor:pointer;font-size:12.5px;transition:border-color .12s,background .12s}.mini-card:hover{background:var(--panel-2)}.mini-cost{flex:0 0 auto;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--mc, var(--gold));color:#0a0c14;font-weight:700;font-size:11px}.mini-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-tag{font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em}.audit-table{width:100%;border-collapse:collapse;font-size:12.5px}.audit-table th,.audit-table td{text-align:left;padding:7px 9px;border-bottom:1px solid var(--line-soft)}.audit-table th{color:var(--ink-dim);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.07em}.audit-table td.num{font-family:var(--f-mono)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.04em}.badge.ok{background:#6ee08a29;color:var(--ok)}.badge.bad{background:#ff5b5b29;color:var(--danger)}.key-row{display:flex;gap:8px;align-items:center}.key-row input{flex:1;font-family:var(--f-mono);font-size:12px}.callout{border-left:3px solid var(--gold);background:#d8b25a12;padding:11px 14px;border-radius:0 var(--radius) var(--radius) 0;font-size:12.5px;color:var(--ink-dim);margin-bottom:14px}.callout.warn{border-left-color:var(--danger);background:#ff5b5b12}.rules-doc{max-width:780px}.rules-doc h2{margin-top:30px;color:var(--gold-bright)}.rules-doc h2:first-child{margin-top:0}.rules-doc ul{padding-left:20px}.rules-doc li{margin-bottom:7px}.rules-doc code{font-family:var(--f-mono);font-size:12px;background:var(--panel);padding:1px 6px;border-radius:4px;border:1px solid var(--line-soft)}.band-table{width:100%;border-collapse:collapse;margin:14px 0}.band-table td,.band-table th{padding:8px 10px;border-bottom:1px solid var(--line-soft)}.band-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-dim)}.band-die{font-family:var(--f-mono);font-weight:700;padding:3px 9px;border-radius:5px;background:var(--panel-2);border:1px solid var(--line)}.element-ring{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.element-ring .er{padding:9px 13px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);font-size:12.5px}.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-bottom:22px}.mode-card{border:1px solid var(--line);background:linear-gradient(180deg,var(--panel-2),var(--panel));border-radius:var(--radius-lg);padding:20px;cursor:pointer;text-align:left;transition:border-color .14s,transform .1s}.mode-card:hover{border-color:var(--gold);transform:translateY(-2px)}.mode-card .glyph{font-size:28px;display:block;margin-bottom:10px}.mode-card h3{margin-bottom:5px}.mode-card p{color:var(--ink-dim);font-size:12.5px;margin:0}.duel{display:grid;grid-template-rows:minmax(0,1fr) auto auto;gap:10px;flex:1 1 auto;min-height:0;width:100%;padding:10px 14px 14px;max-width:1500px;margin-inline:auto;overflow:hidden}.duel-main{display:grid;grid-template-columns:minmax(0,1fr) 268px;grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"field log" "field controls";gap:10px 14px;min-height:0}.field{grid-area:field}.duel-side{grid-area:log;min-height:0}.duel-controls{grid-area:controls}@media(max-width:1100px){.duel-main{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"field" "controls"}.duel-side{display:none}}.field{display:flex;flex-direction:column;justify-content:space-between;gap:8px;min-height:0;overflow:hidden;background:radial-gradient(900px 400px at 50% 50%,rgba(60,72,110,.16),transparent 70%);border-radius:var(--radius-lg);padding:8px;border:1px solid var(--line-soft)}.playerbar{display:flex;align-items:center;gap:14px;padding:8px 13px;border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);flex-wrap:wrap}.playerbar.is-active{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}.playerbar .pname{font-family:var(--f-display);font-size:14px;display:flex;align-items:center;gap:7px}.playerbar .el-dot{width:10px;height:10px;border-radius:50%;box-shadow:0 0 7px currentColor}.pip-group{display:flex;align-items:center;gap:6px;font-size:13px}.pip-group .lbl{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.pip-group b{font-family:var(--f-display);font-size:16px}.life-val{color:#7fe08f}.life-val.low{color:var(--danger);animation:pulse-danger 1.3s ease-in-out infinite}@keyframes pulse-danger{50%{opacity:.55}}.essence-pips{display:flex;gap:3px;flex-wrap:wrap;max-width:150px}.pip{width:9px;height:9px;border-radius:50%;background:#232a40;border:1px solid #333c5c}.pip.full{background:var(--water);border-color:#7fcaff;box-shadow:0 0 5px var(--water)}.slot-row{display:flex;gap:8px;justify-content:center;align-items:center;flex:0 0 auto}.slot-row.zones{min-height:46px}.slot{position:relative;border-radius:8px;transition:box-shadow .14s,transform .12s}.slot.empty{width:var(--slot-w, 108px);height:var(--slot-h, 151px);border:1px dashed var(--line);border-radius:8px;opacity:.4}.slot.zone-empty{width:72px;height:40px}.slot.targetable{box-shadow:0 0 0 3px var(--danger),0 0 20px #ff5b5b66;cursor:crosshair;border-radius:12px}.slot.friendly-target{box-shadow:0 0 0 3px var(--ok),0 0 20px #6ee08a59;cursor:crosshair;border-radius:12px}.slot.can-act{box-shadow:0 0 0 2px var(--gold);border-radius:12px}.slot.attacking{animation:lunge .35s ease-out}@keyframes lunge{50%{transform:translateY(-16px) scale(1.05)}}.slot.struck{animation:shake .3s}@keyframes shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.slot .status-row{position:absolute;top:3px;left:3px;display:flex;gap:3px;z-index:12}.status-chip{font-size:9px;padding:1px 5px;border-radius:4px;background:#060810e6;border:1px solid var(--line);letter-spacing:.05em}.status-chip.sick{color:#9aa4bd}.status-chip.frozen{color:var(--water);border-color:var(--water)}.status-chip.exposed{color:var(--danger);border-color:var(--danger)}.status-chip.done{color:var(--ink-faint)}.zone-card{width:72px;height:40px;border-radius:6px;background:repeating-linear-gradient(45deg,#141a2e 0 6px,#111629 6px 12px);border:1px solid #2a3048;display:grid;place-items:center;color:#4a5675;font-size:15px;cursor:help}.zone-card.revealed{border-color:var(--undead);color:var(--undead)}.hand-dock{display:flex;align-items:flex-end;justify-content:center;gap:6px;min-height:262px;padding-top:28px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.hand-card{position:relative;transition:transform .16s ease,filter .16s,margin .16s ease;cursor:pointer;flex:0 0 auto}.hand-dock .hand-card:not(:last-child){margin-right:calc(-1 * var(--overlap, 0px))}.hand-card:hover,.hand-card.selected{margin-right:0!important}.hand-card:hover{transform:translateY(-22px);z-index:20}.hand-card.unaffordable{filter:grayscale(.7) brightness(.55)}.hand-card.selected{transform:translateY(-22px);z-index:21}.hand-card.selected .card{box-shadow:0 0 0 3px var(--gold),0 10px 30px #0009}.cost-flag{position:absolute;top:-8px;right:-6px;z-index:22;background:var(--danger);color:#fff;font-size:10px;font-weight:700;padding:2px 6px;border-radius:5px;pointer-events:none}.duel-side{display:flex;flex-direction:column;gap:10px;min-height:0}.log{flex:1;overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:9px 11px;font-size:12px;line-height:1.45;min-height:0;display:flex;flex-direction:column;gap:2px}.log-entry{color:var(--ink-dim)}.log-entry.turn{color:var(--gold-bright);font-family:var(--f-display);margin:7px 0 3px;letter-spacing:.04em}.log-entry.roll{color:#cbd5ea}.log-entry.destroy,.log-entry.lifeDamage{color:#ffb0b0}.log-entry.heal{color:#a8e8b8}.log-entry.trap{color:var(--undead)}.log-entry.system{color:var(--gold);font-weight:600}.log-entry.negate,.log-entry.fumble{color:#ffd18a}.card-magnifier{position:fixed;inset:0;z-index:6800;display:flex;align-items:center;justify-content:center;padding:20px;background:#04060c9e;backdrop-filter:blur(3px);animation:fade-in .12s ease-out;cursor:zoom-out}.magnifier-card{display:flex;flex-direction:column;align-items:center;gap:10px;animation:magnify-in .16s cubic-bezier(.2,.9,.3,1)}.magnifier-card .card{box-shadow:0 24px 70px #000c;cursor:default}.magnifier-hint{font-size:11.5px;color:var(--ink-faint);letter-spacing:.03em}@keyframes magnify-in{0%{opacity:0;transform:scale(.86)}}@media(max-height:760px){.magnifier-card .card{--card-scale: 1.15 !important}}@media(max-height:620px){.magnifier-card .card{--card-scale: .95 !important}}.dice-overlay{position:fixed;inset:0;display:grid;place-items:center;z-index:6000;pointer-events:none;background:radial-gradient(400px 400px at 50% 50%,rgba(0,0,0,.55),transparent 70%)}.die{width:128px;height:128px;display:grid;place-items:center;font-family:var(--f-display);font-size:46px;font-weight:700;color:#0a0c14;clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);background:linear-gradient(150deg,#fff,var(--die-c, var(--gold)) 55%,#7a6020);box-shadow:0 0 40px var(--die-c, var(--gold));animation:die-in .45s cubic-bezier(.2,1.2,.35,1)}.die.rolling{animation:die-tumble .5s linear infinite}@keyframes die-tumble{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.08)}to{transform:rotate(360deg) scale(1)}}@keyframes die-in{0%{transform:scale(.3);opacity:0}}.die-caption{margin-top:16px;text-align:center;font-family:var(--f-display);font-size:19px;letter-spacing:.1em;text-transform:uppercase;text-shadow:0 2px 12px #000}.die-sub{font-family:var(--f-body);font-size:12px;letter-spacing:.04em;color:var(--ink-dim);text-transform:none;margin-top:5px}.dice-stack{display:flex;flex-direction:column;align-items:center}.float-num{position:fixed;z-index:6500;pointer-events:none;font-family:var(--f-display);font-size:28px;font-weight:700;text-shadow:0 2px 10px #000;animation:float-up 1s ease-out forwards}.float-num.dmg{color:#ff6b6b}.float-num.heal{color:#7fe08f}@keyframes float-up{to{transform:translateY(-52px);opacity:0}}.turn-banner{position:fixed;inset-inline:0;top:42%;z-index:5500;text-align:center;pointer-events:none;font-family:var(--f-display);font-size:40px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-bright);text-shadow:0 4px 30px #000;animation:banner 1.5s ease-out forwards}@keyframes banner{0%{opacity:0;transform:scale(.85)}18%{opacity:1;transform:scale(1)}76%{opacity:1}to{opacity:0;transform:scale(1.06)}}.result-screen{text-align:center;padding:60px 20px}.result-screen .verdict{font-family:var(--f-display);font-size:52px;letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px}.result-screen .verdict.win{color:var(--gold-bright);text-shadow:0 0 40px rgba(255,217,112,.4)}.result-screen .verdict.lose{color:var(--danger)}.result-screen .verdict.draw{color:var(--ink-dim)}.room-code{font-family:var(--f-mono);font-size:34px;letter-spacing:.32em;color:var(--gold-bright);background:var(--panel);border:1px dashed var(--line);border-radius:var(--radius);padding:16px 20px;text-align:center;margin:14px 0;user-select:all}.conn-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.conn-dot.on{background:var(--ok);box-shadow:0 0 7px var(--ok)}.conn-dot.off{background:var(--danger)}.conn-dot.wait{background:var(--gold);animation:pulse-danger 1.1s infinite}.handoff{position:fixed;inset:0;z-index:7000;background:#06080ef7;display:grid;place-items:center;text-align:center;padding:24px}.handoff h2{font-size:30px;margin-bottom:8px}:root{--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px)}@media(max-width:860px){html{-webkit-text-size-adjust:100%}body{font-size:15px}.topbar{padding:calc(6px + var(--safe-t)) 10px 6px;gap:8px;flex-wrap:wrap}.brand-name{font-size:14px;letter-spacing:.06em}.brand-mark{font-size:14px}.tabs{order:3;width:100%;justify-content:space-between;gap:2px;overflow:visible}.tab{flex:1;padding:9px 4px;font-size:12px;text-align:center;min-height:40px}.view{padding:12px 12px calc(12px + var(--safe-b))}.view-head{margin-bottom:12px}.view-head h1{font-size:21px}.btn{min-height:42px;padding:10px 14px}.btn-sm{min-height:36px;padding:7px 11px}.choice{min-height:56px}.panel{padding:14px}.modal{padding:16px;max-height:88vh}.forge{grid-template-columns:minmax(0,1fr);gap:16px}.forge-panel{width:100%}.cropper-frame{--crop-max-h: 46vh}.stage-tools{gap:6px}.crop-hint{width:100%;margin-left:0;text-align:center}.zoom-group input[type=range]{width:100px}input[type=range]{height:28px}.card-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.filters{gap:6px}.filters select,.filters input{min-width:0;flex:1 1 44%}.deck-layout{grid-template-columns:1fr}.duel{grid-template-rows:minmax(0,1fr) auto auto auto;gap:6px;padding:6px 8px calc(8px + var(--safe-b))}.duel-main{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"field" "controls"}.duel-side{display:none}.duel.log-open .duel-side{display:block;position:fixed;inset-inline:0;bottom:0;max-height:55vh;z-index:400;background:var(--bg-2);border-top:1px solid var(--line);padding:10px 12px calc(12px + var(--safe-b));box-shadow:0 -8px 30px #0009}.duel.log-open .log{max-height:48vh}.duel-controls .panel{padding:8px}.duel-controls .btn{min-height:44px}.field{padding:4px;gap:5px}.slot-row{gap:5px}.slot-row.zones{min-height:34px}.slot.zone-empty{width:52px;height:30px}.zone-card{width:52px;height:30px;font-size:12px}.playerbar{padding:5px 8px;gap:8px;font-size:12px}.playerbar .pname{font-size:12px}.playerbar .pip-group:nth-last-child(1){display:none}.pip-group b{font-size:14px}.essence-pips{max-width:84px;gap:2px}.pip{width:7px;height:7px}.hand-dock{padding-top:20px}.status-chip{font-size:8px;padding:1px 3px}.die{width:96px;height:96px;font-size:34px}.die-caption{font-size:15px}.turn-banner{font-size:24px;letter-spacing:.1em}.result-screen .verdict{font-size:34px}.toasts{right:8px;left:8px;bottom:calc(8px + var(--safe-b));max-width:none}.room-code{font-size:24px;letter-spacing:.2em}.rules-doc{font-size:14px}.audit-table{font-size:11.5px}.audit-table th,.audit-table td{padding:5px 6px}}@media(max-width:400px){.tab{font-size:11px;padding:8px 2px}.card-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr))}.playerbar .pip-group:nth-last-child(2){display:none}}@media(max-height:480px)and (orientation:landscape){.topbar{padding-block:3px}.tabs{order:0;width:auto}.duel{padding-block:4px;gap:4px}.playerbar{padding-block:3px}.slot-row.zones{min-height:26px}}@media(hover:none){.card.is-interactive:hover,.hand-card:hover{transform:none}.hand-card.selected{transform:translateY(-14px)}.cropper-frame:after{opacity:1}}
