/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-slate-300:oklch(86.9% .022 252.894);--color-slate-600:oklch(44.6% .043 257.281);--spacing:.25rem;--radius-lg:var(--radius);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-flex{display:inline-flex}.h-5{height:calc(var(--spacing) * 5)}.h-9{height:calc(var(--spacing) * 9)}.w-5{width:calc(var(--spacing) * 5)}.w-9{width:calc(var(--spacing) * 9)}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-center{justify-content:center}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.text-slate-300{color:var(--color-slate-300)}.text-slate-600{color:var(--color-slate-600)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media(hover:hover){.group-hover\:fill-slate-300:is(:where(.group):hover *){fill:var(--color-slate-300)}.group-hover\:fill-slate-600:is(:where(.group):hover *){fill:var(--color-slate-600)}}}:root{--background:217 33% 97%;--foreground:215 47% 16%;--muted:214 26% 95%;--muted-foreground:213 15% 52%;--popover:0 0% 100%;--popover-foreground:215 47% 16%;--card:0 0% 100%;--card-foreground:215 47% 16%;--border:214 27% 90%;--input:214 27% 90%;--primary:213 94% 58%;--primary-foreground:0 0% 100%;--secondary:214 26% 95%;--secondary-foreground:215 47% 16%;--accent:38 92% 50%;--accent-foreground:0 0% 100%;--success:142 71% 45%;--destructive:0 84% 60%;--destructive-foreground:0 0% 100%;--ring:213 94% 58%;--radius:.5rem;--text-tertiary:#9aa4b2;--shadow-small:0 4px 12px #1720330f;--shadow-medium:0 18px 48px #1720331f}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}:root{--font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;--radius-medium: 8px;--radius-large: 12px;--bg-page: #f8fafc;--bg-surface: #ffffff;--bg-subtle: #f1f5f9;--bg-muted: #f8fafc;--bg-hover: #f3f4f6;--bg-overlay: rgba(255, 255, 255, .82);--text-primary: #111827;--text-secondary: #6b7280;--text-tertiary: #9ca3af;--border-color: #e5e7eb;--border-subtle: #f1f5f9;--border-hover: #d1d5db;--shadow-surface: 0 1px 3px rgba(15, 23, 42, .08);--topbar-bg: rgba(255, 255, 255, .92);--tab-tray-bg: #f1f5f9;--tab-hover-bg: rgba(255, 255, 255, .68);--tab-active-bg: #ffffff;--menu-bg: #ffffff;--tooltip-bg: #111827;--tooltip-text: #ffffff;--primary-color: #3b82f6;--primary-hover: #2563eb;--primary-strong: #1d4ed8;--primary-soft: #eff6ff;--primary-soft-hover: #e0f2fe;--primary-soft-border: #bfdbfe;--danger-color: #ef4444;--danger-hover: #dc2626;--danger-soft: #fff1f2;--danger-soft-border: #fecaca;--success-color: #16a34a;--success-soft: #d1fae5;--success-soft-border: #bbf7d0;--warning-color: #d97706;--warning-soft: #fffbeb;--warning-soft-border: #fde68a;--info-soft: #eff6ff;--info-soft-border: #bfdbfe}.dark{color-scheme:dark;--bg-page: #0f172a;--bg-surface: #1e293b;--bg-subtle: #111827;--bg-muted: #162033;--bg-hover: #263548;--bg-overlay: rgba(15, 23, 42, .82);--text-primary: #f1f5f9;--text-secondary: #cbd5e1;--text-tertiary: #94a3b8;--border-color: #334155;--border-subtle: #263548;--border-hover: #475569;--shadow-surface: 0 16px 34px rgba(0, 0, 0, .28);--topbar-bg: rgba(15, 23, 42, .9);--tab-tray-bg: #111827;--tab-hover-bg: rgba(148, 163, 184, .14);--tab-active-bg: #1e293b;--menu-bg: #1e293b;--tooltip-bg: #e2e8f0;--tooltip-text: #0f172a;--primary-color: #60a5fa;--primary-hover: #3b82f6;--primary-strong: #93c5fd;--primary-soft: rgba(59, 130, 246, .16);--primary-soft-hover: rgba(59, 130, 246, .24);--primary-soft-border: rgba(96, 165, 250, .45);--danger-color: #f87171;--danger-hover: #fca5a5;--danger-soft: rgba(239, 68, 68, .14);--danger-soft-border: rgba(248, 113, 113, .42);--success-color: #86efac;--success-soft: rgba(22, 163, 74, .16);--success-soft-border: rgba(74, 222, 128, .38);--warning-color: #fbbf24;--warning-soft: rgba(217, 119, 6, .16);--warning-soft-border: rgba(251, 191, 36, .4);--info-soft: rgba(59, 130, 246, .16);--info-soft-border: rgba(96, 165, 250, .45)}*,*:before,*:after{box-sizing:border-box}*{margin:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s,color .2s;background:var(--bg-page);color:var(--text-primary);scrollbar-color:rgba(100,116,139,.42) transparent;scrollbar-width:thin}*{scrollbar-color:rgba(100,116,139,.42) transparent;scrollbar-width:thin}*::-webkit-scrollbar{width:9px;height:9px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{min-height:36px;border:2px solid transparent;border-radius:999px;background:#64748b61;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#3b82f69e;background-clip:padding-box}*::-webkit-scrollbar-corner{background:transparent}*::-webkit-scrollbar-button{display:none;width:0;height:0}.dark *,.dark body{scrollbar-color:rgba(148,163,184,.45) transparent}.dark *::-webkit-scrollbar-thumb{background:#94a3b857;background-clip:padding-box}.dark *::-webkit-scrollbar-thumb:hover{background:#60a5faad;background-clip:padding-box}#root{min-height:100vh}input,button,textarea,select{font:inherit}a{color:inherit;text-decoration:none}.default-menu-page{min-height:220px;display:grid;place-items:center}.default-menu-panel{width:min(420px,100%);border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-large, 12px);background:var(--bg-surface, #fff);box-shadow:var(--shadow-surface, 0 4px 12px rgba(23, 32, 51, .06));padding:22px;display:grid;gap:8px;text-align:center}.default-menu-panel h2{margin:0;color:var(--text-primary, #172033);font-size:20px;line-height:1.25}.default-menu-panel p{margin:0;color:var(--text-secondary, #687386);font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:760px){.default-menu-panel{padding:16px}}.dark input,.dark select,.dark textarea{background:var(--bg-subtle);border-color:var(--border-color);color:var(--text-primary)}.dark input::-moz-placeholder,.dark textarea::-moz-placeholder{color:var(--text-tertiary)}.dark input::placeholder,.dark textarea::placeholder{color:var(--text-tertiary)}.dark .page-header h2,.dark .form-group label,.dark .perm-section h3,.dark .node-label,.dark .menu-name{color:var(--text-primary)}.dark .node-desc,.dark .expand-icon,.dark .menu-path,.dark .config-preview,.dark .menu-perm{color:var(--text-secondary)}.dark .tree-container,.dark .menu-tree-container,.dark .info-panel,.dark .component-card{background:var(--bg-surface);border-color:var(--border-color);box-shadow:var(--shadow-surface)}.dark .tree-node,.dark .menu-node,.dark .info-item{border-color:var(--border-subtle)}.dark .node-children,.dark .menu-children,.dark .menu-node:hover,.dark .perm-item:hover{background:var(--bg-muted)}.dark .actions button,.dark .node-actions button,.dark .menu-actions button,.dark .btn-cancel,.dark .confirm-actions button{background:var(--bg-subtle);border-color:var(--border-color);color:var(--text-primary)}.dark .actions button:hover,.dark .node-actions button:hover,.dark .menu-actions button:hover,.dark .btn-cancel:hover:not(:disabled),.dark .confirm-actions button:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-hover)}.icon{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}.sidebar{width:280px;min-height:100vh;background:#0f172a;color:#fff;padding:20px 16px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;transition:width .18s ease,min-height .18s ease}.sidebar-head{display:flex;align-items:center;gap:8px;padding:0 0 14px;border-bottom:1px solid rgba(255,255,255,.1)}.brand{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.brand-mark{width:36px;height:36px;border-radius:10px;background:radial-gradient(circle at 72% 28%,rgba(255,255,255,.9) 0 10%,transparent 11%),linear-gradient(135deg,#2563eb,#16a34a);flex-shrink:0}.brand-copy{display:flex;flex-direction:column;gap:4px}.brand-copy strong{font-size:15px;color:#fff;font-weight:600}.brand-copy span{font-size:12px;color:#98a2b3}.sidebar-toggle{width:32px;height:32px;border-radius:var(--radius-medium);border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:#c8d1df;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto;transition:all .15s}.sidebar-toggle:hover{background:#ffffff1a;color:#fff}.sidebar-toggle-icon{width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(135deg);transition:transform .18s}.sidebar-mobile-toggle{display:none}.nav{display:grid;gap:4px}.nav-item{width:-webkit-fill-available;min-height:38px;border-radius:var(--radius-medium);padding:0 10px;display:flex;align-items:center;gap:9px;color:#c8d1df;font-size:14px;font-weight:600;border:0;background:transparent;cursor:pointer;text-align:left;transition:all .15s}.nav-icon{width:17px;height:17px;flex:0 0 auto}.nav-item:hover{background:#ffffff14;color:#fff}.nav-item.active{background:#1d4ed8;color:#fff}.nav-item.active-parent,.nav-item.nav-item-open{background:#ffffff1f;color:#fff}.nav-item.active-parent:hover,.nav-item.nav-item-open:hover{background:#ffffff24}.nav-item-sub{font-size:13px;font-weight:500;min-height:34px}.nav-arrow{margin-left:auto;width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .2s}.nav-arrow[data-expanded=true]{transform:rotate(45deg)}.nav-submenu{margin-bottom:2px;padding:5px;border-radius:var(--radius-medium);display:flex;flex-direction:column;gap:2px;background:#ffffff09;animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.sidebar-bottom{margin-top:auto;display:grid;gap:8px;padding-top:12px;border-top:1px solid rgba(255,255,255,.1)}.side-action{min-height:38px;border-radius:8px;padding:0 10px;display:flex;align-items:center;gap:9px;color:#c8d1df;font-size:14px;font-weight:600;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);cursor:pointer;transition:all .15s}.side-action:hover{background:#ffffff14;color:#fff}.side-count{margin-left:auto;min-width:22px;height:22px;border-radius:999px;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;background:#dc2626;color:#fff;padding:0 6px}@media(max-width:1024px){.sidebar{width:100%;min-height:64px;height:64px;padding:12px 16px;position:sticky;z-index:20;overflow:hidden}.sidebar-head{padding-bottom:0;border-bottom:0}.sidebar-mobile-toggle{display:flex}.sidebar-mobile-toggle .sidebar-toggle-icon{transform:rotate(45deg)}.sidebar-mobile-open{min-height:100vh;height:100vh;overflow:auto}.sidebar-mobile-open .sidebar-head{padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-mobile-open .sidebar-mobile-toggle .sidebar-toggle-icon{transform:rotate(-135deg)}.sidebar:not(.sidebar-mobile-open) .nav,.sidebar:not(.sidebar-mobile-open) .sidebar-bottom{display:none}}.topbar{min-height:100px;padding:0 24px;background:var(--topbar-bg);border-bottom:1px solid var(--border-color, #e5e7eb);display:flex;flex-direction:column;align-items:stretch;position:sticky;top:0;z-index:2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar-main{min-height:60px;display:flex;align-items:center;justify-content:space-between;gap:18px;min-width:0}.title-group{display:flex;flex-direction:column;gap:4px;flex:0 0 auto;min-width:0}.title-group h1{font-size:22px;font-weight:700;color:var(--text-primary, #111827);margin:0}.title-group p{font-size:13px;color:var(--text-secondary, #6b7280);margin:0}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;margin-left:auto;flex:0 0 auto}.topbar-tabs{min-height:40px;margin:0 -24px;padding:5px 24px;display:flex;align-items:center;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:thin;background:var(--tab-tray-bg, #f1f5f9);border-top:1px solid var(--border-color, rgba(226, 232, 240, .9));box-shadow:inset 0 1px #ffffff47}.topbar-tab{width:98px;min-width:98px;max-width:98px;min-height:30px;border-radius:var(--radius-medium);padding:0 5px 0 10px;display:flex;align-items:center;gap:2px;color:var(--text-secondary, #6b7280);border:1px solid transparent;background:transparent;cursor:pointer;transition:all .15s;flex:0 0 auto;position:relative;overflow:hidden}.topbar-tab:hover{color:var(--text-primary, #111827);background:var(--tab-hover-bg, rgba(255, 255, 255, .68))}.topbar-tab.active{color:var(--primary-strong, #1d4ed8);background:var(--tab-active-bg, #fff);border-color:color-mix(in srgb,var(--primary-strong, #1d4ed8) 18%,var(--border-color, #dbeafe));box-shadow:0 1px 2px #0f172a0f}.topbar-tab-pin{width:0;height:0;border-top:14px solid var(--primary-color, #3b82f6);border-right:14px solid transparent;background:transparent;box-shadow:none;position:absolute;top:0;left:0;opacity:.9}.topbar-tab-title{width:5em;min-width:0;flex:0 0 5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600}.topbar-tab-close{width:14px;height:14px;border-radius:999px;border:0;background:transparent;color:currentColor;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto}.topbar-tab-close:hover{background:#1d4ed81f}.topbar-tab-close-icon{width:8px;height:8px;position:relative}.topbar-tab-close-icon:before,.topbar-tab-close-icon:after{content:"";position:absolute;left:3.5px;top:0;width:1.4px;height:8px;border-radius:999px;background:currentColor}.topbar-tab-close-icon:before{transform:rotate(45deg)}.topbar-tab-close-icon:after{transform:rotate(-45deg)}.topbar-tab-menu{position:fixed;z-index:50;min-width:132px;padding:6px;display:grid;gap:2px;border-radius:var(--radius-medium);border:1px solid rgba(226,232,240,.95);background:var(--menu-bg, #fff);color:var(--text-primary, #111827);box-shadow:0 12px 28px #0f172a29}.topbar-tab-menu button{min-height:30px;border:0;border-radius:6px;padding:0 10px;background:transparent;color:var(--text-primary, #111827);font-size:13px;font-weight:600;text-align:left;cursor:pointer}.topbar-tab-menu button:hover{background:color-mix(in srgb,var(--primary-color, #3b82f6) 12%,transparent);color:var(--primary-strong, #1d4ed8)}.topbar-tab-tooltip{position:fixed;z-index:60;max-width:260px;padding:6px 9px;border-radius:6px;background:var(--tooltip-bg, #111827);color:var(--tooltip-text, #fff);font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap;box-shadow:0 10px 24px #0f172a2e;pointer-events:none}.topbar-tab-tooltip.right{transform:translateY(-50%)}.topbar-tab-tooltip.left{transform:translate(-100%,-50%)}.dark .topbar-tabs{box-shadow:inset 0 1px #94a3b814}.dark .topbar-tab.active{box-shadow:0 1px 2px #00000038}.dark .topbar-tab-menu{border-color:var(--border-color);box-shadow:0 18px 34px #00000052}@media(max-width:1024px){.topbar{padding:0 16px}.topbar-main{min-height:64px;gap:12px}.topbar-tabs{margin:0 -16px;padding:5px 16px}.topbar-tab{width:98px;min-width:98px;max-width:98px}}@media(max-width:640px){.topbar-main{flex-wrap:wrap;padding:10px 0}.title-group{flex:1 1 100%}.toolbar{margin-left:0;width:100%;justify-content:space-between}}.app-shell{display:grid;grid-template-columns:auto minmax(0,1fr);min-height:100vh;background:var(--bg-page, #f9fafb)}.main-area{display:flex;flex-direction:column;min-height:100vh}.content{flex:1;padding:24px;display:flex;flex-direction:column;min-width:0}.cached-pages{min-width:0}.cached-page[hidden]{display:none}@media(max-width:1024px){.app-shell{display:flex;flex-direction:column}.main-area{min-height:0}.content{padding:16px}}.dashboard-content{max-width:1200px;margin:0 auto}.info-panel{background:var(--bg-surface, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:12px;padding:24px;box-shadow:var(--shadow-surface, 0 1px 3px rgba(0, 0, 0, .05))}.info-panel h2{margin:0 0 20px;color:var(--text-primary, #111827);font-size:18px;font-weight:600}.info-list{display:flex;flex-direction:column;gap:16px}.info-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-color, #e5e7eb)}.info-item:last-child{border-bottom:none}.info-label{min-width:80px;font-size:14px;font-weight:500;color:var(--text-secondary, #6b7280)}.info-value{font-size:14px;color:var(--text-primary, #111827)}.app-brand{display:flex;align-items:center;gap:14px;position:relative;z-index:1}.app-brand strong{display:block;font-size:16px;letter-spacing:.02em}.app-brand span{display:block;color:#ffffffb8;font-size:13px;margin-top:2px}.app-brand-mark{width:42px;height:42px;border-radius:14px;display:inline-grid;place-items:center;font-size:18px;font-weight:800;color:#fff;background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.38),transparent 40%),linear-gradient(180deg,#ffffff47,#fff0),linear-gradient(135deg,#38bdf8,#2563eb 58%,#4f46e5);box-shadow:inset 0 1px 1px #fff6,0 10px 24px #0f172a47}.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr)}.login-visual{position:relative;overflow:hidden;background:linear-gradient(135deg,#101828f0,#1e40afe6),radial-gradient(circle at 30% 20%,rgba(37,99,235,.4),transparent 32%);color:#fff;display:grid;align-content:space-between;padding:48px}.login-hero{position:relative;z-index:1;max-width:560px}.login-hero h1{font-size:32px;font-weight:700;line-height:1.3;margin-top:32px}.login-hero p{font-size:15px;line-height:1.6;opacity:.9;margin-top:12px}.login-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;position:relative;z-index:1}.login-metric{display:block;background:#ffffff1f;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;padding:16px;border:1px solid rgba(255,255,255,.18)}.login-metric strong{display:block;font-size:28px;font-weight:700}.login-metric span{display:block;font-size:13px;opacity:.75;margin-top:4px}.login-side{background:#f5f7fa;display:flex;align-items:center;justify-content:center;padding:48px}.login-card{width:100%;max-width:380px;background:#fff;border-radius:16px;box-shadow:0 8px 32px #17203314;padding:32px;position:relative}.login-card>button:first-child{position:absolute;top:24px;right:24px}.login-card h2{font-size:22px;font-weight:600;color:hsl(#1e293b);margin-bottom:60px}.login-card>p{font-size:13px;color:hsl(#64748b);margin-bottom:32px}.login-form{display:grid;gap:12px}.login-roles{display:flex;gap:8px;padding:4px;border-radius:10px;background:#f1f3f64d}.login-role-btn{flex:1;padding:8px 12px;border-radius:7px;border:0;font-size:13px;font-weight:600;transition:all .2s;cursor:pointer}.login-role-btn[data-active=true]{background:#fff;color:#3b82f6;box-shadow:0 2px 4px #00000014}.login-role-btn[data-active=false]{background:transparent;color:#64748b}.login-role-btn[data-active=false]:hover{color:#1e293b}.login-label{display:block;font-size:13px;font-weight:500;color:#1e293b;margin-bottom:6px}.login-input{display:flex;align-items:center;gap:10px;height:44px;padding:0 14px;border:1px solid #e2e8f0;border-radius:10px;background:#f5f7fa;transition:all .2s}.login-input:focus-within{border-color:#3b82f6;box-shadow:0 0 0 4px #2563eb1f}.login-input input,.login-input select{flex:1;border:0;outline:none;background:transparent;color:#1e293b}.login-input input::-moz-placeholder{color:#64748b;opacity:.6}.login-input input::placeholder{color:#64748b;opacity:.6}.login-options{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px;color:#64748b;font-size:13px}.login-check{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.login-check input{position:absolute;opacity:0;pointer-events:none}.login-box{width:16px;height:16px;border-radius:5px;border:1px solid rgba(148,163,184,.5);background:#f5f7fa;position:relative;transition:all .2s}.login-check input:checked+.login-box{background:#3b82f6;border-color:#3b82f6}.login-check input:checked+.login-box:after{content:"";position:absolute;left:5px;top:2px;width:4px;height:8px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.login-button{height:44px;border-radius:10px;background:#3b82f6;color:#fff;font-size:14px;font-weight:600;border:0;cursor:pointer;transition:all .2s;margin-top:4px;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 12px 24px #2563eb3d}.login-button:hover{opacity:.9}.login-button:active{transform:scale(.98)}.login-button:disabled{opacity:.5;cursor:not-allowed}.login-foot{margin-top:18px;display:flex;align-items:center;justify-content:space-between;color:rgba(var(--muted-foreground-rgb),.5);font-size:12px}@media(max-width:1024px){.login-page{grid-template-columns:1fr;min-height:100vh}.login-visual{min-height:320px;padding:24px 20px}.login-hero{max-width:none}.login-hero h1{font-size:28px;margin-top:20px}.login-side{min-height:auto;align-self:stretch;padding:24px}.login-card{padding:24px}.login-options,.login-foot{align-items:flex-start;flex-direction:column}}@media(max-width:620px){.login-page{min-height:100vh}.login-visual{min-height:auto;padding:12px 16px}.login-hero,.login-metrics{display:none}.login-side{min-height:calc(100vh - 80px);padding:16px}.login-card{padding:20px}}.dark .login-page{background:#0f172a}.dark .login-visual{background:linear-gradient(135deg,#1e293b,#0f172a)}.dark .login-visual:after{background:radial-gradient(600px circle at var(--x, 50%) var(--y, 50%),rgba(59,130,246,.15),transparent 40%)}.dark .login-hero h1,.dark .login-hero p{color:#f1f5f9}.dark .login-metric{background:#ffffff14;border-color:#ffffff1f;color:#f1f5f9}.dark .login-side{background:#1e293b}.dark .login-card{background:#0f172a;border-color:#334155}.dark .login-card h2,.dark .login-card p{color:#f1f5f9}.dark .login-input{background:#1e293b;border-color:#334155}.dark .login-input input,.dark .login-input select{color:#f1f5f9}.dark .login-input input::-moz-placeholder{color:#64748b}.dark .login-input input::placeholder{color:#64748b}.dark .login-foot a{color:#94a3b8}.dark .login-button{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 12px 32px #3b82f680}.dark .login-button:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 12px 32px #3b82f699}.dark .login-label{color:#f1f5f9}.dark .login-roles{background:#1e293b80}.dark .login-role-btn[data-active=true]{background:#1e293b;color:#3b82f6}.dark .login-role-btn[data-active=false]{color:#94a3b8}.dark .login-role-btn[data-active=false]:hover{color:#f1f5f9}.dark .login-options,.dark .login-check{color:#94a3b8}.dark .login-box{background:#1e293b;border-color:#475569}.data-table-wrapper{min-width:0;position:relative}.data-table-refresh-indicator{position:absolute;top:6px;right:10px;z-index:4;min-height:24px;border:1px solid var(--primary-soft-border, #bfd4ff);border-radius:999px;background:var(--bg-surface, #fff);color:var(--primary-color, #2563eb);box-shadow:0 8px 18px #1720331f;display:inline-flex;align-items:center;justify-content:center;padding:0 10px;font-size:11px;font-weight:800;pointer-events:none}.data-table-refresh-indicator:before{content:"";width:7px;height:7px;margin-right:6px;border-radius:999px;background:currentColor;animation:data-table-pulse .9s ease-in-out infinite}.data-table-scroll{max-width:100%;max-height:var(--data-table-max-height, none);overflow:auto}.data-table{width:100%;min-width:var(--data-table-min-width, 960px);table-layout:fixed;border-collapse:collapse;background:var(--bg-surface, #fff)}.data-table th,.data-table td{padding:11px 12px;border-bottom:1px solid var(--border-color, #dde3ec);text-align:left;line-height:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.data-table th{position:sticky;top:0;z-index:2;color:var(--text-secondary, #687386);font-size:11px;font-weight:700;background:var(--bg-muted, #fbfcfe)}.data-table td{color:var(--text-primary, #172033);font-size:12px}.data-table-row.clickable,.data-table-row.selectable{cursor:pointer}.data-table-row:hover,.data-table-row:focus{outline:0;background:var(--bg-hover, #f8fbff)}.data-table-row.selected{background:var(--primary-soft, #eff6ff)}.data-table-row.selected:hover,.data-table-row.selected:focus{background:var(--primary-soft-hover, #e0f2fe)}.data-table-selection{width:52px;text-align:center}.data-table th.data-table-selection,.data-table td.data-table-selection{padding-left:5px;padding-right:5px}.data-table-selection input{width:15px;height:15px;accent-color:var(--primary-color, #2563eb);cursor:pointer}.data-table-state td{height:108px;color:var(--text-secondary, #687386);text-align:center;font-weight:700}.table-pagination{min-height:49px;padding:0 13px;border-top:1px solid var(--border-color, #dde3ec);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-secondary, #687386);font-size:11px;font-weight:700}.pagination-controls{display:flex;align-items:center;gap:7px}.pagination-controls button{min-width:31px;height:29px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;font:inherit;font-size:11px;font-weight:800;padding:0 11px}.pagination-controls button:hover:not(:disabled){border-color:var(--primary-color, #2563eb);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.pagination-controls button:disabled{cursor:not-allowed;opacity:.52}@keyframes data-table-pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog-content{background:var(--bg-surface, white);border-radius:8px;box-shadow:var(--shadow-surface, 0 20px 25px -5px rgba(0, 0, 0, .1));max-height:90vh;overflow:auto}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-bottom:1px solid var(--border-color, #e5e7eb)}.dialog-header h3{margin:0;font-size:18px;font-weight:600;color:var(--text-primary, #111827)}.close-btn{background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-secondary, #6b7280);padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.close-btn:hover{color:var(--text-primary, #374151)}.dialog-body{padding:24px}.dialog-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid var(--border-color, #e5e7eb)}.btn-cancel,.btn-submit{padding:8px 16px;border-radius:4px;border:none;cursor:pointer;font-size:14px;transition:all .2s}.btn-cancel{background:var(--bg-surface, white);border:1px solid var(--border-hover, #d1d5db);color:var(--text-primary, #374151)}.btn-cancel:hover:not(:disabled){background:var(--bg-hover, #f3f4f6)}.btn-submit{background:var(--primary-color, #3b82f6);color:#fff}.btn-submit:hover:not(:disabled){background:var(--primary-hover, #2563eb)}.btn-cancel:disabled,.btn-submit:disabled{opacity:.5;cursor:not-allowed}.tree-select{border:1px solid var(--border-hover, #d1d5db);border-radius:4px;padding:8px;max-height:300px;overflow-y:auto;background:var(--bg-surface, white);color:var(--text-primary, #111827)}.tree-placeholder{color:var(--text-tertiary, #9ca3af);padding:4px 8px;font-size:14px}.tree-content{padding:4px}.tree-node{display:flex;align-items:center;padding:4px 0}.expand-icon{cursor:pointer;width:16px;font-size:12px;display:inline-block;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tree-node label{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tree-node label.disabled{opacity:.5;cursor:not-allowed}.tree-node input[type=checkbox]{cursor:pointer}.confirm-dialog{background:var(--bg-surface, white);border-radius:8px;padding:24px;max-width:400px;box-shadow:var(--shadow-surface, 0 20px 25px -5px rgba(0, 0, 0, .1))}.confirm-dialog h3{margin:0 0 12px;font-size:18px;font-weight:600;color:var(--text-primary, #111827)}.confirm-dialog p{margin:0 0 20px;color:var(--text-secondary, #6b7280);line-height:1.5}.confirm-actions{display:flex;justify-content:flex-end;gap:12px}.confirm-actions button{padding:8px 16px;border-radius:4px;border:1px solid var(--border-hover, #d1d5db);background:var(--bg-surface, white);color:var(--text-primary, #111827);cursor:pointer;transition:all .2s}.confirm-actions button:hover:not(:disabled){background:var(--bg-hover, #f3f4f6)}.confirm-actions .confirm-btn{background:#ef4444;color:#fff;border-color:#ef4444}.confirm-actions .confirm-btn:hover:not(:disabled){background:#dc2626}.confirm-actions button:disabled{opacity:.5;cursor:not-allowed}.components-page{padding:24px;max-width:1200px}.component-section{margin-bottom:48px;padding:24px;background:var(--bg-surface, white);border-radius:8px;box-shadow:var(--shadow-surface, 0 1px 3px rgba(0, 0, 0, .1))}.component-section h2{margin:0 0 20px;font-size:20px;font-weight:600;color:var(--text-primary, #111827)}.example-box{margin-bottom:16px;padding:16px;border:1px solid var(--border-color, #e5e7eb);border-radius:4px;background:var(--bg-muted, #f9fafb)}.code-example{background:#1e293b;color:#e2e8f0;padding:16px;border-radius:4px;overflow-x:auto;font-size:14px;line-height:1.6}.btn-primary{background:#3b82f6;color:#fff;padding:8px 16px;border:none;border-radius:4px;cursor:pointer;transition:background .2s}.btn-primary:hover{background:#2563eb}.btn-danger{background:#ef4444;color:#fff;padding:8px 16px;border:none;border-radius:4px;cursor:pointer;transition:background .2s}.btn-danger:hover{background:#dc2626}.btn-link{background:none;border:none;color:#3b82f6;cursor:pointer;padding:4px 8px;transition:color .2s}.btn-link:hover{color:#2563eb}.btn-link.danger{color:#ef4444}.btn-link.danger:hover{color:#dc2626}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:8px;font-weight:500;color:var(--text-primary, #374151)}.form-group input{width:100%;padding:8px 12px;border:1px solid var(--border-hover, #d1d5db);background:var(--bg-surface, white);color:var(--text-primary, #111827);border-radius:4px;font-size:14px}.actions{display:flex;gap:8px}.status-ok{color:#10b981;font-weight:500}.status-disabled{color:#ef4444;font-weight:500}.no-permission{color:#9ca3af;font-size:14px}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;background:#0f172a00;display:flex;justify-content:flex-end;animation:drawer-mask-out .18s ease both}.drawer-mask.open{animation:drawer-mask-in .18s ease both}.drawer-mask.closing{pointer-events:none}.drawer-panel{width:min(620px,100vw);height:100vh;background:var(--bg-surface, #fff);box-shadow:-18px 0 48px #0f172a2e;display:flex;flex-direction:column;transform:translate(100%);animation:drawer-panel-out .18s ease both}.drawer-mask.open .drawer-panel{animation:drawer-panel-in .2s cubic-bezier(.16,1,.3,1) both}.drawer-header{min-height:68px;padding:0 20px;border-bottom:1px solid var(--border-color, #dde3ec);display:flex;align-items:center;justify-content:space-between;gap:14px}.drawer-header span{display:block;color:var(--text-secondary, #687386);font-size:12px;font-weight:800;margin-bottom:4px}.drawer-header h2{margin:0;font-size:18px;line-height:1.25}.drawer-close-button{width:36px;height:36px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;display:inline-grid;place-items:center}.drawer-close-button:hover{background:var(--bg-hover, #f8fbff);border-color:var(--primary-soft-border, #bfd4ff);color:var(--primary-color, #2563eb)}.drawer-close-icon{width:16px;height:16px;flex:none}.drawer-body{padding:18px 20px;overflow-y:auto}.drawer-actions{margin-top:auto;padding:14px 20px;border-top:1px solid var(--border-color, #dde3ec);display:flex;justify-content:flex-end;gap:10px}@keyframes drawer-mask-in{0%{background:#0f172a00}to{background:#0f172a6b}}@keyframes drawer-mask-out{0%{background:#0f172a6b}to{background:#0f172a00}}@keyframes drawer-panel-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes drawer-panel-out{0%{transform:translate(0)}to{transform:translate(100%)}}@media(max-width:720px){.drawer-panel{width:100vw}.drawer-actions{flex-wrap:wrap}}.multi-select{position:relative;min-width:0}.multi-select-trigger{width:100%;height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;justify-content:space-between;gap:7px;padding:0 11px;cursor:pointer;font:inherit;font-size:13px;font-weight:700;white-space:nowrap}.multi-select-trigger:hover,.multi-select.open .multi-select-trigger{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-strong, #1d4ed8)}.multi-select-trigger span{min-width:0;overflow:hidden;text-overflow:ellipsis}.multi-select.open .multi-select-icon{transform:rotate(180deg)}.multi-select-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:80;padding:5px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);box-shadow:0 14px 34px #17203329;animation:multi-select-menu-in .16s ease both}.multi-select-option{width:100%;min-height:31px;border:0;border-radius:6px;background:transparent;color:var(--text-secondary, #687386);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 9px;text-align:left;font:inherit;font-size:12px;font-weight:700}.multi-select-option:hover{background:var(--bg-hover, #f8fbff);color:var(--text-primary, #172033)}.multi-select-option.active{background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.multi-select-option span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multi-select-icon{width:16px;height:16px;flex:none;transition:transform .18s ease}.multi-select-check{width:14px;height:14px;flex:none}@keyframes multi-select-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes wave-path-dash{0%{stroke-dasharray:0 100}to{stroke-dasharray:100 0}}@keyframes ping-pong-dots{0%{transform:translateY(calc(var(--ping-pong-offset, 10px) * -1))}to{transform:translateY(var(--ping-pong-offset, 10px))}}@keyframes pulse-ring{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.2}}.operation-loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2200;background:var(--bg-overlay, rgba(255, 255, 255, .82));display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.operation-loading-panel{min-width:132px;min-height:104px;border:1px solid var(--border-color, #e5e7eb);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);box-shadow:var(--shadow-surface, 0 16px 34px rgba(15, 23, 42, .12));color:var(--text-primary, #111827);display:grid;place-items:center;gap:12px;padding:20px 24px;font-size:13px;font-weight:800}.toast-viewport{position:fixed;top:18px;right:18px;z-index:2000;width:min(380px,calc(100vw - 32px));display:grid;gap:10px;pointer-events:none}.toast-message{pointer-events:auto;min-height:56px;display:grid;grid-template-columns:10px minmax(0,1fr) 26px;gap:10px;align-items:start;padding:12px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-large, 12px);background:var(--bg-surface, #fff);box-shadow:0 16px 40px #0f172a29;transform-origin:top right;animation:toast-pop-in .18s cubic-bezier(.16,1,.3,1) both;will-change:opacity,transform}.toast-message.closing{pointer-events:none;animation:toast-pop-out .18s ease both}.toast-icon{width:10px;height:10px;margin-top:5px;border-radius:999px;background:var(--toast-color)}.toast-content{min-width:0;display:grid;gap:4px}.toast-content strong{color:var(--text-primary, #172033);font-size:13px;line-height:1.3}.toast-content span{color:var(--text-secondary, #687386);font-size:12px;line-height:1.5}.toast-message button{width:26px;height:26px;border:0;border-radius:6px;background:transparent;color:var(--text-secondary, #687386);cursor:pointer;font-size:18px;line-height:1}.toast-message button:hover{background:var(--bg-hover, #f3f4f6);color:var(--text-primary, #172033)}.toast-success{--toast-color: var(--success-color, #16a34a);border-color:var(--success-soft-border, #bbf7d0);background:var(--success-soft, #f0fdf4)}.toast-error{--toast-color: var(--danger-hover, #dc2626);border-color:var(--danger-soft-border, #fecaca);background:var(--danger-soft, #fff1f2)}.toast-warning{--toast-color: var(--warning-color, #d97706);border-color:var(--warning-soft-border, #fde68a);background:var(--warning-soft, #fffbeb)}.toast-info{--toast-color: var(--primary-color, #2563eb);border-color:var(--info-soft-border, #bfdbfe);background:var(--info-soft, #eff6ff)}@keyframes toast-pop-in{0%{opacity:0;transform:translate(18px) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes toast-pop-out{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(18px) scale(.96)}}.users-page{display:grid;gap:18px;min-width:0}.users-page .user-panel{min-width:0;position:relative;overflow:visible;background:var(--bg-surface, #ffffff);border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-large, 12px);box-shadow:var(--shadow-surface, 0 4px 12px rgba(23, 32, 51, .06))}.users-page .user-command-bar{display:flex;align-items:center;justify-content:flex-start;padding:13px;border-bottom:1px solid var(--border-color, #dde3ec)}.users-page .user-filter-bar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;justify-content:flex-start;padding:13px 13px 9px}.users-page .user-filter-expanded{--user-filter-open-height: 96px;display:grid;grid-template-columns:repeat(3,minmax(150px,220px)) auto;gap:9px;align-items:center;justify-content:flex-start;max-height:0;overflow:hidden;padding:0 13px;opacity:0;pointer-events:none;transform:translateY(-6px)}.users-page .user-filter-expanded.open{position:relative;z-index:30;overflow:visible;pointer-events:auto;animation:user-filter-in .18s ease both}.users-page .user-filter-expanded.closing{overflow:hidden;pointer-events:none;animation:user-filter-out .18s ease both}.users-page .user-filter-field{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);font:inherit;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:7px;padding:0 11px}.users-page .user-filter-search{width:min(420px,100%)}.users-page .user-filter-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--text-primary, #172033);font:inherit;font-weight:600}.users-page .user-filter-search input::-moz-placeholder{color:var(--text-secondary, #687386)}.users-page .user-filter-search input::placeholder{color:var(--text-secondary, #687386)}.users-page .user-filter-actions{display:flex;align-items:center;justify-content:flex-start;gap:9px}.users-page .user-filter-toggle,.users-page .user-add-button,.users-page .user-clear-button{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;justify-content:space-between;gap:7px;padding:0 11px;cursor:pointer;font:inherit;font-size:13px;font-weight:700;white-space:nowrap}.users-page .user-filter-toggle:hover,.users-page .user-clear-button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-strong, #1d4ed8)}.users-page .user-filter-toggle.open .user-toggle-chevron{transform:rotate(180deg)}.users-page .user-add-button{justify-content:center;border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.users-page .user-add-button:hover{background:var(--primary-hover, #1d4ed8)}.users-page .user-clear-button{justify-content:center}.users-page .user-clear-button:disabled{cursor:not-allowed;opacity:.52}.users-page .user-filter-icon{width:16px;height:16px;flex:none}.users-page .user-selection-button{min-width:40px;height:26px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--primary-color, #2563eb);cursor:pointer;font:inherit;font-weight:inherit;line-height:1}.users-page .user-selection-button:hover,.users-page .user-selection-button.active{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff)}.users-page .user-table-actions{display:inline-flex;align-items:center;gap:5px}.users-page .user-table-actions button{width:28px;height:28px;border:1px solid var(--border-color, #dde3ec);border-radius:7px;background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;display:inline-grid;place-items:center;padding:0;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.users-page .user-table-actions button:hover{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb);transform:translateY(-1px)}.users-page .user-table-actions button:active{transform:translateY(0) scale(.94)}.users-page .user-table-actions button.danger{color:var(--danger-hover, #dc2626)}.users-page .user-table-actions button.danger:hover{border-color:var(--danger-soft-border, #fecaca);background:var(--danger-soft, #fff1f2)}.users-page .user-pagination{min-height:49px;padding:0 13px;border-top:1px solid var(--border-color, #dde3ec);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-secondary, #687386);font-size:11px;font-weight:700}.users-page .user-page-controls,.users-page .user-page-summary{display:flex;align-items:center;gap:7px}.users-page .user-page-summary{gap:12px;flex-wrap:wrap}.users-page .user-page-summary label{display:inline-flex;align-items:center;gap:6px}.users-page .user-page-summary select{height:29px;min-width:58px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);padding:0 8px;font:inherit;font-size:11px;font-weight:800}.users-page .user-selected-summary{color:var(--text-primary, #172033)}.users-page .user-page-button{min-width:31px;height:29px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;font:inherit;font-size:11px;font-weight:800}.users-page .user-page-button-wide{padding:0 11px}.users-page .user-page-button:hover:not(:disabled),.users-page .user-page-button.active{border-color:var(--primary-color, #2563eb);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.users-page .user-page-button:disabled{cursor:not-allowed;opacity:.52}.users-page .status-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:600}.users-page .user-status-button{min-height:24px;border:0;cursor:pointer}.users-page .user-status-button:hover:not(:disabled){filter:brightness(.97)}.users-page .user-status-button:disabled{cursor:not-allowed;opacity:.58}.users-page .status-active{color:var(--success-color, #047857);background:var(--success-soft, #d1fae5)}.users-page .status-inactive{color:var(--text-secondary, #6b7280);background:var(--bg-muted, #f3f4f6)}.users-page .status-locked{color:var(--warning-color, #b45309);background:var(--warning-soft, #fef3c7)}.users-page .form-group{margin-bottom:0}.users-page .form-group label{display:block;margin-bottom:7px;font-size:12px;line-height:1.3;font-weight:700;color:var(--text-primary, #111827)}.users-page .form-group input,.users-page .form-group select{width:100%;height:40px;border:1px solid var(--border-color, #d1d5db);border-radius:var(--radius-medium, 8px);box-sizing:border-box;background:var(--bg-surface, #fff);color:var(--text-primary, #111827);padding:0 12px;font-size:14px;line-height:40px;transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.users-page .form-group input:hover:not(:disabled),.users-page .form-group select:hover:not(:disabled){border-color:var(--border-hover, #d1d5db);background:var(--bg-muted, #f8fafc)}.users-page .form-group input:focus,.users-page .form-group select:focus{outline:0;border-color:var(--primary-color, #2563eb);box-shadow:0 0 0 3px var(--primary-soft, #eff6ff);background:var(--bg-surface, #fff)}.users-page .form-group input:disabled,.users-page .form-group select:disabled{cursor:not-allowed;background:var(--bg-muted, #f8fafc);color:var(--text-secondary, #687386);opacity:1}.users-page .form-group.has-error input,.users-page .form-group.has-error select{border-color:var(--danger-hover, #dc2626)}.users-page .form-group.has-error input:focus,.users-page .form-group.has-error select:focus{outline:0;border-color:var(--danger-hover, #dc2626);box-shadow:0 0 0 3px var(--danger-soft, #fff1f2)}.users-page .field-error{margin-top:6px;color:var(--danger-hover, #dc2626);font-size:12px;line-height:1.4;font-weight:700}.users-page .form-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}.users-page .user-role-group{grid-column:1 / -1}.users-page .user-role-list{max-height:220px;overflow:auto;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px}.users-page .user-role-option{min-width:0;min-height:40px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;display:grid;gap:3px;padding:7px 9px;text-align:left;font:inherit}.users-page .user-role-option:hover{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff)}.users-page .user-role-option.selected{border-color:var(--primary-color, #2563eb);background:var(--primary-soft, #eff6ff);box-shadow:inset 3px 0 0 var(--primary-color, #2563eb)}.users-page .user-role-option span,.users-page .user-role-option em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.users-page .user-role-option span{font-size:13px;font-weight:800}.users-page .user-role-option em{color:var(--text-secondary, #687386);font-style:normal;font-size:11px;font-weight:700}.users-page .user-detail-content,.users-page .user-form-content{min-width:0;display:grid;gap:16px}.users-page .user-drawer-section{display:grid;gap:10px}.users-page .user-drawer-section h3{margin:0;font-size:15px}.users-page .user-summary-card{border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:12px;display:grid;gap:12px}.users-page .user-summary-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.users-page .user-summary-header strong,.users-page .user-summary-header span{display:block}.users-page .user-summary-header>div span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700;margin-top:4px}.users-page .user-summary-grid,.users-page .user-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.users-page .user-detail-card{min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:9px 10px;display:grid;gap:4px}.users-page .user-detail-card span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.users-page .user-detail-card strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.users-page .user-role-tags{display:flex;flex-wrap:wrap;gap:7px}.users-page .user-role-tag{max-width:100%;min-height:26px;border:1px solid var(--border-color, #dde3ec);border-radius:999px;background:var(--bg-muted, #fbfcfe);color:var(--text-primary, #172033);display:inline-flex;align-items:center;padding:0 10px;font-size:12px;font-weight:800}.users-page .user-empty-text{color:var(--text-secondary, #687386);font-size:13px;font-weight:700}.users-page .user-secondary-button,.users-page .user-danger-button,.users-page .user-primary-button{height:38px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;padding:0 14px;font:inherit;font-weight:700}.users-page .user-secondary-button:disabled,.users-page .user-primary-button:disabled{cursor:not-allowed;opacity:.56}.users-page .user-secondary-button:hover:not(:disabled){background:var(--primary-soft, #eff6ff);border-color:var(--primary-soft-border, #bfd4ff);color:var(--primary-color, #2563eb)}.users-page .user-primary-button{border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.users-page .user-primary-button:hover:not(:disabled){background:var(--primary-hover, #1d4ed8)}.users-page .user-danger-button{border-color:var(--danger-soft-border, #fecaca);color:var(--danger-hover, #dc2626)}.users-page .user-danger-button:hover{background:var(--danger-soft, #fff1f2)}@keyframes user-filter-in{0%{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}to{max-height:var(--user-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}}@keyframes user-filter-out{0%{max-height:var(--user-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}to{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}}@media(max-width:1120px){.users-page .user-filter-expanded{--user-filter-open-height: 140px;grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.users-page .user-filter-bar,.users-page .user-filter-expanded{--user-filter-open-height: 240px;grid-template-columns:1fr}.users-page .user-filter-actions,.users-page .user-pagination{align-items:stretch}.users-page .user-filter-toggle,.users-page .user-add-button{flex:1}.users-page .user-pagination{flex-direction:column}.users-page .user-page-controls{flex-wrap:wrap}.users-page .form-grid,.users-page .user-role-list,.users-page .user-summary-grid,.users-page .user-detail-grid{grid-template-columns:1fr}}.tenants-page{display:grid;gap:18px;min-width:0}.tenants-page .tenant-panel{min-width:0;position:relative;overflow:visible;background:var(--bg-surface, #ffffff);border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-large, 12px);box-shadow:var(--shadow-surface, 0 4px 12px rgba(23, 32, 51, .06))}.tenants-page .tenant-filter-bar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;justify-content:flex-start;padding:13px 13px 9px}.tenants-page .tenant-filter-expanded{--tenant-filter-open-height: 96px;display:grid;grid-template-columns:repeat(3,minmax(150px,220px)) auto;gap:9px;align-items:center;justify-content:flex-start;max-height:0;overflow:hidden;padding:0 13px;opacity:0;pointer-events:none;transform:translateY(-6px)}.tenants-page .tenant-filter-expanded.open{position:relative;z-index:30;overflow:visible;pointer-events:auto;animation:tenant-filter-in .18s ease both}.tenants-page .tenant-filter-expanded.closing{overflow:hidden;pointer-events:none;animation:tenant-filter-out .18s ease both}.tenants-page .tenant-command-bar{display:flex;align-items:center;justify-content:flex-start;padding:13px;border-bottom:1px solid var(--border-color, #dde3ec)}.tenants-page .tenant-filter-field{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);font:inherit;font-size:13px;font-weight:600}.tenants-page .tenant-filter-field{display:inline-flex;align-items:center;gap:7px;padding:0 11px}.tenants-page .tenant-filter-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--text-primary, #172033);font:inherit;font-weight:600}.tenants-page .tenant-filter-search{width:min(420px,100%)}.tenants-page .tenant-filter-search input::-moz-placeholder{color:var(--text-secondary, #687386)}.tenants-page .tenant-filter-search input::placeholder{color:var(--text-secondary, #687386)}.tenants-page .tenant-filter-actions{display:flex;align-items:center;justify-content:flex-start;gap:9px}.tenants-page .tenant-filter-toggle,.tenants-page .tenant-add-button,.tenants-page .tenant-clear-button{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;justify-content:space-between;gap:7px;padding:0 11px;cursor:pointer;font:inherit;font-size:13px;font-weight:700;white-space:nowrap}.tenants-page .tenant-filter-toggle:hover,.tenants-page .tenant-clear-button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-strong, #1d4ed8)}.tenants-page .tenant-filter-toggle.open .tenant-toggle-chevron{transform:rotate(180deg)}.tenants-page .tenant-add-button{justify-content:center;border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.tenants-page .tenant-add-button:hover{background:var(--primary-hover, #1d4ed8)}.tenants-page .tenant-clear-button{justify-content:center}.tenants-page .tenant-clear-button:disabled{cursor:not-allowed;opacity:.52}.tenants-page .tenant-filter-icon{width:16px;height:16px;flex:none}.tenants-page .tenant-selection-button{min-width:40px;height:26px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--primary-color, #2563eb);cursor:pointer;font:inherit;font-weight:inherit;line-height:1}.tenants-page .tenant-selection-button:hover,.tenants-page .tenant-selection-button.active{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff)}.tenants-page .tenant-table-action-button{max-width:100%;min-width:0;height:28px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--primary-color, #2563eb);display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;padding:0 9px;font:inherit;font-size:12px;font-weight:800;white-space:nowrap}.tenants-page .tenant-table-action-button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff)}.tenants-page .tenant-table-action-button:disabled{cursor:not-allowed;opacity:.56}.tenants-page .tenant-table-actions{display:inline-flex;align-items:center;gap:8px}.tenants-page .tenant-table-actions button{width:32px;height:32px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.tenants-page .tenant-table-actions button:hover{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb);transform:translateY(-1px)}.tenants-page .tenant-table-actions button:active{transform:translateY(0) scale(.96)}.tenants-page .tenant-table-actions button.danger{color:var(--danger-color, #b91c1c)}.tenants-page .tenant-table-actions button.danger:hover{border-color:var(--danger-soft-border, #fecaca);background:var(--danger-soft, #fff1f2);color:var(--danger-hover, #dc2626)}.tenants-page .tenant-pagination{min-height:49px;padding:0 13px;border-top:1px solid var(--border-color, #dde3ec);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-secondary, #687386);font-size:11px;font-weight:700}.tenants-page .tenant-page-controls{display:flex;align-items:center;gap:7px}.tenants-page .tenant-page-summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tenants-page .tenant-page-summary label{display:inline-flex;align-items:center;gap:6px}.tenants-page .tenant-page-summary select{height:29px;min-width:58px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);padding:0 8px;font:inherit;font-size:11px;font-weight:800}.tenants-page .tenant-selected-summary{color:var(--text-primary, #172033)}.tenants-page .tenant-page-button{min-width:31px;height:29px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;font:inherit;font-size:11px;font-weight:800}.tenants-page .tenant-page-button-wide{padding:0 11px}.tenants-page .tenant-page-button:hover:not(:disabled),.tenants-page .tenant-page-button.active{border-color:var(--primary-color, #2563eb);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.tenants-page .tenant-page-button:disabled{cursor:not-allowed;opacity:.52}.tenants-page .form-group{margin-bottom:0}.tenants-page .form-group label{display:block;margin-bottom:7px;font-size:12px;line-height:1.3;font-weight:700;color:var(--text-primary, #111827)}.tenants-page .form-group input,.tenants-page .form-group select,.tenants-page .form-group textarea{width:100%;border:1px solid var(--border-color, #d1d5db);border-radius:var(--radius-medium, 8px);box-sizing:border-box;background:var(--bg-surface, #fff);color:var(--text-primary, #111827);transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.tenants-page .form-group input,.tenants-page .form-group select{height:40px;padding:0 12px;font-size:14px;line-height:40px}.tenants-page .form-group textarea{min-height:180px;padding:10px 12px;border:1px solid var(--border-hover, #d1d5db);font-size:14px;line-height:1.55;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;-moz-tab-size:2;-o-tab-size:2;tab-size:2}.tenants-page .form-group input:hover:not(:disabled),.tenants-page .form-group select:hover:not(:disabled),.tenants-page .form-group textarea:hover:not(:disabled){border-color:var(--border-hover, #d1d5db);background:var(--bg-muted, #f8fafc)}.tenants-page .form-group input:focus,.tenants-page .form-group select:focus,.tenants-page .form-group textarea:focus{outline:0;border-color:var(--primary-color, #2563eb);box-shadow:0 0 0 3px var(--primary-soft, #eff6ff);background:var(--bg-surface, #fff)}.tenants-page .form-group input:disabled{cursor:not-allowed;background:var(--bg-muted, #f8fafc);color:var(--text-secondary, #687386)}.tenants-page .form-group.has-error input,.tenants-page .form-group.has-error textarea{border-color:var(--danger-hover, #dc2626)}.tenants-page .form-group.has-error input:focus,.tenants-page .form-group.has-error textarea:focus{outline:0;border-color:var(--danger-hover, #dc2626);box-shadow:0 0 0 3px var(--danger-soft, #fff1f2)}.tenants-page .field-error{margin-top:6px;color:var(--danger-hover, #dc2626);font-size:12px;line-height:1.4;font-weight:700}.tenants-page .form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.tenants-page .status-badge{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:700;line-height:1;white-space:nowrap}.tenants-page .tenant-toggle-badge{border:0;cursor:pointer;font:inherit;transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}.tenants-page .tenant-toggle-badge:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 5px 12px #2563eb29;filter:saturate(1.08)}.tenants-page .tenant-toggle-badge:active:not(:disabled){transform:translateY(0) scale(.94)}.tenants-page .tenant-toggle-badge:disabled{cursor:wait;opacity:.68}.tenants-page .status-active{color:var(--success-color, #047857);background:var(--success-soft, #d1fae5)}.tenants-page .status-inactive{color:var(--text-secondary, #6b7280);background:var(--bg-muted, #f3f4f6)}.tenants-page .status-suspended{color:var(--warning-color, #b45309);background:var(--warning-soft, #fef3c7)}.tenants-page .tenant-detail-content{display:grid;gap:16px}.tenants-page .tenant-form-content{min-width:0;display:grid;gap:16px}.tenants-page .tenant-form-content input[type=date]{color-scheme:light}.dark .tenants-page .tenant-form-content input[type=date]{color-scheme:dark}.tenants-page .tenant-drawer-section{display:grid;gap:10px}.tenants-page .tenant-drawer-section h3{margin:0;font-size:15px}.tenants-page .tenant-summary-card{border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:12px;display:grid;gap:12px}.tenants-page .tenant-summary-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.tenants-page .tenant-summary-header strong,.tenants-page .tenant-summary-header span{display:block}.tenants-page .tenant-summary-header>div span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700;margin-top:4px}.tenants-page .tenant-summary-grid,.tenants-page .tenant-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.tenants-page .tenant-detail-card{min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:9px 10px;display:grid;gap:4px}.tenants-page .tenant-detail-card span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.tenants-page .tenant-detail-card strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.tenants-page .tenant-config-block{max-height:220px;margin:0;overflow:auto;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);color:var(--text-primary, #172033);padding:12px;font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.tenants-page .tenant-delete-guard{margin-top:12px;padding:10px 12px;border:1px solid var(--warning-border, rgba(245, 158, 11, .35));border-radius:var(--radius-medium, 8px);background:var(--warning-bg, rgba(245, 158, 11, .1));color:var(--warning-text, #92400e);font-size:13px;line-height:1.5}.dark .tenants-page .tenant-delete-guard,[data-theme=dark] .tenants-page .tenant-delete-guard{color:var(--warning-text, #fbbf24)}.tenants-page .tenant-menu-auth{display:grid;gap:12px;min-width:0}.tenants-page .tenant-menu-auth-header{min-height:40px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);color:var(--text-secondary, #687386);display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:0 12px;font-size:12px;font-weight:700}.tenants-page .tenant-menu-auth-header strong{color:var(--text-primary, #172033)}.tenants-page .tenant-menu-auth-header span{margin-left:0}.tenants-page .tenant-menu-auth-header span:first-of-type{margin-left:auto}.tenants-page .tenant-menu-auth-header button{height:28px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;padding:0 10px;font:inherit;font-size:12px;font-weight:800}.tenants-page .tenant-menu-auth-header button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.tenants-page .tenant-menu-auth-header button:disabled{cursor:not-allowed;opacity:.52}.tenants-page .tenant-menu-auth-layout{min-width:0;display:block}.tenants-page .tenant-menu-auth-layout>.tenant-auth-section+.tenant-auth-section{display:none}.tenants-page .tenant-auth-section{height:min(64vh,calc(100vh - 260px));min-height:360px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);display:flex;flex-direction:column;padding:10px}.tenants-page .tenant-auth-section h3{margin:0 0 10px;color:var(--text-primary, #172033);font-size:13px;font-weight:800}.tenants-page .tenant-auth-tree,.tenants-page .tenant-permission-grid{min-height:0;flex:1;display:grid;align-content:start;gap:8px;max-height:none;overflow:auto;padding-right:2px}.tenants-page .tenant-auth-branch{display:grid;gap:4px}.tenants-page .tenant-auth-permissions{min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:0 10px 4px 52px}.tenants-page .tenant-auth-node,.tenants-page .tenant-permission-item{min-height:38px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);display:flex;align-items:center;gap:8px;padding:8px 10px;text-align:left;font:inherit}.tenants-page .tenant-auth-node{cursor:pointer}.tenants-page .tenant-auth-node:hover:not(:disabled),.tenants-page .tenant-permission-item:hover{background:var(--bg-muted, #f8fafc)}.tenants-page .tenant-auth-node-checked,.tenants-page .tenant-auth-node-indeterminate,.tenants-page .tenant-permission-item.selected{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);box-shadow:inset 3px 0 0 var(--primary-color, #2563eb)}.tenants-page .tenant-auth-node:disabled{cursor:not-allowed;opacity:.58}.tenants-page .tenant-auth-state{min-width:34px;border-radius:999px;background:var(--bg-muted, #f3f4f6);color:var(--text-secondary, #687386);padding:2px 7px;font-size:11px;font-style:normal;font-weight:800;text-align:center}.tenants-page .tenant-auth-node-checked .tenant-auth-state,.tenants-page .tenant-auth-node-indeterminate .tenant-auth-state{background:var(--primary-color, #2563eb);color:#fff}.tenants-page .tenant-auth-node span,.tenants-page .tenant-permission-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700}.tenants-page .tenant-auth-node em,.tenants-page .tenant-permission-title em{margin-left:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary, #687386);font-style:normal;font-size:11px;font-weight:800}.tenants-page .tenant-permission-item{align-items:flex-start;cursor:default}.tenants-page .tenant-permission-title{min-width:0;display:flex;align-items:center;gap:8px;margin-bottom:7px}.tenants-page .tenant-permission-chips{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.tenants-page .tenant-permission-chip{max-width:100%;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:7px;background:var(--bg-muted, #fbfcfe);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;gap:5px;padding:3px 7px;cursor:pointer;font:inherit;font-size:11px;font-weight:800}.tenants-page .tenant-permission-chip:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.tenants-page .tenant-permission-chip.selected{border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.tenants-page .tenant-permission-chip:disabled{cursor:not-allowed;opacity:.58}.tenants-page .tenant-permission-chip .tenant-filter-icon{width:12px;height:12px;color:currentColor}.tenants-page .tenant-auth-empty{border:1px dashed var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);color:var(--text-secondary, #687386);padding:12px;font-size:13px;font-weight:700}.tenants-page .tenant-menu-tree{min-height:280px;max-height:min(520px,calc(100vh - 260px));overflow:auto;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);padding:10px}.tenants-page .tenant-secondary-button,.tenants-page .tenant-danger-button,.tenants-page .tenant-primary-button{height:38px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;padding:0 14px;font:inherit;font-weight:700}.tenants-page .tenant-secondary-button:disabled,.tenants-page .tenant-primary-button:disabled{cursor:not-allowed;opacity:.56}.tenants-page .tenant-secondary-button:hover{background:var(--primary-soft, #eff6ff);border-color:var(--primary-soft-border, #bfd4ff);color:var(--primary-color, #2563eb)}.tenants-page .tenant-primary-button{border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.tenants-page .tenant-primary-button:hover:not(:disabled){background:var(--primary-hover, #1d4ed8)}.tenants-page .tenant-danger-button{border-color:var(--danger-soft-border, #fecaca);color:var(--danger-hover, #dc2626)}.tenants-page .tenant-danger-button:hover{background:var(--danger-soft, #fff1f2)}@keyframes tenant-filter-in{0%{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}to{max-height:var(--tenant-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}}@keyframes tenant-filter-out{0%{max-height:var(--tenant-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}to{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}}@media(max-width:1120px){.tenants-page .tenant-filter-bar,.tenants-page .tenant-filter-expanded{--tenant-filter-open-height: 140px;grid-template-columns:repeat(2,minmax(0,1fr))}.tenants-page .tenant-clear-button{justify-content:center}}@media(max-width:720px){.tenants-page .tenant-filter-bar,.tenants-page .tenant-filter-expanded{--tenant-filter-open-height: 230px;grid-template-columns:1fr}.tenants-page .tenant-filter-actions{justify-content:stretch}.tenants-page .tenant-filter-toggle,.tenants-page .tenant-add-button{flex:1}.tenants-page .tenant-pagination{align-items:flex-start;flex-direction:column;padding:12px 14px}.tenants-page .tenant-page-controls{flex-wrap:wrap}.tenants-page .tenant-summary-grid,.tenants-page .tenant-detail-grid,.tenants-page .tenant-menu-auth-layout{grid-template-columns:1fr}.tenants-page .tenant-auth-tree,.tenants-page .tenant-permission-grid{flex:none;max-height:none}.tenants-page .tenant-auth-section{height:auto;min-height:0}.tenants-page .form-grid{grid-template-columns:1fr}}.departments-page{display:grid;gap:18px;min-width:0}.departments-page .dept-panel{min-width:0;position:relative;overflow:visible;background:var(--bg-surface, #ffffff);border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-large, 12px);box-shadow:var(--shadow-surface, 0 4px 12px rgba(23, 32, 51, .06))}.departments-page .data-table td{position:relative;overflow:visible}.departments-page .data-table-row{transition:background-color .16s ease,box-shadow .16s ease,transform .16s ease}.departments-page .dept-command-bar{display:flex;align-items:center;justify-content:flex-start;gap:10px;flex-wrap:wrap;padding:13px;border-bottom:1px solid var(--border-color, #dde3ec)}.departments-page .dept-tenant-selector{position:relative;height:34px;min-width:min(300px,100%);border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;gap:8px;padding:0 10px;font-size:13px;font-weight:700;transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.departments-page .dept-tenant-selector:hover,.departments-page .dept-tenant-selector.open{border-color:var(--primary-color, #2563eb);background:var(--bg-hover, #f8fbff)}.departments-page .dept-tenant-selector span{flex:none}.departments-page .dept-tenant-trigger{height:100%;min-width:0;flex:1;border:0;outline:0;background:transparent;color:var(--text-primary, #172033);font:inherit;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:space-between;gap:8px;padding:0}.departments-page .dept-tenant-trigger:disabled{cursor:wait;opacity:.62}.departments-page .dept-tenant-trigger span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.departments-page .dept-tenant-chevron{width:15px;height:15px;flex:none;color:var(--text-secondary, #687386);transition:transform .16s ease}.departments-page .dept-tenant-selector.open .dept-tenant-chevron{transform:rotate(180deg)}.departments-page .dept-tenant-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:80;width:100%;max-height:260px;overflow-y:auto;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #ffffff);box-shadow:var(--shadow-popover, 0 14px 30px rgba(23, 32, 51, .16));padding:6px}.departments-page .dept-tenant-option{width:100%;min-height:32px;border:0;border-radius:7px;background:transparent;color:var(--text-primary, #172033);cursor:pointer;display:flex;align-items:center;justify-content:flex-start;padding:0 9px;font:inherit;font-size:13px;font-weight:700;text-align:left}.departments-page .dept-tenant-option:hover{background:var(--bg-hover, #f8fbff);color:var(--primary-color, #2563eb)}.departments-page .dept-tenant-option.selected{background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.departments-page .dept-filter-bar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;justify-content:flex-start;padding:13px 13px 9px}.departments-page .dept-filter-expanded{--dept-filter-open-height: 96px;display:grid;grid-template-columns:repeat(2,minmax(150px,220px)) auto;gap:9px;align-items:center;justify-content:flex-start;max-height:0;overflow:hidden;padding:0 13px;opacity:0;pointer-events:none;transform:translateY(-6px)}.departments-page .dept-filter-expanded.open{position:relative;z-index:30;overflow:visible;pointer-events:auto;animation:dept-filter-in .18s ease both}.departments-page .dept-filter-expanded.closing{overflow:hidden;pointer-events:none;animation:dept-filter-out .18s ease both}.departments-page .dept-filter-field{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);font:inherit;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:7px;padding:0 11px}.departments-page .dept-filter-search{width:min(420px,100%)}.departments-page .dept-filter-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--text-primary, #172033);font:inherit;font-weight:600}.departments-page .dept-filter-search input::-moz-placeholder{color:var(--text-secondary, #687386)}.departments-page .dept-filter-search input::placeholder{color:var(--text-secondary, #687386)}.departments-page .dept-filter-actions{display:flex;align-items:center;justify-content:flex-start;gap:9px}.departments-page .dept-filter-toggle,.departments-page .dept-add-button,.departments-page .dept-clear-button{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;justify-content:space-between;gap:7px;padding:0 11px;cursor:pointer;font:inherit;font-size:13px;font-weight:700;white-space:nowrap}.departments-page .dept-filter-toggle:hover,.departments-page .dept-clear-button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-strong, #1d4ed8)}.departments-page .dept-filter-toggle.open .dept-toggle-chevron{transform:rotate(180deg)}.departments-page .dept-add-button{justify-content:center;border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.departments-page .dept-add-button:hover{background:var(--primary-hover, #1d4ed8)}.departments-page .dept-add-button:disabled{cursor:not-allowed;opacity:.58}.departments-page .dept-clear-button{justify-content:center}.departments-page .dept-clear-button:disabled{cursor:not-allowed;opacity:.52}.departments-page .dept-filter-icon{width:16px;height:16px;flex:none}.departments-page .dept-name-cell{display:flex;align-items:center;gap:6px;min-width:0}.departments-page .dept-expand-button{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:none;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-secondary, #687386);cursor:pointer;padding:0}.departments-page .dept-expand-button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.departments-page .dept-expand-button:disabled{cursor:default}.departments-page .dept-expand-icon{width:15px;height:15px}.departments-page .dept-expand-placeholder{display:inline-block;width:22px;height:22px;flex:none}.departments-page .dept-name-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--text-primary, #172033)}.departments-page .dept-pagination{min-height:49px;padding:0 13px;border-top:1px solid var(--border-color, #dde3ec);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-secondary, #687386);font-size:11px;font-weight:700}.departments-page .dept-page-summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.departments-page .dept-filter-hint{color:var(--primary-color, #2563eb)}.departments-page .status-badge{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:700;line-height:1;white-space:nowrap}.departments-page .dept-toggle-badge{border:0;cursor:pointer;font:inherit;transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}.departments-page .dept-toggle-badge:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 5px 12px #2563eb29;filter:saturate(1.08)}.departments-page .dept-toggle-badge:active:not(:disabled){transform:translateY(0) scale(.94)}.departments-page .dept-toggle-badge:disabled{cursor:wait;opacity:.68}.departments-page .status-active{color:var(--success-color, #047857);background:var(--success-soft, #d1fae5)}.departments-page .status-inactive{color:var(--text-secondary, #6b7280);background:var(--bg-muted, #f3f4f6)}.departments-page .dept-table-actions{display:inline-flex;align-items:center;gap:5px}.departments-page .dept-table-actions button{width:28px;height:28px;border:1px solid var(--border-color, #dde3ec);border-radius:7px;background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;display:inline-grid;place-items:center;padding:0;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.departments-page .dept-table-actions button:hover{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb);transform:translateY(-1px)}.departments-page .dept-table-actions button:active{transform:translateY(0) scale(.94)}.departments-page .dept-table-actions button.danger{color:var(--danger-hover, #dc2626)}.departments-page .dept-table-actions button.danger:hover{border-color:var(--danger-soft-border, #fecaca);background:var(--danger-soft, #fff1f2)}.departments-page .dept-action-icon{width:14px;height:14px;flex:none}.departments-page .dept-drag-handle{width:28px;height:28px;border-radius:7px;color:var(--text-secondary, #687386);display:inline-grid;place-items:center;cursor:grab;transition:background-color .16s ease,color .16s ease,transform .16s ease}.departments-page .dept-drag-handle:hover{background:var(--bg-hover, #f8fbff);color:var(--primary-color, #2563eb);transform:translateY(-1px)}.departments-page .dept-row-dragging{opacity:.44}.departments-page .dept-row-drop-target{background:var(--primary-soft, #eff6ff)}.departments-page .dept-row-drop-before{box-shadow:inset 0 2px 0 var(--primary-color, #2563eb)}.departments-page .dept-row-drop-after{box-shadow:inset 0 -2px 0 var(--primary-color, #2563eb)}.dept-drag-preview{position:fixed;top:0;left:0;z-index:2147483647;min-width:190px;max-width:280px;border:1px solid var(--primary-soft-border, #bfd4ff);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #ffffff);color:var(--text-primary, #172033);box-shadow:0 14px 30px #1720332e;padding:10px 12px;pointer-events:none;transform:translate(-200%,-200%)}.dept-drag-preview strong,.dept-drag-preview span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dept-drag-preview strong{font-size:13px}.dept-drag-preview span{margin-top:4px;color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.departments-page .form-group{margin-bottom:0}.departments-page .form-group label{display:block;margin-bottom:7px;font-size:12px;line-height:1.3;font-weight:700;color:var(--text-primary, #111827)}.departments-page .form-group input,.departments-page .form-group select{width:100%;height:40px;padding:0 12px;font-size:14px;border:1px solid var(--border-color, #d1d5db);border-radius:var(--radius-medium, 8px);box-sizing:border-box;background:var(--bg-surface, #fff);color:var(--text-primary, #111827);transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.departments-page .form-group input:hover:not(:disabled),.departments-page .form-group select:hover:not(:disabled){border-color:var(--border-hover, #d1d5db);background:var(--bg-muted, #f8fafc)}.departments-page .form-group input:focus,.departments-page .form-group select:focus{outline:0;border-color:var(--primary-color, #2563eb);box-shadow:0 0 0 3px var(--primary-soft, #eff6ff);background:var(--bg-surface, #fff)}.departments-page .form-group input:disabled,.departments-page .form-group select:disabled{cursor:not-allowed;color:var(--text-secondary, #687386);background:var(--bg-muted, #f3f4f6);opacity:1}.departments-page .form-group.has-error input{border-color:var(--danger-hover, #dc2626)}.departments-page .form-group.has-error input:focus{outline:0;border-color:var(--danger-hover, #dc2626);box-shadow:0 0 0 3px var(--danger-soft, #fff1f2)}.departments-page .field-error{margin-top:6px;color:var(--danger-hover, #dc2626);font-size:12px;line-height:1.4;font-weight:700}.departments-page .form-grid{display:grid;grid-template-columns:1fr;gap:14px}.departments-page .dept-detail-content{display:grid;gap:16px}.departments-page .dept-form-content{min-width:0;display:grid;gap:16px}.departments-page .dept-drawer-section{display:grid;gap:10px}.departments-page .dept-drawer-section h3{margin:0;font-size:15px}.departments-page .dept-summary-card{border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:12px;display:grid;gap:12px}.departments-page .dept-summary-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.departments-page .dept-summary-header strong,.departments-page .dept-summary-header span{display:block}.departments-page .dept-summary-header>div span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700;margin-top:4px}.departments-page .dept-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.departments-page .dept-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.departments-page .dept-detail-card{min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:9px 10px;display:grid;gap:4px}.departments-page .dept-detail-card span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.departments-page .dept-detail-card strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.departments-page .dept-secondary-button,.departments-page .dept-danger-button,.departments-page .dept-primary-button{height:38px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;padding:0 14px;font:inherit;font-weight:700}.departments-page .dept-secondary-button:disabled,.departments-page .dept-primary-button:disabled{cursor:not-allowed;opacity:.56}.departments-page .dept-secondary-button:hover:not(:disabled){background:var(--primary-soft, #eff6ff);border-color:var(--primary-soft-border, #bfd4ff);color:var(--primary-color, #2563eb)}.departments-page .dept-primary-button{border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.departments-page .dept-primary-button:hover:not(:disabled){background:var(--primary-hover, #1d4ed8)}.departments-page .dept-danger-button{border-color:var(--danger-soft-border, #fecaca);color:var(--danger-hover, #dc2626)}.departments-page .dept-danger-button:hover{background:var(--danger-soft, #fff1f2)}@keyframes dept-filter-in{0%{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}to{max-height:var(--dept-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}}@keyframes dept-filter-out{0%{max-height:var(--dept-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}to{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}}@media(max-width:1120px){.departments-page .dept-filter-expanded{--dept-filter-open-height: 140px;grid-template-columns:repeat(2,minmax(0,1fr))}.departments-page .dept-clear-button{justify-content:center}}@media(max-width:720px){.departments-page .dept-filter-bar,.departments-page .dept-filter-expanded{--dept-filter-open-height: 200px;grid-template-columns:1fr}.departments-page .dept-filter-actions{justify-content:stretch}.departments-page .dept-filter-toggle,.departments-page .dept-add-button{flex:1}.departments-page .dept-summary-grid,.departments-page .dept-detail-grid,.departments-page .form-grid{grid-template-columns:1fr}}.employees-page{display:grid;gap:18px;min-width:0}.employees-page .employee-panel{min-width:0;position:relative;overflow:visible;background:var(--bg-surface, #ffffff);border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-large, 12px);box-shadow:var(--shadow-surface, 0 4px 12px rgba(23, 32, 51, .06))}.employees-page .employee-command-bar{display:flex;align-items:center;justify-content:flex-start;padding:13px;border-bottom:1px solid var(--border-color, #dde3ec)}.employees-page .employee-filter-bar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;justify-content:flex-start;padding:13px 13px 9px}.employees-page .employee-filter-expanded{--employee-filter-open-height: 96px;display:grid;grid-template-columns:minmax(150px,220px) auto;gap:9px;align-items:center;justify-content:flex-start;max-height:0;overflow:hidden;padding:0 13px;opacity:0;pointer-events:none;transform:translateY(-6px)}.employees-page .employee-filter-expanded.open{position:relative;z-index:30;overflow:visible;pointer-events:auto;animation:employee-filter-in .18s ease both}.employees-page .employee-filter-expanded.closing{overflow:hidden;pointer-events:none;animation:employee-filter-out .18s ease both}.employees-page .employee-filter-field{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;gap:7px;padding:0 11px;font:inherit;font-size:13px;font-weight:600}.employees-page .employee-filter-search{width:min(420px,100%)}.employees-page .employee-filter-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--text-primary, #172033);font:inherit;font-weight:600}.employees-page .employee-filter-search input::-moz-placeholder{color:var(--text-secondary, #687386)}.employees-page .employee-filter-search input::placeholder{color:var(--text-secondary, #687386)}.employees-page .employee-filter-select-native{width:min(240px,100%);cursor:pointer;font-weight:700}.employees-page .employee-filter-actions{display:flex;align-items:center;justify-content:flex-start;gap:9px}.employees-page .employee-filter-toggle,.employees-page .employee-add-button,.employees-page .employee-clear-button{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;justify-content:space-between;gap:7px;padding:0 11px;cursor:pointer;font:inherit;font-size:13px;font-weight:700;white-space:nowrap}.employees-page .employee-filter-toggle:hover,.employees-page .employee-clear-button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-strong, #1d4ed8)}.employees-page .employee-filter-toggle.open .employee-toggle-chevron{transform:rotate(180deg)}.employees-page .employee-add-button{justify-content:center;border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.employees-page .employee-add-button:hover{background:var(--primary-hover, #1d4ed8)}.employees-page .employee-clear-button{justify-content:center}.employees-page .employee-clear-button:disabled{cursor:not-allowed;opacity:.52}.employees-page .employee-filter-icon{width:16px;height:16px;flex:none}.employees-page .employee-selection-button{min-width:40px;height:26px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--primary-color, #2563eb);cursor:pointer;font:inherit;font-weight:inherit;line-height:1}.employees-page .employee-selection-button:hover,.employees-page .employee-selection-button.active{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff)}.employees-page .employee-pagination{min-height:49px;padding:0 13px;border-top:1px solid var(--border-color, #dde3ec);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-secondary, #687386);font-size:11px;font-weight:700}.employees-page .employee-page-controls,.employees-page .employee-page-summary{display:flex;align-items:center;gap:7px}.employees-page .employee-page-summary{gap:12px;flex-wrap:wrap}.employees-page .employee-page-summary label{display:inline-flex;align-items:center;gap:6px}.employees-page .employee-page-summary select{height:29px;min-width:58px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);padding:0 8px;font:inherit;font-size:11px;font-weight:800}.employees-page .employee-selected-summary{color:var(--text-primary, #172033)}.employees-page .employee-page-button{min-width:31px;height:29px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;font:inherit;font-size:11px;font-weight:800}.employees-page .employee-page-button-wide{padding:0 11px}.employees-page .employee-page-button:hover:not(:disabled),.employees-page .employee-page-button.active{border-color:var(--primary-color, #2563eb);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.employees-page .employee-page-button:disabled{cursor:not-allowed;opacity:.52}.employees-page .status-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:600}.employees-page .status-active{color:var(--success-color, #047857);background:var(--success-soft, #d1fae5)}.employees-page .status-inactive{color:var(--text-secondary, #6b7280);background:var(--bg-muted, #f3f4f6)}.employees-page .status-suspended{color:var(--danger-hover, #dc2626);background:var(--danger-soft, #fff1f2)}.employees-page .form-group{margin-bottom:0}.employees-page .form-group label{display:block;margin-bottom:7px;font-size:12px;line-height:1.3;font-weight:700;color:var(--text-primary, #111827)}.employees-page .form-group input,.employees-page .form-group select{width:100%;height:40px;border:1px solid var(--border-color, #d1d5db);border-radius:var(--radius-medium, 8px);box-sizing:border-box;background:var(--bg-surface, #fff);color:var(--text-primary, #111827);padding:0 12px;font-size:14px;line-height:40px;transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.employees-page .form-group input:hover:not(:disabled),.employees-page .form-group select:hover:not(:disabled){border-color:var(--border-hover, #d1d5db);background:var(--bg-muted, #f8fafc)}.employees-page .form-group input:focus,.employees-page .form-group select:focus{outline:0;border-color:var(--primary-color, #2563eb);box-shadow:0 0 0 3px var(--primary-soft, #eff6ff);background:var(--bg-surface, #fff)}.employees-page .form-group input:disabled,.employees-page .form-group select:disabled{cursor:not-allowed;background:var(--bg-muted, #f8fafc);color:var(--text-secondary, #687386)}.employees-page .form-group.has-error input,.employees-page .form-group.has-error select{border-color:var(--danger-hover, #dc2626)}.employees-page .form-group.has-error input:focus,.employees-page .form-group.has-error select:focus{outline:0;border-color:var(--danger-hover, #dc2626);box-shadow:0 0 0 3px var(--danger-soft, #fff1f2)}.employees-page .field-error{margin-top:6px;color:var(--danger-hover, #dc2626);font-size:12px;line-height:1.4;font-weight:700}.employees-page .form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.employees-page .employee-detail-content,.employees-page .employee-form-content{min-width:0;display:grid;gap:16px}.employees-page .employee-form-content input[type=date]{color-scheme:light}.dark .employees-page .employee-form-content input[type=date]{color-scheme:dark}.employees-page .employee-drawer-section{display:grid;gap:10px}.employees-page .employee-drawer-section h3{margin:0;font-size:15px}.employees-page .employee-summary-card{border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:12px;display:grid;gap:12px}.employees-page .employee-summary-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.employees-page .employee-summary-header strong,.employees-page .employee-summary-header span{display:block}.employees-page .employee-summary-header>div span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700;margin-top:4px}.employees-page .employee-summary-grid,.employees-page .employee-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.employees-page .employee-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.employees-page .employee-detail-card{min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:9px 10px;display:grid;gap:4px}.employees-page .employee-detail-card span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.employees-page .employee-detail-card strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.employees-page .employee-secondary-button,.employees-page .employee-danger-button,.employees-page .employee-primary-button{height:38px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;padding:0 14px;font:inherit;font-weight:700}.employees-page .employee-secondary-button:disabled,.employees-page .employee-danger-button:disabled,.employees-page .employee-primary-button:disabled{cursor:not-allowed;opacity:.56}.employees-page .employee-secondary-button:hover:not(:disabled){background:var(--primary-soft, #eff6ff);border-color:var(--primary-soft-border, #bfd4ff);color:var(--primary-color, #2563eb)}.employees-page .employee-primary-button{border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.employees-page .employee-primary-button:hover:not(:disabled){background:var(--primary-hover, #1d4ed8)}.employees-page .employee-danger-button{border-color:var(--danger-soft-border, #fecaca);color:var(--danger-hover, #dc2626)}.employees-page .employee-danger-button:hover:not(:disabled){background:var(--danger-soft, #fff1f2)}@keyframes employee-filter-in{0%{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}to{max-height:var(--employee-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}}@keyframes employee-filter-out{0%{max-height:var(--employee-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}to{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}}@media(max-width:1120px){.employees-page .employee-filter-bar,.employees-page .employee-filter-expanded{--employee-filter-open-height: 140px;grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.employees-page .employee-filter-bar,.employees-page .employee-filter-expanded{--employee-filter-open-height: 190px;grid-template-columns:1fr}.employees-page .employee-filter-actions{justify-content:stretch}.employees-page .employee-filter-toggle,.employees-page .employee-add-button{flex:1}.employees-page .employee-pagination{align-items:flex-start;flex-direction:column;padding:12px 14px}.employees-page .employee-page-controls{flex-wrap:wrap}.employees-page .employee-summary-grid,.employees-page .employee-detail-grid,.employees-page .form-grid{grid-template-columns:1fr}}.roles-page{display:grid;gap:18px;min-width:0}.roles-page .role-panel{min-width:0;position:relative;overflow:visible;background:var(--bg-surface, #ffffff);border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-large, 12px);box-shadow:var(--shadow-surface, 0 4px 12px rgba(23, 32, 51, .06))}.roles-page .role-command-bar{display:flex;align-items:center;justify-content:flex-start;padding:13px;border-bottom:1px solid var(--border-color, #dde3ec)}.roles-page .role-filter-bar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;justify-content:flex-start;padding:13px 13px 9px}.roles-page .role-filter-expanded{--role-filter-open-height: 96px;display:grid;grid-template-columns:repeat(2,minmax(150px,220px)) auto;gap:9px;align-items:center;justify-content:flex-start;max-height:0;overflow:hidden;padding:0 13px;opacity:0;pointer-events:none;transform:translateY(-6px)}.roles-page .role-filter-expanded.open{position:relative;z-index:30;overflow:visible;pointer-events:auto;animation:role-filter-in .18s ease both}.roles-page .role-filter-expanded.closing{overflow:hidden;pointer-events:none;animation:role-filter-out .18s ease both}.roles-page .role-filter-field{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;gap:7px;padding:0 11px;font:inherit;font-size:13px;font-weight:600}.roles-page .role-filter-search{width:min(420px,100%)}.roles-page .role-filter-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--text-primary, #172033);font:inherit;font-weight:600}.roles-page .role-filter-search input::-moz-placeholder{color:var(--text-secondary, #687386)}.roles-page .role-filter-search input::placeholder{color:var(--text-secondary, #687386)}.roles-page .role-filter-actions{display:flex;align-items:center;justify-content:flex-start;gap:9px}.roles-page .role-filter-toggle,.roles-page .role-add-button,.roles-page .role-clear-button{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;justify-content:space-between;gap:7px;padding:0 11px;cursor:pointer;font:inherit;font-size:13px;font-weight:700;white-space:nowrap}.roles-page .role-filter-toggle:hover,.roles-page .role-clear-button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-strong, #1d4ed8)}.roles-page .role-filter-toggle.open .role-toggle-chevron{transform:rotate(180deg)}.roles-page .role-add-button{justify-content:center;border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.roles-page .role-add-button:hover{background:var(--primary-hover, #1d4ed8)}.roles-page .role-clear-button{justify-content:center}.roles-page .role-clear-button:disabled{cursor:not-allowed;opacity:.52}.roles-page .role-filter-icon{width:16px;height:16px;flex:none}.roles-page .role-selection-button{min-width:40px;height:26px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--primary-color, #2563eb);cursor:pointer;font:inherit;font-weight:inherit;line-height:1}.roles-page .role-selection-button:hover,.roles-page .role-selection-button.active{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff)}.roles-page .role-pagination{min-height:49px;padding:0 13px;border-top:1px solid var(--border-color, #dde3ec);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-secondary, #687386);font-size:11px;font-weight:700}.roles-page .role-page-controls,.roles-page .role-page-summary{display:flex;align-items:center;gap:7px}.roles-page .role-page-summary{gap:12px;flex-wrap:wrap}.roles-page .role-page-summary label{display:inline-flex;align-items:center;gap:6px}.roles-page .role-page-summary select{height:29px;min-width:58px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);padding:0 8px;font:inherit;font-size:11px;font-weight:800}.roles-page .role-selected-summary{color:var(--text-primary, #172033)}.roles-page .role-page-button{min-width:31px;height:29px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;font:inherit;font-size:11px;font-weight:800}.roles-page .role-page-button-wide{padding:0 11px}.roles-page .role-page-button:hover:not(:disabled),.roles-page .role-page-button.active{border-color:var(--primary-color, #2563eb);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.roles-page .role-page-button:disabled{cursor:not-allowed;opacity:.52}.roles-page .status-badge,.roles-page .kind-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:600}.roles-page .role-description-cell{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.roles-page .role-status-button{border:0;cursor:pointer;font:inherit;line-height:1.3}.roles-page .role-status-button:hover:not(:disabled){filter:brightness(.97)}.roles-page .role-status-button:disabled{cursor:not-allowed;opacity:.64}.roles-page .role-table-link-button{max-width:100%;min-width:0;height:28px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--primary-color, #2563eb);display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;padding:0 9px;font:inherit;font-size:12px;font-weight:800}.roles-page .role-table-link-button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff)}.roles-page .role-table-link-button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roles-page .role-tenant-readonly{max-width:100%;min-width:0;min-height:28px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;gap:6px;padding:4px 9px;font-size:12px;font-weight:800}.roles-page .role-tenant-readonly span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roles-page .status-active{color:var(--success-color, #047857);background:var(--success-soft, #d1fae5)}.roles-page .status-inactive{color:var(--text-secondary, #6b7280);background:var(--bg-muted, #f3f4f6)}.roles-page .kind-system{color:var(--primary-color, #2563eb);background:var(--primary-soft, #eff6ff)}.roles-page .kind-custom{color:var(--text-secondary, #687386);background:var(--bg-muted, #f3f4f6)}.roles-page .form-group{margin-bottom:0}.roles-page .form-group label{display:block;margin-bottom:7px;font-size:12px;line-height:1.3;font-weight:700;color:var(--text-primary, #111827)}.roles-page .form-group input,.roles-page .form-group select,.roles-page .form-group textarea{width:100%;border:1px solid var(--border-color, #d1d5db);border-radius:var(--radius-medium, 8px);box-sizing:border-box;background:var(--bg-surface, #fff);color:var(--text-primary, #111827);transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.roles-page .form-group input,.roles-page .form-group select{height:40px;padding:0 12px;font-size:14px;line-height:40px}.roles-page .form-group select{cursor:pointer;color-scheme:light}.dark .roles-page .form-group select{color-scheme:dark}.roles-page .form-group textarea{min-height:128px;padding:10px 12px;font-size:14px;line-height:1.55;resize:vertical}.roles-page .form-group input:hover:not(:disabled),.roles-page .form-group select:hover:not(:disabled),.roles-page .form-group textarea:hover:not(:disabled){border-color:var(--border-hover, #d1d5db);background:var(--bg-muted, #f8fafc)}.roles-page .form-group input:focus,.roles-page .form-group select:focus,.roles-page .form-group textarea:focus{outline:0;border-color:var(--primary-color, #2563eb);box-shadow:0 0 0 3px var(--primary-soft, #eff6ff);background:var(--bg-surface, #fff)}.roles-page .form-group input:disabled,.roles-page .form-group select:disabled{cursor:not-allowed;background:var(--bg-muted, #f8fafc);color:var(--text-secondary, #687386)}.roles-page .form-group.has-error input,.roles-page .form-group.has-error select{border-color:var(--danger-hover, #dc2626)}.roles-page .form-group.has-error input:focus,.roles-page .form-group.has-error select:focus{outline:0;border-color:var(--danger-hover, #dc2626);box-shadow:0 0 0 3px var(--danger-soft, #fff1f2)}.roles-page .field-error{margin-top:6px;color:var(--danger-hover, #dc2626);font-size:12px;line-height:1.4;font-weight:700}.roles-page .form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.roles-page .role-detail-content,.roles-page .role-form-content,.roles-page .role-auth-content,.roles-page .role-tenant-content{min-width:0;display:grid;gap:16px}.roles-page .role-drawer-section{display:grid;gap:10px}.roles-page .role-drawer-section h3{margin:0;font-size:15px}.roles-page .role-summary-card{border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:12px;display:grid;gap:12px}.roles-page .role-summary-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.roles-page .role-summary-header strong,.roles-page .role-summary-header span{display:block}.roles-page .role-summary-header>div span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700;margin-top:4px}.roles-page .role-summary-grid,.roles-page .role-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.roles-page .role-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.roles-page .role-detail-card{min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:9px 10px;display:grid;gap:4px}.roles-page .role-detail-card span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.roles-page .role-detail-card strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.roles-page .role-description-block{min-height:72px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);color:var(--text-primary, #172033);padding:12px;font-size:13px;line-height:1.6}.roles-page .role-secondary-button,.roles-page .role-danger-button,.roles-page .role-primary-button{height:38px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;padding:0 14px;font:inherit;font-weight:700}.roles-page .role-secondary-button:disabled,.roles-page .role-danger-button:disabled,.roles-page .role-primary-button:disabled{cursor:not-allowed;opacity:.56}.roles-page .role-secondary-button:hover:not(:disabled){background:var(--primary-soft, #eff6ff);border-color:var(--primary-soft-border, #bfd4ff);color:var(--primary-color, #2563eb)}.roles-page .role-primary-button{border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.roles-page .role-primary-button:hover:not(:disabled){background:var(--primary-hover, #1d4ed8)}.roles-page .role-danger-button{border-color:var(--danger-soft-border, #fecaca);color:var(--danger-hover, #dc2626)}.roles-page .role-danger-button:hover:not(:disabled){background:var(--danger-soft, #fff1f2)}.roles-page .role-auth-summary{min-height:46px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 10px;color:var(--text-secondary, #687386);font-size:12px;font-weight:800}.roles-page .role-auth-content{gap:12px}.roles-page .role-auth-layout{min-width:0;display:block}.roles-page .role-auth-layout>.role-auth-section+.role-auth-section{display:none}.roles-page .role-auth-summary-main,.roles-page .role-auth-summary-actions{min-width:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.roles-page .role-auth-summary-actions{justify-content:flex-end;gap:7px}.roles-page .role-auth-summary-actions button{height:30px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;padding:0 10px;font:inherit;font-size:12px;font-weight:800}.roles-page .role-auth-summary-actions button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.roles-page .role-auth-summary-actions button:disabled{cursor:not-allowed;opacity:.52}.roles-page .role-auth-icon{width:16px;height:16px;color:var(--primary-color, #2563eb)}.roles-page .role-auth-section{height:min(64vh,calc(100vh - 260px));min-height:360px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);display:flex;flex-direction:column;padding:10px}.roles-page .role-auth-section h3{color:var(--text-primary, #172033);font-size:13px;font-weight:800}.roles-page .role-auth-tree{min-height:0;flex:1;display:grid;align-content:start;gap:4px;max-height:none;overflow:auto;padding-right:2px}.roles-page .role-auth-branch{display:grid;gap:4px}.roles-page .role-auth-permissions{min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:0 10px 4px 52px}.roles-page .role-auth-node,.roles-page .role-permission-item{min-height:38px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);display:flex;align-items:center;gap:8px;padding:8px 10px;text-align:left;cursor:pointer;font:inherit;transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease}.roles-page .role-auth-node:hover,.roles-page .role-permission-item:hover{background:var(--bg-muted, #f8fafc)}.roles-page .role-auth-node-checked,.roles-page .role-auth-node-indeterminate,.roles-page .role-permission-item.selected{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);box-shadow:inset 3px 0 0 var(--primary-color, #2563eb)}.roles-page .role-auth-node:disabled{cursor:not-allowed;opacity:.58}.roles-page .role-auth-state{min-width:34px;border-radius:999px;background:var(--bg-muted, #f3f4f6);color:var(--text-secondary, #687386);padding:2px 7px;font-size:11px;font-style:normal;font-weight:800;text-align:center}.roles-page .role-auth-node-checked .role-auth-state,.roles-page .role-auth-node-indeterminate .role-auth-state{background:var(--primary-color, #2563eb);color:#fff}.roles-page .role-auth-node span,.roles-page .role-permission-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700}.roles-page .role-auth-node em,.roles-page .role-permission-title em{margin-left:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary, #687386);font-style:normal;font-size:11px;font-weight:800}.roles-page .role-permission-grid{display:grid;grid-template-columns:1fr;gap:8px;max-height:min(54vh,540px);overflow:auto;padding-right:2px}.roles-page .role-permission-item{align-items:flex-start;cursor:default}.roles-page .role-permission-body{min-width:0;display:grid;gap:7px;flex:1}.roles-page .role-permission-title{min-width:0;display:flex;align-items:center;gap:8px}.roles-page .role-permission-chips{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.roles-page .role-permission-chip{max-width:100%;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:7px;background:var(--bg-muted, #fbfcfe);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;gap:5px;padding:3px 7px;cursor:pointer;font:inherit;font-size:11px;font-weight:800}.roles-page .role-permission-chip span,.roles-page .role-permission-chip code{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roles-page .role-permission-chip:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.roles-page .role-permission-chip.selected{border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.roles-page .role-permission-chip:disabled{cursor:not-allowed;opacity:.58}.roles-page .role-permission-chip code{color:var(--text-primary, #172033);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;font-weight:700}.roles-page .role-permission-chip-icon{width:12px;height:12px;color:var(--primary-color, #2563eb);flex:none}.roles-page .role-permission-chip.selected .role-permission-chip-icon{color:currentColor}.roles-page .role-auth-empty{border:1px dashed var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);color:var(--text-secondary, #687386);padding:12px;font-size:13px;font-weight:700}.roles-page .role-tenant-content{gap:8px}.roles-page .role-tenant-summary{min-height:40px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);color:var(--text-secondary, #687386);display:flex;align-items:center;gap:9px;padding:0 11px;font-size:12px;font-weight:800}.roles-page .role-tenant-option{width:100%;min-width:0;min-height:54px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);display:flex;align-items:center;gap:10px;cursor:pointer;padding:9px 11px;text-align:left;font:inherit}.roles-page .role-tenant-option input{width:15px;height:15px;accent-color:var(--primary-color, #2563eb);cursor:pointer;flex:none}.roles-page .role-tenant-option:hover:not(:disabled),.roles-page .role-tenant-option.selected{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff)}.roles-page .role-tenant-option:disabled{cursor:not-allowed;opacity:.7}.roles-page .role-tenant-option.primary:disabled{opacity:1}.roles-page .role-tenant-option-icon{width:17px;height:17px;color:var(--primary-color, #2563eb);flex:none}.roles-page .role-tenant-option span{min-width:0;display:grid;gap:3px;flex:1}.roles-page .role-tenant-option strong,.roles-page .role-tenant-option em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roles-page .role-tenant-option strong{font-size:13px;font-weight:800}.roles-page .role-tenant-option em{color:var(--text-secondary, #687386);font-size:12px;font-style:normal;font-weight:700}.roles-page .role-tenant-option i{color:var(--text-secondary, #687386);font-size:12px;font-style:normal;font-weight:800;white-space:nowrap}@keyframes role-filter-in{0%{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}to{max-height:var(--role-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}}@keyframes role-filter-out{0%{max-height:var(--role-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}to{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}}@media(max-width:1120px){.roles-page .role-filter-bar,.roles-page .role-filter-expanded{--role-filter-open-height: 140px;grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.roles-page .role-filter-bar,.roles-page .role-filter-expanded{--role-filter-open-height: 190px;grid-template-columns:1fr}.roles-page .role-filter-actions{justify-content:stretch}.roles-page .role-filter-toggle,.roles-page .role-add-button{flex:1}.roles-page .role-pagination{align-items:flex-start;flex-direction:column;padding:12px 14px}.roles-page .role-page-controls{flex-wrap:wrap}.roles-page .role-auth-summary{align-items:stretch;flex-direction:column}.roles-page .role-auth-summary-actions{justify-content:stretch}.roles-page .role-auth-summary-actions button{flex:1}.roles-page .role-auth-tree,.roles-page .role-permission-grid{flex:none;max-height:none}.roles-page .role-auth-layout{grid-template-columns:1fr}.roles-page .role-auth-section{height:auto;min-height:0}.roles-page .role-summary-grid,.roles-page .role-detail-grid,.roles-page .role-permission-grid,.roles-page .form-grid{grid-template-columns:1fr}}.menus-page{display:grid;gap:18px;min-width:0}.menus-page .menu-panel{min-width:0;position:relative;overflow:visible;background:var(--bg-surface, #ffffff);border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-large, 12px);box-shadow:var(--shadow-surface, 0 4px 12px rgba(23, 32, 51, .06))}.menus-page .data-table td{position:relative;overflow:visible}.menus-page .data-table-row{transition:background-color .16s ease,box-shadow .16s ease,transform .16s ease}.menus-page .data-table-row.clickable:hover,.menus-page .data-table-row.clickable:focus{transform:translateY(-1px);box-shadow:inset 3px 0 0 var(--primary-color, #2563eb)}.menus-page .data-table-row.clickable:active{transform:translateY(0) scale(.998)}.menus-page .menu-command-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:9px;padding:13px;border-bottom:1px solid var(--border-color, #dde3ec)}.menus-page .menu-filter-bar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;justify-content:flex-start;padding:13px 13px 9px}.menus-page .menu-filter-expanded{--menu-filter-open-height: 96px;display:grid;grid-template-columns:repeat(3,minmax(150px,220px)) auto;gap:9px;align-items:center;justify-content:flex-start;max-height:0;overflow:hidden;padding:0 13px;opacity:0;pointer-events:none;transform:translateY(-6px)}.menus-page .menu-filter-expanded.open{position:relative;z-index:30;overflow:visible;pointer-events:auto;animation:menu-filter-in .18s ease both}.menus-page .menu-filter-expanded.closing{overflow:hidden;pointer-events:none;animation:menu-filter-out .18s ease both}.menus-page .menu-filter-field{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;gap:7px;padding:0 11px;font:inherit;font-size:13px;font-weight:600}.menus-page .menu-filter-search{width:min(420px,100%)}.menus-page .menu-filter-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--text-primary, #172033);font:inherit;font-weight:600}.menus-page .menu-filter-search input::-moz-placeholder{color:var(--text-secondary, #687386)}.menus-page .menu-filter-search input::placeholder{color:var(--text-secondary, #687386)}.menus-page .menu-filter-actions{display:flex;align-items:center;justify-content:flex-start;gap:9px}.menus-page .menu-filter-toggle,.menus-page .menu-add-button,.menus-page .menu-command-button,.menus-page .menu-clear-button{height:34px;min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 11px;cursor:pointer;font:inherit;font-size:13px;font-weight:700;white-space:nowrap;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease}.menus-page .menu-filter-toggle:hover,.menus-page .menu-command-button:hover:not(:disabled),.menus-page .menu-clear-button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-strong, #1d4ed8);transform:translateY(-1px)}.menus-page .menu-filter-toggle:active,.menus-page .menu-add-button:active,.menus-page .menu-command-button:active:not(:disabled),.menus-page .menu-clear-button:active:not(:disabled){transform:translateY(0) scale(.97)}.menus-page .menu-filter-toggle.open .menu-toggle-chevron{transform:rotate(180deg)}.menus-page .menu-add-button{border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.menus-page .menu-add-button:hover{background:var(--primary-hover, #1d4ed8)}.menus-page .menu-command-button:disabled,.menus-page .menu-clear-button:disabled{cursor:not-allowed;opacity:.52}.menus-page .menu-filter-icon,.menus-page .menu-button-icon,.menus-page .menu-action-icon,.menus-page .menu-badge-icon{width:16px;height:16px;flex:none}.menus-page .menu-button-icon{width:15px;height:15px}.menus-page .menu-action-icon,.menus-page .menu-badge-icon{width:14px;height:14px}.menus-page .menu-name-cell{min-width:0;display:inline-flex;align-items:center;gap:6px;max-width:100%}.menus-page .menu-name-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.menus-page .menu-title-icon,.menus-page .menu-summary-icon,.menus-page .menu-icon-current-preview{flex:none;display:inline-grid;place-items:center;border:1px solid var(--border-color, #dde3ec);background:var(--bg-muted, #fbfcfe);color:var(--primary-color, #2563eb)}.menus-page .menu-title-icon{width:26px;height:26px;border-radius:7px}.menus-page .menu-icon-preview{width:16px;height:16px}.menus-page .menu-summary-icon{width:42px;height:42px;border-radius:8px}.menus-page .menu-summary-icon .menu-icon-preview{width:20px;height:20px}.menus-page .menu-cell-ellipsis{display:block;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menus-page .menu-expand-button,.menus-page .menu-expand-placeholder{width:24px;height:24px;flex:none}.menus-page .menu-expand-button{border:0;border-radius:6px;background:transparent;color:var(--text-secondary, #687386);cursor:pointer;display:inline-grid;place-items:center;padding:0}.menus-page .menu-expand-button:hover:not(:disabled){background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.menus-page .menu-expand-button:disabled{cursor:default;opacity:.55}.menus-page .menu-expand-icon{width:16px;height:16px}.menus-page .status-badge,.menus-page .visible-badge,.menus-page .type-badge{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:22px;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:700;line-height:1;white-space:nowrap}.menus-page .menu-toggle-badge{border:0;cursor:pointer;font:inherit;transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}.menus-page .menu-toggle-badge:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 5px 12px #2563eb29;filter:saturate(1.08)}.menus-page .menu-toggle-badge:active:not(:disabled){transform:translateY(0) scale(.94)}.menus-page .menu-toggle-badge:disabled{cursor:wait;opacity:.68}.menus-page .status-active,.menus-page .visible-badge.visible{color:var(--success-color, #047857);background:var(--success-soft, #d1fae5)}.menus-page .status-inactive,.menus-page .visible-badge.hidden{color:var(--text-secondary, #6b7280);background:var(--bg-muted, #f3f4f6)}.menus-page .type-catalog,.menus-page .type-directory{color:var(--primary-color, #2563eb);background:var(--primary-soft, #eff6ff)}.menus-page .type-menu{color:var(--success-color, #047857);background:var(--success-soft, #d1fae5)}.menus-page .type-button{color:#a16207;background:#fef3c7}.menus-page .type-permission{color:var(--danger-hover, #dc2626);background:var(--danger-soft, #fff1f2)}.menus-page .menu-table-actions{display:inline-flex;align-items:center;gap:5px}.menus-page .menu-table-actions button{width:28px;height:28px;border:1px solid var(--border-color, #dde3ec);border-radius:7px;background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;display:inline-grid;place-items:center;padding:0;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.menus-page .menu-table-actions button:hover{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb);transform:translateY(-1px)}.menus-page .menu-table-actions button:active{transform:translateY(0) scale(.94)}.menus-page .menu-table-actions button.danger{color:var(--danger-hover, #dc2626)}.menus-page .menu-table-actions button.danger:hover{border-color:var(--danger-soft-border, #fecaca);background:var(--danger-soft, #fff1f2)}.menus-page .menu-drag-handle{width:28px;height:28px;border-radius:7px;color:var(--text-secondary, #687386);display:inline-grid;place-items:center;cursor:grab;transition:background-color .16s ease,color .16s ease,transform .16s ease}.menus-page .menu-drag-handle:hover{background:var(--bg-hover, #f8fbff);color:var(--primary-color, #2563eb);transform:translateY(-1px)}.menus-page .menu-row-dragging{opacity:.44}.menus-page .menu-row-drop-target{background:var(--primary-soft, #eff6ff)}.menus-page .menu-row-drop-before{box-shadow:inset 0 2px 0 var(--primary-color, #2563eb)}.menus-page .menu-row-drop-after{box-shadow:inset 0 -2px 0 var(--primary-color, #2563eb)}.menu-drag-preview{position:fixed;top:0;left:0;z-index:2147483647;min-width:190px;max-width:280px;border:1px solid var(--primary-soft-border, #bfd4ff);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #ffffff);color:var(--text-primary, #172033);box-shadow:0 14px 30px #1720332e;padding:10px 12px;pointer-events:none;transform:translate(-200%,-200%)}.menu-drag-preview strong,.menu-drag-preview span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-drag-preview strong{font-size:13px}.menu-drag-preview span{margin-top:4px;color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.menus-page .menu-permission-hover{position:relative;display:inline-flex;max-width:100%}.menus-page .menu-permission-trigger{min-width:0;max-width:100%;min-height:26px;border:1px solid var(--border-color, #dde3ec);border-radius:999px;background:var(--bg-muted, #fbfcfe);color:var(--text-primary, #172033);display:inline-flex;align-items:center;gap:5px;padding:0 9px;font-size:12px;font-weight:700;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.menus-page .menu-permission-trigger.empty{color:var(--text-secondary, #687386)}.menus-page .menu-permission-hover:hover .menu-permission-trigger{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb);transform:translateY(-1px)}.menu-permission-popover{position:fixed;z-index:2147483000;width:min(360px,72vw);max-height:260px;overflow:auto;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #ffffff);background-clip:padding-box;color:var(--text-primary, #172033);box-shadow:0 18px 38px #17203338;padding:8px;opacity:1;pointer-events:auto;transform:translateY(0) scale(1);transform-origin:top left;isolation:isolate;animation:menu-permission-popover-in .14s ease both}.menu-permission-popover-row{min-width:0;display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px;align-items:center;padding:6px;border-radius:6px;background:var(--bg-surface, #fff)}.menu-permission-popover-row:hover{background:var(--bg-muted, #fbfcfe)}.menu-permission-popover-row span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.menu-permission-popover-row code{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary, #172033);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px}.menus-page .menu-pagination{min-height:49px;padding:0 13px;border-top:1px solid var(--border-color, #dde3ec);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-secondary, #687386);font-size:11px;font-weight:700}.menus-page .menu-page-summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.menus-page .menu-filter-hint{color:var(--text-primary, #172033)}.menus-page .menu-detail-content,.menus-page .menu-form-content{min-width:0;display:grid;gap:16px}.menus-page .menu-drawer-section{display:grid;gap:10px}.menus-page .menu-drawer-section h3{margin:0;font-size:15px}.menus-page .menu-section-header{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:10px}.menus-page .menu-section-header h3{min-width:0}.menus-page .menu-summary-card{border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:12px;display:grid;gap:12px}.menus-page .menu-summary-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.menus-page .menu-summary-header>div strong,.menus-page .menu-summary-header>div span{display:block}.menus-page .menu-summary-header>div{min-width:0}.menus-page .menu-summary-header>div strong,.menus-page .menu-summary-header>div span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menus-page .menu-summary-header>div span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700;margin-top:4px}.menus-page .menu-summary-grid,.menus-page .menu-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.menus-page .menu-detail-card{min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);padding:9px 10px;display:grid;gap:4px}.menus-page .menu-detail-card span{color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.menus-page .menu-detail-card strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.menus-page .menu-permission-editor-list{min-width:0;display:grid;gap:8px}.menus-page .menu-permission-prefix{min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);display:grid;grid-template-columns:76px minmax(0,1fr);gap:8px;align-items:center;padding:8px}.menus-page .menu-permission-prefix span,.menus-page .menu-permission-row-header span{color:var(--text-secondary, #687386);font-size:12px;font-weight:800}.menus-page .menu-permission-prefix code{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary, #172033);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;font-weight:700}.menus-page .menu-permission-row{min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px}.menus-page .menu-permission-row-header{min-height:30px;background:transparent;border-color:transparent;padding-top:0;padding-bottom:0}.menus-page .menu-permission-row.required{background:var(--bg-surface, #fff)}.menus-page .menu-permission-name{min-width:0;color:var(--text-secondary, #687386);font-size:12px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menus-page .menu-permission-name-input{min-width:0;width:100%;height:32px;border:1px solid var(--border-color, #d1d5db);border-radius:6px;background:var(--bg-surface, #fff);color:var(--text-primary, #172033);padding:0 9px;font:inherit;font-size:12px;color-scheme:light}.menus-page .menu-permission-row code{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--border-color, #dde3ec);border-radius:6px;background:var(--bg-surface, #fff);color:var(--text-primary, #172033);padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.2}.menus-page .menu-permission-edit-field{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) 30px 30px;gap:6px;align-items:center}.menus-page .menu-permission-code-prefix{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--border-color, #dde3ec);border-radius:6px;background:var(--bg-muted, #fbfcfe);color:var(--text-secondary, #687386);padding:0 8px;height:32px;display:inline-flex;align-items:center;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;font-weight:700}.menus-page .menu-permission-edit-field input,.menus-page .menu-custom-permission input{min-width:0;width:100%;height:32px;border:1px solid var(--border-color, #d1d5db);border-radius:6px;background:var(--bg-surface, #fff);color:var(--text-primary, #172033);padding:0 9px;font:inherit;font-size:12px;color-scheme:light}.dark .menus-page .menu-permission-name-input,.dark .menus-page .menu-permission-edit-field input,.dark .menus-page .menu-custom-permission input{color-scheme:dark}.menus-page .menu-permission-name-input:focus,.menus-page .menu-permission-edit-field input:focus,.menus-page .menu-custom-permission input:focus{outline:0;border-color:var(--primary-color, #2563eb);box-shadow:0 0 0 3px var(--primary-soft, #eff6ff)}.menus-page .menu-custom-permission input:disabled{cursor:wait;background:var(--bg-muted, #f8fafc);color:var(--text-secondary, #687386)}.menus-page .menu-permission-row-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:5px}.menus-page .menu-permission-row-actions button,.menus-page .menu-permission-edit-field button{width:30px;height:30px;border:1px solid var(--border-color, #dde3ec);border-radius:7px;background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;display:inline-grid;place-items:center;padding:0;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.menus-page .menu-permission-row-actions button:disabled,.menus-page .menu-permission-edit-field button:disabled{cursor:wait;opacity:.58}.menus-page .menu-permission-row-actions button:hover:not(:disabled),.menus-page .menu-permission-edit-field button:hover:not(:disabled){border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb);transform:translateY(-1px)}.menus-page .menu-permission-row-actions button:active:not(:disabled),.menus-page .menu-permission-edit-field button:active:not(:disabled){transform:translateY(0) scale(.94)}.menus-page .menu-permission-required{min-height:24px;border-radius:999px;background:var(--success-soft, #d1fae5);color:var(--success-color, #047857);display:inline-flex;align-items:center;justify-content:center;padding:0 8px;font-size:11px;font-weight:800}.menus-page .menu-permission-empty{color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.menus-page .form-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}.menus-page .menu-custom-permission{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.menus-page .menu-detail-permission-add{grid-template-columns:minmax(110px,.8fr) auto minmax(0,1fr) auto;align-items:center}.menus-page .menu-custom-permission button{min-height:34px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;padding:0 12px;font:inherit;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.menus-page .menu-custom-permission button:hover:not(:disabled){border-color:var(--danger-soft-border, #fecaca);background:var(--danger-soft, #fff1f2);color:var(--danger-hover, #dc2626);transform:translateY(-1px)}.menus-page .menu-custom-permission button:active:not(:disabled){transform:translateY(0) scale(.97)}.menus-page .menu-custom-permission button:disabled{cursor:not-allowed;opacity:.56}.menus-page .form-group{margin-bottom:0}.menus-page .form-group label{display:block;margin-bottom:7px;font-size:12px;line-height:1.3;font-weight:700;color:var(--text-primary, #111827)}.menus-page .form-group input,.menus-page .form-group select{width:100%;height:40px;border:1px solid var(--border-color, #d1d5db);border-radius:var(--radius-medium, 8px);box-sizing:border-box;background:var(--bg-surface, #fff);color:var(--text-primary, #111827);padding:0 12px;font-size:14px;line-height:40px;color-scheme:light;transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.menus-page .menu-icon-picker{min-width:0;display:grid;gap:8px}.menus-page .menu-icon-current{min-width:0;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-muted, #fbfcfe);display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px}.menus-page .menu-icon-current-preview{width:40px;height:40px;border-radius:8px;background:var(--bg-surface, #fff);align-items:center;justify-content:center}.menus-page .menu-icon-current-preview .menu-icon-preview,.menus-page .menu-title-icon .menu-icon-preview,.menus-page .menu-summary-icon .menu-icon-preview{display:block;margin:auto}.menus-page .menu-icon-current>div strong,.menus-page .menu-icon-current>div span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menus-page .menu-icon-current>div strong{font-size:13px}.menus-page .menu-icon-current>div span{margin-top:3px;color:var(--text-secondary, #687386);font-size:12px;font-weight:700}.menus-page .menu-icon-current button{min-height:32px;border:1px solid var(--border-color, #dde3ec);border-radius:7px;background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);cursor:pointer;padding:0 10px;font:inherit;font-size:12px;font-weight:800}.menus-page .menu-icon-current button:hover:not(:disabled){border-color:var(--danger-soft-border, #fecaca);background:var(--danger-soft, #fff1f2);color:var(--danger-hover, #dc2626)}.menus-page .menu-icon-current button:disabled{cursor:not-allowed;opacity:.52}.menus-page .form-group .menu-icon-search{height:36px;border:1px solid var(--border-color, #d1d5db);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-secondary, #687386);display:flex;align-items:center;justify-content:flex-start;gap:8px;padding:0 10px;margin:0}.menus-page .form-group .menu-icon-search input{width:100%;min-width:0;height:100%;min-height:0;border:0;border-radius:0;outline:0;background:transparent;color:var(--text-primary, #111827);box-shadow:none;font:inherit;font-size:13px;font-weight:600;line-height:1;padding:0}.menus-page .menu-icon-grid{height:36vh;overflow:auto;display:grid;align-content:start;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;padding-right:2px}.menus-page .menu-icon-option{min-width:0;min-height:48px;border:1px solid var(--border-color, #dde3ec);border-radius:7px;background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;display:grid;place-items:center;gap:4px;padding:6px 4px;font:inherit;font-size:11px;font-weight:800;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.menus-page .menu-icon-option:hover,.menus-page .menu-icon-option.selected{border-color:var(--primary-soft-border, #bfd4ff);background:var(--primary-soft, #eff6ff);color:var(--primary-color, #2563eb)}.menus-page .menu-icon-option:hover{transform:translateY(-1px)}.menus-page .menu-icon-option-icon{width:16px;height:16px}.menus-page .menu-icon-option span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menus-page .menu-icon-empty{grid-column:1 / -1;border:1px dashed var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);color:var(--text-secondary, #687386);padding:16px;text-align:center;font-size:12px;font-weight:700}.dark .menus-page .form-group input,.dark .menus-page .form-group select{color-scheme:dark}.menus-page .form-group input:hover:not(:disabled),.menus-page .form-group select:hover:not(:disabled){border-color:var(--border-hover, #d1d5db);background:var(--bg-muted, #f8fafc)}.menus-page .form-group input:focus,.menus-page .form-group select:focus{outline:0;border-color:var(--primary-color, #2563eb);box-shadow:0 0 0 3px var(--primary-soft, #eff6ff);background:var(--bg-surface, #fff)}.menus-page .form-group input:disabled,.menus-page .form-group select:disabled{cursor:not-allowed;background:var(--bg-muted, #f8fafc);color:var(--text-secondary, #687386)}.menus-page .form-group.has-error input,.menus-page .form-group.has-error select{border-color:var(--danger-hover, #dc2626)}.menus-page .form-group.has-error input:focus,.menus-page .form-group.has-error select:focus{border-color:var(--danger-hover, #dc2626);box-shadow:0 0 0 3px var(--danger-soft, #fff1f2)}.menus-page .field-error{margin-top:6px;color:var(--danger-hover, #dc2626);font-size:12px;line-height:1.4;font-weight:700}.menus-page .menu-secondary-button,.menus-page .menu-danger-button,.menus-page .menu-primary-button{min-height:38px;border:1px solid var(--border-color, #dde3ec);border-radius:var(--radius-medium, 8px);background:var(--bg-surface, #fff);color:var(--text-primary, #172033);cursor:pointer;padding:0 14px;font:inherit;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease}.menus-page .menu-secondary-button.compact{min-height:32px;padding:0 10px;font-size:12px}.menus-page .menu-secondary-button:disabled,.menus-page .menu-danger-button:disabled,.menus-page .menu-primary-button:disabled{cursor:not-allowed;opacity:.56}.menus-page .menu-secondary-button:hover:not(:disabled){background:var(--primary-soft, #eff6ff);border-color:var(--primary-soft-border, #bfd4ff);color:var(--primary-color, #2563eb);transform:translateY(-1px)}.menus-page .menu-primary-button{border-color:var(--primary-color, #2563eb);background:var(--primary-color, #2563eb);color:#fff}.menus-page .menu-primary-button:hover:not(:disabled){background:var(--primary-hover, #1d4ed8);transform:translateY(-1px)}.menus-page .menu-danger-button{border-color:var(--danger-soft-border, #fecaca);color:var(--danger-hover, #dc2626)}.menus-page .menu-danger-button:hover:not(:disabled){background:var(--danger-soft, #fff1f2);transform:translateY(-1px)}.menus-page .menu-secondary-button:active:not(:disabled),.menus-page .menu-danger-button:active:not(:disabled),.menus-page .menu-primary-button:active:not(:disabled){transform:translateY(0) scale(.97)}@keyframes menu-filter-in{0%{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}to{max-height:var(--menu-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}}@keyframes menu-filter-out{0%{max-height:var(--menu-filter-open-height);padding-bottom:10px;opacity:1;transform:translateY(0)}to{max-height:0;padding-bottom:0;opacity:0;transform:translateY(-6px)}}@keyframes menu-permission-popover-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:1120px){.menus-page .menu-filter-expanded{--menu-filter-open-height: 140px;grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.menus-page .menu-filter-bar,.menus-page .menu-filter-expanded{--menu-filter-open-height: 230px;grid-template-columns:1fr}.menus-page .menu-filter-search,.menus-page .menu-filter-actions,.menus-page .menu-filter-toggle,.menus-page .menu-add-button,.menus-page .menu-command-button,.menus-page .menu-clear-button{width:100%}.menus-page .menu-command-bar{align-items:stretch}.menus-page .menu-pagination{align-items:flex-start;flex-direction:column;padding:12px 14px}.menus-page .menu-summary-grid,.menus-page .menu-detail-grid,.menus-page .form-grid{grid-template-columns:1fr}.menus-page .menu-section-header{align-items:stretch;flex-direction:column}.menus-page .menu-section-header .menu-secondary-button{width:100%}.menus-page .menu-permission-row,.menus-page .menu-permission-prefix,.menus-page .menu-permission-edit-field,.menus-page .menu-detail-permission-add{grid-template-columns:1fr}.menus-page .menu-permission-row-header{display:none}.menus-page .menu-permission-row-actions{justify-content:flex-start}.menus-page .menu-icon-grid{height:36vh;grid-template-columns:repeat(5,minmax(0,1fr))}.menus-page .menu-icon-current{grid-template-columns:auto minmax(0,1fr)}.menus-page .menu-icon-current button{grid-column:1 / -1;width:100%}.menu-permission-popover{width:min(300px,78vw)}.menu-permission-popover-row{grid-template-columns:1fr}}
