@charset "UTF-8";:root{--app-canvas: #f7f7fc;--app-sidebar-bg: #f5f3ff;--app-surface: rgba(255, 255, 255, .92);--app-surface-soft: #f6f4ff;--app-surface-raised: #fcfbff;--app-border: #e7e3f4;--app-border-strong: #d9d1ee;--app-text-primary: #1f2433;--app-text-secondary: #5d6680;--app-text-muted: #8b93ab;--app-text-placeholder: #afb6c7;--app-accent: #6f4fff;--app-accent-strong: #8b71ff;--app-accent-soft: rgba(111, 79, 255, .12);--app-teal: #1db9b2;--app-teal-soft: rgba(29, 185, 178, .14);--app-sky: #4f8cff;--app-sky-soft: rgba(79, 140, 255, .14);--app-amber: #f0b24a;--app-amber-soft: rgba(240, 178, 74, .16);--app-rose: #eb6a8d;--app-rose-soft: rgba(235, 106, 141, .14);--app-danger: #d84c64;--app-danger-soft: rgba(216, 76, 100, .1);--app-success: #12a66a;--app-success-soft: rgba(18, 166, 106, .1);--app-warning: #d28a1f;--app-warning-soft: rgba(210, 138, 31, .12);--app-shadow: 0 20px 42px rgba(76, 88, 120, .08);color-scheme:light;font-family:Inter,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}:root[data-theme=dark]{--app-canvas: #0b0d15;--app-sidebar-bg: #1a2031;--app-surface: rgba(28, 34, 50, .92);--app-surface-soft: #20273a;--app-surface-raised: #272f45;--app-border: #343d57;--app-border-strong: #46506d;--app-text-primary: #f4f6fb;--app-text-secondary: #c4cbe0;--app-text-muted: #97a0b8;--app-text-placeholder: #79829a;--app-accent: #8b71ff;--app-accent-strong: #a895ff;--app-accent-soft: rgba(139, 113, 255, .18);--app-teal: #36d2c8;--app-teal-soft: rgba(54, 210, 200, .18);--app-sky: #72a7ff;--app-sky-soft: rgba(114, 167, 255, .18);--app-amber: #f4bf5f;--app-amber-soft: rgba(244, 191, 95, .18);--app-rose: #ff7fa0;--app-rose-soft: rgba(255, 127, 160, .18);--app-danger: #ff6f86;--app-danger-soft: rgba(255, 111, 134, .14);--app-success: #32d18d;--app-success-soft: rgba(50, 209, 141, .14);--app-warning: #f2b24b;--app-warning-soft: rgba(242, 178, 75, .16);--app-shadow: 0 24px 54px rgba(0, 0, 0, .28);color-scheme:dark}html,body,#root{min-height:100%}body{margin:0;background:radial-gradient(circle at top left,rgba(111,79,255,.1),transparent 24rem),radial-gradient(circle at top right,rgba(34,197,194,.08),transparent 20rem),var(--app-canvas);color:var(--app-text-primary)}a{color:inherit}button,input,select,textarea{font:inherit}button:active:not(:disabled){transform:scale(.98)}*{-webkit-tap-highlight-color:transparent}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-spin{animation:spin 1s linear infinite}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-slide-up{animation:slideUp .22s ease-out}.app-root{min-height:100vh;background:radial-gradient(circle at top left,rgba(111,79,255,.08),transparent 24rem),radial-gradient(circle at bottom right,rgba(34,197,194,.05),transparent 22rem),var(--app-canvas);color:var(--app-text-primary)}.app-shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.app-sidebar{position:sticky;top:0;display:flex;height:100vh;flex-direction:column;border-right:1px solid var(--app-border);background:linear-gradient(180deg,#ffffffb8,#ffffff61),var(--app-sidebar-bg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.app-main{min-width:0;min-height:100vh;background:var(--app-canvas)}.app-main-inner{min-height:100%;box-sizing:border-box;padding:20px 24px 24px}.app-mobile-topbar,.app-mobile-drawer{display:none}.app-shell-brand{display:flex;min-width:0;align-items:center;gap:10px}.app-shell-brand__mark{display:inline-flex;width:34px;height:34px;flex:0 0 auto;align-items:center;justify-content:center;border-radius:14px;background:linear-gradient(135deg,var(--app-accent),var(--app-accent-strong));box-shadow:0 16px 30px #6f4fff38;color:#fff;font-size:.8rem;font-weight:900}.app-shell-brand__text{min-width:0}.app-shell-brand__title{display:block;overflow:hidden;color:var(--app-text-primary);font-size:.84rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.app-shell-brand__subtitle{display:block;margin-top:2px;color:var(--app-text-muted);font-size:.64rem;font-weight:650;letter-spacing:.02em}.app-shell-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;padding:0 8px}.app-shell-section-head__label{color:var(--app-text-muted);font-size:.62rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.app-shell-theme-btn{width:34px;height:34px;padding:0;border-radius:12px;border:1px solid var(--app-border-strong);background:var(--app-surface-raised);box-shadow:0 10px 24px #0f172a14}.app-shell-nav{display:flex;flex-direction:column;gap:3px}.app-shell-nav__item{display:flex;min-height:36px;align-items:center;gap:8px;border-radius:12px;padding:7px 10px;color:var(--app-text-secondary);font-size:.8rem;font-weight:700;text-decoration:none;transition:background-color .16s ease,color .16s ease,box-shadow .16s ease}.app-shell-nav__item:hover{background:color-mix(in srgb,var(--app-accent) 8%,transparent);color:var(--app-text-primary)}.app-shell-nav__item.is-active{background:linear-gradient(135deg,var(--app-accent),var(--app-accent-strong));box-shadow:0 14px 28px #6f4fff3d;color:#fff}.app-shell-nav__icon{display:inline-flex;width:16px;height:16px;flex:0 0 auto;align-items:center;justify-content:center}.app-shell-nav__dot{display:inline-block;width:7px;height:7px;border-radius:999px;background:currentColor;opacity:.45}.app-shell-nav__label{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-shell-nav__meta{flex:0 0 auto;color:inherit;font-size:.6rem;opacity:.72}.app-shell-nav__group{display:flex;width:100%;align-items:center;gap:8px;border:none;border-radius:12px;background:transparent;padding:7px 10px;color:var(--app-text-muted);font-size:.72rem;font-weight:800;text-align:left;cursor:pointer;transition:background-color .16s ease,color .16s ease}.app-shell-nav__group:hover{background:var(--app-surface);color:var(--app-text-primary)}.app-shell-nav__children{display:grid;gap:3px;margin-top:4px;padding-left:10px}.app-shell-loading,.app-shell-empty{display:flex;align-items:center;gap:10px;padding:12px 10px;border-radius:12px;color:var(--app-text-muted);font-size:.78rem}.app-shell-empty{justify-content:center;text-align:center}.app-shell-account{border-radius:16px;border:1px solid var(--app-border);background:var(--app-surface);padding:10px;box-shadow:0 12px 28px #4c587814}.app-shell-account__row{display:flex;align-items:center;gap:10px}.app-shell-account__avatar{display:inline-flex;width:34px;height:34px;flex:0 0 auto;align-items:center;justify-content:center;border-radius:13px;background:var(--app-accent-soft);color:var(--app-accent-strong);font-size:.82rem;font-weight:800}.app-shell-account__name{display:block;overflow:hidden;color:var(--app-text-primary);font-size:.8rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.app-shell-account__meta{display:block;overflow:hidden;color:var(--app-text-muted);font-size:.7rem;text-overflow:ellipsis;white-space:nowrap}.app-shell-account__action{width:100%;margin-top:10px}.app-page{display:flex;flex-direction:column;gap:14px;width:min(100%,1380px);margin:0 auto}.app-page--wide{width:min(100%,1520px)}.app-page-header{display:flex;align-items:center;justify-content:space-between;gap:14px;position:sticky;top:0;z-index:20;overflow:hidden;min-height:64px;padding:16px 18px;border:1px solid var(--app-border);border-radius:18px;background:radial-gradient(circle at top right,rgba(79,140,255,.1),transparent 11rem),radial-gradient(circle at left center,rgba(29,185,178,.08),transparent 12rem),linear-gradient(135deg,color-mix(in srgb,var(--app-surface) 92%,white),color-mix(in srgb,var(--app-surface-soft) 88%,white));box-shadow:var(--app-shadow)}.app-page-header:before{content:"";position:absolute;inset:0 auto auto 0;width:140px;height:3px;border-radius:999px;background:linear-gradient(90deg,var(--app-accent),var(--app-teal),var(--app-amber),var(--app-rose))}.app-page-header>*{position:relative;z-index:1}.app-page-header__kicker{color:var(--app-teal);font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.app-page-header__title{margin-top:4px;color:var(--app-text-primary);font-size:1.12rem;font-weight:700;letter-spacing:0}.app-page-header__desc{display:none}.app-card,.app-panel{border:1px solid var(--app-border);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--app-surface) 96%,white) 0%,var(--app-surface-raised) 100%);box-shadow:var(--app-shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.app-card--padded,.app-panel{padding:15px}.app-card--table{overflow:hidden;padding:15px}.app-card--table .app-table-wrap{margin-top:8px}.app-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-15px -15px 15px;padding:13px 15px;border-bottom:1px solid color-mix(in srgb,var(--app-border) 74%,white);background:linear-gradient(180deg,var(--app-surface-soft) 0%,transparent 100%);border-radius:18px 18px 0 0}.app-panel__title{color:var(--app-text-primary);font-size:.9rem;font-weight:700}.app-panel__meta{color:var(--app-amber);font-size:.72rem;font-weight:700}.app-label{display:block;margin-bottom:5px;color:var(--app-text-secondary);font-size:.74rem;font-weight:650}.app-input{width:100%;min-height:34px;border:1px solid var(--app-border);border-radius:12px;background:var(--app-surface-raised);padding:8px 10px;color:var(--app-text-primary);font-size:.84rem;line-height:1.2;box-sizing:border-box;vertical-align:middle;transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.app-input::placeholder{color:var(--app-text-placeholder)}.app-input:focus{outline:none;border-color:var(--app-accent);box-shadow:0 0 0 3px var(--app-accent-soft)}.app-input:disabled{cursor:not-allowed;color:var(--app-text-muted);background:var(--app-surface-soft)}.app-textarea{min-height:82px;resize:vertical}.app-button,.app-btn-primary,.app-btn-secondary,.app-btn-ghost,.app-btn-danger{display:inline-flex;min-height:32px;align-items:center;justify-content:center;gap:5px;border-radius:12px;border:1px solid transparent;padding:6px 12px;font-size:.8rem;font-weight:700;line-height:1.2;cursor:pointer;transition:background-color .16s ease,border-color .16s ease,color .16s ease}.app-button:disabled,.app-btn-primary:disabled,.app-btn-secondary:disabled,.app-btn-ghost:disabled,.app-btn-danger:disabled{cursor:not-allowed;opacity:.58}.app-btn-primary{background:linear-gradient(135deg,var(--app-accent),var(--app-accent-strong));color:#fff;box-shadow:0 14px 28px #6f4fff38}.app-btn-primary:hover:not(:disabled){background:var(--app-accent-strong)}.app-btn-secondary,.app-btn-ghost,.app-btn-danger{background:var(--app-surface-raised)}.app-btn-secondary{border-color:var(--app-border-strong);color:var(--app-text-secondary)}.app-btn-secondary:hover:not(:disabled),.app-btn-ghost:hover:not(:disabled){border-color:var(--app-accent);color:var(--app-accent)}.app-btn-ghost{border-color:transparent;color:var(--app-text-secondary)}.app-btn-danger{border-color:color-mix(in srgb,var(--app-danger) 26%,transparent);color:var(--app-danger)}.app-btn-danger:hover:not(:disabled){background:var(--app-danger-soft)}.app-notice{border-radius:15px;border:1px solid transparent;padding:10px 13px;font-size:.82rem;font-weight:600}.app-notice--info{border-color:color-mix(in srgb,var(--app-teal) 24%,transparent);background:linear-gradient(135deg,var(--app-teal-soft),color-mix(in srgb,var(--app-surface) 84%,white));color:color-mix(in srgb,var(--app-teal) 82%,black)}.app-notice--error{border-color:color-mix(in srgb,var(--app-danger) 24%,transparent);background:var(--app-danger-soft);color:var(--app-danger)}.app-notice--success{border-color:color-mix(in srgb,var(--app-success) 24%,transparent);background:var(--app-success-soft);color:var(--app-success)}.app-badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 7px;font-size:.66rem;font-weight:700;white-space:nowrap}.app-badge--success{background:var(--app-success-soft);color:var(--app-success)}.app-badge--danger{background:var(--app-danger-soft);color:var(--app-danger)}.app-badge--neutral{background:var(--app-surface-soft);color:var(--app-text-secondary)}.app-badge--accent{background:linear-gradient(135deg,var(--app-sky-soft),var(--app-accent-soft));color:color-mix(in srgb,var(--app-sky) 42%,var(--app-accent) 58%)}.app-chip{display:inline-flex;align-items:center;border-radius:999px;border:1px solid var(--app-border);background:color-mix(in srgb,var(--app-surface-raised) 88%,white);padding:4px 8px;font-size:.72rem;font-weight:700;color:var(--app-text-secondary);cursor:default}.app-chip:hover{border-color:var(--app-teal);color:var(--app-teal)}.app-section-title{color:var(--app-text-primary);font-size:.9rem;font-weight:700}.app-tabbar{display:inline-flex;width:fit-content;max-width:100%;gap:3px;border:1px solid var(--app-border);border-radius:8px;background:var(--app-surface);padding:3px}.app-tab{display:inline-flex;min-width:84px;align-items:center;justify-content:center;border-radius:6px;padding:7px 10px;color:var(--app-text-secondary);font-size:.8rem;font-weight:700;cursor:pointer;background:transparent;border:none}.app-tab:hover{color:var(--app-text-primary)}.app-tab.is-active{background:var(--app-accent);color:#fff}.app-table-wrap{overflow-x:auto}.app-table{width:100%;border-collapse:separate;border-spacing:0}.app-table thead tr{background:var(--app-surface-soft)}.app-table th{border-bottom:1px solid var(--app-border);padding:9px 12px;text-align:left;color:var(--app-text-muted);font-size:.68rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.app-table td{border-bottom:1px solid var(--app-border);padding:10px 12px;color:var(--app-text-secondary);vertical-align:top}.app-table tbody tr:hover{background:var(--app-surface-soft)}.app-mobile-list{display:none}.app-mobile-card{border:1px solid var(--app-border);border-radius:18px;background:var(--app-surface);padding:12px}.app-mobile-card__title{color:var(--app-text-primary);font-size:.88rem;font-weight:700}.app-mobile-card__meta{margin-top:4px;color:var(--app-text-muted);font-size:.74rem;line-height:1.5}.log-terminal{border-radius:0 0 8px 8px;font-family:Menlo,Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.6;tab-size:2}.log-terminal .log-error{color:#ff6f86}.log-terminal .log-warn{color:#f2b24b}.log-terminal .log-info{color:#7ea7ff}.log-terminal .log-debug{color:#9aa3b6}.log-terminal .log-trace{color:#767f94}.log-terminal .log-fatal{color:#ff6f86;font-weight:700}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--app-border-strong);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--app-text-muted)}*:focus-visible{outline:2px solid var(--app-accent);outline-offset:1px}@media(max-width:900px){.app-shell{display:block;min-height:100vh}.app-sidebar{display:none}.app-mobile-topbar{position:sticky;top:0;z-index:30;display:flex;min-height:50px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--app-border);background:var(--app-surface);padding:7px 10px;padding-top:max(8px,env(safe-area-inset-top))}.app-mobile-drawer{position:fixed;inset:0;z-index:40;display:block;pointer-events:none}.app-mobile-drawer.is-open{pointer-events:auto}.app-mobile-drawer__backdrop{position:absolute;inset:0;background:#00000052;opacity:0;transition:opacity .18s ease}.app-mobile-drawer.is-open .app-mobile-drawer__backdrop{opacity:1}.app-mobile-drawer__panel{position:absolute;top:0;bottom:0;left:0;width:min(82vw,318px);transform:translate(-100%);border-right:1px solid var(--app-border);background:var(--app-sidebar-bg);transition:transform .18s ease}:root[data-theme=dark] .app-mobile-drawer__panel{background:radial-gradient(circle at top left,rgba(139,113,255,.18),transparent 14rem),linear-gradient(180deg,#262d43fa,#1c2232fa),var(--app-sidebar-bg)}.app-mobile-drawer.is-open .app-mobile-drawer__panel{transform:translate(0)}.app-main-inner{padding:12px 10px 14px}.app-main{min-height:calc(100dvh - max(58px,50px + env(safe-area-inset-top)))}.app-page{width:100%;margin:0;gap:10px}.app-page-header{position:static;top:auto;z-index:auto;min-height:0;align-items:flex-start;padding:13px 13px 8px}.app-page-header__title{font-size:1rem}.app-page-header__desc{font-size:.76rem}.app-card--padded,.app-panel{padding:11px}.app-panel__header{margin:-11px -11px 11px;padding:10px 11px}.app-tabbar{display:flex;width:100%}.app-tab{min-width:0;flex:1 1 0;padding:7px 6px;font-size:.74rem}.app-table-wrap{display:none}.app-mobile-list{display:grid;gap:10px}.app-input{min-height:38px}.app-button,.app-btn-primary,.app-btn-secondary,.app-btn-ghost,.app-btn-danger{min-height:36px}.app-shell-brand__mark{width:30px;height:30px;border-radius:12px;font-size:.74rem}.app-shell-brand__title{font-size:.78rem}.app-shell-brand__subtitle{font-size:.6rem}}.app-spinner{width:1.2rem;height:1.2rem;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:spin .8s linear infinite}.app-spinner--page{width:1.9rem;height:1.9rem;margin:2.5rem auto}.app-loading-block{display:flex;align-items:center;justify-content:center;gap:10px;padding:2rem 0}.app-loading-block__text,.app-loading-table-row__text{font-size:.78rem;color:var(--app-text-muted)}.app-loading-button{min-width:78px}.app-loading-button__spinner{width:.95rem;height:.95rem}.app-loading-table-row__cell{padding:10px 12px}.app-loading-table-row__skeleton{height:.75rem;border-radius:999px;background:color-mix(in srgb,var(--app-border) 74%,white);animation:pulse 1.4s ease-in-out infinite}.app-loading-table-row__state{padding:2rem 1rem;text-align:center}.app-loading-table-row__content{display:inline-flex;align-items:center;justify-content:center;gap:10px}.app-pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:1.5rem;flex-wrap:wrap}.app-searchbar{display:flex;align-items:center;gap:8px}.app-searchbar__field{position:relative;flex:1 1 auto;min-width:0}.app-searchbar__icon{pointer-events:none;position:absolute;top:50%;left:12px;z-index:1;width:16px;height:16px;transform:translateY(-50%)}.app-searchbar__input{min-height:36px;padding-top:0;padding-bottom:0;padding-right:.9rem;line-height:34px}.app-searchbar__button{min-width:72px;white-space:nowrap}.app-empty-state{padding:3rem 0 2.5rem;text-align:center}.app-empty-state__icon{display:block;width:2.6rem;height:2.6rem;margin:0 auto .75rem}.app-empty-state__message{margin:0;font-size:.82rem}.app-modal--regular{padding:0}.app-modal__content{min-width:0}.flex{display:flex}.inline-flex{display:inline-flex}.block{display:block}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1 1 0%}.shrink-0,.flex-shrink-0{flex-shrink:0}.min-w-0{min-width:0}.w-full{width:100%}.h-full{height:100%}.text-center{text-align:center}.font-semibold{font-weight:600}.font-medium{font-weight:500}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-mono{font-family:Menlo,Consolas,Monaco,Courier New,monospace}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-auto{overflow-x:auto}.object-cover{object-fit:cover}.object-contain{object-fit:contain}.cursor-pointer{cursor:pointer}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.5rem}.rounded-md{border-radius:.75rem}.rounded-lg{border-radius:1rem}.rounded-xl{border-radius:1.1rem}.rounded-2xl{border-radius:1.35rem}.rounded-full{border-radius:999px}.border{border:1px solid var(--app-border)}.border-b{border-bottom:1px solid var(--app-border)}.border-t{border-top:1px solid var(--app-border)}.border-2{border-width:2px;border-style:solid}.border-none{border:none}.absolute{position:absolute}.relative{position:relative}.fixed{position:fixed}.top-0{top:0}.right-0{right:0}.left-0{left:0}.inset-0{inset:0}.p-0{padding:0}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-8{margin-top:2rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mx-auto{margin-left:auto;margin-right:auto}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.space-y-1>*+*{margin-top:.25rem}.space-y-1\.5>*+*{margin-top:.375rem}.space-y-3>*+*{margin-top:.75rem}.space-y-4>*+*{margin-top:1rem}.text-xs{font-size:.76rem;line-height:1.45}.text-sm{font-size:.88rem;line-height:1.5}.text-base{font-size:.98rem;line-height:1.55}.text-lg{font-size:1.05rem;line-height:1.45}.text-xl{font-size:1.2rem;line-height:1.35}.text-2xl{font-size:1.45rem;line-height:1.25}.text-white{color:#fff}.animate-spin{animation:spin .8s linear infinite}.animate-pulse{animation:pulse 1.4s ease-in-out infinite}@media(max-width:900px){.app-searchbar{flex-wrap:wrap}.app-searchbar__button{width:100%}}:root{--control-canvas: var(--app-canvas);--control-sidebar: var(--app-sidebar-bg);--control-surface: var(--app-surface);--control-surface-soft: var(--app-surface-soft);--control-surface-raised: var(--app-surface-raised);--control-border: var(--app-border);--control-border-strong: var(--app-border-strong);--control-text-primary: var(--app-text-primary);--control-text-secondary: var(--app-text-secondary);--control-text-muted: var(--app-text-muted);--control-text-placeholder: var(--app-text-placeholder);--control-accent: var(--app-accent);--control-accent-strong: var(--app-accent-strong);--control-accent-soft: var(--app-accent-soft);--control-teal: var(--app-teal);--control-teal-soft: var(--app-teal-soft);--control-sky: var(--app-sky);--control-sky-soft: var(--app-sky-soft);--control-amber: var(--app-amber);--control-amber-soft: var(--app-amber-soft);--control-rose: var(--app-rose);--control-rose-soft: var(--app-rose-soft);--control-danger: var(--app-danger);--control-danger-soft: var(--app-danger-soft);--control-success: var(--app-success);--control-success-soft: var(--app-success-soft);--control-warning: var(--app-warning);--control-warning-soft: var(--app-warning-soft);--control-shadow: var(--app-shadow)}:root[data-theme=dark] .app-sidebar{background:radial-gradient(circle at top left,rgba(139,113,255,.2),transparent 14rem),radial-gradient(circle at bottom left,rgba(54,210,200,.12),transparent 18rem),linear-gradient(180deg,#262d43fa,#1c2232fa),var(--app-sidebar-bg);box-shadow:inset -1px 0 #ffffff0a}:root[data-theme=dark] .app-mobile-drawer__panel{background:radial-gradient(circle at top left,rgba(139,113,255,.18),transparent 14rem),linear-gradient(180deg,#262d43fa,#1c2232fa),var(--app-sidebar-bg)}.app-mobile-drawer__panel--layout{display:flex;flex-direction:column}.app-mobile-drawer__nav{min-height:0;flex:1 1 auto;overflow-y:auto;padding:.75rem}.app-mobile-drawer__account{flex-shrink:0;padding-bottom:calc(.75rem + env(safe-area-inset-bottom))}.control-card{border:1px solid var(--control-border);border-radius:22px;background:linear-gradient(180deg,color-mix(in srgb,var(--control-surface) 96%,white) 0%,var(--control-surface-raised) 100%);box-shadow:var(--control-shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.control-card--padded{padding:18px}.control-page{display:flex;flex-direction:column;gap:16px;width:min(100%,1380px);margin:0 auto}.control-page-header{display:flex;align-items:center;justify-content:space-between;gap:16px;position:sticky;top:0;z-index:20;overflow:hidden;min-height:72px;padding:20px 22px;border:1px solid var(--control-border);border-radius:22px;background:radial-gradient(circle at top right,rgba(79,140,255,.1),transparent 11rem),radial-gradient(circle at left center,rgba(29,185,178,.08),transparent 12rem),linear-gradient(135deg,color-mix(in srgb,var(--control-surface) 92%,white),color-mix(in srgb,var(--control-surface-soft) 88%,white));box-shadow:var(--control-shadow)}.control-page-header:before{content:"";position:absolute;inset:0 auto auto 0;width:180px;height:4px;border-radius:999px;background:linear-gradient(90deg,var(--control-accent),var(--control-teal),var(--control-amber),var(--control-rose))}.control-page-header>*{position:relative;z-index:1}.control-page-header__kicker{color:var(--control-teal);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.control-page-header__title{margin-top:4px;color:var(--control-text-primary);font-size:1.28rem;font-weight:700;letter-spacing:0}.control-button,.control-button--primary{display:inline-flex;min-height:36px;align-items:center;justify-content:center;gap:6px;border-radius:14px;border:1px solid transparent;padding:8px 14px;font-size:.86rem;font-weight:700;line-height:1.2}.control-button--primary{background:linear-gradient(135deg,var(--control-accent),var(--control-accent-strong));color:#fff;box-shadow:0 14px 28px #6f4fff38}.control-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-18px -18px 18px;padding:16px 18px;border-bottom:1px solid color-mix(in srgb,var(--control-border) 74%,white);background:linear-gradient(180deg,var(--control-surface-soft) 0%,transparent 100%);border-radius:22px 22px 0 0}.control-panel__title{color:var(--control-text-primary);font-size:.96rem;font-weight:700}.control-panel__meta{color:var(--control-amber);font-size:.78rem;font-weight:700}.control-section-title{color:var(--control-text-primary);font-size:.96rem;font-weight:700}.control-notice{border-radius:18px;border:1px solid transparent;padding:12px 16px;font-size:.88rem;font-weight:600}.control-notice--info{border-color:color-mix(in srgb,var(--control-teal) 24%,transparent);background:linear-gradient(135deg,var(--control-teal-soft),color-mix(in srgb,var(--control-surface) 84%,white));color:color-mix(in srgb,var(--control-teal) 82%,black)}.control-notice--error{border-color:color-mix(in srgb,var(--control-danger) 24%,transparent);background:var(--control-danger-soft);color:var(--control-danger)}.control-badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 8px;font-size:.72rem;font-weight:700;white-space:nowrap}.control-badge--neutral{background:var(--control-surface-soft);color:var(--control-text-secondary)}.control-mobile-card__title{color:var(--control-text-primary);font-size:.94rem;font-weight:700}.control-mobile-card__meta{margin-top:4px;color:var(--control-text-muted);font-size:.78rem;line-height:1.5}.control-table{width:100%;border-collapse:separate;border-spacing:0}.control-table thead tr{background:var(--control-surface-soft)}.control-table th,.control-table td{padding:13px 14px;text-align:left;vertical-align:middle}.control-table th{border-bottom:1px solid var(--control-border);color:var(--control-text-muted);font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.control-table td{border-bottom:1px solid var(--control-border);color:var(--control-text-secondary)}.control-table tbody tr:hover{background:var(--control-surface-soft)}.control-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:14px}.control-toolbar__field{min-width:200px;flex:1 1 220px}.control-toolbar__actions{display:flex;flex-wrap:wrap;gap:8px}.control-split{display:grid;gap:18px}.control-split--users{grid-template-columns:minmax(320px,380px) minmax(0,1fr)}.control-split--nodes{grid-template-columns:minmax(0,1.3fr) minmax(320px,.7fr)}.control-stack{display:flex;flex-direction:column;gap:16px}.control-checkbox{display:flex;align-items:center;gap:12px;border-radius:16px;background:var(--control-surface-soft);padding:12px 14px;color:var(--control-text-secondary);font-size:.88rem}.control-checkbox input{width:16px;height:16px;margin:0}.control-form-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.control-side-panel{display:flex;flex-direction:column;gap:14px;border-radius:18px;border:1px solid var(--control-border);background:var(--control-surface-soft);padding:16px}.control-list-card__header{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid color-mix(in srgb,var(--control-border) 70%,white)}.control-list-card__title{margin-top:8px;color:var(--control-text-primary);font-size:1.08rem;font-weight:700}.control-table-grid{min-width:780px}.control-table-grid__head,.control-table-grid__row{display:grid;align-items:center;gap:16px;padding:10px 12px}.control-table-grid__head{color:var(--control-text-muted);font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.control-table-grid__row{border-top:1px solid var(--control-border);color:var(--control-text-secondary);font-size:.88rem}.control-inline-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;color:var(--control-text-muted);font-size:.76rem}.control-log-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:14px}.control-log-toolbar__field{min-width:220px;flex:1 1 220px}.control-log-toolbar__field--fixed{width:160px;min-width:160px;flex:0 0 auto}.control-log-toolbar__actions{display:flex;flex-wrap:wrap;gap:8px}.control-log-viewer{max-height:600px;overflow:auto;border-radius:0 0 8px 8px;background:#10131c;padding:16px;color:#d7dce8}.control-log-viewer__list{display:grid;gap:4px}.control-log-line{display:flex;gap:12px}.control-log-line__no{width:64px;flex:0 0 auto;color:var(--control-text-muted);font-size:.76rem;text-align:right;-webkit-user-select:none;user-select:none}.control-log-line__text{white-space:pre-wrap;word-break:break-word}.control-runtime-line{display:flex;align-items:flex-start;gap:12px}.control-runtime-line__time{width:78px;flex:0 0 auto;color:var(--control-text-muted);font-size:.76rem;font-family:Menlo,Consolas,Monaco,Courier New,monospace}.control-runtime-line__badge{flex:0 0 auto;border-radius:6px;padding:2px 6px;font-size:.72rem;font-weight:700}.control-runtime-line__text{font-size:.88rem;white-space:pre-wrap;word-break:break-word}.control-hero__content{max-width:46rem}.control-passwords{display:grid;align-items:start;gap:18px;grid-template-columns:minmax(280px,320px) minmax(0,1fr)}.control-passwords__vaults{position:sticky;top:16px}.control-passwords__vault-list,.control-passwords__content,.control-passwords__field-list,.control-passwords__mobile-fields{display:grid;gap:12px}.control-passwords__loading,.control-passwords__empty{padding:18px 12px;color:var(--control-text-muted);font-size:.88rem;text-align:center}.control-passwords__empty--panel{border-radius:18px;background:var(--control-surface-soft)}.control-passwords__vault-card{width:100%;border:1px solid var(--control-border);border-radius:18px;background:var(--control-surface);padding:14px;text-align:left;transition:border-color .2s ease,background .2s ease,transform .2s ease}.control-passwords__vault-card:hover{border-color:color-mix(in srgb,var(--control-accent) 30%,var(--control-border));background:var(--control-surface-soft);transform:translateY(-1px)}.control-passwords__vault-card.is-active{border-color:var(--control-accent);background:linear-gradient(135deg,var(--control-accent-soft),color-mix(in srgb,var(--control-surface) 86%,white))}.control-passwords__vault-title,.control-passwords__record-name{color:var(--control-text-primary);font-size:.92rem;font-weight:700}.control-passwords__vault-desc{margin-top:6px;overflow:hidden;color:var(--control-text-muted);font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.control-passwords__vault-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;color:var(--control-text-muted);font-size:.74rem}.control-passwords__panel-header{align-items:flex-start}.control-passwords__form,.control-passwords__section,.control-passwords__records{display:grid;gap:14px}.control-passwords__section{border-top:1px solid var(--control-border);padding-top:14px}.control-passwords__section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.control-passwords__preset-list,.control-passwords__record-actions,.control-passwords__table-actions,.control-passwords__mobile-actions{display:flex;flex-wrap:wrap;gap:8px}.control-passwords__field-card{border:1px solid var(--control-border);border-radius:20px;background:var(--control-surface-soft);padding:14px}.control-passwords__field-grid,.control-passwords__record-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.control-passwords__mini-label,.control-passwords__mobile-label{display:block;margin-bottom:6px;color:var(--control-text-muted);font-size:.7rem;font-weight:700;letter-spacing:.04em}.control-passwords__field-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;border-top:1px solid var(--control-border);padding-top:12px}.control-passwords__field-meta{display:flex;flex-wrap:wrap;align-items:center;gap:14px}.control-passwords__checkbox{display:inline-flex;align-items:center;gap:6px;color:var(--control-text-secondary);font-size:.82rem;cursor:pointer}.control-passwords__checkbox input{width:15px;height:15px;margin:0}.control-passwords__field-key,.control-passwords__record-time,.control-passwords__cell-empty,.control-passwords__mobile-state{color:var(--control-text-muted);font-size:.76rem}.control-passwords__field-remove{min-width:88px}.control-passwords__submit-row{display:flex;justify-content:flex-start}.control-passwords__record-input-row{display:flex;align-items:flex-start;gap:8px}.control-passwords__record-input{min-width:0;flex:1 1 auto}.control-passwords__inline-copy{flex:0 0 auto}.control-passwords__table-wrap{border-top:1px solid var(--control-border);padding-top:14px}.control-passwords__table th:last-child,.control-passwords__table td:last-child{width:1%;white-space:nowrap}.control-passwords__table-empty{padding:28px 16px;color:var(--control-text-muted);font-size:.88rem;text-align:center}.control-passwords__secret-value{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.control-passwords__secret-copy{border:1px solid var(--control-border);border-radius:999px;background:var(--control-surface);padding:3px 9px;color:var(--control-accent);font-size:.74rem;font-weight:700;transition:border-color .2s ease,background .2s ease}.control-passwords__secret-copy:hover{border-color:var(--control-accent);background:var(--control-accent-soft)}.control-passwords__cell-value{color:var(--control-text-secondary);font-size:.84rem;word-break:break-word}.control-passwords__mobile-list{margin-top:12px}.control-passwords__mobile-card{display:grid;gap:12px}.control-passwords__mobile-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.control-passwords__mobile-field{display:grid;gap:4px}.role-directory{display:grid;gap:10px}.role-directory__state{padding:26px 16px;border:1px dashed color-mix(in srgb,var(--control-border) 82%,white);border-radius:18px;background:color-mix(in srgb,var(--control-surface-soft) 88%,white);color:var(--control-text-muted);font-size:.86rem;text-align:center}.role-directory__item{display:grid;gap:10px;padding:12px;border:1px solid color-mix(in srgb,var(--control-border) 86%,white);border-radius:18px;background:color-mix(in srgb,var(--control-surface) 96%,white);transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease,transform .18s ease}.role-directory__item:hover{border-color:color-mix(in srgb,var(--control-accent) 24%,var(--control-border));background:color-mix(in srgb,var(--control-surface-soft) 90%,white);transform:translateY(-1px)}.role-directory__item.is-active{border-color:color-mix(in srgb,var(--control-accent) 42%,white);background:linear-gradient(180deg,color-mix(in srgb,var(--control-accent-soft) 58%,white),color-mix(in srgb,var(--control-surface) 96%,white));box-shadow:0 14px 32px #4f8cff1f}.role-directory__main{display:grid;gap:8px;width:100%;border:0;background:transparent;padding:0;text-align:left}.role-directory__row,.role-directory__meta,.role-directory__actions,.role-section-head,.role-section-head__actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.role-directory__heading{display:flex;min-width:0;align-items:center;gap:8px}.role-directory__name{color:var(--control-text-primary);font-size:.92rem;font-weight:700}.role-directory__code{color:var(--control-text-muted);font-size:.72rem;font-family:Menlo,Consolas,Monaco,Courier New,monospace}.role-directory__desc{color:var(--control-text-secondary);font-size:.8rem;line-height:1.5}.role-directory__meta{justify-content:flex-start;flex-wrap:wrap}.role-directory__actions{justify-content:flex-end;padding-top:10px;border-top:1px solid color-mix(in srgb,var(--control-border) 72%,white)}.role-section-head{align-items:flex-start;margin-bottom:12px}.role-section-head__title{color:var(--control-text-primary);font-size:.9rem;font-weight:700}.role-section-head__desc{margin-top:4px;color:var(--control-text-muted);font-size:.76rem;line-height:1.5}.role-section-head__actions{flex-wrap:wrap;justify-content:flex-end}.role-tree{display:grid;gap:2px}.role-tree--panel{padding:8px;border:1px solid color-mix(in srgb,var(--control-border) 78%,white);border-radius:20px;background:linear-gradient(180deg,color-mix(in srgb,var(--control-surface-soft) 78%,white),color-mix(in srgb,var(--control-surface) 98%,white))}.role-tree__node,.role-tree__children{display:grid;gap:2px}.role-tree__row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:38px;padding:4px 8px 4px calc(var(--role-tree-depth, 0) * 18px + 8px);border-radius:12px;border:1px solid transparent;background:transparent;transition:border-color .18s ease,background-color .18s ease}.role-tree__row:hover{border-color:color-mix(in srgb,var(--control-border) 74%,white);background:color-mix(in srgb,var(--control-surface-soft) 92%,white)}.role-tree__node.is-checked>.role-tree__row{background:color-mix(in srgb,var(--control-accent-soft) 48%,white)}.role-tree__main{display:flex;min-width:0;align-items:center;gap:10px;cursor:pointer}.role-tree__checkbox{width:15px;height:15px;margin:0;flex:0 0 auto;border-radius:4px;border:1px solid var(--control-border)}.role-tree__label-block{min-width:0;flex:1 1 auto}.role-tree__label-row{position:relative;display:flex;min-width:0;align-items:center;gap:8px}.role-tree__label-row:before{content:"";position:absolute;left:-12px;top:50%;width:10px;border-top:1px solid color-mix(in srgb,var(--control-border-strong) 56%,transparent);transform:translateY(-50%)}.role-tree__expander{display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;flex:0 0 auto;border:1px solid color-mix(in srgb,var(--control-border) 92%,white);border-radius:6px;background:color-mix(in srgb,var(--control-surface) 96%,white);color:var(--control-text-muted);padding:0;transition:border-color .18s ease,color .18s ease,background-color .18s ease}.role-tree__expander:hover{border-color:color-mix(in srgb,var(--control-accent) 26%,var(--control-border));color:var(--control-accent);background:color-mix(in srgb,var(--control-accent-soft) 40%,white)}.role-tree__expander--ghost{border-color:transparent;background:transparent;pointer-events:none}.role-tree__icon{display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;flex:0 0 auto;color:color-mix(in srgb,var(--control-accent) 76%,var(--control-text-secondary))}.role-tree__text{display:grid;min-width:0}.role-tree__title{color:var(--control-text-primary);font-size:.81rem;font-weight:600;line-height:1.2}.role-tree__meta{color:var(--control-text-muted);font-size:.68rem;line-height:1.3}.role-tree__badges{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.role-tree__children{position:relative;margin-left:18px}.role-tree__children:before{content:"";position:absolute;left:7px;top:-2px;bottom:6px;width:1px;background:color-mix(in srgb,var(--control-border-strong) 52%,transparent)}.role-tree__toolbar-btn{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:0 12px;border:1px solid var(--control-border);border-radius:10px;background:var(--control-surface-soft);color:var(--control-text-secondary);font-size:.74rem;font-weight:700}.role-tree__toolbar-btn:hover{border-color:color-mix(in srgb,var(--control-accent) 24%,var(--control-border));color:var(--control-accent)}.menu-tree-groups{display:grid;gap:18px}.menu-tree-group{display:grid;gap:10px}.menu-tree-group__head{display:flex;align-items:center;justify-content:space-between;gap:10px}.menu-tree-group__title{color:var(--control-text-primary);font-size:.82rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.menu-tree__row .role-tree__checkbox:disabled{opacity:.5;cursor:not-allowed}.menu-tree__badge{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;background:color-mix(in srgb,var(--control-amber-soft) 82%,white);color:var(--control-warning);font-size:.72rem;font-weight:700;white-space:nowrap}.menu-editor__meta{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}.menu-tree__main{width:100%;border:0;background:transparent;padding:0;text-align:left}@media(max-width:1180px){.control-split--users,.control-passwords{grid-template-columns:1fr}.control-passwords__vaults{position:static}}@media(max-width:900px){.control-toolbar,.control-log-toolbar{align-items:stretch}.control-toolbar__field,.control-log-toolbar__field,.control-log-toolbar__field--fixed{min-width:0;width:100%;flex-basis:100%}.control-toolbar__actions,.control-log-toolbar__actions{width:100%}.control-toolbar__actions>*,.control-log-toolbar__actions>*{flex:1 1 0}.control-form-grid-2,.control-passwords__field-grid,.control-passwords__record-grid{grid-template-columns:1fr}.control-passwords__record-actions,.control-passwords__mobile-actions{width:100%}.control-passwords__record-actions>*,.control-passwords__mobile-actions>*{flex:1 1 0}.control-passwords__mobile-card-head,.control-passwords__section-head,.control-passwords__field-footer{align-items:stretch;flex-direction:column}}
