:root{--ground: #0b1116;--panel: #111a21;--panel-hi: #16222b;--line: #21313d;--line-soft: #1a2831;--ink: #ccdae4;--ink-hi: #f2f8fc;--dim: #6b8598;--friend: #80e0ff;--hostile: #ff8078;--neutral: #aaffaa;--unknown: #ffff80;--warn: #f2b134;--err: #ff6b5e;--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--gap: 14px;--radius: 3px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--font-ui);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;overflow:hidden}.topbar{flex:0 0 auto;display:flex;align-items:baseline;justify-content:space-between;gap:var(--gap);padding:12px 18px 11px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#101a21,#0d151b)}.mark{display:flex;align-items:baseline;gap:12px}.mark__name{font-family:var(--font-mono);font-size:15px;font-weight:600;letter-spacing:.16em;color:var(--ink-hi);text-transform:lowercase}.mark__accent{color:var(--friend)}.mark__sub{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}.topbar__meta{display:flex;gap:8px}.chip{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:3px 8px;border:1px solid var(--line);border-radius:var(--radius);color:var(--friend);background:#0e1b22}.chip--quiet{color:var(--dim)}.shell{flex:1 1 auto;display:grid;grid-template-columns:320px minmax(0,1fr);min-height:0}.panel{border-right:1px solid var(--line);overflow-y:auto;overflow-x:hidden;background:var(--panel);scrollbar-width:thin;scrollbar-color:var(--line) transparent}.group{padding:16px 18px 18px;border-bottom:1px solid var(--line-soft);animation:rise .32s cubic-bezier(.2,.7,.3,1) backwards}.group[data-step="1"]{animation-delay:.02s}.group[data-step="2"]{animation-delay:.07s}.group[data-step="3"]{animation-delay:.12s}.group[data-step="4"]{animation-delay:.17s}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.group__title{margin:0 0 14px;display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}.group__title:before{content:"";position:absolute;margin-left:-18px;width:2px;height:11px;background:var(--friend);opacity:.65}.field{margin-bottom:12px;min-width:0}.field:last-child{margin-bottom:0}.field__label{display:flex;align-items:baseline;justify-content:space-between;gap:6px;margin-bottom:5px;font-size:11px;color:var(--dim)}.field__label em{font-family:var(--font-mono);font-style:normal;font-size:9px;letter-spacing:.1em;text-transform:uppercase;opacity:.7}.field__label output{font-family:var(--font-mono);font-size:10px;color:var(--friend)}.field__hint{margin:5px 0 0;font-size:10.5px;line-height:1.4;color:var(--dim);opacity:.75}.row{display:grid;gap:10px}.row--2{grid-template-columns:1fr 1fr}.row.is-collapsed{display:none}.input{width:100%;padding:7px 9px;background:#0c141a;border:1px solid var(--line);border-radius:var(--radius);color:var(--ink-hi);font-family:inherit;font-size:12.5px;transition:border-color .14s,box-shadow .14s}.input--mono{font-family:var(--font-mono);letter-spacing:.04em}.input:hover{border-color:#2c4152}.input:focus-visible,.seg__btn:focus-visible,.btn:focus-visible,.check input:focus-visible{outline:none;border-color:var(--friend);box-shadow:0 0 0 2px #80e0ff2e}select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--dim) 50%),linear-gradient(135deg,var(--dim) 50%,transparent 50%);background-position:calc(100% - 14px) 13px,calc(100% - 9px) 13px;background-size:5px 5px;background-repeat:no-repeat;padding-right:26px}.range{width:100%;height:22px;appearance:none;background:transparent;cursor:ew-resize}.range::-webkit-slider-runnable-track{height:2px;background:var(--line)}.range::-moz-range-track{height:2px;background:var(--line)}.range::-webkit-slider-thumb{appearance:none;width:11px;height:11px;margin-top:-4.5px;border-radius:50%;background:var(--friend)}.range::-moz-range-thumb{width:11px;height:11px;border:none;border-radius:50%;background:var(--friend)}.seg{display:grid;grid-auto-flow:column;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.seg--wrap{grid-auto-flow:row;grid-template-columns:1fr 1fr}.seg__btn{display:flex;align-items:center;justify-content:center;gap:5px;padding:7px 4px;border:none;border-right:1px solid var(--line);background:#0c141a;color:var(--dim);font-family:inherit;font-size:11px;cursor:pointer;transition:background .14s,color .14s}.seg--wrap .seg__btn:nth-child(2n){border-right:none}.seg--wrap .seg__btn:nth-child(-n+2){border-bottom:1px solid var(--line)}.seg__btn:last-child{border-right:none}.seg__btn:hover{background:var(--panel-hi);color:var(--ink)}.seg__btn.is-on{background:var(--panel-hi);color:var(--ink-hi);box-shadow:inset 0 -2px 0 var(--friend)}.seg__btn i{width:8px;height:8px;border:1px solid currentColor}.seg__btn i[data-aff=friend]{border-radius:1px;color:var(--friend)}.seg__btn i[data-aff=hostile]{transform:rotate(45deg);color:var(--hostile)}.seg__btn i[data-aff=neutral]{color:var(--neutral)}.seg__btn i[data-aff=unknown]{border-radius:50% 50% 50% 0;color:var(--unknown)}.check{display:flex;align-items:center;gap:8px;margin:4px 0 10px;font-size:12px;cursor:pointer;color:var(--ink)}.check input{accent-color:var(--friend);width:14px;height:14px}.switch{position:relative;width:30px;height:16px;flex:0 0 auto}.switch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}.switch span{position:absolute;inset:0;border:1px solid var(--line);border-radius:9px;background:#0c141a;transition:background .16s,border-color .16s;pointer-events:none}.switch span:after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:var(--dim);transition:transform .16s,background .16s}.switch input:checked+span{border-color:var(--friend)}.switch input:checked+span:after{transform:translate(14px);background:var(--friend)}#magnet-fields.is-off{opacity:.35;pointer-events:none}.stage{display:grid;grid-template-rows:minmax(0,1fr) auto auto;min-width:0;min-height:0}.viewport{position:relative;min-height:0;background:radial-gradient(120% 90% at 50% 0%,#16232c,#0b1116 70%)}.viewport:before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);background-size:32px 32px;opacity:.5;pointer-events:none}.viewport canvas{position:relative;display:block}.viewport__badge{position:absolute;left:14px;top:12px;z-index:2;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;color:var(--dim);pointer-events:none;white-space:pre-line}.strip{display:grid;grid-template-columns:minmax(260px,1.15fr) minmax(150px,.55fr) minmax(240px,1.3fr);border-top:1px solid var(--line);background:var(--panel)}.strip>*{margin:0;padding:12px 16px 14px;border-right:1px solid var(--line-soft);min-width:0}.strip>*:last-child{border-right:none}.section__cap{display:block;margin-bottom:9px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}.section__draw svg,.flat__svg svg{display:block;width:100%;height:auto;max-height:132px}.flat__svg{display:flex;align-items:center;justify-content:center;height:132px}.flat__svg svg{max-width:100%;filter:drop-shadow(0 0 12px rgba(128,224,255,.08))}.readout__list{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:0 0 8px;font-family:var(--font-mono);font-size:11px}.readout__list dt{color:var(--dim)}.readout__list dd{margin:0;color:var(--ink-hi);text-align:right}.notes{list-style:none;margin:0;padding:0;display:grid;gap:5px;max-height:66px;overflow-y:auto;scrollbar-width:thin}.notes li{position:relative;padding-left:14px;font-size:11px;line-height:1.35;color:var(--ink)}.notes li:before{content:"";position:absolute;left:0;top:5px;width:6px;height:6px;border:1px solid currentColor}.notes li[data-level=error]{color:var(--err)}.notes li[data-level=warn]{color:var(--warn)}.notes li[data-level=info]{color:var(--dim)}.notes li[data-level=ok]{color:var(--friend)}.actions{display:flex;align-items:center;gap:8px;padding:11px 16px;border-top:1px solid var(--line);background:#0d151b}.btn{padding:8px 14px;border:1px solid var(--line);border-radius:var(--radius);background:#101c24;color:var(--ink);font-family:inherit;font-size:12px;cursor:pointer;transition:background .14s,border-color .14s,color .14s}.btn:hover:not(:disabled){background:var(--panel-hi);border-color:#2c4152;color:var(--ink-hi)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn--primary{background:var(--friend);border-color:var(--friend);color:#06222d;font-weight:600}.btn--primary:hover:not(:disabled){background:#a3ebff;border-color:#a3ebff;color:#06222d}.btn--ghost{background:transparent;color:var(--dim)}.actions__note{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;color:var(--dim)}.batch{width:min(1000px,94vw);max-height:90vh;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink);overflow:hidden}.batch::backdrop{background:#060c10b8;backdrop-filter:blur(2px)}.batch[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;animation:rise .22s cubic-bezier(.2,.7,.3,1)}.batch__head{position:relative;padding:16px 52px 14px 20px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#16222b,#111a21)}.batch__title{margin:0 0 3px;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-hi)}.batch__lede{margin:0;font-size:11.5px;color:var(--dim);max-width:60ch}.batch__close{position:absolute;top:12px;right:12px;width:28px;height:28px;border:1px solid var(--line);border-radius:var(--radius);background:#0c141a;color:var(--dim);font-size:12px;cursor:pointer}.batch__close:hover{color:var(--ink-hi);border-color:#2c4152}.batch__body{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(230px,.8fr);gap:20px;padding:18px 20px;overflow-y:auto}.batch__col--side{border-left:1px solid var(--line-soft);padding-left:20px}.roster{min-height:300px;resize:vertical;line-height:1.55;font-size:12px;tab-size:2;white-space:pre;overflow-wrap:normal;overflow-x:auto}.batch .field__hint code{font-family:var(--font-mono);font-size:10px;color:var(--friend);background:#0c141a;padding:1px 4px;border-radius:2px}#roster-errors{margin-top:10px;max-height:110px}.batch__progress{margin-top:16px}.bar{height:3px;background:var(--line);overflow:hidden}.bar i{display:block;height:100%;width:0;background:var(--friend);transition:width .15s linear}.batch__status{display:block;margin-top:7px;font-family:var(--font-mono);font-size:10.5px;color:var(--dim)}.batch__foot{display:flex;align-items:center;gap:8px;padding:12px 20px;border-top:1px solid var(--line);background:#0d151b}.batch__foot .actions__note{margin-left:auto}#uniform-fields.is-off{opacity:.35;pointer-events:none}@media(max-width:1100px){.strip{grid-template-columns:1fr 1fr}.readout{grid-column:1 / -1;border-top:1px solid var(--line-soft)}}@media(max-width:860px){body{overflow:auto}.shell{grid-template-columns:1fr}.panel{border-right:none;border-bottom:1px solid var(--line);overflow:visible}.viewport{height:46vh}.strip{grid-template-columns:1fr}.actions{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}.combo{position:relative}.combo__panel{position:absolute;z-index:30;top:calc(100% + 3px);left:0;right:0;border:1px solid #2c4152;border-radius:var(--radius);background:#0c141a;box-shadow:0 12px 28px #0000008c;overflow:hidden}.combo__list{list-style:none;margin:0;padding:3px;max-height:264px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.combo__item{display:flex;align-items:baseline;gap:8px;padding:5px 8px;border-radius:2px;cursor:pointer;font-size:12px;line-height:1.35}.combo__item:hover,.combo__item.is-active{background:var(--panel-hi)}.combo__item.is-active{box-shadow:inset 2px 0 0 var(--friend)}.combo__name{flex:1 1 auto;color:var(--ink-hi);overflow-wrap:anywhere}.combo__meta{flex:0 0 auto;font-family:var(--font-mono);font-size:10px;color:var(--dim)}.combo__empty{padding:10px;font-size:12px;color:var(--dim);text-align:center}.combo__tail{padding:5px 9px;border-top:1px solid var(--line-soft);font-family:var(--font-mono);font-size:10px;color:var(--dim);background:#0a1116}.combo__icon{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:30px;height:22px}.combo__icon svg{display:block;max-width:100%;max-height:100%}.combo__preview{position:absolute;z-index:31;left:calc(100% + 10px);top:34px;width:168px;padding:12px 12px 10px;border:1px solid #2c4152;border-radius:var(--radius);background:#0e1922;box-shadow:0 14px 30px #0009;pointer-events:none}.combo__previewArt{display:flex;align-items:center;justify-content:center;height:96px;margin-bottom:8px}.combo__previewArt svg{max-width:100%;max-height:96px}.combo__preview span{display:block;font-size:11px;line-height:1.35;color:var(--ink);text-align:center}@media(max-width:1240px){.combo__preview{left:auto;right:0;top:calc(100% + 3px);z-index:32}}.combo__name{display:flex;flex-direction:column;gap:1px;min-width:0}.combo__title,.combo__sub{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}.combo__sub{font-size:10px;line-height:1.3;color:var(--dim)}.combo__item{align-items:center}.appfoot{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;padding:7px 18px;border-top:1px solid var(--line);background:#0d151b;color:var(--dim);font-size:10.5px}.appfoot span{margin-right:auto}.appfoot a{color:var(--dim);text-decoration:none;border-bottom:1px solid transparent}.appfoot a:hover{color:var(--ink);border-bottom-color:var(--line)}.chip--link{color:var(--friend);border-color:#80e0ff4d;text-decoration:none;transition:background .14s,border-color .14s}.chip--link:hover{background:#80e0ff1a;border-color:var(--friend)}@media(max-width:760px){.appfoot span{width:100%;margin-right:0}}
