@font-face{font-family:Armada;src:url(/assets/Armada-Regular-D6JiQVb-.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{--void:#14100c;--plate:#1e1811;--plate-hi:#2a2118;--rule:#3a2d20;--rule-hi:#55412d;--chalk:#ecdfcd;--ash:#a3907a;--faint:#6f5d49;--rust:#c2622c;--rust-hi:#e0803f;--rust-ink:#1a0f07;--amber:#d9a441;--die-red:#b93a2e;--die-blue:#3d7fb8;--die-black:#1a1f27;--tex-grain:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='180'%20height='180'%20viewBox='0%200%20180%20180'%3e%3c!--%20Fine%20tooth%20of%20the%20metal.%20Tiles%20seamlessly%20(stitchTiles)%20so%20it%20can%20cover%20a%20panel%20of%20any%20size%20without%20a%20visible%20repeat.%20Painted%20grey%20and%20blended%20in%20CSS%20with%20`overlay`,%20so%20it%20only%20modulates%20whatever%20colour%20sits%20beneath.%20--%3e%3cfilter%20id='grain'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%3e%3cfeTurbulence%20type='fractalNoise'%20baseFrequency='0.85'%20numOctaves='4'%20seed='7'%20stitchTiles='stitch'/%3e%3cfeColorMatrix%20type='saturate'%20values='0'/%3e%3c/filter%3e%3crect%20width='180'%20height='180'%20filter='url(%23grain)'%20opacity='0.17'/%3e%3c/svg%3e");--tex-mottle:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiIGhlaWdodD0iNDIwIiB2aWV3Qm94PSIwIDAgNDIwIDQyMCI+CiAgPCEtLSBPeGlkZSBibG9vbXMuIExvdy1mcmVxdWVuY3kgdHVyYnVsZW5jZSBwdXNoZWQgdGhyb3VnaCBhIGNvbG91ciBtYXRyaXggdGhhdAogICAgICAgdGhyb3dzIGF3YXkgdGhlIG5vaXNlJ3Mgb3duIGNvbG91ciBhbmQga2VlcHMgb25seSBpdHMgbHVtaW5hbmNlIGFzIGFscGhhLAogICAgICAgc28gd2hhdCBjb21lcyBvdXQgaXMgb25lIGZsYXQgcnVzdCBodWUgaW4gcmFnZ2VkIHBhdGNoZXMuIFRoZSAtMC4zNCBiaWFzCiAgICAgICBjbGlwcyB0aGUgdGhpbiBtaWRkbGUgb2YgdGhlIG5vaXNlIGF3YXkgYW5kIGxlYXZlcyBpc2xhbmRzIHJhdGhlciB0aGFuIGEKICAgICAgIHVuaWZvcm0gd2FzaC4gLS0+CiAgPGZpbHRlciBpZD0ibW90dGxlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KICAgIDxmZVR1cmJ1bGVuY2UgdHlwZT0iZnJhY3RhbE5vaXNlIiBiYXNlRnJlcXVlbmN5PSIwLjAxMSAwLjAxNyIgbnVtT2N0YXZlcz0iNSIgc2VlZD0iMyIgc3RpdGNoVGlsZXM9InN0aXRjaCIvPgogICAgPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IgogICAgICB2YWx1ZXM9IjAgMCAwIDAgMC42NAogICAgICAgICAgICAgIDAgMCAwIDAgMC4yOQogICAgICAgICAgICAgIDAgMCAwIDAgMC4xMQogICAgICAgICAgICAgIDAuNzIgMCAwIDAgLTAuMzQiLz4KICA8L2ZpbHRlcj4KICA8cmVjdCB3aWR0aD0iNDIwIiBoZWlnaHQ9IjQyMCIgZmlsdGVyPSJ1cmwoI21vdHRsZSkiLz4KPC9zdmc+Cg==);--tex-streak:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='600'%20height='240'%20viewBox='0%200%20600%20240'%3e%3c!--%20Weeping%20stains,%20the%20kind%20that%20run%20down%20from%20a%20seam%20or%20a%20rivet.%20Same%20trick%20as%20the%20mottle,%20but%20the%20turbulence%20is%20stretched%20hard%20on%20Y%20so%20the%20patches%20elongate%20into%20vertical%20runs,%20and%20a%20gradient%20mask%20fades%20them%20out%20downward.%20--%3e%3cdefs%3e%3cfilter%20id='streak'%20x='0'%20y='0'%20width='100%25'%20height='100%25'%3e%3cfeTurbulence%20type='fractalNoise'%20baseFrequency='0.05%200.004'%20numOctaves='4'%20seed='11'%20stitchTiles='stitch'/%3e%3cfeColorMatrix%20type='matrix'%20values='0%200%200%200%200.55%200%200%200%200%200.24%200%200%200%200%200.09%201.0%200%200%200%20-0.6'/%3e%3c/filter%3e%3clinearGradient%20id='fade'%20x1='0'%20y1='0'%20x2='0'%20y2='1'%3e%3cstop%20offset='0'%20stop-color='%23fff'%20stop-opacity='1'/%3e%3cstop%20offset='1'%20stop-color='%23fff'%20stop-opacity='0'/%3e%3c/linearGradient%3e%3cmask%20id='fademask'%3e%3crect%20width='600'%20height='240'%20fill='url(%23fade)'/%3e%3c/mask%3e%3c/defs%3e%3crect%20width='600'%20height='240'%20filter='url(%23streak)'%20mask='url(%23fademask)'/%3e%3c/svg%3e");--ff-display:"Saira Condensed", ui-sans-serif, system-ui, sans-serif;--ff-body:"Archivo", ui-sans-serif, system-ui, sans-serif;--ff-mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace;--ff-card:"Armada", var(--ff-display);--topbar-h:52px;--editor-w:432px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{height:100%}body{background-color:var(--void);background-image:var(--tex-grain), var(--tex-mottle);background-blend-mode:overlay, soft-light;color:var(--chalk);font-family:var(--ff-body);-webkit-font-smoothing:antialiased;margin:0;font-size:13px;line-height:1.45}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--rust);outline-offset:2px;border-radius:2px}#root{height:100%}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.app{flex-direction:column;height:100vh;display:flex;overflow:hidden}.topbar,.editor,.tabs,.ptools,.preview{background-blend-mode:overlay, soft-light, normal}.topbar{height:var(--topbar-h);z-index:3;background-color:#221a13;background-image:var(--tex-grain), var(--tex-mottle), linear-gradient(180deg, #2e2418 0%, #1b1510 100%);border-bottom:1px solid var(--rule);flex:none;align-items:center;gap:18px;padding:0 16px;display:flex;position:relative;box-shadow:inset 0 1px #ffd6a012,0 2px #00000073,0 10px 18px -10px #000c}.topbar:before{content:"";pointer-events:none;opacity:.5;background-image:radial-gradient(closest-side,#ffd0968c 0%,#ffd09657 44%,#000000b3 64%,#0000 100%);background-position:13px 0;background-repeat:repeat-x;background-size:5px 5px;height:5px;position:absolute;bottom:3px;left:0;right:0}.topbar:after{content:"";pointer-events:none;background-image:var(--tex-streak);opacity:.28;background-size:600px 44px;height:44px;position:absolute;top:100%;left:0;right:0}.brand{flex:none;align-items:center;gap:10px;display:flex}.brand__logo{color:var(--rust);filter:drop-shadow(0 1px #000000b3);flex:none}.brand__mark{font-family:var(--ff-display);letter-spacing:.16em;text-transform:uppercase;color:var(--chalk);text-shadow:0 1px #000c,0 -1px #c2622c4d;font-size:19px;font-weight:700}.switch{border:1px solid var(--rule-hi);background:#0000004d;border-radius:3px;display:flex;box-shadow:inset 0 1px 3px #0009}.switch>:first-child,.switch>:first-child .switch__opt{border-top-left-radius:2px;border-bottom-left-radius:2px}.switch>:last-child,.switch>:last-child .switch__opt{border-top-right-radius:2px;border-bottom-right-radius:2px}.switch__opt{font-family:var(--ff-display);letter-spacing:.1em;text-transform:uppercase;color:var(--ash);border-right:1px solid var(--rule);align-items:center;gap:6px;padding:5px 15px;font-size:13px;transition:background .12s,color .12s;display:flex}.switch>:last-child .switch__opt,.switch>.switch__opt:last-child{border-right:0}.switch__opt:hover:not(:disabled){color:var(--chalk);background:var(--plate-hi)}.switch__opt[aria-pressed=true]{background-color:var(--rust);background-image:linear-gradient(180deg, var(--rust-hi), var(--rust));color:var(--rust-ink);font-weight:600;box-shadow:inset 0 1px #ffdcb44d}.switch__opt:disabled{color:var(--faint);cursor:not-allowed}.switch__wip{opacity:.8;flex:none}.tip{display:flex;position:relative}.tip:before,.tip:after{opacity:0;pointer-events:none;background:#120d09;transition:opacity .12s}.tip:after{content:attr(data-tip);z-index:20;white-space:nowrap;font-family:var(--ff-body);letter-spacing:.02em;text-transform:none;color:var(--chalk);border:1px solid var(--rule-hi);border-radius:3px;padding:5px 9px;font-size:11px;position:absolute;top:calc(100% + 9px);left:50%;transform:translate(-50%);box-shadow:0 10px 20px -8px #000000f2}.tip:before{content:"";z-index:21;border-left:1px solid var(--rule-hi);border-top:1px solid var(--rule-hi);width:8px;height:8px;position:absolute;top:calc(100% + 5px);left:50%;transform:translate(-50%)rotate(45deg)}.tip:hover:before,.tip:hover:after{opacity:1}.switch .tip:after{left:auto;right:0;transform:none}.topbar__spacer{flex:1}.btn{font-family:var(--ff-display);letter-spacing:.09em;text-transform:uppercase;border:1px solid var(--rule-hi);color:var(--chalk);background-color:var(--plate);background-image:linear-gradient(#33271c,#201911);border-radius:3px;padding:6px 13px;font-size:13px;transition:border-color .12s,color .12s,box-shadow .12s;box-shadow:inset 0 1px #ffd6a017,0 1px 2px #00000080}.btn:hover{border-color:var(--rust);color:#fff5ea;box-shadow:inset 0 1px #ffd6a029,0 0 0 1px #c2622c38,0 1px 2px #00000080}.btn:active{box-shadow:inset 0 2px 5px #000000a6}.workspace{grid-template-columns:var(--editor-w) 1fr;flex:1;min-height:0;display:grid}.editor{border-right:1px solid var(--rule);background-color:var(--plate);background-image:var(--tex-grain), var(--tex-mottle), linear-gradient(104deg, #241c14 0%, #1a140e 64%);flex-direction:column;min-height:0;display:flex;position:relative}.editor:after{content:"";pointer-events:none;opacity:.42;background-image:radial-gradient(closest-side,#ffd09680 0%,#ffd0964d 44%,#000000a6 64%,#0000 100%);background-position:0 18px;background-repeat:repeat-y;background-size:5px 5px;width:5px;position:absolute;top:0;bottom:0;left:3px}.tabs{border-bottom:1px solid var(--rule);background-color:#191309;background-image:var(--tex-grain), var(--tex-mottle), linear-gradient(180deg, #241c14, #17110c);flex:none;display:flex;box-shadow:inset 0 -2px 4px #0006}.tab{font-family:var(--ff-display);letter-spacing:.11em;text-transform:uppercase;color:var(--faint);border-bottom:2px solid #0000;margin-bottom:-1px;padding:9px 18px;font-size:13px}.tab:hover{color:var(--ash)}.tab[aria-selected=true]{color:var(--chalk);border-bottom-color:var(--rust);text-shadow:0 0 14px #c2622c8c}.editor__scroll{flex:1;padding:4px 0 40px;overflow-y:auto}.editor__scroll::-webkit-scrollbar{width:10px}.editor__scroll::-webkit-scrollbar-thumb{background:var(--rule-hi);border:3px solid var(--plate);border-radius:5px}.editor__scroll::-webkit-scrollbar-thumb:hover{background:#6b5136}.jsonview{font-family:var(--ff-mono);color:var(--chalk);white-space:pre;-webkit-user-select:text;user-select:text;margin:0;padding:14px 16px;font-size:11.5px;line-height:1.65;overflow-x:auto}.group{border-bottom:1px solid var(--rule)}.group__head{width:100%;font-family:var(--ff-display);letter-spacing:.13em;text-transform:uppercase;color:var(--ash);align-items:center;gap:9px;padding:11px 16px;font-size:13px;display:flex}.group__head:hover{color:var(--chalk);background:var(--plate-hi)}.group__caret{border-bottom:1.5px solid;border-right:1.5px solid;flex:none;width:9px;height:9px;transition:transform .16s;transform:rotate(45deg)translate(-2px,-2px)}.group[data-open=false] .group__caret{transform:rotate(-45deg)translate(-1px,1px)}.group__n{font-family:var(--ff-mono);color:var(--faint);letter-spacing:0;margin-left:auto;font-size:10px}.group__body{padding:2px 16px 16px}.group[data-open=false] .group__body{display:none}.row{grid-template-columns:96px 1fr;align-items:center;gap:10px;margin-bottom:8px;display:grid}.row--stack{grid-template-columns:1fr}.lbl{color:var(--ash);letter-spacing:.03em;font-size:11px}.field{border:1px solid var(--rule);background:#120d08;border-radius:2px;width:100%;padding:6px 9px;font-size:12.5px;transition:border-color .12s;box-shadow:inset 0 1px 2px #0000008c}.field:hover{border-color:var(--rule-hi)}.field:focus{border-color:var(--rust);outline:none}.field--num{font-family:var(--ff-mono);text-align:center;padding:6px 4px}textarea.field{resize:vertical;min-height:66px;line-height:1.5}.quad{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.quad__cell{text-align:center}.quad__cap{font-family:var(--ff-mono);color:var(--faint);letter-spacing:.09em;margin-bottom:3px;font-size:9px;display:block}.check{cursor:pointer;align-items:center;gap:9px;min-width:0;display:flex}.check input{opacity:0;width:0;height:0;position:absolute}.check__box{border:1px solid var(--rule-hi);background:#120d08;border-radius:2px;flex:none;width:15px;height:15px;transition:border-color .12s,background .12s}.check:hover .check__box{border-color:var(--rust)}.check input:checked+.check__box{background:var(--rust);border-color:var(--rust);background-image:linear-gradient(45deg, transparent 44%, var(--rust-ink) 44%, var(--rust-ink) 56%, transparent 56%), linear-gradient(-45deg, transparent 44%, var(--rust-ink) 44%, var(--rust-ink) 56%, transparent 56%);background-position:5px 8px,2.5px 7px;background-repeat:no-repeat;background-size:9px 2px,5px 2px}.check input:focus-visible+.check__box{outline:2px solid var(--rust);outline-offset:2px}.check__hint{color:var(--faint);font-size:11px;line-height:1.35}.filepick{align-items:center;gap:8px;min-width:0;display:flex}.filepick__btn{font-family:var(--ff-display);letter-spacing:.09em;text-transform:uppercase;border:1px solid var(--rule);color:var(--ash);cursor:pointer;border-radius:2px;flex:none;padding:5px 10px;font-size:11.5px;transition:border-color .12s,color .12s}.filepick__btn:hover{border-color:var(--rust);color:var(--chalk)}.filepick__btn input{display:none}.filepick__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--ff-mono);color:var(--faint);flex:auto;font-size:10px;overflow:hidden}.filepick__clear{border:1px solid var(--rule);width:18px;height:18px;color:var(--faint);border-radius:2px;flex:none;font-size:13px;line-height:1}.filepick__clear:hover{border-color:var(--die-red);color:var(--chalk)}.arc{grid-template-columns:74px 1fr;align-items:center;gap:10px;margin-bottom:7px;display:grid}.arc__name{color:var(--ash);font-size:11px}.arc--focus .arc__name{color:var(--amber)}.dicebar{gap:4px;display:flex}.dpick{border:1px solid var(--rule);width:22px;height:22px;font-family:var(--ff-mono);color:var(--faint);border-radius:2px;place-items:center;font-size:10px;font-weight:700;display:grid}.dpick[data-on=red]{background:var(--die-red);color:#fff0ec;border-color:#d2503f}.dpick[data-on=blue]{background:var(--die-blue);color:#eaf3fb;border-color:#4f92c9}.dpick[data-on=black]{background:var(--die-black);color:#b9c4d3;border-color:#3c4757}.chips{flex-wrap:wrap;gap:5px;display:flex}.chip{font-family:var(--ff-display);letter-spacing:.07em;text-transform:uppercase;border:1px solid var(--rule);color:var(--ash);border-radius:11px;padding:3px 9px;font-size:12px}.chip[data-on=true]{border-color:var(--rust);color:var(--rust);background:#c2622c1f}.chip--add{color:var(--faint);border-style:dashed}.preview{background-color:#16110c;background-image:var(--tex-grain), var(--tex-mottle), radial-gradient(120% 90% at 50% 0%, #2b2117 0%, #130f0a 62%);flex-direction:column;min-height:0;display:flex;position:relative}.preview:before{content:"";pointer-events:none;background-image:linear-gradient(#e2b2780d 1px,#0000 1px),linear-gradient(90deg,#e2b2780d 1px,#0000 1px);background-size:34px 34px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(78% 62% at 50% 42%,#000 20%,#0000 100%);mask-image:radial-gradient(78% 62% at 50% 42%,#000 20%,#0000 100%)}.stage{flex:1;min-height:0;padding:34px 24px;display:flex;position:relative;overflow:auto}.stage__canvas{flex-flow:wrap;justify-content:center;align-items:flex-start;gap:40px;margin:auto;display:flex}.piece{flex-direction:column;align-items:center;gap:10px;display:flex}.card-frame{flex:none;justify-content:center;align-items:flex-end;width:69mm;height:119mm;display:flex;position:relative}.card-placeholder{background:var(--plate-hi);border:1px solid var(--rule-hi);border-radius:9px;position:absolute;inset:0;box-shadow:0 0 0 1px #0000008c,0 26px 44px -14px #000000d9,0 3px 10px #00000080}.card-art{z-index:1;width:69mm;font-family:var(--ff-card);flex:none;position:relative}.card-image{border-radius:9px;width:100%;height:auto;display:block}.card-slot{pointer-events:none;background:#ffd25a14;border:1px dashed #ffd25abf;position:absolute;overflow:hidden}.card-slot--text{background:#78c8ff1a;border-color:#78c8ffcc}.card-slot--group{background:#8ce6961a;border-color:#8ce696cc}.card-slot--unmapped{background:#ffffff0a;border-style:dotted;border-color:#ffffff59}.card-slot__label{z-index:1;font-family:var(--ff-mono);color:#fff;text-shadow:0 1px 2px #000000e6;white-space:nowrap;font-size:6px;line-height:1;position:absolute;top:1px;left:2px}.card-icon-box{justify-content:center;align-items:center;gap:2px;display:flex;position:absolute}.card-icon{object-fit:contain;max-width:100%;max-height:100%;padding:3px}.card-icon--shield{padding:5px}.card-icon--dice{object-fit:contain;flex:none;width:2.3mm;max-width:2.3mm;height:2.3mm;max-height:2.3mm;padding:0}.token-frame{flex:none;position:relative}.token-image{border-radius:4px;width:100%;height:100%;display:block;box-shadow:0 0 0 1px #0000008c,0 12px 22px -10px #000c}.token-slot{fill:#ffd25a14;stroke:#ffd25abf;stroke-width:.12px;stroke-dasharray:.5 .4;pointer-events:none}.token-slot--text{fill:#78c8ff1a;stroke:#78c8ffcc}.token-slot--group{fill:#8ce6961a;stroke:#8ce696cc}.token-slot__label{font-family:var(--ff-mono);fill:#fff;paint-order:stroke;stroke:#000000e6;stroke-width:.35px;pointer-events:none;font-size:1.1px}.token-arcs{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.arc-lines,.hull-panel,.token-face{pointer-events:none}.token-name{font-family:var(--ff-card);fill:#111}.token-frame{--arc-glow:#ff3b30;--arc-core:#ffecec}.token-frame[data-faction=Galactic\ Empire]{--arc-glow:#3ce05a;--arc-core:#ecffee}.token-frame[data-faction=Rebel\ Alliance]{--arc-glow:#ff3b30;--arc-core:#ffecec}.arc-line__glow{stroke:var(--arc-glow);stroke-width:.9px;opacity:.38;stroke-linecap:round}.arc-line__core{stroke:var(--arc-core);stroke-width:.32px;stroke-linecap:round}.arc-handle{fill:#0b0e13d1;stroke:var(--arc-core);stroke-width:.3px;cursor:grab;touch-action:none;transition:fill .12s,stroke .12s}.arc-handle:hover{fill:var(--rust)}.arc-handle[data-grabbed=true]{fill:var(--rust);stroke:#fff;cursor:grabbing}.arc-handle--pivot{fill:#c2622c57;cursor:ns-resize}.arc-handle--pivot[data-grabbed=true]{cursor:ns-resize}.cap{font-family:var(--ff-mono);letter-spacing:.16em;color:var(--faint);text-transform:uppercase;text-align:center;font-size:9.5px}.ptools{border-top:1px solid var(--rule);background-color:#191309;background-image:var(--tex-grain), var(--tex-mottle), linear-gradient(180deg, #241c14, #16110c);flex:none;align-items:center;gap:10px;padding:9px 16px;display:flex;position:relative;box-shadow:inset 0 1px #ffd6a00f}.zoom{align-items:center;gap:9px;display:flex}.zoom__range{width:140px;accent-color:var(--rust)}.zoom__pct{font-family:var(--ff-mono);color:var(--ash);min-width:34px;font-size:11px}.dims{font-family:var(--ff-mono);color:var(--faint);letter-spacing:.03em;font-size:10.5px}.ptools__spacer{flex:1}@media (width<=1020px){.workspace{grid-template-rows:auto auto;grid-template-columns:1fr}.editor{border-right:0;border-bottom:1px solid var(--rule)}.app{height:auto;overflow:visible}.editor__scroll{max-height:none}.stage{padding:26px 16px}}@media (width<=560px){.dims{display:none}.card-frame{width:100%;max-width:69mm}.card-image,.token-image{max-width:100%}}
