:root{--bg-deep:#0c1610;--bg-mid:#142018;--bg-panel:#1a2a1f;--bg-panel-edge:#2a3d30;--bark:#3d2a1c;--moss:#2f5c3a;--leaf:#4a8f5c;--mist:#8fa894;--gold:#c4a35a;--gold-soft:#e0c988;--cream:#e8e2d4;--danger:#a84a3a;--cost-1:#8b9098;--cost-2:#1f8a4c;--cost-3:#2a6fbf;--cost-4:#8b3bb8;--cost-5:#c9a227;--cost-0:#5a635c;--font-display:"Cormorant Garamond", Georgia, serif;--font-body:"Source Sans 3", "Segoe UI", sans-serif;--panel-width:300px;--radius:10px;--shadow:0 12px 40px #00000073}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);color:var(--cream);background:radial-gradient(ellipse 90% 70% at 20% 10%, #4a8f5c2e, transparent 55%), radial-gradient(ellipse 70% 50% at 85% 80%, #3d2a1c8c, transparent 50%), linear-gradient(165deg, var(--bg-deep) 0%, var(--bg-mid) 45%, #0a120e 100%);background-attachment:fixed;overflow:hidden}.app{grid-template-columns:1fr var(--panel-width);grid-template-rows:auto 1fr auto;height:100%;min-height:0;display:grid}.app-header{z-index:20;background:linear-gradient(#142018e6,#0000);border-bottom:1px solid #c4a35a33;flex-direction:column;grid-column:1/-1;gap:.65rem;padding:.85rem 1.25rem .75rem;display:flex;position:relative}.brand-block{flex-wrap:wrap;align-items:baseline;gap:.85rem;display:flex}.brand{font-family:var(--font-display);letter-spacing:.02em;color:var(--gold-soft);margin:0;font-size:1.85rem;font-weight:700;line-height:1}.brand-sub{color:var(--mist);margin:0;font-size:.85rem}.brand-sub-row{align-items:center;gap:.35rem;min-width:0;display:inline-flex}.share-btn{appearance:none;width:1.55rem;height:1.55rem;color:var(--mist);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;transition:color .15s,background-color .15s,border-color .15s;display:inline-flex}.share-btn:hover{color:var(--gold-soft);background:#c4a35a1f;border-color:#c4a35a47}.share-btn:focus-visible{outline-offset:2px;outline:2px solid #c4a35aa6}.share-btn.is-copied{color:var(--leaf);background:#4a8f5c29;border-color:#4a8f5c59}.header-filters{grid-template-columns:1fr 1fr 1fr;gap:.75rem;max-width:1100px;display:grid}.msel{flex-direction:column;gap:.28rem;min-width:0;display:flex;position:relative}.msel-label{letter-spacing:.06em;text-transform:uppercase;color:var(--gold);font-size:.72rem;font-weight:700}.msel-control{cursor:text;background:#0c1610b8;border:1px solid #2a3d30e6;border-radius:8px;align-items:flex-start;gap:.25rem;min-height:2.35rem;padding:.28rem .35rem .28rem .4rem;transition:border-color .15s,background-color .15s;display:flex}.msel-clear{appearance:none;width:1.5rem;height:1.5rem;color:var(--mist);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;align-self:center;place-items:center;margin:0;padding:0;font-size:1.15rem;line-height:1;display:grid}.msel-clear:hover{color:var(--gold-soft);background:#4a3d1f66}.msel-control.open,.msel-control:focus-within{background:#4a3d1f59;border-color:#e0c9888c}.msel-chips{flex-wrap:wrap;flex:1;align-items:center;gap:.3rem;min-width:0;display:flex}.msel-chip{background:#0c16108c;border:1px solid #2a3d30cc;border-radius:6px;align-items:center;gap:.3rem;max-width:100%;padding:.18rem .28rem .18rem .35rem;font-size:.78rem;font-weight:600;line-height:1.2;display:inline-flex}.msel-chip.selected.msel-chip-unit{color:var(--cream);background:#4a3d1f73;border-color:#e0c9888c}.msel-chip.selected.msel-chip-trait,.msel-chip.selected.msel-chip-cost{box-shadow:inset 0 0 0 1px #e8e2d42e}.msel-chip img{object-fit:cover;background:var(--bark);border-radius:3px;flex-shrink:0;width:16px;height:16px}.msel-chip-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.msel-chip-remove{appearance:none;color:var(--mist);cursor:pointer;background:0 0;border:none;padding:0 .1rem;font-size:.95rem;line-height:1}.msel-chip-remove:hover{color:var(--gold-soft)}.msel-input{min-width:5.5rem;color:var(--cream);font:inherit;background:0 0;border:none;outline:none;flex:1;padding:.2rem .15rem;font-size:.85rem}.msel-input::placeholder{color:#8fa894a6}.msel-menu{z-index:30;background:linear-gradient(#1a2a1ffa,#0e1611fc);border:1px solid #c4a35a47;border-radius:8px;max-height:min(280px,42vh);margin:0;padding:.3rem;list-style:none;position:absolute;top:calc(100% + .28rem);left:0;right:0;overflow:auto;box-shadow:0 14px 36px #00000080}.msel-empty{color:var(--mist);padding:.55rem .6rem;font-size:.8rem}.msel-option{cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:center;gap:.5rem;padding:.4rem .5rem;transition:border-color .12s,background-color .12s;display:flex}.msel-option img{object-fit:cover;background:var(--bark);border-radius:4px;flex-shrink:0;width:24px;height:24px}.msel-option-meta{flex-direction:column;flex:1;gap:.1rem;min-width:0;display:flex}.msel-option-label{white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:600;overflow:hidden}.msel-option-sub{color:var(--mist);white-space:nowrap;text-overflow:ellipsis;font-size:.7rem;overflow:hidden}.msel-option.active:not(.selected),.msel-option:hover:not(.selected){background:#4a3d1f47;border-color:#e0c98847}.msel-option.selected.msel-chip-unit,.msel-option.active.selected.msel-chip-unit{background:#4a3d1f73;border-color:#e0c9888c}.msel-option.selected.msel-chip-trait,.msel-option.active.selected.msel-chip-trait,.msel-option.selected.msel-chip-cost,.msel-option.active.selected.msel-chip-cost{box-shadow:inset 0 0 0 1px #e8e2d41f}.msel-check{color:#0000;background:#4a3d1f59;border:1px solid #c4a35a66;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:.85rem;font-weight:600;line-height:1;display:inline-flex}.msel-check.checked{color:var(--gold-soft);background:#c4a35a47;border-color:#e0c988b3}.msel-option-actions{flex-shrink:0;align-items:center;gap:.25rem;display:inline-flex}.msel-option-action{width:1.5rem;height:1.5rem;color:var(--gold-soft);cursor:pointer;background:#4a3d1f59;border:1px solid #c4a35a66;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:1rem;font-weight:600;line-height:1;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.msel-option-action:hover{color:var(--cream);background:#c4a35a47;border-color:#e0c988b3}.msel-option-remove:hover{color:#f0d0d0;background:#78303073;border-color:#dc8c8c8c}.graph-area{border:1px solid var(--bg-panel-edge);border-radius:var(--radius);background:radial-gradient(circle at 50% 40%,#2f5c3a40,#0000 60%),#080e0aa6;min-width:0;min-height:0;margin:.5rem 0 .5rem .75rem;position:relative;overflow:hidden;box-shadow:inset 0 0 60px #00000059}.graph-shell{width:100%;height:100%;position:relative}.graph-host{cursor:grab;touch-action:none;width:100%;height:100%}.card-scale-control{z-index:2;color:var(--cream);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:auto;-webkit-user-select:none;user-select:none;background:#0c1610e0;border:1px solid #c4a35a47;border-radius:8px;align-items:center;gap:.55rem;padding:.45rem .7rem;font-size:.78rem;display:flex;position:absolute;bottom:.75rem;left:.75rem}.card-scale-label{color:var(--mist);white-space:nowrap}.card-scale-value{text-align:right;min-width:2.4rem;color:var(--gold-soft);font-variant-numeric:tabular-nums}.card-scale-slider{width:7.5rem;accent-color:var(--gold);cursor:pointer}.unit-tooltip{z-index:5;pointer-events:none;will-change:transform;width:max-content;max-width:min(220px,100% - 1rem);position:absolute;top:0;left:0}.unit-tooltip-inner{color:var(--cream);background:linear-gradient(165deg,#1c2a20f7,#0c140ffa);border:1px solid #c4a35a66;border-radius:8px;padding:.55rem .65rem .6rem;box-shadow:0 10px 28px #00000073}.unit-tooltip-header{align-items:center;gap:.55rem;margin-bottom:.45rem;display:flex}.unit-tooltip-icon{object-fit:cover;background:var(--bark);border:1px solid #c4a35a59;border-radius:6px;flex-shrink:0;width:36px;height:36px}.unit-tooltip-titles{min-width:0}.unit-tooltip-name{font-family:var(--font-display);color:var(--gold-soft);font-size:1.05rem;font-weight:700;line-height:1.15}.unit-tooltip-role{letter-spacing:.03em;text-transform:uppercase;color:var(--leaf);margin-top:.12rem;font-size:.72rem;font-weight:600}.unit-tooltip-traits{flex-direction:column;gap:.28rem;margin:0;padding:0;list-style:none;display:flex}.unit-tooltip-trait{color:var(--cream);align-items:center;gap:.4rem;font-size:.78rem;font-weight:600;display:flex}.unit-tooltip-trait img{object-fit:cover;background:#3d2a1ca6;border-radius:3px;flex-shrink:0;width:16px;height:16px}.unit-tooltip-trait-fallback{background:#8fa89440;border-radius:3px;flex-shrink:0;width:16px;height:16px}.graph-host:active{cursor:grabbing}.graph-host canvas{display:block;width:100%!important;height:100%!important}.graph-status{pointer-events:none;color:var(--mist);text-align:center;place-items:center;padding:1.5rem;font-size:.95rem;display:grid;position:absolute;inset:0}.graph-status.error{color:#e8a090}.side-panel{border:1px solid var(--bg-panel-edge);border-radius:var(--radius);min-height:0;box-shadow:var(--shadow);background:linear-gradient(#1a2a1ff2,#121c16fa);flex-direction:column;gap:.85rem;margin:.5rem .75rem .5rem .65rem;padding:.9rem;display:flex;overflow:hidden}.panel-section{flex-direction:column;gap:.55rem;min-height:0;display:flex}.panel-section.grow{flex:1}.panel-title-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.panel-title{font-family:var(--font-display);color:var(--gold);letter-spacing:.03em;margin:0;font-size:1.2rem;font-weight:600}.panel-clear-btn{appearance:none;color:var(--mist);cursor:pointer;background:0 0;border:1px solid #e0c98859;border-radius:5px;flex-shrink:0;padding:.3rem .45rem;font-family:inherit;font-size:.72rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s}.panel-clear-btn:hover{color:var(--gold-soft);background:#4a3d1f59;border-color:#e0c988a6}.panel-hint{color:var(--mist);margin:0;font-size:.78rem}.panel-toggle{color:var(--mist);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.45rem;margin:0;font-size:.75rem;display:flex}.panel-toggle input{accent-color:var(--gold);cursor:pointer;flex-shrink:0;width:.9rem;height:.9rem;margin:0}.panel-toggle span{line-height:1.25}.selected-list,.trait-board{flex-direction:column;flex:auto;gap:.4rem;min-height:6.5rem;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.selected-item,.trait-row{cursor:pointer;background:#0c16108c;border:1px solid #2a3d30cc;border-radius:8px;align-items:center;gap:.55rem;padding:.4rem .5rem;transition:border-color .15s,background-color .15s;display:flex}.selected-item:hover{background:#4a3d1f73;border-color:#e0c9888c}.trait-row:hover{border-color:#e8e2d459}.selected-item img,.trait-row img{object-fit:cover;background:var(--bark);border-radius:5px;width:28px;height:28px}.selected-item .meta,.trait-row .meta{flex:1;min-width:0}.selected-item .name,.trait-row .name{white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;font-weight:600;display:block;overflow:hidden}.selected-item .sub,.trait-row .sub{color:var(--mist);font-size:.72rem;display:block}.selected-traits .trait-sep{color:var(--mist)}.cost-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.remove-btn{appearance:none;color:var(--mist);cursor:pointer;background:0 0;border:none;padding:.15rem;font-size:1rem;line-height:1}.remove-btn:hover{color:var(--gold-soft)}.trait-row.active{box-shadow:inset 0 0 0 1px #e8e2d41f}.trait-row .style-pill{text-transform:uppercase;letter-spacing:.04em;color:var(--bg-deep);background:var(--gold);border-radius:4px;padding:.15rem .35rem;font-size:.65rem;font-weight:700}.empty-state{color:var(--mist);padding:.35rem .15rem;font-size:.82rem}.app-footer{color:#8fa894bf;border-top:1px solid #c4a35a1f;grid-column:1/-1;padding:.45rem 1.25rem .7rem;font-size:.68rem;line-height:1.35}.app-footer a{color:var(--gold)}@media (width<=900px){.app{grid-template-rows:auto minmax(45vh,1fr) auto auto;grid-template-columns:1fr;overflow:auto}body{overflow:auto}.header-filters{grid-template-columns:1fr;max-width:none}.graph-area{margin:.5rem .75rem}.side-panel{margin:0 .75rem .5rem;overflow:visible}.panel-section.grow{flex:none}.selected-list,.trait-board{flex:0 auto;min-height:8rem;max-height:min(42vh,20rem)}}
