:root{--color-primary:#1976d2;--color-primary-dark:#1565c0;--color-primary-light:#e3f2fd;--color-secondary:#424242;--color-success:#4caf50;--color-warning:#ff9800;--color-error:#f44336;--color-error-dark:#c62828;--color-error-bg:#ffebee;--color-success-dark:#2e7d32;--color-success-bg:#e8f5e9;--color-warning-dark:#e65100;--color-warning-bg:#fff3e0;--color-background:#f5f5f5;--color-surface:#fff;--color-text:#212121;--color-text-secondary:#757575;--color-text-tertiary:#9e9e9e;--color-border:#e0e0e0;--color-overlay:#00000080;--color-overlay-dark:#0009;--text-primary:var(--color-text);--text-secondary:var(--color-text-secondary);--text-tertiary:var(--color-text-tertiary);--bg-secondary:var(--color-surface);--button-primary-bg:var(--color-primary);--button-primary-hover:var(--color-primary-dark);--button-primary-text:#fff;--input-bg:var(--color-surface);--input-border:var(--color-border);--input-focus-border:var(--color-primary);--input-disabled-bg:#f3f3f3;--input-text:var(--color-text);--input-placeholder:var(--color-text-secondary);--color-background-soft:#fafafa;--color-background-mute:#f3f3f3;--spacing-0:0;--spacing-1:.25rem;--spacing-2:.5rem;--spacing-3:.75rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-10:2.5rem;--spacing-12:3rem;--spacing-16:4rem;--spacing-20:5rem;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-size-4xl:2.25rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.25;--line-height-normal:1.5;--line-height-relaxed:1.75;--sidebar-width:250px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:.75rem;--radius-2xl:1rem;--radius-pill:9999px;--radius-full:9999px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-base:0 1px 3px 0 #0000001a, 0 1px 2px 0 #0000000f;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -1px #0000000f;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--shadow-xl:0 20px 25px -5px #0000001a, 0 10px 10px -5px #0000000a;--shadow-2xl:0 25px 50px -12px #00000040;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.2s cubic-bezier(.4, 0, .2, 1);--transition-slow:.3s cubic-bezier(.4, 0, .2, 1);--z-dropdown:1000;--z-sticky:1020;--z-fixed:1030;--z-modal-backdrop:1040;--z-modal:1050;--z-popover:1060;--z-tooltip:1070;--page-min-height:100vh;--page-padding-block:var(--spacing-8);--page-padding-inline:var(--spacing-8);--page-max-wide:1400px;--page-max-narrow:720px;--page-max-auth:450px;--page-header-gap:var(--spacing-8);--page-state-padding-block:var(--spacing-16);--page-state-padding-inline:var(--spacing-4)}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--color-background);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;line-height:1.5}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit;font-size:1rem}#app{justify-content:center;min-width:100vw;min-height:100vh;display:flex}#app>main{background:var(--color-background);flex:1}#app>main.with-sidebar{margin-left:var(--sidebar-width);width:calc(100% - var(--sidebar-width));box-sizing:border-box;max-width:none;padding:2rem}@media (width<=768px){#app>main.with-sidebar{width:100%;margin-left:0}}.page{min-height:var(--page-min-height);padding:var(--page-padding-block) var(--page-padding-inline);box-sizing:border-box;width:100%}.page--wide{max-width:var(--page-max-wide);margin-inline:auto}.page--narrow{max-width:var(--page-max-narrow);gap:var(--spacing-5);flex-direction:column;margin-inline:auto;display:flex}.page--auth{justify-content:center;align-items:center;display:flex}.page--auth>.page-content{width:100%;max-width:var(--page-max-auth)}.page--fullscreen{background:var(--color-background,var(--bg-primary,#f5f5f5));flex-direction:column;min-height:100dvh;padding:0;display:flex}.page-header{justify-content:space-between;align-items:center;gap:var(--spacing-4);margin-bottom:var(--page-header-gap);display:flex}.page-header--stacked{flex-direction:column;align-items:flex-start}.page-header__text{gap:var(--spacing-2);flex-direction:column;min-width:0;display:flex}.page-title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text,var(--text-primary,#212121));line-height:var(--line-height-tight,1.25);margin:0}.page-subtitle{font-size:var(--font-size-base);color:var(--color-text-secondary,var(--text-secondary,#757575));margin:0}.page-header__actions{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.page-state{text-align:center;padding:var(--page-state-padding-block) var(--page-state-padding-inline);align-items:center;gap:var(--spacing-3);flex-direction:column;display:flex}.page-state__title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text,var(--text-primary,#212121));margin:0}.page-state__hint{font-size:var(--font-size-base);color:var(--color-text-secondary,var(--text-secondary,#757575));max-width:480px;margin:0}.page-state__actions{margin-top:var(--spacing-3);gap:var(--spacing-2);flex-wrap:wrap;justify-content:center;display:flex}.page-state__spinner{border:4px solid var(--color-border,var(--color-neutral-200,#e0e0e0));border-top-color:var(--color-primary,var(--color-primary-600,#1976d2));border-radius:50%;width:48px;height:48px;animation:.9s linear infinite page-state-spin}@keyframes page-state-spin{to{transform:rotate(360deg)}}input[type=text],input[type=search],input[type=email],input[type=password],input[type=number],input[type=tel],input[type=url],input[type=date],input[type=time],input[type=datetime-local],input:not([type]),select,textarea,.form-input,.form-select,.form-textarea{width:100%;padding:var(--spacing-3) var(--spacing-4);background-color:var(--input-bg,var(--color-surface,#fff));color:var(--input-text,var(--color-text,#212121));border:1px solid var(--input-border,var(--color-border,#e0e0e0));border-radius:var(--radius-md,6px);font-size:var(--font-size-base,1rem);font-family:inherit;line-height:var(--line-height-normal,1.5);transition:border-color var(--transition-fast,.15s), box-shadow var(--transition-fast,.15s);box-sizing:border-box}textarea,.form-textarea{min-height:calc(var(--spacing-3) * 2 + var(--line-height-normal,1.5) * 3em);resize:vertical}select,.form-select{cursor:pointer;appearance:none;padding-right:var(--spacing-8);background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 18px),calc(100% - 13px);background-repeat:no-repeat;background-size:5px 5px,5px 5px}input[type=text]::placeholder,input[type=search]::placeholder,input[type=email]::placeholder,input[type=password]::placeholder,input[type=number]::placeholder,input[type=tel]::placeholder,input[type=url]::placeholder,input:not([type])::placeholder,textarea::placeholder,.form-input::placeholder,.form-textarea::placeholder{color:var(--input-placeholder,var(--color-text-secondary,#888));opacity:1}input[type=text]:focus,input[type=search]:focus,input[type=email]:focus,input[type=password]:focus,input[type=number]:focus,input[type=tel]:focus,input[type=url]:focus,input[type=date]:focus,input[type=time]:focus,input[type=datetime-local]:focus,input:not([type]):focus,select:focus,textarea:focus,.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--input-focus-border,var(--color-primary,#1976d2));outline:none;box-shadow:0 0 0 3px #1976d226}input:disabled,select:disabled,textarea:disabled,.form-input:disabled,.form-select:disabled,.form-textarea:disabled{background-color:var(--input-disabled-bg,#f3f3f3);cursor:not-allowed;opacity:.7}input[type=number].no-spinner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number].no-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number].no-spinner{-moz-appearance:textfield}.form-label{font-size:var(--font-size-sm,.875rem);font-weight:var(--font-weight-medium,500);color:var(--color-text,var(--text-primary,#212121));margin-bottom:var(--spacing-2);display:block}.form-hint{font-size:var(--font-size-xs,.75rem);color:var(--color-text-secondary,var(--text-secondary,#757575))}.form-error{font-size:var(--font-size-sm,.875rem);color:var(--color-error,var(--color-error-500,#f44336))}.field-row{gap:var(--spacing-2);align-items:stretch;display:flex}.field-row>input,.field-row>select,.field-row>.form-input,.field-row>.form-select{flex:auto;min-width:0}.field-row>.field-row__fixed{flex:none}.option-list{border:1px solid var(--color-border,#e0e0e0);border-radius:var(--radius-md,6px);background-color:var(--color-surface,#fff);max-height:320px;margin:0;padding:0;list-style:none;overflow-y:auto}.option-row{align-items:center;gap:var(--spacing-3,.75rem);padding:var(--spacing-3,.75rem);cursor:pointer;border-bottom:1px solid var(--color-border,#e0e0e0);transition:background-color var(--transition-fast,.15s);display:flex}.option-row:last-child{border-bottom:none}.option-row:hover,.option-row.is-active,.option-row.is-selected{background-color:var(--color-background-soft,var(--color-background-mute,#f3f3f3));box-shadow:inset 3px 0 0 var(--color-primary,#1976d2)}.option-row__image{border-radius:var(--radius-base,var(--radius-md,6px));background-color:var(--color-background-mute,#f3f3f3);flex:none;width:3rem;height:3rem;overflow:hidden}.option-row__image img{object-fit:cover;width:100%;height:100%}.option-row__info{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.option-row__title{font-weight:var(--font-weight-medium,500);color:var(--color-text,#212121)}.option-row__subtitle{font-size:var(--font-size-sm,.875rem);color:var(--color-primary,#1976d2)}.option-row__meta{font-size:var(--font-size-xs,.75rem);color:var(--color-text-secondary,var(--text-tertiary,#888))}.tabs{gap:var(--spacing-2,.5rem);margin-bottom:var(--spacing-8,2rem);display:flex;overflow-x:auto}.tab-button{align-items:center;gap:var(--spacing-2,.5rem);padding:var(--spacing-3,.75rem) var(--spacing-6,1.5rem);cursor:pointer;font-weight:var(--font-weight-medium,500);font-size:var(--font-size-base,1rem);color:var(--color-text-light,var(--color-text-secondary,#757575));transition:color var(--transition-base,.2s), border-color var(--transition-base,.2s), background-color var(--transition-base,.2s);white-space:nowrap;background:0 0;border:none;border-bottom:3px solid #0000;display:inline-flex}.tab-button:hover:not(:disabled){color:var(--color-text,var(--text-primary,#212121));background:var(--color-background-soft,var(--color-background-mute,#f5f5f5))}.tab-button.active,.tab-button.is-active{color:var(--color-primary,#1976d2);border-bottom-color:var(--color-primary,#1976d2)}.tab-icon{stroke-width:2px;width:20px;height:20px}.toolbar{justify-content:space-between;align-items:flex-start;gap:var(--spacing-4,1rem);margin-bottom:var(--spacing-8,2rem);flex-wrap:wrap;display:flex}.toolbar__title{margin:0 0 var(--spacing-2,.5rem) 0;color:var(--color-text,var(--text-primary,#212121));font-size:var(--font-size-3xl,1.875rem);font-weight:var(--font-weight-bold,700)}.toolbar__subtitle{color:var(--color-text-light,var(--color-text-secondary,var(--text-secondary,#757575)));font-size:var(--font-size-base,1rem);margin:0}.toolbar__actions{gap:var(--spacing-2,.5rem);flex-wrap:wrap;display:flex}.toolbar>div>h1,.toolbar>h1{margin:0 0 var(--spacing-2,.5rem) 0;color:var(--color-text,var(--text-primary,#212121));font-size:var(--font-size-3xl,1.875rem);font-weight:var(--font-weight-bold,700)}.toolbar>div>.subtitle,.toolbar>.subtitle{color:var(--color-text-light,var(--color-text-secondary,var(--text-secondary,#757575)));font-size:var(--font-size-base,1rem);margin:0}.filter-bar{gap:var(--spacing-3,.75rem);margin-bottom:var(--spacing-4,1rem);flex-wrap:wrap;align-items:center;display:flex}.filter-bar>*{flex:0 auto}.data-table{background:var(--color-background-soft,var(--color-surface,#fafafa));border-radius:var(--radius-lg,8px);box-shadow:var(--shadow-md,0 4px 6px #0000001a);overflow:hidden}.data-table table{border-collapse:collapse;width:100%}.data-table th{background:var(--color-background-mute,var(--color-background-soft,#f3f3f3));padding:var(--spacing-4,1rem);text-align:left;font-weight:var(--font-weight-semibold,600);color:var(--color-text,var(--text-primary,#212121));border-bottom:2px solid var(--color-border,#e0e0e0)}.data-table td{padding:var(--spacing-4,1rem);border-bottom:1px solid var(--color-border,#e0e0e0);vertical-align:middle;color:var(--color-text,var(--text-primary,#212121))}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--color-background-hover,var(--color-background-mute,#f5f5f5))}.btn-icon{border-radius:var(--radius-full,9999px);width:32px;height:32px;color:var(--color-text-secondary,var(--text-secondary,#757575));cursor:pointer;font-size:var(--font-size-base,1rem);transition:background-color var(--transition-fast,.15s), color var(--transition-fast,.15s), transform var(--transition-fast,.15s);user-select:none;background-color:#0000;border:1px solid #0000;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.btn-icon:hover:not(:disabled){background-color:var(--color-background-mute,var(--color-background-soft,#f3f3f3));color:var(--color-text,var(--text-primary,#212121))}.btn-icon:active:not(:disabled){transform:scale(.95)}.btn-icon:focus-visible{outline:none;box-shadow:0 0 0 3px #1976d240}.btn-icon--lg{width:40px;height:40px;font-size:var(--font-size-lg,1.125rem)}.btn-icon--sm{width:24px;height:24px;font-size:var(--font-size-sm,.875rem)}.btn-icon--danger{color:var(--color-error,var(--color-error-500,#f44336))}.btn-icon--danger:hover:not(:disabled){background-color:var(--color-danger-bg,#f4433614);color:var(--color-error-dark,var(--color-error-700,#c62828))}.btn-icon--success{color:var(--color-success,var(--color-success-500,#4caf50))}.btn-icon--success:hover:not(:disabled){background-color:var(--color-success-tint,#4caf501a);color:var(--color-success-dark,var(--color-success-700,#2e7d32))}.btn-icon--solid{background-color:var(--color-background-mute,#f3f3f3)}.btn-icon--solid.btn-icon--danger{background-color:var(--color-error,#f44336);color:#fff}.btn-icon--solid.btn-icon--danger:hover:not(:disabled){background-color:var(--color-error-dark,#c62828);color:#fff}.btn-icon--solid.btn-icon--success{background-color:var(--color-success,#4caf50);color:#fff}.btn-icon--solid.btn-icon--success:hover:not(:disabled){background-color:var(--color-success-dark,#2e7d32);color:#fff}.btn-icon.is-active.btn-icon--success{background-color:var(--color-success,#4caf50);color:#fff}.btn-icon.is-active.btn-icon--danger{background-color:var(--color-error,#f44336);color:#fff}.btn-icon.is-readonly{cursor:default;pointer-events:none}.card{background-color:var(--card-bg,var(--color-surface,#fff));border:1px solid var(--card-border,var(--color-border,#e0e0e0));border-radius:var(--radius-xl,var(--radius-lg,8px));transition:all var(--transition-base,.2s ease);box-sizing:border-box}.card-padding-none{padding:0}.card-padding-sm{padding:var(--spacing-4,1rem)}.card-padding-md{padding:var(--spacing-6,1.5rem)}.card-padding-lg{padding:var(--spacing-8,2rem)}.card-shadow-none{box-shadow:none}.card-shadow-sm{box-shadow:var(--shadow-sm,0 1px 2px #0000000d)}.card-shadow-base{box-shadow:var(--shadow-base,0 1px 3px #0000001a)}.card-shadow-md{box-shadow:var(--shadow-md,0 4px 6px #0000001a)}.card-shadow-lg{box-shadow:var(--shadow-lg,0 10px 15px #0000001a)}.card-hoverable{cursor:pointer}.card-hoverable:hover{box-shadow:var(--shadow-lg,0 10px 15px #0000001a);transform:translateY(-2px)}.card--compact{padding:var(--spacing-4,1rem)}.card--flat{border-radius:var(--radius-md,6px);box-shadow:none}.card--stack{gap:var(--spacing-4,1rem);padding:var(--spacing-5,1.25rem);flex-direction:column;display:flex}.modal-sm{max-width:400px}.modal-md{max-width:500px}.modal-lg{max-width:600px}.modal-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.modal-header h2{margin:0}.modal-close{color:var(--color-text-secondary,var(--text-tertiary,#888));cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1.5rem;line-height:1}.modal-close:hover{color:var(--color-text,var(--text-primary,#000))}.modal-enter-active,.modal-leave-active{transition:opacity .15s}.modal-enter-from,.modal-leave-to{opacity:0}.empty-state{text-align:center;padding:var(--spacing-12,3rem) var(--spacing-4,1rem);color:var(--color-text-light,var(--color-text-secondary,#757575));align-items:center;gap:var(--spacing-3,.75rem);flex-direction:column;display:flex}.empty-state-icon{margin-bottom:.75rem;font-size:2rem}.empty-state-title{color:var(--color-text);margin-bottom:.5rem;font-weight:500}.empty-state-hint{color:var(--color-text-secondary,var(--text-tertiary,#888));font-size:.875rem}.empty-state-actions{justify-content:center;gap:.5rem;margin-top:1rem;display:flex}.badge{border-radius:var(--radius-pill,var(--radius-full,9999px));padding:.25rem .75rem;font-size:.75rem;font-weight:500;display:inline-block}.badge-success{background:var(--color-success-bg,var(--color-success-50,#d4edda));color:var(--color-success-dark,var(--color-success-700,#155724))}.badge-warning{background:var(--color-warning-bg,var(--color-warning-50,#fff3cd));color:var(--color-warning-dark,var(--color-warning-700,#856404))}.badge-error{background:var(--color-error-bg,var(--color-error-50,#f8d7da));color:var(--color-error-dark,var(--color-error-700,#721c24))}.badge-info{background:var(--color-primary-light,var(--color-primary-50,#cfe2ff));color:var(--color-primary-dark,var(--color-primary-800,#084298))}.badge-neutral{background:var(--color-background-mute,var(--color-neutral-100,#f3f3f3));color:var(--color-text-secondary,var(--color-neutral-600,#666))}.searchable-select{width:100%;position:relative}.searchable-input{border:1px solid var(--color-border);border-radius:var(--radius-base,var(--radius-md,6px));background:var(--color-background-soft,var(--color-surface,#fff));width:100%;color:var(--color-text);box-sizing:border-box;padding:.5rem 2rem .5rem .75rem;font-size:.95rem}.searchable-input:focus{border-color:var(--color-primary);outline:none}.searchable-input:disabled{opacity:.6;cursor:not-allowed}.searchable-clear{color:var(--color-text-secondary,var(--text-tertiary,#888));cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1.1rem;line-height:1;position:absolute;top:50%;right:.5rem;transform:translateY(-50%)}.searchable-clear:hover{color:var(--color-text)}.searchable-options{z-index:50;background:var(--color-background,var(--color-surface,#fff));border:1px solid var(--color-border);border-radius:var(--radius-base,var(--radius-md,6px));max-height:260px;margin:0;padding:.25rem 0;list-style:none;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #00000014}.searchable-option{cursor:pointer;color:var(--color-text);padding:.5rem .75rem;font-size:.95rem}.searchable-option.is-active,.searchable-option:hover{background:var(--color-primary-light,var(--color-background-mute,#f0f0f0));color:var(--color-primary-dark,var(--color-primary,#06c))}.searchable-empty{color:var(--color-text-secondary,var(--text-tertiary,#888));padding:.5rem .75rem;font-size:.875rem;font-style:italic}.toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:.5rem;max-width:min(420px,100vw - 2rem);display:flex;position:fixed;top:1rem;right:1rem}.toast{pointer-events:auto;background:var(--color-surface,#fff);color:var(--color-text);border-left:4px solid var(--color-text-secondary);cursor:pointer;border-radius:6px;align-items:flex-start;gap:.75rem;padding:.75rem 1rem;display:flex;box-shadow:0 4px 16px #0000001f}.toast-success{border-left-color:var(--color-success,#2e7d32)}.toast-error{border-left-color:var(--color-error,#c62828)}.toast-info{border-left-color:var(--color-info,#1565c0)}.toast-warning{border-left-color:var(--color-warning,#ef6c00)}.toast-message{flex:1;font-size:.9rem;line-height:1.4}.toast-close{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1.25rem;line-height:1}.toast-close:hover{color:var(--color-text)}.toast-enter-active,.toast-leave-active{transition:opacity .2s,transform .2s}.toast-enter-from,.toast-leave-to{opacity:0;transform:translate(20px)}.base-switch{align-items:center;gap:var(--spacing-2,8px);cursor:pointer;color:inherit;font:inherit;background:0 0;border:none;padding:0;display:inline-flex}.base-switch:focus-visible{outline:2px solid var(--color-primary,#3b82f6);outline-offset:3px;border-radius:999px}.base-switch.is-disabled{cursor:not-allowed;opacity:.5}.base-switch__track{background-color:var(--color-border,#cbd5e1);border-radius:999px;flex-shrink:0;width:38px;height:22px;transition:background-color .18s;position:relative}.base-switch.is-on .base-switch__track{background-color:var(--color-primary,#3b82f6)}.base-switch__thumb{background-color:#fff;border-radius:50%;width:18px;height:18px;transition:transform .18s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000002e}.base-switch.is-on .base-switch__thumb{transform:translate(16px)}.base-switch__label{font-size:var(--font-size-sm,.875rem);line-height:1.2}.btn{border-radius:var(--radius-md);cursor:pointer;border:none;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.875rem;font-weight:500;transition:all .2s;display:inline-flex}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-background)}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-error-dark)}.btn-sm{padding:.5rem 1rem;font-size:.75rem}.btn-block{width:100%;margin-top:1rem}.btn-icon{background:var(--color-overlay-dark);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;padding:0;font-size:.875rem;display:flex}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.btn-icon.danger{background:var(--color-error)}.card{background:var(--color-surface);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:0 1px 3px #0000001a}.form-group{margin-bottom:1rem}.form-group label{color:var(--color-text);margin-bottom:.5rem;font-weight:500;display:block}.form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.hint{color:var(--color-text-secondary);margin-top:.5rem;font-size:.75rem;display:block}.hint-error{color:var(--color-error)}.hint-full{grid-column:1/-1}.radio-row{flex-wrap:wrap;gap:.5rem;margin-bottom:.25rem;display:flex}.form-group label.radio-inline,label.radio-inline{cursor:pointer;font-weight:var(--font-weight-medium,500);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);align-items:center;gap:.5rem;margin-bottom:0;padding:.5rem .875rem;transition:border-color .15s,background .15s;display:inline-flex}label.radio-inline:hover{border-color:var(--color-primary)}label.radio-inline:has(input[type=radio]:checked){border-color:var(--color-primary);background:var(--color-primary-light,var(--color-background-soft));color:var(--color-primary-dark,var(--color-primary))}input[type=radio]{appearance:none;border:2px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:50%;flex-shrink:0;width:1.125rem;height:1.125rem;margin:0;transition:border-color .15s,background .15s,box-shadow .15s}input[type=radio]:hover:not(:disabled){border-color:var(--color-primary)}input[type=radio]:checked{border-color:var(--color-primary);background:var(--color-primary);box-shadow:inset 0 0 0 3px var(--color-surface)}input[type=radio]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}input[type=radio]:disabled{cursor:not-allowed;opacity:.5}.content-grid{grid-template-columns:1fr 1fr;gap:.25rem 1rem;margin-bottom:1.5rem;display:grid}.content-grid .content-label{color:var(--color-text);margin-bottom:0;font-weight:500}.content-grid .content-hint{margin:0 0 .5rem}.content-grid input,.content-grid select{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);width:100%;padding:.5rem;font-size:1rem}.table{border-collapse:collapse;background:var(--color-surface);border-radius:var(--radius-lg);width:100%;overflow:hidden}.table th,.table td{text-align:left;border-bottom:1px solid var(--color-border);padding:1rem}.table th{background:var(--color-background);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--color-primary-light)}.table-compact{border-collapse:collapse;width:100%}.table-compact th,.table-compact td{text-align:left;border-bottom:1px solid var(--color-border);vertical-align:top;padding:.75rem 1rem}.table-compact th{color:var(--color-text-secondary);background:var(--color-background);font-weight:600}.table-compact tr:last-child td{border-bottom:none}.table-compact code{background:var(--color-background);border-radius:var(--radius-sm);padding:.125rem .5rem;font-size:.875rem}.icon-col{width:80px}.actions-col{text-align:right;white-space:nowrap;width:200px}.actions-col .btn+.btn{margin-left:.5rem}.page-header h1{color:var(--color-text);font-size:1.5rem;font-weight:600}.loading{color:var(--color-text-secondary);justify-content:center;align-items:center;padding:3rem;display:flex}.error-message{background:var(--color-error-bg);color:var(--color-error-dark);border-radius:var(--radius-md);margin-bottom:1rem;padding:1rem}.error-message-inline{color:var(--color-error);background:0 0;margin-top:.5rem;padding:0;font-size:.875rem}.success-message{background:var(--color-success-bg);color:var(--color-success-dark);border-radius:var(--radius-md);margin-bottom:1rem;padding:1rem}.text-muted{color:var(--color-text-secondary)}.subtitle{text-align:center;color:var(--color-text-secondary);margin-bottom:2rem}.modal-overlay{background:var(--color-overlay);z-index:1000;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{width:100%;max-width:500px;max-height:90vh;overflow-y:auto}.modal h2{margin-bottom:1.5rem}.modal-actions{border-top:1px solid var(--color-border);justify-content:flex-end;gap:.75rem;margin-top:1.5rem;padding-top:1.5rem;display:flex}.page-header-title-block{flex-direction:column;gap:.25rem;display:flex}.page-header-subtitle{color:var(--color-text-secondary);font-size:.875rem}.page-header-actions{align-items:center;gap:.5rem;display:flex}.form-required{color:var(--color-error)}.data-table{flex-direction:column;gap:1rem;display:flex}.data-table-toolbar{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.data-table-search{flex:1;min-width:18rem}.data-table-search input{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);width:100%;color:var(--color-text);padding:.75rem;font-size:1rem;transition:border-color .2s}.data-table-search input:focus{border-color:var(--color-primary);outline:none}.data-table-filters{align-items:center;gap:.5rem;display:flex}.data-table-surface{background:var(--color-surface);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 1px 3px #0000001a}.data-table-surface>.table-compact{margin:0}.data-table-surface>.loading,.data-table-surface>.empty-state{padding:2rem}.data-table-pagination{border-top:1px solid var(--color-border);justify-content:center;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.data-table-page-info{color:var(--color-text-secondary);font-size:.875rem}.data-table-total{color:var(--color-text-secondary);margin-left:.25rem}.data-table-page-size{color:var(--color-text-secondary);align-items:center;gap:.5rem;margin-right:auto;font-size:.875rem;display:inline-flex}.data-table-page-size select{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;padding:.25rem .5rem;font-size:.875rem}.sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);z-index:100;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-header{border-bottom:1px solid var(--color-border);padding:1.5rem}.sidebar-header h1{color:var(--color-primary);margin:0;font-size:1.25rem;font-weight:600}.sidebar-header .subtitle{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.1em;text-align:left;margin-bottom:0;font-size:.75rem}.sidebar-nav{flex:1;padding:1rem 0;overflow-y:auto}.sidebar-nav .nav-item{color:var(--color-text);align-items:center;gap:.75rem;padding:.875rem 1.5rem;text-decoration:none;transition:all .2s;display:flex}.sidebar-nav .nav-item:hover{background:var(--color-background);text-decoration:none}.sidebar-nav .nav-item.active{background:var(--color-primary-light);color:var(--color-primary);border-right:3px solid var(--color-primary)}.sidebar-nav .nav-item .icon{font-size:1.125rem}.sidebar-footer{border-top:1px solid var(--color-border);padding:1rem 1.5rem}.sidebar-footer .user-info{flex-direction:column;margin-bottom:.75rem;display:flex}.sidebar-footer .user-name{color:var(--color-text);font-weight:500}.sidebar-footer .user-role{color:var(--color-text-secondary);font-size:.75rem}.sidebar-footer .btn-logout{border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;color:var(--color-text-secondary);cursor:pointer;background:0 0;padding:.5rem;font-size:.875rem;transition:all .2s}.sidebar-footer .btn-logout:hover{background:var(--color-error);border-color:var(--color-error);color:#fff}.sidebar-footer .locale-switcher{margin-bottom:.75rem}.sidebar-footer .locale-switcher select{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);width:100%;color:var(--color-text);cursor:pointer;padding:.375rem .5rem;font-size:.875rem}@media (width<=768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}}.back-link{color:var(--color-text);margin-right:.5rem;text-decoration:none}.cheapest{background:var(--color-success-bg)}.modal-xl{max-width:70rem}.price-current{background:var(--color-primary-light);font-weight:500}.login-card{padding:2.5rem 2.25rem}.login-card h1{text-align:center;color:var(--color-primary);margin-bottom:.25rem;font-size:2rem}.login-card .subtitle{text-align:center;color:var(--color-text-secondary);margin-bottom:2rem}.login-card .form-group+.form-group{margin-top:1rem}.login-card .btn-block{margin-top:1.5rem}.dashboard{max-width:1200px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem;display:grid}.stat-card{align-items:center;gap:1rem;display:flex}.stat-icon{font-size:2.5rem}.stat-content{flex-direction:column;display:flex}.stat-value{color:var(--color-text);font-size:1.75rem;font-weight:600}.stat-label{color:var(--color-text-secondary);font-size:.875rem}.welcome-section h2{color:var(--color-text);margin-bottom:1rem}.welcome-section p{color:var(--color-text-secondary);margin-bottom:1rem}.welcome-section ul{padding:0;list-style:none}.welcome-section li{color:var(--color-text);padding:.5rem 0}.welcome-section li strong{color:var(--color-primary)}.users-page{max-width:1200px}.categories-page{max-width:900px}.tags-page{max-width:1000px}.brands-page,.stores-page{max-width:1200px}.category-icon{font-size:1.5rem}.brand-logo-thumb{object-fit:contain;border-radius:var(--radius-sm);background:var(--color-background);width:40px;height:40px}.country-input{text-transform:uppercase;width:80px}.translations-list{flex-wrap:wrap;gap:.5rem;display:flex}.translation-chip{background:var(--color-background);border-radius:12px;padding:.25rem .75rem;font-size:.875rem}.translation-chip strong{text-transform:uppercase;color:var(--color-text-secondary);margin-right:.375rem;font-size:.75rem}.translation-row{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.translation-row .lang-input{text-transform:lowercase;width:60px}.translation-row .value-input{flex:1}.products-page{max-width:1200px}.products-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;display:grid}.product-card{flex-direction:column;display:flex}.product-card .product-image{aspect-ratio:16/9;border-radius:var(--radius-md);background:var(--color-background);width:100%;margin-bottom:1rem;position:relative;overflow:hidden}.product-card .product-image img{object-fit:cover;width:100%;height:100%}.product-card .product-image.placeholder{justify-content:center;align-items:center;font-size:3rem;display:flex}.product-card .image-count{background:var(--color-overlay-dark);color:#fff;border-radius:12px;padding:.125rem .5rem;font-size:.75rem;font-weight:500;position:absolute;bottom:.5rem;right:.5rem}.product-card .product-info{flex:1}.product-card .product-info h3{color:var(--color-text);margin:0 0 .5rem}.product-card .description{color:var(--color-text-secondary);margin-bottom:.75rem;font-size:.875rem}.product-card .product-meta{margin-bottom:.5rem}.product-card .product-tags{flex-wrap:wrap;gap:.25rem;display:flex}.product-card .tag{background:var(--color-background);border-radius:var(--radius-sm);color:var(--color-text-secondary);padding:.125rem .5rem;font-size:.75rem}.product-card .product-actions{border-top:1px solid var(--color-border);gap:.5rem;margin-top:1rem;padding-top:1rem;display:flex}.tags-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.5rem;display:grid}.tag-checkbox{border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text);align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.875rem;display:flex}.tag-checkbox:hover{background:var(--color-background)}.image-gallery{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.5rem;margin-bottom:1rem;display:grid}.gallery-item{aspect-ratio:1;border-radius:var(--radius-md);background:var(--color-background);border:2px solid #0000;position:relative;overflow:hidden}.gallery-item.cover{border-color:var(--color-primary)}.gallery-item img{object-fit:cover;width:100%;height:100%}.cover-badge{background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);letter-spacing:.05em;padding:.125rem .375rem;font-size:.625rem;font-weight:600;position:absolute;top:.25rem;left:.25rem}.gallery-actions{gap:.25rem;display:flex;position:absolute;bottom:.25rem;right:.25rem}.gallery-actions .btn{min-width:1.5rem;padding:.125rem .375rem;font-size:.75rem}.image-uploader{width:100%}.upload-zone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);cursor:pointer;background:var(--color-background);justify-content:center;align-items:center;width:100%;min-height:120px;padding:1rem;transition:border-color .2s,background .2s;display:flex}.upload-zone:hover:not(.uploading){border-color:var(--color-primary);background:var(--color-surface)}.upload-zone.uploading{cursor:wait;opacity:.7}.upload-zone.error{border-color:var(--color-error)}.upload-zone input[type=file]{display:none}.upload-status{text-align:center;color:var(--color-text-secondary);flex-direction:column;align-items:center;gap:.25rem;font-size:.875rem;display:flex}.upload-status strong{color:var(--color-text);font-size:1.5rem}.upload-status small{color:var(--color-text-secondary);font-size:.75rem}.upload-status.error-text{color:var(--color-error)}.product-detail-page .facets-card{margin-top:1.5rem}.product-detail-page .facet-grid{flex-direction:column;gap:.75rem;display:flex}.product-detail-page .facet-row{border-bottom:1px solid var(--color-border-subtle,#0000000f);grid-template-columns:14rem 1fr;align-items:start;gap:1rem;padding:.5rem 0;display:grid}.product-detail-page .facet-row:last-child{border-bottom:none}.product-detail-page .facet-label{color:var(--color-text);align-items:center;gap:.4rem;display:flex}.product-detail-page .facet-label .required-mark{color:var(--color-error);font-weight:700}.product-detail-page .facet-label .hint{color:var(--color-text-light);font-size:.8rem}.product-detail-page .facet-checkboxes{flex-wrap:wrap;gap:.5rem 1rem;display:flex}.product-detail-page .facet-checkbox{cursor:pointer;white-space:nowrap;align-items:center;gap:.4rem;display:inline-flex}.product-detail-page .error-message{background:var(--color-error-bg,#fee);color:var(--color-error);border-radius:.25rem;margin-bottom:.75rem;padding:.5rem .75rem;font-size:.85rem}.adhoc-items-page{max-width:1200px}.adhoc-items-page .counter{color:var(--color-text-secondary);margin:.5rem 0 1rem;font-size:.875rem}.adhoc-items-page .adhoc-content>.card+.card{margin-top:1rem}.adhoc-items-page .suggestions-block{border:1px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-background);margin-bottom:1.25rem;padding:.75rem 1rem}.adhoc-items-page .suggestions-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);margin:0 0 .5rem;font-size:.75rem}.adhoc-items-page .suggestions-loading,.adhoc-items-page .suggestions-empty{color:var(--color-text-secondary);font-size:.875rem}.adhoc-items-page .suggestions-list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem;display:grid}.adhoc-items-page .suggestion-chip{text-align:left;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;flex-direction:column;gap:.25rem;padding:.625rem .75rem;transition:border-color .15s,background .15s;display:flex}.adhoc-items-page .suggestion-chip:hover{border-color:var(--color-primary)}.adhoc-items-page .suggestion-chip.active{border-color:var(--color-primary);background:var(--color-primary-light)}.adhoc-items-page .suggestion-name{color:var(--color-text);font-weight:500}.adhoc-items-page .suggestion-meta{color:var(--color-text-secondary);font-size:.75rem}.adhoc-items-page .suggestion-score{margin-top:.25rem}.product-requests-page .match-preview-list{margin:.75rem 0 0;padding:0;list-style:none}.product-requests-page .match-preview-list li{border-bottom:1px solid var(--color-border-subtle,var(--color-border));align-items:center;gap:.5rem;padding:.375rem 0;display:flex}.product-requests-page .match-preview-list li:last-child{border-bottom:none}.product-requests-page .muted{color:var(--color-text-secondary);font-size:.875rem}.adhoc-items-page .match-banner{background:var(--color-primary-light);border-left:3px solid var(--color-primary);justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;padding:.75rem 1rem;display:flex}.adhoc-items-page .match-banner .muted{color:var(--color-text-secondary);font-size:.875rem}.price-observations-page .price-obs-photo-link{margin-top:.25rem;display:inline-block}.price-observations-page .price-obs-photo-link img{object-fit:cover;border:1px solid var(--color-border);border-radius:4px;max-width:64px;max-height:64px;display:block}.price-observations-page .price-obs-note{margin-top:.25rem;font-size:.875rem;font-style:italic;display:block}
