:root{--ex-primary: var(--fringe-active);--ex-primary-hover: var(--accent-primary-hover);--ex-primary-light: color-mix(in srgb, var(--fringe-active) 10%, transparent);--ex-secondary: var(--fringe-working);--ex-secondary-hover: var(--accent-secondary);--ex-accent: var(--accent-secondary);--ex-accent-hover: var(--accent-primary-hover);--ex-success: var(--status-success);--ex-success-hover: var(--status-success);--ex-success-light: var(--status-success-bg);--ex-success-border: var(--status-success-border);--ex-warning: var(--status-warning);--ex-warning-hover: var(--status-warning);--ex-warning-light: var(--status-warning-bg);--ex-warning-border: var(--status-warning-border);--ex-danger: var(--status-error);--ex-danger-hover: var(--status-error);--ex-danger-light: var(--status-error-bg);--ex-danger-border: var(--status-error-border);--ex-info: var(--status-info);--ex-info-hover: var(--status-info);--ex-info-light: var(--status-info-bg);--ex-info-border: var(--status-info-border);--ex-text-primary: var(--text-primary);--ex-text-secondary: var(--text-secondary);--ex-text-tertiary: var(--text-tertiary);--ex-text-muted: var(--text-muted);--ex-text-disabled: var(--text-muted);--ex-text-inverse: var(--text-inverse);--ex-bg-primary: var(--bg-primary);--ex-bg-secondary: var(--bg-secondary);--ex-bg-tertiary: var(--bg-tertiary);--ex-bg-hover: var(--bg-hover);--ex-bg-active: var(--bg-active);--ex-bg-dark: var(--text-primary);--ex-bg-darker: var(--text-primary);--ex-border-light: var(--border-secondary);--ex-border-default: var(--border-primary);--ex-border-dark: var(--text-muted);--ex-border-focus: var(--fringe-active);--ex-overlay-light: var(--modal-overlay);--ex-overlay-dark: var(--modal-overlay);--ex-track-insert-bg: transparent;--ex-track-insert-text: var(--fringe-settled);--ex-track-delete-bg: transparent;--ex-track-delete-text: var(--status-error);--ex-track-modify-bg: transparent;--ex-track-modify-text: var(--fringe-working);--ex-space-0: 0;--ex-space-1: 4px;--ex-space-2: 8px;--ex-space-3: 12px;--ex-space-4: 16px;--ex-space-5: 20px;--ex-space-6: 24px;--ex-space-8: 32px;--ex-space-10: 40px;--ex-space-12: 48px;--ex-space-16: 64px;--ex-font-family: var(--font-ui);--ex-font-mono: var(--font-mono);--ex-font-xs: 12px;--ex-font-sm: 13.5px;--ex-font-base: 15px;--ex-font-md: 15px;--ex-font-lg: 17px;--ex-font-xl: 20px;--ex-font-2xl: 24px;--ex-font-3xl: 30px;--ex-line-height-tight: 1.25;--ex-line-height-normal: 1.5;--ex-line-height-relaxed: 1.75;--ex-font-weight-normal: 400;--ex-font-weight-medium: 500;--ex-font-weight-semibold: 600;--ex-font-weight-bold: 700;--ex-radius-none: 0;--ex-radius-sm: var(--corner);--ex-radius-md: var(--corner);--ex-radius-lg: var(--corner-lg);--ex-radius-xl: var(--corner-lg);--ex-radius-2xl: var(--corner-lg);--ex-radius-full: 9999px;--ex-shadow-xs: none;--ex-shadow-sm: none;--ex-shadow-md: var(--lift);--ex-shadow-lg: var(--lift);--ex-shadow-xl: var(--lift-hi);--ex-shadow-2xl: var(--lift-hi);--ex-shadow-focus: var(--bloom);--ex-transition-fast: var(--transition-fast);--ex-transition-base: var(--transition-normal);--ex-transition-slow: var(--transition-slow);--ex-transition-smooth: var(--transition-slow);--ex-transition-bounce: var(--transition-slow);--ex-z-dropdown: 100;--ex-z-sticky: 200;--ex-z-fixed: 300;--ex-z-sidebar: 400;--ex-z-popover: 700;--ex-z-tooltip: 800;--ex-z-modal-backdrop: 1000;--ex-z-modal: 1010;--ex-z-confirm: 1100;--ex-z-toast: 10001;--ex-z-max: 9999;--ex-bp-sm: 480px;--ex-bp-md: 768px;--ex-bp-lg: 1024px;--ex-bp-xl: 1280px;--ex-bp-2xl: 1536px;--ex-sidebar-width: 292px;--ex-sidebar-collapsed-width: 12px;--ex-sidebar-toggle-width: 5px;--ex-modal-width-sm: 400px;--ex-modal-width-md: 500px;--ex-modal-width-lg: 640px;--ex-modal-width-xl: 800px;--ex-modal-width-full: 90vw;--ex-toolbar-height: 38px;--ex-toolbar-btn-size: 30px;--ex-input-height: var(--pitch-lg);--ex-input-height-sm: var(--pitch);--ex-input-height-lg: 42px}.ex-select-none{-webkit-user-select:none;user-select:none}.ex-select-text{-webkit-user-select:text;user-select:text}.ex-select-all{-webkit-user-select:all;user-select:all}.ex-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--ex-space-2);min-height:var(--pitch-lg);padding:6px 14px;font-size:var(--t-body);font-weight:500;line-height:1.2;text-decoration:none;color:var(--text-secondary);border:var(--rule) solid transparent;transition:color var(--transition-fast),border-color var(--transition-fast),background-color var(--transition-fast),box-shadow var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none}.ex-btn:hover:not(:disabled){background-color:var(--bg-hover)}.ex-btn:active:not(:disabled){transform:none}.ex-btn:disabled,.ex-btn.ex-disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.ex-btn-primary:disabled,.ex-btn-primary.ex-disabled,.ex-btn-danger:disabled,.ex-btn-danger.ex-disabled,.ex-btn-success:disabled,.ex-btn-success.ex-disabled{opacity:1;color:var(--text-secondary);background-color:var(--bg-tertiary);border-color:var(--bg-tertiary);box-shadow:none;text-shadow:none}.ex-ripple-container,.ex-ripple{display:none}.ex-btn-primary{--fx: var(--accent-primary);font-weight:600;color:var(--accent-contrast);background-color:var(--accent-primary);border-color:var(--accent-primary)}.ex-btn-primary:hover:not(:disabled){color:var(--accent-contrast);background-color:var(--accent-primary-hover);border-color:var(--accent-primary-hover)}.ex-btn-secondary,.ex-btn-outline,.ex-btn-light,.ex-btn-dark{color:var(--text-secondary);border-color:var(--border-primary)}.ex-btn-secondary:hover:not(:disabled),.ex-btn-outline:hover:not(:disabled),.ex-btn-light:hover:not(:disabled),.ex-btn-dark:hover:not(:disabled){background-color:var(--bg-hover);border-color:var(--text-muted)}.ex-btn-ghost{border-color:transparent}.ex-btn-ghost:hover:not(:disabled){background-color:var(--bg-hover)}.ex-btn-danger{--fx: var(--status-error);color:var(--btn-danger-text);background-color:var(--btn-danger-bg);border-color:var(--btn-danger-bg)}.ex-btn-danger:hover:not(:disabled){color:var(--btn-danger-text);background-color:var(--btn-danger-hover);border-color:var(--btn-danger-hover)}.ex-btn-success{--fx: var(--status-success);color:var(--status-success);border-color:color-mix(in srgb,var(--fx) 45%,transparent)}.ex-btn-success:hover:not(:disabled){background-color:var(--status-success-bg);border-color:var(--status-success)}.ex-btn-glass{border-color:var(--border-primary);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.ex-btn-sm{padding:6px 12px;font-size:var(--ex-font-sm)}.ex-btn-lg{padding:14px 28px;font-size:var(--ex-font-md)}.ex-btn-icon{padding:var(--ex-space-2);width:var(--ex-toolbar-btn-size);height:var(--ex-toolbar-btn-size)}.ex-btn-icon.ex-btn-sm{width:28px;height:28px;padding:4px}.ex-btn-icon.ex-btn-lg{width:44px;height:44px;padding:var(--ex-space-3)}.ex-btn-glass{background:color-mix(in srgb,var(--text-primary) 15%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ex-text-inverse);border:1px solid color-mix(in srgb,var(--text-primary) 20%,transparent)}.ex-btn-glass:hover:not(:disabled){background:color-mix(in srgb,var(--text-primary) 25%,transparent);border-color:color-mix(in srgb,var(--text-primary) 30%,transparent)}.ex-btn-fullwidth{width:100%}.ex-btn-loading{position:relative;pointer-events:none}.ex-btn-spinner{display:inline-flex;align-items:center;justify-content:center}.ex-btn-spinner .ex-spinner{width:16px;height:16px;animation:ex-spin .8s linear infinite}.ex-btn-icon-left,.ex-btn-icon-right{display:inline-flex;align-items:center;color:inherit}.ex-btn-icon-left .riso-icon,.ex-btn-icon-right .riso-icon{color:inherit}.ex-btn-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:var(--ex-font-weight-semibold);color:var(--text-inverse);background-color:var(--ex-color-danger, var(--status-error));margin-left:var(--ex-space-2)}.ex-btn-icon .ex-btn-badge{position:absolute;top:-4px;right:-4px;margin-left:0}@keyframes ex-modal-overlay-enter{0%{opacity:0;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px)}to{opacity:1;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}}@keyframes ex-modal-overlay-exit{0%{opacity:1;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}to{opacity:0;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px)}}@keyframes ex-modal-enter{0%{opacity:0;transform:translateY(40px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ex-modal-exit{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(20px) scale(.95)}}.ex-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--modal-overlay);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:var(--ex-z-modal-backdrop);padding:var(--ex-space-4);animation:ex-modal-overlay-enter .35s ease-out forwards}.ex-modal-overlay.ex-modal-closing{animation:ex-modal-overlay-exit .25s ease-in forwards}.ex-modal-overlay:has(>.ex-confirm-dialog){z-index:var(--ex-z-confirm)}.ex-modal{position:relative;background-color:var(--ex-bg-primary);box-shadow:var(--ex-shadow-2xl);width:100%;max-width:var(--ex-modal-width-md);max-height:calc(100vh - var(--ex-space-8));display:flex;flex-direction:column;overflow:hidden;animation:ex-modal-enter .4s cubic-bezier(.16,1,.3,1) forwards;z-index:var(--ex-z-modal)}.ex-modal-closing .ex-modal{animation:ex-modal-exit .25s ease-in forwards}@media(prefers-reduced-motion:reduce){.ex-modal-overlay{animation:ex-fade-in .01ms ease forwards}.ex-modal-overlay.ex-modal-closing{animation:ex-fade-out .01ms ease forwards}.ex-modal{animation:ex-fade-in .01ms ease forwards}.ex-modal-closing .ex-modal{animation:ex-fade-out .01ms ease forwards}}.ex-modal-sm{max-width:var(--ex-modal-width-sm)}.ex-modal-lg{max-width:var(--ex-modal-width-lg)}.ex-modal-xl{max-width:var(--ex-modal-width-xl)}.ex-modal-full{max-width:var(--ex-modal-width-full)}.ex-modal-fullscreen{max-width:100%;max-height:100%;height:100%}.ex-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ex-space-5) var(--ex-space-6);border-bottom:1px solid var(--ex-border-light);flex-shrink:0}.ex-modal-title{margin:0;font-size:var(--ex-font-lg);font-weight:var(--ex-font-weight-semibold)}.ex-modal-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;color:var(--ex-text-tertiary);cursor:pointer;font-size:24px;line-height:1}.ex-modal-close:hover{background-color:var(--ex-bg-hover)}.ex-modal-body{flex:1;padding:var(--ex-space-6);overflow-y:auto}.ex-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--ex-space-3);padding:var(--ex-space-4) var(--ex-space-6);border-top:1px solid var(--ex-border-light);flex-shrink:0}.ex-modal-footer-left{justify-content:flex-start}.ex-modal-footer-between{justify-content:space-between}.ex-modal-custom-bg{background-color:transparent}.ex-modal-custom-bg .ex-modal-header{border-bottom-color:color-mix(in srgb,var(--text-primary) 15%,transparent)}.ex-modal-custom-bg .ex-modal-title{color:inherit}.ex-modal-custom-bg .ex-modal-close{color:inherit;opacity:.8}.ex-modal-custom-bg .ex-modal-close:hover{background-color:color-mix(in srgb,var(--text-primary) 10%,transparent);opacity:1}.ex-modal-custom-bg .ex-modal-footer{background:var(--bg-active);border-top-color:color-mix(in srgb,var(--text-primary) 10%,transparent)}.ex-confirm-dialog .ex-modal-body{padding:0}.ex-confirm-content{padding:var(--ex-space-6)}.ex-confirm-body{display:flex;gap:var(--ex-space-4);align-items:flex-start}.ex-confirm-icon-wrapper{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;animation:ex-confirm-icon-pop .3s ease-out}.ex-confirm-icon{width:24px;height:24px}.ex-confirm-icon-danger{background-color:color-mix(in srgb,var(--status-error) 10%,transparent);color:var(--ex-danger)}.ex-confirm-icon-warning{background-color:color-mix(in srgb,var(--status-warning) 10%,transparent);color:var(--ex-warning)}.ex-confirm-icon-primary{background-color:color-mix(in srgb,var(--status-info) 10%,transparent);color:var(--ex-primary)}@keyframes ex-confirm-icon-pop{0%{transform:scale(0);opacity:0}50%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.ex-confirm-text{flex:1;min-width:0}.ex-confirm-message{margin:0;font-size:var(--ex-font-base);font-weight:var(--ex-font-weight-medium);line-height:1.5}.ex-confirm-details{margin:var(--ex-space-2) 0 0 0;font-size:var(--ex-font-sm);color:var(--ex-text-secondary);line-height:1.5}.ex-confirm-input-section{margin-top:var(--ex-space-5);padding-top:var(--ex-space-4);border-top:1px solid var(--ex-border-light)}.ex-confirm-input-label{display:block;margin-bottom:var(--ex-space-2);font-size:var(--ex-font-sm);color:var(--ex-text-secondary)}.ex-confirm-input-label strong{font-family:var(--ex-font-mono);background-color:var(--ex-bg-tertiary);padding:2px 6px}.ex-confirm-input{width:100%}.ex-confirm-actions{display:flex;justify-content:flex-end;gap:var(--ex-space-3);margin-top:var(--ex-space-6);padding-top:var(--ex-space-4);border-top:1px solid var(--ex-border-light)}.ex-confirm-dialog-danger .ex-modal-title{color:var(--ex-danger)}.ex-confirm-dialog-warning .ex-modal-title{color:var(--ex-warning)}.ex-tabs{display:flex;flex-direction:column;width:100%}.ex-tab-list{--ex-space-1: 0px;--ex-space-2: 0px;display:flex;position:relative;border:0;border-bottom:var(--rule) solid var(--border-primary);border-radius:0;padding:0;gap:0}.ex-tab-list-light{border:0;border-bottom:var(--rule) solid var(--border-primary);-webkit-backdrop-filter:none;backdrop-filter:none}.ex-tab-list:before{content:"";--fx: var(--fringe-active);position:absolute;top:auto;bottom:0;left:0;height:var(--edge);background:var(--fx);border-radius:0;transition:left .32s var(--ease),width .32s var(--ease);z-index:1}.ex-tab-list[data-tab-count="2"]:before{width:calc((100% - var(--ex-space-2)) / 2)}.ex-tab-list[data-tab-count="3"]:before{width:calc((100% - var(--ex-space-2)) / 3)}.ex-tab-list[data-tab-count="4"]:before{width:calc((100% - var(--ex-space-2)) / 4)}.ex-tab-list[data-tab-count="5"]:before{width:calc((100% - var(--ex-space-2)) / 5)}.ex-tab-list[data-tab-count="6"]:before{width:calc((100% - var(--ex-space-2)) / 6)}.ex-tab-list[data-active-index="0"]:before{left:var(--ex-space-1)}.ex-tab-list[data-tab-count="2"][data-active-index="1"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) / 2)}.ex-tab-list[data-tab-count="3"][data-active-index="1"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) / 3)}.ex-tab-list[data-tab-count="3"][data-active-index="2"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 2 / 3)}.ex-tab-list[data-tab-count="4"][data-active-index="1"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) / 4)}.ex-tab-list[data-tab-count="4"][data-active-index="2"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 2 / 4)}.ex-tab-list[data-tab-count="4"][data-active-index="3"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 3 / 4)}.ex-tab-list[data-tab-count="5"][data-active-index="1"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) / 5)}.ex-tab-list[data-tab-count="5"][data-active-index="2"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 2 / 5)}.ex-tab-list[data-tab-count="5"][data-active-index="3"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 3 / 5)}.ex-tab-list[data-tab-count="5"][data-active-index="4"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 4 / 5)}.ex-tab-list[data-tab-count="6"][data-active-index="1"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) / 6)}.ex-tab-list[data-tab-count="6"][data-active-index="2"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 2 / 6)}.ex-tab-list[data-tab-count="6"][data-active-index="3"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 3 / 6)}.ex-tab-list[data-tab-count="6"][data-active-index="4"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 4 / 6)}.ex-tab-list[data-tab-count="6"][data-active-index="5"]:before{left:calc(var(--ex-space-1) + (100% - var(--ex-space-2)) * 5 / 6)}.ex-tab{position:relative;z-index:1;flex:1;display:flex;align-items:center;justify-content:center;gap:6px;color:var(--text-muted);padding:8px 14px;border:0;border-radius:0;font-size:var(--t-label);font-weight:500;transition:color var(--transition-normal);min-width:0;white-space:nowrap}.ex-tab:hover{color:var(--text-secondary)}.ex-tab-active{font-weight:600}.ex-tab-list-light .ex-tab{color:var(--text-muted)}.ex-tab-list-light .ex-tab:hover:not(.ex-tab-active){color:var(--text-secondary)}.ex-tab-badge{display:flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;color:var(--status-error);border:var(--rule) solid color-mix(in srgb,var(--status-error) 50%,transparent);border-radius:var(--ex-radius-full);font-size:var(--t-micro);font-weight:600;font-variant-numeric:tabular-nums}.ex-tab-active .ex-tab-badge{background:var(--ex-danger-hover)}.ex-tab-list-icon-only{gap:0;padding:0}.ex-tab-list-icon-only .ex-tab{min-width:40px;padding:7px 12px;flex:1;gap:0}.ex-tab-list-icon-only .ex-tab-icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.ex-tab-list-icon-only .ex-tab-icon .material-icons{font-size:17px;line-height:1}.ex-tab-icon{display:flex;align-items:center;justify-content:center;line-height:1}.ex-tab-icon .material-icons{font-size:17px;line-height:1}.ex-tab-list.attached-to-top{margin-bottom:auto;padding:.25em}.ex-tabs:has(>.ex-tab-list.attached-to-top){width:auto}.ex-tab-list.attached-to-top:before{border-radius:0}.ex-tab-list.attached-to-bottom{border-radius:0;margin-top:auto}.ex-sidebar{position:relative;display:flex;flex-direction:column;height:100%;background-color:var(--ex-bg-primary);transition:width var(--ex-transition-base),transform var(--ex-transition-base);z-index:var(--ex-z-sidebar);overflow:visible}.ex-sidebar-left{border-right:1px solid var(--ex-border-light)}.ex-sidebar-right{border-left:1px solid var(--ex-border-light)}.ex-sidebar-dark{background-color:var(--ex-bg-dark);color:var(--ex-text-inverse)}.ex-sidebar-dark .ex-sidebar-header,.ex-sidebar-dark .ex-sidebar-footer{border-color:color-mix(in srgb,var(--text-primary) 10%,transparent)}.ex-sidebar-light{background-color:var(--right-sidebar-bg);color:var(--right-sidebar-text)}.ex-sidebar-light .ex-sidebar-header,.ex-sidebar-light .ex-sidebar-footer{border-color:var(--right-sidebar-border)}.ex-sidebar-light .ex-sidebar-toggle{border-color:var(--border-primary)}.ex-sidebar-light .ex-sidebar-toggle:hover{background-color:var(--bg-hover)}.ex-sidebar-light .ex-sidebar-toggle-icon{color:var(--text-muted)}.ex-sidebar-light .ex-sidebar-toggle:hover .ex-sidebar-toggle-icon{color:var(--text-secondary)}.ex-sidebar-accent-bar{--fx: var(--ex-sidebar-accent-color, var(--fringe-active));position:absolute;top:0;bottom:0;width:9px;pointer-events:none;flex-shrink:0;z-index:1}.ex-sidebar-left .ex-sidebar-accent-bar{right:0;width:var(--rule);background-color:color-mix(in srgb,var(--fx) 42%,var(--border-primary))}.ex-sidebar-right .ex-sidebar-accent-bar{left:0;width:var(--rule);background-color:color-mix(in srgb,var(--fx) 42%,var(--border-primary))}.ex-sidebar-collapsed .ex-sidebar-accent-bar{display:none}.ex-sidebar{width:var(--ex-sidebar-width);transition:width var(--ex-transition-smooth),min-width var(--ex-transition-smooth)}.ex-sidebar-collapsed{width:var(--ex-sidebar-toggle-width);min-width:var(--ex-sidebar-toggle-width);overflow:hidden}.ex-sidebar-collapsed .ex-sidebar-content,.ex-sidebar-collapsed .ex-sidebar-header,.ex-sidebar-collapsed .ex-sidebar-footer{opacity:0;pointer-events:none;visibility:hidden}.ex-sidebar-header{padding:var(--ex-space-4);border-bottom:1px solid var(--ex-border-light);flex-shrink:0;transition:opacity var(--ex-transition-fast),visibility var(--ex-transition-fast)}.ex-sidebar-content{flex:1;overflow-y:auto;overflow-x:hidden;transition:opacity var(--ex-transition-fast),visibility var(--ex-transition-fast)}.ex-sidebar-footer{padding:var(--ex-space-4);border-top:1px solid var(--ex-border-light);flex-shrink:0;transition:opacity var(--ex-transition-fast),visibility var(--ex-transition-fast)}.ex-sidebar-toggle{position:absolute;top:0;bottom:0;width:var(--ex-sidebar-toggle-width);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color var(--ex-transition-fast),width var(--ex-transition-fast);z-index:10;padding:0}.ex-sidebar-left .ex-sidebar-toggle{right:calc(var(--ex-sidebar-toggle-width) * -1);border-left:1px solid var(--ex-border-light)}.ex-sidebar-right .ex-sidebar-toggle{left:calc(var(--ex-sidebar-toggle-width) * -1);border-right:1px solid var(--ex-border-light)}.ex-sidebar-left{margin-right:var(--ex-sidebar-toggle-width)}.ex-sidebar-right{margin-left:var(--ex-sidebar-toggle-width)}.ex-sidebar-toggle:hover{background-color:var(--ex-bg-active)}.ex-sidebar-toggle{cursor:ew-resize}.ex-sidebar-dragging{-webkit-user-select:none;user-select:none}.ex-sidebar-snapping{transition:width .1s ease-out}.ex-sidebar-collapse-zone{opacity:.6}.ex-sidebar-collapse-zone .ex-sidebar-toggle,.ex-sidebar-toggle.dragging{background-color:var(--ex-accent-primary, var(--ex-bg-active))}.ex-sidebar-toggle-icon{font-size:14px;color:var(--text-secondary);transition:transform var(--ex-transition-base);display:flex;align-items:center;justify-content:center}.ex-sidebar-collapsed .ex-sidebar-toggle{right:0;left:0;width:100%;border:none}.ex-sidebar-collapsed.ex-sidebar-left{border-right:none;margin-right:0}.ex-sidebar-collapsed.ex-sidebar-right{border-left:none;margin-left:0}.ex-sidebar-overlay{position:fixed;top:0;bottom:0;box-shadow:var(--ex-shadow-xl)}.ex-sidebar-overlay.ex-sidebar-left{left:0}.ex-sidebar-overlay.ex-sidebar-right{right:0}.ex-sidebar-overlay.ex-sidebar-collapsed{transform:translate(-100%)}.ex-sidebar-overlay.ex-sidebar-right.ex-sidebar-collapsed{transform:translate(100%)}.ex-sidebar-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background-color:color-mix(in srgb,var(--text-primary) 30%,transparent);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:calc(var(--ex-z-sidebar) - 1);animation:ex-fade-in .2s ease}.ex-switch{position:relative;display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.ex-switch-input{position:absolute;opacity:0;width:0;height:0}.ex-switch-track{position:relative;width:52px;height:28px;background-color:var(--ex-bg-active);border-radius:var(--ex-radius-full);transition:background-color var(--ex-transition-base)}.ex-switch-thumb{position:absolute;top:2px;left:2px;width:24px;height:24px;border-radius:var(--ex-radius-full);transition:transform var(--ex-transition-bounce)}.ex-switch-input:checked+.ex-switch-track{background-color:var(--ex-primary)}.ex-switch-input:checked+.ex-switch-track .ex-switch-thumb{transform:translate(24px)}.ex-switch.ex-disabled{opacity:.6;cursor:not-allowed}.ex-switch.ex-disabled .ex-switch-input{pointer-events:none}.ex-switch-labels{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:space-between;padding:0 8px;font-size:var(--ex-font-xs);font-weight:var(--ex-font-weight-semibold);pointer-events:none}.ex-switch-label-on{color:var(--ex-text-inverse);opacity:0;transition:opacity var(--ex-transition-fast)}.ex-switch-label-off{color:var(--ex-text-muted);opacity:1;transition:opacity var(--ex-transition-fast)}.ex-switch-input:checked~.ex-switch-labels .ex-switch-label-on{opacity:1}.ex-switch-input:checked~.ex-switch-labels .ex-switch-label-off{opacity:0}.ex-switch-sm .ex-switch-track{width:40px;height:22px}.ex-switch-sm .ex-switch-thumb{width:18px;height:18px}.ex-switch-sm .ex-switch-input:checked+.ex-switch-track .ex-switch-thumb{transform:translate(18px)}.ex-context-menu{position:fixed;min-width:180px;background-color:var(--ex-bg-primary);box-shadow:var(--ex-shadow-xl),0 0 1px color-mix(in srgb,var(--text-primary) 10%,transparent);padding:5px 0;z-index:var(--ex-z-popover);animation:ex-scale-in .15s ease;transform-origin:top left}.ex-context-menu-item{display:flex;align-items:center;gap:var(--ex-space-3);width:calc(100% - 8px);min-height:var(--pitch);margin:1px 4px;padding:0 10px;border:none;border-radius:var(--corner);color:var(--ex-text-secondary);font-size:var(--ex-font-base);font-weight:var(--ex-font-weight-medium);text-align:left;cursor:pointer;transition:background-color var(--ex-transition-fast),color var(--ex-transition-fast)}.ex-context-menu-item:hover{background-color:var(--ex-bg-hover);color:var(--ex-text-primary)}.ex-context-menu-item:focus-visible{outline:2px solid var(--ex-primary);outline-offset:-2px;background-color:var(--ex-bg-hover)}.ex-context-menu-item:active{background-color:var(--ex-bg-active)}.ex-context-menu-item-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;color:var(--ex-text-secondary)}.ex-context-menu-item-label{flex:1}.ex-context-menu-item-shortcut{font-size:var(--ex-font-xs);color:var(--ex-text-muted);margin-left:var(--ex-space-4)}.ex-context-menu-item-danger{color:var(--ex-danger)}.ex-context-menu-item-danger:hover{background-color:var(--ex-danger-light)}.ex-context-menu-item-danger .ex-context-menu-item-icon{color:var(--ex-danger)}.ex-context-menu-item-checked .ex-context-menu-item-icon:after{content:"✓";font-size:13px;line-height:1}.ex-context-menu-item-checked .ex-context-menu-item-label{font-weight:600}.ex-context-menu-item:disabled{opacity:.6;cursor:not-allowed}.ex-context-menu-divider{height:1px;background-color:var(--ex-border-light);margin:5px 10px}.ex-context-menu-submenu{position:relative}.ex-context-menu-submenu-arrow{font-size:14px;color:var(--ex-text-muted);margin-left:auto}.ex-context-menu-submenu-wrapper{display:none}.ex-toast-container{position:fixed;z-index:var(--ex-z-toast);display:flex;flex-direction:column;gap:var(--ex-space-2);pointer-events:none}.ex-toast-container-top-right{top:var(--ex-space-4);right:var(--ex-space-4)}.ex-toast-container-top-left{top:var(--ex-space-4);left:var(--ex-space-4)}.ex-toast-container-bottom-right{bottom:var(--ex-space-4);right:var(--ex-space-4)}.ex-toast-container-bottom-left{bottom:var(--ex-space-4);left:var(--ex-space-4)}.ex-toast-container-top-center{top:var(--ex-space-4);left:50%;transform:translate(-50%)}.ex-toast-container-bottom-center{bottom:var(--ex-space-4);left:50%;transform:translate(-50%)}.ex-toast{display:flex;align-items:flex-start;gap:var(--ex-space-3);min-width:300px;max-width:420px;padding:var(--ex-space-4);background-color:var(--ex-bg-primary);box-shadow:var(--ex-shadow-xl);--fx: var(--fringe-active);background-image:var(--fringe-inline);background-repeat:no-repeat;border-left:0;pointer-events:auto;animation:ex-slide-in-right .3s ease}.ex-toast-success{--fx: var(--status-success)}.ex-toast-warning{--fx: var(--status-warning)}.ex-toast-danger{--fx: var(--status-error)}.ex-toast-info{--fx: var(--status-info)}.ex-toast-icon{flex-shrink:0;width:20px;height:20px}.ex-toast-success .ex-toast-icon{color:var(--ex-success)}.ex-toast-warning .ex-toast-icon{color:var(--ex-warning)}.ex-toast-danger .ex-toast-icon{color:var(--ex-danger)}.ex-toast-info .ex-toast-icon{color:var(--ex-info)}.ex-toast-content{flex:1;min-width:0}.ex-toast-title{font-weight:var(--ex-font-weight-semibold);margin-bottom:var(--ex-space-1)}.ex-toast-message{font-size:var(--ex-font-sm);color:var(--ex-text-secondary)}.ex-toast-progress{display:flex;align-items:center;gap:var(--ex-space-2);margin-top:var(--ex-space-2)}.ex-toast-progress-bar{flex:1;height:6px;background-color:var(--ex-bg-tertiary);border-radius:var(--ex-radius-full);overflow:hidden}.ex-toast-progress-fill{width:100%;transform-origin:left center;transform:scaleX(var(--fill, 0));height:100%;background-color:var(--ex-info);border-radius:var(--ex-radius-full);transition:transform .2s ease}.ex-toast-success .ex-toast-progress-fill{background-color:var(--ex-success)}.ex-toast-warning .ex-toast-progress-fill{background-color:var(--ex-warning)}.ex-toast-danger .ex-toast-progress-fill{background-color:var(--ex-danger)}.ex-toast-progress-text{font-size:var(--ex-font-xs);color:var(--ex-text-muted);white-space:nowrap;min-width:48px;text-align:right}.ex-toast-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;color:var(--ex-text-muted);cursor:pointer}.ex-toast-close:hover{background-color:var(--ex-bg-hover)}.ex-toast-success .ex-toast-icon svg{animation:ex-toast-checkmark-pop .4s ease-out}@keyframes ex-toast-checkmark-pop{0%{transform:scale(0);opacity:0}50%{transform:scale(1.2)}to{transform:scale(1);opacity:1}}.ex-toast{--toast-stack-index: 0;--toast-stack-offset: calc(var(--toast-stack-index) * 4px);--toast-stack-scale: calc(1 - var(--toast-stack-index) * .02);--toast-stack-opacity: calc(1 - var(--toast-stack-index) * .1);transform:translateY(var(--toast-stack-offset)) scale(var(--toast-stack-scale));opacity:var(--toast-stack-opacity);transform-origin:top center;transition:transform .2s ease,opacity .2s ease}.ex-toast-container-bottom-right .ex-toast,.ex-toast-container-bottom-left .ex-toast,.ex-toast-container-bottom-center .ex-toast{--toast-stack-offset: calc(var(--toast-stack-index) * -4px);transform-origin:bottom center}.ex-toast:hover{--toast-stack-offset: 0px;--toast-stack-scale: 1;--toast-stack-opacity: 1;z-index:1}.ex-color-picker{display:flex;flex-direction:column;gap:var(--ex-space-2)}.ex-color-picker-label{font-size:var(--ex-font-sm);font-weight:var(--ex-font-weight-medium);color:var(--ex-text-secondary)}.ex-color-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:var(--ex-space-2)}.ex-color-swatch{width:44px;height:44px;border:3px solid transparent;cursor:pointer;padding:0;position:relative}.ex-color-swatch:hover{transform:scale(1.1)}.ex-color-swatch.ex-selected{border-color:var(--ex-text-primary);transform:scale(1.05)}.ex-color-swatch.ex-selected:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:16px;height:16px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");background-size:contain;filter:drop-shadow(0 1px 2px color-mix(in srgb,var(--text-primary) 30%,transparent))}.ex-color-picker-sm .ex-color-swatch{width:28px;height:28px;border-width:2px}.ex-color-picker-sm .ex-color-swatch.ex-selected:after{width:12px;height:12px}.express-data-color-wrapper{height:var(--ex-input-height-lg)}.ex-spinner{display:inline-block;width:24px;height:24px;border:3px solid var(--ex-border-light);border-top-color:var(--ex-primary);border-radius:var(--ex-radius-full);animation:ex-spin .8s linear infinite}.ex-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--ex-space-10);text-align:center}.ex-empty-state-icon{font-size:48px;color:var(--ex-text-disabled);margin-bottom:var(--ex-space-4)}.ex-empty-state-title{font-size:var(--ex-font-lg);font-weight:var(--ex-font-weight-semibold);margin-bottom:var(--ex-space-2)}.ex-label{display:block;margin-bottom:var(--ex-space-2);font-size:var(--ex-font-sm);font-weight:var(--ex-font-weight-medium);color:var(--ex-text-secondary)}.ex-input,.ex-textarea,.ex-select{width:100%;height:var(--ex-input-height-lg);padding:var(--ex-space-2) var(--ex-space-3);font-size:var(--ex-font-base);border:2px solid var(--ex-border-default);transition:border-color var(--ex-transition-fast),box-shadow var(--ex-transition-fast)}.ex-input:focus,.ex-textarea:focus,.ex-select:focus{border-color:var(--ex-primary)}.ex-input:disabled,.ex-textarea:disabled,.ex-select:disabled{background-color:var(--ex-bg-secondary);color:var(--ex-text-muted);cursor:not-allowed}.ex-input::placeholder,.ex-textarea::placeholder{color:var(--ex-text-muted)}.ex-input-sm{height:var(--ex-input-height-sm);padding:var(--ex-space-1) var(--ex-space-2);font-size:var(--ex-font-sm)}.ex-input-lg{height:var(--ex-input-height-lg);padding:var(--ex-space-3) var(--ex-space-4);font-size:var(--ex-font-md)}.ex-textarea{min-height:100px;resize:vertical}.ex-input-error,.ex-textarea-error,.ex-select-error{border-color:var(--ex-danger)}.ex-input-error:focus,.ex-textarea-error:focus,.ex-select-error:focus{border-color:var(--ex-danger)}.ex-error-message{margin-top:var(--ex-space-1);font-size:var(--ex-font-sm);color:var(--ex-danger)}@keyframes ex-error-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}.ex-shake{animation:ex-error-shake .4s ease-in-out}@keyframes ex-error-shake-subtle{0%,to{transform:translate(0)}25%,75%{transform:translate(-2px)}50%{transform:translate(2px)}}.ex-input-container.ex-shake .ex-input,.ex-input-container.ex-shake .ex-textarea,.ex-input-container.ex-shake .ex-select,.ex-input-container.ex-shake .ex-input-wrapper,.ex-number-wrapper.ex-shake,.ex-checkbox-container.ex-shake,.ex-datepicker.ex-shake .ex-datepicker-toggle{animation:ex-error-shake .4s ease-in-out}.ex-help-text,.ex-helper-text{margin-top:var(--ex-space-1);font-size:var(--ex-font-sm);color:var(--ex-text-tertiary)}.ex-input-footer{display:flex;justify-content:space-between;align-items:flex-start;margin-top:var(--ex-space-1);gap:var(--ex-space-2)}.ex-input-footer-left{flex:1;min-width:0}.ex-input-footer .ex-error-message,.ex-input-footer .ex-helper-text{margin-top:0}.ex-character-count{font-size:var(--ex-font-sm);color:var(--status-on-field);font-variant-numeric:tabular-nums;flex-shrink:0;text-align:right}.ex-character-count-warning{color:var(--ex-warning);font-weight:var(--ex-font-weight-medium)}.ex-character-count-over{color:var(--ex-danger);font-weight:var(--ex-font-weight-semibold)}.ex-input-container{display:flex;flex-direction:column}.ex-input-fullwidth{width:100%}.ex-input-wrapper{position:relative;display:flex;align-items:center}.ex-input-wrapper .ex-input{flex:1}.ex-input-icon{position:absolute;display:flex;align-items:center;justify-content:center;color:var(--ex-text-muted);pointer-events:none;margin-left:.75em}.ex-input-icon-left .ex-input-icon{left:var(--ex-space-3)}.ex-input-icon-left{padding-left:calc(var(--ex-space-3) + 24px)}.ex-input-icon-right .ex-input-icon{right:var(--ex-space-3)}.ex-input-icon-right{padding-right:calc(var(--ex-space-3) + 24px)}.ex-validation-icon{position:absolute;right:var(--ex-space-3);top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;pointer-events:none;font-size:17px;transition:color .2s ease,opacity .2s ease}.ex-validation-icon svg{width:1em;height:1em;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter}.ex-validation-icon-valid{color:var(--ex-success)}.ex-validation-icon-invalid{color:var(--ex-danger)}.ex-input-with-validation,.ex-textarea-with-validation{padding-right:calc(var(--ex-space-3) + 28px)}.ex-input-valid,.ex-textarea-valid{border-color:var(--ex-success)}.ex-input-valid:focus,.ex-textarea-valid:focus{border-color:var(--ex-success)}.ex-input-invalid,.ex-textarea-invalid{border-color:var(--ex-danger)}.ex-input-invalid:focus,.ex-textarea-invalid:focus{border-color:var(--ex-danger)}.ex-textarea-wrapper{position:relative;display:flex}.ex-textarea-wrapper .ex-textarea{flex:1}.ex-textarea-wrapper .ex-validation-icon{top:var(--ex-space-3);transform:none}.ex-floating-label-container,.ex-floating-label-wrapper{position:relative}.ex-floating-label{position:absolute;left:var(--ex-space-3);top:50%;transform:translateY(-50%);font-size:var(--ex-font-base);font-weight:var(--ex-font-weight-normal);color:var(--ex-text-muted);pointer-events:none;padding:0 var(--ex-space-1);display:flex;align-items:center;gap:var(--ex-space-1)}.ex-floating-label-active{top:0;transform:translateY(-50%);font-size:var(--ex-font-xs);font-weight:var(--ex-font-weight-medium);color:var(--ex-primary)}.ex-input-floating:not(:focus)+.ex-floating-label-active{color:var(--ex-text-secondary)}.ex-input-error+.ex-floating-label-active{color:var(--ex-danger)}.ex-input-sm+.ex-floating-label{left:var(--ex-space-2);font-size:var(--ex-font-sm)}.ex-input-sm+.ex-floating-label-active{font-size:var(--ex-font-xs)}.ex-input-lg+.ex-floating-label{left:var(--ex-space-4);font-size:var(--ex-font-md)}.ex-input-lg+.ex-floating-label-active{font-size:var(--ex-font-sm)}.ex-textarea-floating+.ex-floating-label:not(.ex-floating-label-active){top:var(--ex-space-3);transform:translateY(0);align-items:flex-start}.ex-textarea-floating+.ex-floating-label-active{top:0;transform:translateY(-50%);align-items:center;font-size:var(--ex-font-xs);font-weight:var(--ex-font-weight-medium);color:var(--ex-primary)}.ex-textarea-floating:not(:focus)+.ex-floating-label-active{color:var(--ex-text-secondary)}.ex-input-floating:disabled+.ex-floating-label,.ex-textarea-floating:disabled+.ex-floating-label{color:var(--ex-text-muted);background-color:var(--ex-bg-secondary)}.ex-select-floating+.ex-floating-label{pointer-events:none}.ex-select-floating:focus+.ex-floating-label,.ex-select-floating+.ex-floating-label-active{top:0;transform:translateY(-50%);font-size:var(--ex-font-xs);font-weight:var(--ex-font-weight-medium);color:var(--ex-primary)}.ex-select-floating:not(:focus)+.ex-floating-label-active{color:var(--ex-text-secondary)}.ex-select-error+.ex-floating-label-active{color:var(--ex-danger)}@media(max-width:768px){.ex-modal-mobile-fullscreen{max-width:100%;max-height:100%;height:100%}.ex-sidebar-mobile-overlay{position:fixed;box-shadow:var(--ex-shadow-xl)}.ex-input,.ex-textarea,.ex-select{font-size:16px}.ex-context-menu{left:var(--ex-space-4)!important;right:var(--ex-space-4)!important;width:auto!important;min-width:0}.ex-toast-container-top-right,.ex-toast-container-top-left{left:var(--ex-space-4);right:var(--ex-space-4);transform:none}.ex-toast{min-width:0;width:100%}.ex-sidebar-left .ex-sidebar-toggle{width:24px;right:-24px}}@media(max-width:480px){.ex-btn-fullwidth-sm{width:100%}.ex-modal-body{padding:var(--ex-space-4)}.ex-modal-header,.ex-modal-footer{padding:var(--ex-space-3) var(--ex-space-4)}}@keyframes ex-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ex-fade-out{0%{opacity:1}to{opacity:0}}@keyframes ex-slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes ex-slide-down{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes ex-slide-in-right{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes ex-slide-in-left{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes ex-scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes ex-spin{to{transform:rotate(360deg)}}@keyframes ex-pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes ex-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes ex-split-horizontal{0%{flex-basis:0%;opacity:0}to{flex-basis:50%;opacity:1}}@keyframes ex-split-vertical{0%{flex-basis:0%;opacity:0}to{flex-basis:50%;opacity:1}}@keyframes ex-tab-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes ex-list-item-slide{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes ex-sidebar-item-fade{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes ex-toggle-slide{0%{transform:translate(0)}60%{transform:translate(calc(var(--toggle-travel, 16px) + 2px))}to{transform:translate(var(--toggle-travel, 16px))}}@keyframes ex-button-ripple{0%{transform:scale(0);opacity:.5}to{transform:scale(2.5);opacity:0}}.ex-btn-press{transition:transform var(--ex-transition-fast)}.ex-btn-press:active{transform:scale(.97)}.ex-btn-ripple{position:relative;overflow:hidden}.ex-btn-ripple:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:currentColor;opacity:0;pointer-events:none}.ex-btn-ripple:active:after{animation:ex-button-ripple .4s ease-out}@media(prefers-reduced-motion:reduce){.ex-btn-press,.ex-hover-lift,.ex-hover-scale,.ex-focus-ring{transition-duration:.01ms!important}.ex-btn-press:active{transform:scale(.98)}}.ex-side-menu-modal .ex-modal-body{padding:0;display:flex;flex-direction:column;overflow:hidden}.ex-side-menu-modal-body{display:flex;flex:1;overflow:hidden}.ex-side-menu-modal-menu{display:flex;flex-direction:column;padding:10px 0;overflow-y:auto;background:var(--ex-bg-secondary);border-right:1px solid var(--ex-border-light);flex-shrink:0}.ex-side-menu-modal-menu-item{display:flex;align-items:center;gap:10px;width:calc(100% - 12px);min-height:var(--pitch);margin:1px 6px;padding:0 10px;text-align:left;border:none;border-radius:var(--corner);font-size:var(--t-body);font-weight:500;color:var(--ex-text-secondary);cursor:pointer;transition:background-color var(--transition-fast),color var(--transition-fast)}.ex-side-menu-modal-menu-item:hover:not(.disabled){background:var(--ex-bg-hover);color:var(--ex-text-primary)}.ex-side-menu-modal-menu-item.active,.ex-side-menu-modal-menu-item.active:hover:not(.disabled){background:var(--accent-primary);color:var(--accent-contrast);font-weight:700}.ex-side-menu-modal-menu-item.active .ex-side-menu-modal-menu-label,.ex-side-menu-modal-menu-item.active .riso-icon{color:inherit}.ex-side-menu-modal-menu-item.disabled{opacity:.6;cursor:not-allowed}.ex-side-menu-modal-menu-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:inherit}.ex-side-menu-modal-menu-label{flex:1}.ex-side-menu-modal-content{flex:1;padding:var(--ex-space-6);overflow-y:auto;overflow-x:hidden}.ex-modal.ex-side-menu-modal-md{max-width:700px;height:70vh;max-height:550px}.ex-modal.ex-side-menu-modal-lg{max-width:900px;height:80vh;max-height:700px}.ex-modal.ex-side-menu-modal-xl{max-width:1100px;height:85vh;max-height:800px}@media(max-width:768px){.ex-modal.ex-side-menu-modal-md,.ex-modal.ex-side-menu-modal-lg,.ex-modal.ex-side-menu-modal-xl{width:95%;height:90vh;max-height:none}.ex-side-menu-modal-menu{width:150px!important;min-width:150px!important}.ex-side-menu-modal-menu-item{padding:var(--ex-space-3) var(--ex-space-4);font-size:var(--ex-font-sm);min-height:44px}.ex-side-menu-modal-content{padding:var(--ex-space-4)}}@media(max-width:480px){.ex-modal.ex-side-menu-modal-md,.ex-modal.ex-side-menu-modal-lg,.ex-modal.ex-side-menu-modal-xl{width:100%;height:100%;max-height:100vh}.ex-side-menu-modal-body{flex-direction:column}.ex-side-menu-modal-menu{width:100%!important;min-width:100%!important;border-right:none;border-bottom:1px solid var(--ex-border-light);padding:var(--ex-space-2) 0;flex-direction:row;overflow-x:auto;overflow-y:hidden;flex-shrink:0}.ex-side-menu-modal-menu-item{padding:var(--ex-space-2) var(--ex-space-4);white-space:nowrap;border-left:none;border-bottom:3px solid transparent;flex-shrink:0;width:auto}.ex-side-menu-modal-menu-item.active{border-left-color:transparent;border-bottom-color:var(--ex-primary)}.ex-side-menu-modal-content{flex:1;overflow-y:auto;padding:var(--ex-space-3)}}.ex-uploader{display:flex;flex-direction:column}.ex-uploader-fullwidth{width:100%}.ex-uploader.ex-disabled{opacity:.6;pointer-events:none}.ex-uploader-dropzone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;padding:var(--ex-space-6);background:var(--ex-bg-secondary);border:2px dashed var(--ex-border-default);cursor:pointer}.ex-uploader-compact .ex-uploader-dropzone{min-height:120px;padding:var(--ex-space-4)}.ex-uploader-dropzone:hover{background:var(--ex-bg-tertiary);border-color:var(--ex-border-dark)}.ex-uploader-dropzone.dragging{background:var(--ex-primary-light);border-color:var(--ex-primary);border-style:solid}.ex-uploader-dropzone.has-error{border-color:var(--ex-danger);background:var(--ex-danger-light)}.ex-uploader-dropzone.has-file{border-style:solid;border-color:var(--ex-border-default)}.ex-uploader-bordered .ex-uploader-dropzone{border-style:solid;border-width:1px}.ex-uploader-minimal .ex-uploader-dropzone{min-height:100px;padding:var(--ex-space-4);border-width:1px}.ex-uploader-content{display:flex;flex-direction:column;align-items:center;text-align:center}.ex-uploader-icon{color:var(--ex-text-muted);margin-bottom:var(--ex-space-3);transition:color var(--ex-transition-fast)}.ex-uploader-dropzone:hover .ex-uploader-icon,.ex-uploader-dropzone.dragging .ex-uploader-icon{color:var(--ex-primary)}.ex-uploader-text{display:flex;flex-direction:column;align-items:center;gap:var(--ex-space-1)}.ex-uploader-label{font-size:var(--ex-font-md);font-weight:var(--ex-font-weight-semibold)}.ex-uploader-description{font-size:var(--ex-font-sm);color:var(--ex-text-secondary)}.ex-uploader-or{font-size:var(--ex-font-sm);color:var(--ex-text-muted);margin:var(--ex-space-2) 0}.ex-uploader-browse{display:inline-block;padding:var(--ex-space-2) var(--ex-space-4);background:var(--ex-primary);font-size:var(--ex-font-sm);font-weight:var(--ex-font-weight-medium);color:var(--ex-text-inverse);transition:background var(--ex-transition-fast)}.ex-uploader-dropzone:hover .ex-uploader-browse{background:var(--ex-primary-hover)}.ex-uploader-hint{margin-top:var(--ex-space-3);font-size:var(--ex-font-xs);color:var(--ex-text-muted)}.ex-uploader-preview{position:relative;width:100%;height:200px;overflow:hidden}.ex-uploader-preview img{width:100%;height:100%;object-fit:cover}.ex-uploader-preview-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--ex-space-2);background:var(--modal-overlay);opacity:0;transition:opacity var(--ex-transition-fast)}.ex-uploader-preview:hover .ex-uploader-preview-overlay{opacity:1}.ex-uploader-remove-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:color-mix(in srgb,var(--text-primary) 90%,transparent);border-radius:var(--ex-radius-full);color:var(--ex-danger)}.ex-uploader-remove-btn:hover{transform:scale(1.1)}.ex-uploader-change-text{font-size:var(--ex-font-sm);color:#fff;font-weight:var(--ex-font-weight-medium)}.ex-uploader-file-display{display:flex;align-items:center;gap:var(--ex-space-3);width:100%;padding:var(--ex-space-3)}.ex-uploader-file-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--ex-bg-tertiary);color:var(--ex-primary);flex-shrink:0}.ex-uploader-file-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.ex-uploader-file-name{font-size:var(--ex-font-base);font-weight:var(--ex-font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ex-uploader-file-size{font-size:var(--ex-font-sm);color:var(--ex-text-muted)}.ex-uploader-remove-btn-inline{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--ex-radius-full);color:var(--ex-text-muted);flex-shrink:0}.ex-uploader-remove-btn-inline:hover{background:var(--ex-danger-light);color:var(--ex-danger)}.ex-uploader-file-list{display:flex;flex-direction:column;gap:var(--ex-space-2);margin-top:var(--ex-space-3)}.ex-uploader-file-item{display:flex;align-items:center;gap:var(--ex-space-3);padding:var(--ex-space-2) var(--ex-space-3);background:var(--ex-bg-secondary);border:1px solid var(--ex-border-light)}.ex-uploader-file-thumb{width:40px;height:40px;object-fit:cover;flex-shrink:0}.ex-uploader-file-icon-small{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--ex-bg-tertiary);color:var(--ex-text-tertiary);flex-shrink:0}.ex-uploader-file-details{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.ex-uploader-file-remove{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--ex-radius-full);color:var(--ex-text-muted);cursor:pointer;flex-shrink:0}.ex-uploader-file-remove:hover{background:var(--ex-danger-light);color:var(--ex-danger)}.ex-uploader-error{display:flex;align-items:center;gap:var(--ex-space-2);margin-top:var(--ex-space-2);padding:var(--ex-space-2) var(--ex-space-3);background:var(--ex-danger-light);border:1px solid var(--ex-danger-border);font-size:var(--ex-font-sm);color:var(--ex-danger)}@media(max-width:480px){.ex-uploader-dropzone{min-height:160px;padding:var(--ex-space-4)}.ex-uploader-icon svg{width:32px;height:32px}.ex-uploader-label{font-size:var(--ex-font-base)}}.ex-checkbox-container{display:flex;flex-direction:column;gap:6px;padding:var(--ex-space-3) var(--ex-space-3)}.ex-checkbox-wrapper{display:inline-flex;align-items:center;gap:var(--ex-space-2);cursor:pointer;-webkit-user-select:none;user-select:none}.ex-checkbox-input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ex-checkbox-box{position:relative;display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:2px solid var(--ex-border-default);flex-shrink:0}.ex-checkbox-box-sm{width:14px;height:14px}.ex-checkbox-box-lg{width:22px;height:22px}.ex-checkbox-check,.ex-checkbox-indeterminate{position:absolute;width:100%;height:100%;color:var(--ex-text-inverse);opacity:0;transform:scale(.5)}.ex-checkbox-check svg{stroke-dasharray:24;stroke-dashoffset:24;transition:stroke-dashoffset .2s ease-out .05s}.ex-checkbox-input:checked+.ex-checkbox-box{background:var(--ex-primary);border-color:var(--ex-primary)}.ex-checkbox-input:checked+.ex-checkbox-box .ex-checkbox-check{opacity:1;transform:scale(1)}.ex-checkbox-input:checked+.ex-checkbox-box .ex-checkbox-check svg{stroke-dashoffset:0}@media(prefers-reduced-motion:reduce){.ex-checkbox-check svg{stroke-dasharray:none;stroke-dashoffset:0;transition:none}}.ex-checkbox-input:indeterminate+.ex-checkbox-box{background:var(--ex-primary);border-color:var(--ex-primary)}.ex-checkbox-input:indeterminate+.ex-checkbox-box .ex-checkbox-indeterminate{opacity:1;transform:scale(1)}.ex-checkbox-input:indeterminate+.ex-checkbox-box .ex-checkbox-check{opacity:0}.ex-checkbox-input:disabled+.ex-checkbox-box{background:var(--ex-bg-tertiary);border-color:var(--ex-border-light);cursor:not-allowed}.ex-checkbox-input:disabled:checked+.ex-checkbox-box{background:var(--ex-text-muted);border-color:var(--ex-text-muted)}.ex-checkbox-label{font-size:var(--ex-font-base);line-height:var(--ex-line-height-normal)}.ex-checkbox-wrapper:has(.ex-checkbox-input:disabled) .ex-checkbox-label{color:var(--ex-text-muted);cursor:not-allowed}.ex-checkbox-error+.ex-checkbox-box{border-color:var(--ex-danger)}.ex-checkbox-cell{display:flex;align-items:center;justify-content:center;height:100%;width:100%;min-height:40px}.ex-checkbox-cell .ex-checkbox-wrapper{justify-content:center}.ex-number-container{display:flex;flex-direction:column;gap:6px}.ex-number-fullwidth{width:100%}.ex-number-wrapper{display:flex;align-items:stretch;height:var(--ex-input-height-lg);border:1px solid var(--ex-border-default);transition:border-color var(--ex-transition-fast),box-shadow var(--ex-transition-fast)}.ex-number-wrapper:hover:not(.ex-disabled){border-color:var(--ex-border-dark)}.ex-number-wrapper:focus-within{border-color:var(--ex-primary)}.ex-number-error{border-color:var(--ex-danger)}.ex-number-input{flex:1;min-width:0;height:var(--ex-input-height-lg);padding:0 12px;border:none;font-size:var(--ex-font-base);font-family:var(--ex-font-mono);text-align:right}.ex-number-prefix,.ex-number-suffix{display:flex;align-items:center;padding:0 10px;font-size:var(--ex-font-sm);color:var(--ex-text-tertiary);background:var(--ex-bg-tertiary)}.ex-number-prefix{border-right:1px solid var(--ex-border-light)}.ex-number-suffix{border-left:1px solid var(--ex-border-light)}.ex-number-buttons{display:flex;flex-direction:column;border-left:1px solid var(--ex-border-light)}.ex-number-btn{display:flex;align-items:center;justify-content:center;width:28px;flex:1;padding:0;color:var(--ex-text-tertiary);transition:background var(--ex-transition-fast),color var(--ex-transition-fast)}.ex-number-btn:hover:not(:disabled){background:var(--ex-bg-hover)}.ex-number-btn:disabled{color:var(--ex-text-disabled);cursor:not-allowed}.ex-number-btn-up{border-bottom:1px solid var(--ex-border-light)}.ex-number-cell{gap:0}.ex-number-cell .ex-number-wrapper{border:none;height:100%;min-height:40px}.ex-number-cell .ex-number-wrapper:hover{background:var(--ex-bg-hover)}.ex-number-cell .ex-number-prefix,.ex-number-cell .ex-number-suffix{border-color:transparent}.ex-number-cell .ex-number-buttons{display:none}.ex-number-floating{position:relative}.ex-number-floating .ex-floating-label{left:var(--ex-space-3);pointer-events:none}.ex-number-floating .ex-number-prefix~.ex-floating-label{left:auto}.ex-number-floating .ex-floating-label-active{top:0;transform:translateY(-50%);font-size:var(--ex-font-xs);font-weight:var(--ex-font-weight-medium);color:var(--ex-primary)}.ex-number-floating:not(:focus-within) .ex-floating-label-active{color:var(--ex-text-secondary)}.ex-number-error .ex-floating-label-active{color:var(--ex-danger)}.ex-input-cell{gap:0}.ex-input-cell .ex-input-wrapper{border:none;height:100%;min-height:40px}.ex-input-cell .ex-input{border:none;padding:8px 10px;font-size:13px}.ex-input-cell .ex-input:hover{background:var(--ex-bg-hover)}.ex-textarea-cell{gap:0}.ex-textarea-cell .ex-textarea{border:none;padding:8px 10px;font-size:13px;min-height:60px}.ex-textarea-cell .ex-textarea:hover{background:var(--ex-bg-hover)}.ex-select-cell{gap:0}.ex-select-cell .ex-select{border:none;padding:8px 28px 8px 10px;font-size:13px;min-height:40px;height:100%}.ex-select-cell .ex-select:hover{background-color:var(--ex-bg-hover)}.ex-switch-cell{display:flex;align-items:center;justify-content:center;min-height:40px;padding:0}.ex-switch-cell:hover{background:var(--ex-bg-hover)}.ex-alert-title{font-weight:600;margin-bottom:4px;color:inherit}.ex-spinner{animation:ex-spin 1s linear infinite}
