@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2) format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #060807;--rail: #090c0b;--panel: #0d100f;--panel-2: #121614;--panel-3: #181d1b;--hl-rgb: 150, 255, 195;--g-rgb: 98, 242, 154;--a-rgb: 245, 185, 66;--r-rgb: 255, 107, 94;--line: rgba(var(--hl-rgb), .07);--line-2: rgba(var(--hl-rgb), .14);--line-3: rgba(var(--hl-rgb), .26);--text: #e3ebe6;--muted: #8b968f;--faint: #5f6a63;--g: #62f29a;--g-soft: rgba(98, 242, 154, .12);--g-glow: rgba(98, 242, 154, .35);--g-hover: #7cf6ad;--on-g: #04140a;--amber: #f5b942;--amber-soft: rgba(245, 185, 66, .13);--red: #ff6b5e;--red-soft: rgba(255, 107, 94, .12);--glass: rgba(9, 12, 11, .92);--shadow: rgba(0, 0, 0, .85);--sans: "Geist Variable", "Segoe UI", system-ui, sans-serif;--mono: "Geist Mono Variable", Consolas, monospace;--ease: cubic-bezier(.22, 1, .36, 1);--fast: .14s;--med: .26s;color-scheme:dark}:root[data-theme=light]{--bg: #eef1ee;--rail: #e6ebe7;--panel: #ffffff;--panel-2: #f5f7f5;--panel-3: #e8ede9;--hl-rgb: 20, 70, 40;--g-rgb: 11, 138, 71;--a-rgb: 166, 106, 0;--r-rgb: 196, 54, 42;--text: #0f1a13;--muted: #45524a;--faint: #6f7b73;--g: #0b8a47;--g-soft: rgba(11, 138, 71, .1);--g-glow: rgba(11, 138, 71, .25);--g-hover: #0a7a3e;--on-g: #ffffff;--amber: #a66a00;--amber-soft: rgba(166, 106, 0, .1);--red: #c4362a;--red-soft: rgba(196, 54, 42, .09);--glass: rgba(255, 255, 255, .96);--shadow: rgba(20, 40, 28, .2);color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:13.5px;-webkit-font-smoothing:antialiased;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:0;cursor:pointer}a{color:var(--g);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--g);outline-offset:2px;border-radius:6px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.faint{color:var(--faint)}.g{color:var(--g)}.red{color:var(--red)}.amber{color:var(--amber)}svg.i{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;flex:none}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.side{background:var(--rail);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:0 8px 16px;font-weight:700;letter-spacing:.08em}.mark{width:32px;height:32px;border-radius:9px;background:var(--g);color:var(--on-g);display:grid;place-items:center;box-shadow:0 0 22px -6px var(--g-glow)}.mark svg{width:18px;height:18px}.org-pick{margin:0 4px 14px}.org-pick select{width:100%}.nav{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--muted);width:100%;text-align:left;transition:background var(--fast) var(--ease),color var(--fast) var(--ease)}.nav:hover{color:var(--text);background:rgba(var(--hl-rgb),.04)}.nav.on{color:var(--g);background:var(--g-soft);box-shadow:inset 0 0 0 1px rgba(var(--g-rgb),.25)}.side .sp{flex:1}.main{padding:26px 32px 48px;max-width:1180px;width:100%}.head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;flex-wrap:wrap}.head h1{font-size:24px;font-weight:650;letter-spacing:-.005em}.head p{color:var(--muted);margin-top:4px;max-width:640px}.topbar{display:flex;gap:8px;align-items:center}.panel{background:var(--panel);border-radius:14px;box-shadow:inset 0 0 0 1px var(--line)}:root[data-theme=light] .panel{box-shadow:inset 0 0 0 1px var(--line),0 1px 2px #14281c0d}.pad{padding:18px 20px}.pt{font-size:11.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.lbl{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stat{padding:14px 16px}.stat b{display:block;font-family:var(--mono);font-size:26px;font-weight:500;margin-top:6px}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sp{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 14px;border-radius:10px;font-size:12.5px;font-weight:550;background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--line-2);transition:background var(--fast) var(--ease),box-shadow var(--fast) var(--ease),transform var(--fast) var(--ease);white-space:nowrap}.btn:hover:not(:disabled){background:var(--panel-3);box-shadow:inset 0 0 0 1px var(--line-3)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.pri{background:var(--g);color:var(--on-g);box-shadow:0 0 22px -10px var(--g-glow)}.btn.pri:hover:not(:disabled){background:var(--g-hover)}.btn.danger{background:var(--red);color:#fff;box-shadow:none}.btn.ghost{background:transparent;box-shadow:none;color:var(--muted)}.btn.ghost:hover:not(:disabled){color:var(--text);background:rgba(var(--hl-rgb),.05)}.btn.sm{height:30px;padding:0 10px;font-size:12px;border-radius:8px}.btn.block{width:100%;height:42px}input,select,textarea{height:38px;padding:0 12px;border-radius:10px;border:0;background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--line-2);outline:0;transition:box-shadow var(--fast) var(--ease)}textarea{height:80px;padding:10px 12px;resize:vertical}input:focus,select:focus,textarea:focus{box-shadow:inset 0 0 0 1px var(--g)}select option{background:var(--panel-2)}.field{display:flex;flex-direction:column;gap:6px}.field>span:first-child{font-size:12px;color:var(--muted)}.hint{font-size:11.5px;color:var(--faint)}.err{color:var(--red);font-size:12.5px}.ok{color:var(--g);font-size:12.5px}.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:11.5px;color:var(--muted);box-shadow:inset 0 0 0 1px var(--line-2);white-space:nowrap}.chip.g{color:var(--g);background:var(--g-soft);box-shadow:inset 0 0 0 1px rgba(var(--g-rgb),.3)}.chip.a{color:var(--amber);background:var(--amber-soft);box-shadow:inset 0 0 0 1px rgba(var(--a-rgb),.3)}.chip.r{color:var(--red);background:var(--red-soft);box-shadow:inset 0 0 0 1px rgba(var(--r-rgb),.3)}.tgl{position:relative;width:38px;height:22px;border-radius:999px;background:var(--panel-3);box-shadow:inset 0 0 0 1px var(--line-2);flex:none;transition:background var(--med) var(--ease)}.tgl i{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--muted);transition:transform var(--med) var(--ease),background var(--med) var(--ease)}.tgl.on{background:var(--g-soft);box-shadow:inset 0 0 0 1px rgba(var(--g-rgb),.45)}.tgl.on i{transform:translate(16px);background:var(--g)}.tgl:disabled{opacity:.4;cursor:not-allowed}.qm{position:relative;display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;font-size:10.5px;font-weight:700;color:var(--muted);box-shadow:inset 0 0 0 1px var(--line-3);cursor:help;vertical-align:middle;margin-left:6px;flex:none}.qm:hover,.qm:focus-visible{color:var(--g);box-shadow:inset 0 0 0 1px var(--g)}.qm .tip{position:absolute;left:50%;top:calc(100% + 8px);transform:translate(-50%) translateY(-4px);width:280px;padding:12px 14px;border-radius:12px;background:var(--glass);box-shadow:inset 0 0 0 1px var(--line-2),0 18px 50px -14px var(--shadow);color:var(--text);font-size:12px;font-weight:400;text-align:left;line-height:1.5;opacity:0;pointer-events:none;transition:opacity var(--fast) var(--ease),transform var(--fast) var(--ease);z-index:50}.qm:hover .tip,.qm:focus-visible .tip{opacity:1;transform:translate(-50%) translateY(0)}.tip b{display:block;margin-bottom:6px;font-size:12.5px}.tip ul{margin-left:16px;color:var(--muted)}.tip ul li{margin:2px 0}.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-weight:500;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);padding:12px 16px;border-bottom:1px solid var(--line)}.tbl td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl tr:last-child td{border-bottom:0}.lr{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;border-top:1px solid var(--line)}.lr:first-child{border-top:0}.lr .sub{font-size:12px;color:var(--muted);margin-top:2px}.empty{padding:34px 20px;text-align:center;color:var(--muted)}.empty b{display:block;color:var(--text);font-size:15px;margin-bottom:6px}.roles{display:grid;grid-template-columns:300px minmax(0,1fr);gap:14px;align-items:start}.role-item{display:flex;align-items:center;gap:8px;width:100%;padding:11px 14px;border-radius:10px;text-align:left;transition:background var(--fast) var(--ease)}.role-item:hover{background:rgba(var(--hl-rgb),.04)}.role-item.on{background:var(--g-soft);box-shadow:inset 0 0 0 1px rgba(var(--g-rgb),.25)}.role-item small{color:var(--faint);margin-left:auto;font-family:var(--mono);font-size:11px}.perm-area{margin-top:14px}.perm{display:flex;align-items:center;gap:12px;padding:10px 2px;border-top:1px solid var(--line)}.perm:first-of-type{border-top:0}.perm .pl{flex:1}.perm .pl small{display:block;color:var(--faint);font-size:11.5px}.tree{padding:8px 10px 12px}.node{border-radius:10px}.node-h{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:10px}.node-h:hover{background:rgba(var(--hl-rgb),.035)}.node-h b{font-weight:600}.node-kids{margin-left:20px;padding-left:12px;border-left:1px dashed var(--line-3)}.mini{font-size:11.5px;color:var(--faint)}.scrim{position:fixed;inset:0;z-index:60;background:#02040399;display:grid;place-items:center;padding:24px;animation:fade .16s var(--ease) both}:root[data-theme=light] .scrim{background:#141e184d}.modal{width:min(560px,100%);max-height:calc(100vh - 48px);overflow:auto;padding:22px 24px;box-shadow:inset 0 0 0 1px var(--line-2),0 30px 80px -20px var(--shadow);animation:up .22s var(--ease) both}.modal h2{font-size:18px;font-weight:650}.modal p.lead{color:var(--muted);margin:6px 0 16px}.modal .foot{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.toast{position:fixed;right:20px;bottom:20px;z-index:80;padding:12px 16px;border-radius:12px;background:var(--glass);box-shadow:inset 0 0 0 1px var(--line-2),0 18px 50px -14px var(--shadow);max-width:420px;animation:up .22s var(--ease) both}.auth{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 50% -10%,rgba(var(--g-rgb),.09),transparent 60%),var(--bg)}.auth .panel{width:min(430px,100%);padding:30px 30px 26px}.auth h1{font-size:23px;font-weight:650;margin-top:18px}.auth .lead{color:var(--muted);margin:6px 0 20px}.or{display:flex;align-items:center;gap:12px;color:var(--faint);font-size:11.5px;margin:6px 0}.or:before,.or:after{content:"";flex:1;height:1px;background:var(--line-2)}.qr{background:#fff;border-radius:12px;padding:10px;display:inline-block}.qr svg{display:block;width:180px;height:180px}@media(max-width:860px){.shell{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;flex-wrap:wrap}.roles,.grid2,.grid4{grid-template-columns:1fr}.main{padding:18px 16px 40px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
