:root{--bg:#16181d;--panel:#1d2026;--panel-2:#22262d;--line:#2e333c;--line-soft:#262a31;--text:#e6e8ec;--muted:#9aa2ae;--dim:#6d7684;--accent:#c9a76a;--accent-dim:#8b7346;--ok:#6fbf8b;--warn:#e0b055;--err:#e0776a;--radius:8px;--rail:320px;--rail-r:356px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font:13px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}.app{grid-template-rows:48px 1fr;height:100%;display:grid}.topbar{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:14px;padding:0 14px;display:flex}.brand{letter-spacing:.01em;align-items:center;gap:9px;font-weight:600;display:flex}.brand .mark{width:20px;height:20px;color:var(--accent)}.brand small{color:var(--dim);letter-spacing:.1em;text-transform:uppercase;font-size:9px;font-weight:400}.topbar .chartname{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.topbar .spacer{flex:1}.body{grid-template-columns:var(--rail) 1fr var(--rail-r);min-height:0;display:grid}.body.collapse-left{grid-template-columns:0 1fr var(--rail-r)}.body.collapse-right{grid-template-columns:var(--rail) 1fr 0}.body.collapse-left.collapse-right{grid-template-columns:0 1fr 0}.rail.left{grid-column:1}.canvas{grid-column:2}.rail.right{grid-column:3}.rail{background:var(--panel);flex-direction:column;min-height:0;display:flex;overflow:hidden}.rail.left{border-right:1px solid var(--line)}.rail.right{border-left:1px solid var(--line)}.rail-tabs{border-bottom:1px solid var(--line);flex:none;display:flex}.rail-tabs button{cursor:pointer;color:var(--dim);letter-spacing:.08em;text-transform:uppercase;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;padding:10px 6px;font-size:11px}.rail-tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent)}.rail-tabs button:hover{color:var(--text)}.rail-body{flex:1;min-height:0;overflow:auto}.section{border-bottom:1px solid var(--line-soft);padding:14px}.section>h3{letter-spacing:.02em;color:var(--text);margin:0 0 11px;font-size:13px;font-weight:600}.field{gap:5px;margin-bottom:11px;display:grid}.field:last-child{margin-bottom:0}.field>label{color:var(--muted);justify-content:space-between;gap:8px;font-size:11px;display:flex}.field>label .val{color:var(--dim);font-variant-numeric:tabular-nums}.field .hint{color:var(--dim);font-size:11px;line-height:1.45}.row{gap:8px;display:flex}.row>*{flex:1;min-width:0}input[type=text],input[type=number],select,textarea{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;outline:none;width:100%;padding:7px 9px}input[type=text]:focus,input[type=number]:focus,select:focus,textarea:focus{border-color:var(--accent-dim)}input[type=range]{width:100%;accent-color:var(--accent)}select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--dim) 50%), linear-gradient(135deg, var(--dim) 50%, transparent 50%);background-position:right 12px center,right 7px center;background-repeat:no-repeat;background-size:5px 5px;padding-right:26px}.btn{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;white-space:nowrap;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:7px 11px;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--accent-dim);background:#282d35}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#23180b;font-weight:600}.btn.primary:hover:not(:disabled){background:#d8b678;border-color:#d8b678}.btn.ghost{background:0 0}.btn.icon{padding:6px 8px}.btn.sm{padding:5px 8px;font-size:12px}.btn.danger:hover:not(:disabled){border-color:var(--err);color:var(--err)}.check{cursor:pointer;align-items:center;gap:8px;padding:3px 0;font-size:12px;display:flex}.check input{accent-color:var(--accent);width:14px;height:14px}.cards{gap:7px;display:grid}.card{text-align:left;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;gap:2px;padding:9px 11px;display:grid}.card:hover{border-color:var(--accent-dim)}.card[aria-pressed=true]{border-color:var(--accent);background:#2a2519}.card .t{font-size:12.5px;font-weight:600}.card .s{color:var(--dim);font-size:11px;line-height:1.4}.swatches{grid-template-columns:repeat(2,1fr);gap:7px;display:grid}.swatch{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:left;background:0 0;padding:0;overflow:hidden}.swatch[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.swatch .chip{height:42px;display:flex}.swatch .chip i{flex:1}.swatch .name{padding:6px 8px;font-size:11.5px;font-weight:600}.people{gap:1px;display:grid}.person{align-items:stretch;display:flex}.person .pick{cursor:pointer;text-align:left;background:0 0;border:0;flex:1;grid-template-columns:22px 1fr auto;align-items:center;gap:9px;min-width:0;padding:7px 4px 7px 14px;display:grid}.person:hover{background:var(--panel-2)}.person[data-selected=true]{background:#2a2519}.person .del{color:var(--dim);cursor:pointer;opacity:0;background:0 0;border:0;flex:none;padding:0 12px;font-size:16px;line-height:1}.person:hover .del,.person .del:focus-visible{opacity:1}.person .del:hover{color:var(--err)}.person .sex{background:var(--line);width:20px;height:20px;color:var(--muted);border-radius:5px;place-items:center;font-size:10px;font-weight:700;display:grid}.person .sex.M{color:#9ec6e8;background:#24384d}.person .sex.F{color:#e3a9c8;background:#402a38}.person .nm{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.person .yr{color:var(--dim);font-variant-numeric:tabular-nums;font-size:11px}.person .root{letter-spacing:.08em;color:var(--accent);font-size:9px}.canvas{background:radial-gradient(circle at 50% 42%,#22262e 0%,#14161a 70%);min-height:0;position:relative;overflow:hidden}.canvas .stage{cursor:grab;touch-action:none;position:absolute;inset:0}.canvas .stage.dragging{cursor:grabbing}.canvas .paper{transform-origin:0 0;position:absolute;box-shadow:0 18px 50px #0000008c}.canvas svg{display:block}.canvas svg [data-person]{cursor:pointer}.canvas .hud{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#181a1fe6;border-radius:999px;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;bottom:12px;left:12px}.canvas .hud .btn{height:26px;color:var(--muted);background:0 0;border:0;border-radius:999px;padding:0 10px;font-size:12px}.canvas .hud .btn:hover:not(:disabled){color:var(--text);background:#ffffff14}.canvas .hud .z{color:var(--muted);font-variant-numeric:tabular-nums;text-align:center;min-width:46px;padding:0 4px;font-size:11.5px}.canvas .hud .fit{box-shadow:inset 1px 0 0 var(--line);border-radius:0 999px 999px 0;margin-left:2px;padding-left:11px}.canvas .meta{color:var(--dim);border:1px solid var(--line);font-variant-numeric:tabular-nums;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#181a1fe6;border-radius:999px;align-items:center;height:32px;padding:0 12px;font-family:inherit;font-size:11px;display:inline-flex;position:absolute;bottom:12px;right:12px}.canvas .meta:hover{color:var(--muted);border-color:var(--accent-dim)}.canvas .loading{color:var(--dim);letter-spacing:.1em;text-transform:uppercase;place-items:center;font-size:11px;display:grid;position:absolute;inset:0}.railtoggle{z-index:5;border:1px solid var(--line);width:26px;height:26px;color:var(--muted);cursor:pointer;background:#181a1fe6;border-radius:6px;place-items:center;display:grid;position:absolute;top:12px}.railtoggle.l{left:12px}.railtoggle.r{right:12px}.railtoggle:hover{color:var(--text);border-color:var(--accent-dim)}.railtoggle .word{display:none}.exp{gap:8px;display:grid}.exp-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);overflow:hidden}.exp-item>header{align-items:center;gap:9px;padding:9px 11px;display:flex}.exp-item .t{flex:1;font-size:12.5px;font-weight:600}.exp-item .s{color:var(--dim);margin-top:-4px;padding:0 11px 10px;font-size:11px;line-height:1.45}.exp-item .opts{border-top:1px solid var(--line-soft);padding:10px 11px 11px}.grouphead{letter-spacing:.02em;width:100%;color:var(--text);border:0;border-bottom:1px solid var(--line-soft);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:7px;margin:18px 0 9px;padding:0 0 6px;font-family:inherit;font-size:13px;font-weight:600;display:flex}.grouphead:hover{color:var(--accent)}.grouphead .caret{color:var(--dim);width:9px;font-size:10px}.grouphead .count{color:var(--dim);margin-left:auto;font-size:11px;font-weight:400}.grouphead:first-child{margin-top:0}.toasts{z-index:50;gap:8px;max-width:380px;display:grid;position:fixed;bottom:16px;right:16px}.toast{background:var(--panel-2);border:1px solid var(--line);border-left-width:3px;border-radius:6px;padding:9px 12px;font-size:12px;box-shadow:0 8px 26px #0006}.toast.ok{border-left-color:var(--ok)}.toast.warn{border-left-color:var(--warn)}.toast.error{border-left-color:var(--err)}.drop{border:1.5px dashed var(--line);border-radius:var(--radius);text-align:center;color:var(--dim);cursor:pointer;padding:22px 14px}.drop:hover,.drop.over{border-color:var(--accent);color:var(--text);background:#23201a}.drop strong{color:var(--text);margin-bottom:3px;font-size:12.5px;font-weight:600;display:block}.empty{text-align:center;color:var(--dim);padding:26px 16px;font-size:12px;line-height:1.6}.warnlist{color:var(--warn);max-height:130px;margin:8px 0 0;padding-left:16px;font-size:11px;line-height:1.5;overflow:auto}.kv{grid-template-columns:auto 1fr;gap:3px 10px;font-size:11.5px;display:grid}.kv dt{color:var(--dim)}.kv dd{font-variant-numeric:tabular-nums;margin:0}.sep{background:var(--line-soft);height:1px;margin:12px 0}.mini{color:var(--dim);font-size:11px}.scrolltable{border:1px solid var(--line);border-radius:6px;max-height:220px;overflow:auto}table.map{border-collapse:collapse;width:100%;font-size:11.5px}table.map th,table.map td{text-align:left;border-bottom:1px solid var(--line-soft);padding:5px 8px}table.map th{color:var(--dim);background:var(--panel-2);font-weight:500;position:sticky;top:0}table.map select{padding:3px 6px;font-size:11.5px}.switcher{position:relative}.switcher-btn{background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:6px;align-items:center;gap:8px;max-width:260px;padding:5px 9px;display:flex}.switcher-btn:hover{border-color:var(--accent-dim)}.switcher-btn .nm{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.switcher-btn .ct,.switcher-row .ct{color:var(--dim);font-variant-numeric:tabular-nums;font-size:10px}.switcher-btn .caret{color:var(--dim);font-size:9px}.switcher-menu{z-index:40;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;min-width:340px;max-height:60vh;padding:5px;position:absolute;top:calc(100% + 6px);left:0;overflow:auto;box-shadow:0 12px 34px #00000080}.switcher-row{border-radius:6px;align-items:center;gap:2px;display:flex}.switcher-row:hover{background:#272c34}.switcher-row[data-active=true]{background:#2a2519}.switcher-row .pick{text-align:left;cursor:pointer;background:0 0;border:0;flex:1;gap:1px;min-width:0;padding:7px 9px;display:grid}.switcher-row .pick .nm{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.switcher-row input{margin:3px}.mini-act{color:var(--dim);cursor:pointer;background:0 0;border:0;border-radius:5px;flex:none;padding:5px 7px;font-size:11px}.mini-act:hover:not(:disabled){color:var(--text);background:#ffffff12}.mini-act:disabled{opacity:.3;cursor:not-allowed}.mini-act.danger{color:var(--err)}.switcher-foot{border-top:1px solid var(--line-soft);align-items:center;gap:10px;margin-top:4px;padding:8px 6px 4px;display:flex}.section>h3{align-items:baseline;gap:8px;margin-bottom:10px;display:flex}.section[data-open=false]>h3{margin-bottom:0}.sect-toggle{cursor:pointer;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;background:0 0;border:0;align-items:center;gap:6px;padding:0;display:flex}.sect-toggle:hover{color:var(--text)}.sect-toggle .caret{color:var(--dim);width:8px;font-size:8px}.section>h3 .note{color:var(--dim);letter-spacing:.04em;text-transform:none;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400;overflow:hidden}.advanced-bar{border-top:1px solid var(--line);padding:12px 14px 22px}.advanced-bar .btn{width:100%}.advanced-bar .hint{margin-top:7px}.warnbox{border:1px solid var(--warn);color:var(--muted);background:#e0b05514;border-left-width:3px;border-radius:6px;margin-bottom:12px;padding:9px 11px;font-size:11.5px;line-height:1.5}.warnbox strong{color:var(--text);font-weight:600}.tip-btn{cursor:help;border:1px solid var(--line);width:13px;height:13px;color:var(--dim);vertical-align:middle;background:0 0;border-radius:999px;flex:none;place-items:center;padding:0;font-family:Georgia,serif;font-size:9px;font-style:italic;line-height:1;display:inline-grid}.tip-btn:hover,.tip-btn[aria-expanded=true]{color:var(--text);border-color:var(--accent-dim)}.tip-btn:focus-visible{outline:2px solid var(--accent-dim);outline-offset:2px}.tip-pop{z-index:100;border:1px solid var(--line);max-width:260px;color:var(--muted);pointer-events:auto;background:#0f1116;border-radius:7px;padding:8px 11px;font-size:11.5px;line-height:1.5;position:fixed;box-shadow:0 10px 28px #0000008c}.field>label .lbl{align-items:center;gap:5px;min-width:0;display:inline-flex}.check-row{align-items:center;gap:6px;display:flex}.check-row .check{flex:auto;min-width:0}.crash{background:var(--bg);place-items:center;padding:24px;display:grid;position:fixed;inset:0;overflow:auto}.crash-card{width:100%;max-width:520px}.crash-card h1{margin:0 0 10px;font-size:19px;font-weight:600}.crash-card p{color:var(--muted);margin:0 0 18px;line-height:1.6}.crash-card .row{gap:10px}.crash-card .row>*{flex:none}.crash-more{margin-top:16px;padding-left:0}.crash-detail{background:var(--panel);border:1px solid var(--line);color:var(--dim);white-space:pre-wrap;word-break:break-word;border-radius:7px;max-height:40vh;margin-top:10px;padding:12px;font-size:11px;line-height:1.5;overflow:auto}.body{position:relative}.scrim{z-index:25;cursor:pointer;background:#0a0b0e8c;border:0;padding:0;animation:.12s ease-out scrim-in;position:absolute;inset:0}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}@media (width<=1180px){.body,.body.collapse-left,.body.collapse-right,.body.collapse-left.collapse-right{grid-template-columns:1fr}.canvas{grid-column:1}.rail{z-index:30;position:absolute;top:0;bottom:0;box-shadow:0 0 40px #0000008c}.rail.left{width:min(var(--rail), 86vw);grid-column:1;left:0}.rail.right{width:min(var(--rail-r), 92vw);grid-column:1;right:0}.railtoggle{align-items:center;gap:5px;width:auto;height:28px;padding:0 10px;font-size:11.5px;display:inline-flex}.railtoggle .word{display:inline}.railtoggle.l{top:48px;left:auto;right:12px}.railtoggle.r{top:12px}.body.narrow:not(.collapse-left) .railtoggle,.body.narrow:not(.collapse-right) .railtoggle{display:none}.rail-close{width:40px;color:var(--dim);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:none;font-size:19px;line-height:1}.rail-close:hover{color:var(--text)}.topbar .chartname{display:none}}@media (width<=720px){.topbar{gap:8px;padding:0 10px}.brand small,.topbar .btn.sm.ghost{display:none}.switcher-btn{max-width:44vw}.switcher-menu{min-width:min(340px,92vw)}.rail.left,.rail.right{width:94vw}.canvas .meta{display:none}}.account{position:relative}.account>.btn{text-overflow:ellipsis;white-space:nowrap;max-width:190px;overflow:hidden}.account-menu{z-index:40;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;gap:9px;width:280px;padding:12px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 12px 34px #00000080}.account-menu form{gap:9px;display:grid}.account-menu .mini{margin:0;line-height:1.5}.account-menu .mini strong{color:var(--text);font-weight:600}.account-menu .mini.err{color:var(--err)}.account-menu input.code{letter-spacing:.3em;text-align:center;text-indent:.3em;font-variant-numeric:tabular-nums;padding:8px;font-size:15px}.account-menu input.code::placeholder{color:var(--dim);letter-spacing:.3em}.linky{cursor:pointer;color:var(--accent);font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.linky:hover{color:var(--text)}.person.confirming{background:#e0776a12;flex-wrap:wrap}.confirm-del{flex-wrap:wrap;align-items:center;gap:6px;width:100%;padding:2px 0 4px;display:flex}.confirm-del .what{color:var(--muted);flex:100%;font-size:11.5px}.confirm-del .what em{color:var(--warn);font-style:normal}.btn.danger-solid{background:var(--err);border-color:var(--err);color:#2a1512;font-weight:600}.btn.danger-solid:hover:not(:disabled){background:#e88d81;border-color:#e88d81}.toast{align-items:center;gap:10px;display:flex}.toast>span{cursor:pointer}.toast .btn.sm{flex:none}.rail-foot{border-top:1px solid var(--line);background:var(--panel);color:var(--dim);flex:none;margin:0;padding:11px 14px;font-size:11.5px;line-height:1.5}.rail-foot a{color:var(--muted);text-underline-offset:2px;text-decoration:underline}.rail-foot a:hover{color:var(--accent)}
