.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0c1222 0%,var(--bg) 50%,var(--teal-950) 100%)}.login-card{background:var(--surface);padding:2rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--border-strong);width:100%;max-width:380px;margin:1rem}.login-card h1{font-size:1.5rem;margin-bottom:.25rem;color:var(--text)}.login-subtitle{color:var(--text-secondary);font-size:.9rem;margin-bottom:1.5rem}.login-form label{display:block;margin-bottom:1rem;font-size:.9rem;font-weight:500;color:var(--text-secondary)}.login-form input{width:100%;margin-top:.35rem;padding:.6rem .75rem;border:1px solid var(--border-strong);border-radius:var(--radius);font-size:1rem;background:var(--bg);color:var(--text)}.login-form input::placeholder{color:var(--muted)}.login-form input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-muted)}.login-form input:disabled{opacity:.6;cursor:not-allowed}.login-error{background:#dc262626;color:#fca5a5;padding:.6rem .75rem;border-radius:var(--radius);font-size:.9rem;margin-bottom:1rem;border:1px solid rgba(220,38,38,.3)}.login-btn{width:100%;margin-top:.5rem;padding:.75rem;background:var(--primary);color:var(--teal-950);border:none;border-radius:var(--radius);font-size:1rem;font-weight:600}.login-btn:hover:not(:disabled){background:var(--primary-hover)}.login-btn:disabled{opacity:.7;cursor:not-allowed}.dashboard-header{margin-bottom:1.75rem}.dashboard-header h1{font-size:1.75rem;font-weight:700;color:var(--text);letter-spacing:-.02em;margin-bottom:.25rem}.dashboard-subtitle{font-size:.95rem;color:var(--text-secondary);font-weight:500}.dashboard-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{background:var(--surface);border-radius:var(--radius-lg);padding:1.25rem;box-shadow:var(--shadow-sm);border:1px solid var(--border);display:flex;align-items:flex-start;gap:1rem;transition:transform .15s ease,box-shadow .15s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--border-strong)}.stat-card-icon{font-size:1.75rem;line-height:1;opacity:.9}.stat-card-body{min-width:0}.stat-card h3{font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.35rem}.stat-card .stat-value{font-size:1.65rem;font-weight:700;color:var(--teal-300);letter-spacing:-.02em;line-height:1.2}.dashboard-charts{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.dashboard-charts--three{grid-template-columns:1fr 1fr}.dashboard-charts--three .chart-card--donut{grid-column:span 1}@media (min-width: 1000px){.dashboard-charts--three{grid-template-columns:320px 1fr 1fr}}@media (max-width: 900px){.dashboard-cards{grid-template-columns:1fr 1fr;gap:.75rem}.stat-card{padding:1rem}.stat-card .stat-value{font-size:1.35rem}.dashboard-charts{grid-template-columns:1fr}.dashboard-charts--three .chart-card--donut{grid-column:span 1}}@media (max-width: 480px){.dashboard-cards{grid-template-columns:1fr}}.chart-card{background:var(--surface);border-radius:var(--radius-lg);padding:1.5rem;border:1px solid var(--border);box-shadow:var(--shadow-sm)}.chart-card h2{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:1rem}.chart-wrap{width:100%}.chart-wrap--pie{min-height:260px}.chart-loading{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2rem;background:var(--bg-subtle);border-radius:var(--radius)}.chart-loading-bar{width:60%;max-width:200px;height:8px;border-radius:4px;background:var(--border);animation:chart-loading-pulse 1s ease-in-out infinite}.chart-loading-bar:nth-child(2){animation-delay:.15s}.chart-loading-bar:nth-child(3){animation-delay:.3s}.chart-loading p{font-size:.85rem;color:var(--text-secondary);margin:0}.chart-placeholder{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem;background:var(--bg-subtle);border-radius:var(--radius);border:1px dashed var(--border-strong)}.chart-placeholder p{color:var(--text-secondary);font-size:.9rem;max-width:320px;margin-bottom:.5rem}.chart-placeholder code{font-size:.8rem;background:var(--surface);padding:.15rem .4rem;border-radius:4px;color:var(--teal-300)}.chart-placeholder-hint{margin-top:.5rem;font-size:.8rem!important;color:var(--muted)!important}.dashboard--loading{display:flex;align-items:center;justify-content:center;min-height:320px}.dashboard-loader{text-align:center}.dashboard-loader-dot{width:10px;height:10px;border-radius:50%;background:var(--teal-400);display:inline-block;margin:0 4px;animation:dashboard-bounce .6s ease-in-out infinite alternate}.dashboard-loader-dot:nth-child(2){animation-delay:.1s}.dashboard-loader-dot:nth-child(3){animation-delay:.2s}@keyframes dashboard-bounce{to{transform:translateY(-8px);opacity:.6}}.dashboard-loader p{margin-top:1rem;font-size:.9rem;color:var(--text-secondary)}.page-error{padding:2rem;text-align:center;color:#fca5a5;background:#dc262626;border-radius:var(--radius-lg);border:1px solid rgba(220,38,38,.3)}.toast-container{position:fixed;bottom:1.5rem;right:1.5rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;max-width:360px}.toast{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border-radius:var(--radius);border:1px solid transparent;box-shadow:var(--shadow-lg);animation:toast-in .2s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}.toast--success{background:var(--surface);border-color:#14b8a666;color:var(--teal-300)}.toast--error{background:var(--surface);border-color:#dc262666;color:#fca5a5}.toast-message{flex:1;font-size:.9rem}.toast-dismiss{background:none;border:none;color:inherit;opacity:.8;font-size:1.25rem;line-height:1;padding:0 .25rem;cursor:pointer}.toast-dismiss:hover{opacity:1}.confirm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;padding:1rem;animation:confirm-fade .15s ease-out}@keyframes confirm-fade{0%{opacity:0}to{opacity:1}}.confirm-modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:1.5rem;max-width:400px;width:100%;box-shadow:var(--shadow-lg);animation:confirm-slide .2s ease-out}@keyframes confirm-slide{0%{opacity:0;transform:scale(.98) translateY(-.5rem)}to{opacity:1;transform:scale(1) translateY(0)}}.confirm-title{font-size:1.1rem;font-weight:600;color:var(--text);margin-bottom:.5rem}.confirm-message{font-size:.95rem;color:var(--text-secondary);margin-bottom:1.25rem;line-height:1.5}.confirm-actions{display:flex;gap:.75rem;justify-content:flex-end;flex-wrap:wrap}@media (max-width: 480px){.confirm-modal{margin:.5rem;padding:1.25rem}.confirm-actions{flex-direction:column}.confirm-actions .confirm-btn{width:100%;min-height:44px}}.confirm-btn{padding:.5rem 1rem;border-radius:var(--radius);font-weight:500;font-size:.9rem;cursor:pointer;border:none}.confirm-btn--cancel{background:var(--surface-elevated);color:var(--text);border:1px solid var(--border-strong)}.confirm-btn--cancel:hover{background:var(--bg-subtle)}.confirm-btn--primary{background:var(--primary);color:var(--teal-950)}.confirm-btn--danger{background:#dc2626;color:#fff}.confirm-btn--danger:hover{background:#b91c1c}.confirm-btn--primary:hover{background:var(--primary-hover)}.message{padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem}.message.error{background:#dc262626;color:#fca5a5;border:1px solid rgba(220,38,38,.3)}.message.success{background:var(--primary-muted);color:var(--teal-300);border:1px solid rgba(20,184,166,.3)}.users-chart-section{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);padding:1.25rem;margin-bottom:1.5rem;box-shadow:var(--shadow-sm)}.users-chart-section h2{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:1rem}.users-chart-wrap{width:100%;height:260px}.users-chart-loading{min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2rem;background:var(--bg-subtle);border-radius:var(--radius)}.users-chart-loading .chart-loading-bar{width:60%;max-width:200px;height:8px;border-radius:4px;background:var(--border);animation:users-chart-pulse 1s ease-in-out infinite}.users-chart-loading .chart-loading-bar:nth-child(2){animation-delay:.15s}@keyframes users-chart-pulse{0%,to{opacity:.4}50%{opacity:1}}.users-chart-empty{color:var(--muted);padding:2rem;text-align:center;margin:0}.users-layout{display:flex;gap:1.5rem;align-items:flex-start}.users-table-wrap{flex:1;overflow-x:auto;background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--border)}.data-table th{background:var(--bg-subtle);font-weight:600;font-size:.85rem;color:var(--text-secondary)}.users-table-wrap tbody tr{cursor:pointer;transition:background .15s}.users-table-wrap tbody tr:hover{background:var(--bg-subtle)}.users-table-wrap tbody tr.users-row-selected,.users-table-wrap tbody tr.users-row-selected:hover{background:var(--primary-muted)}.data-table td.actions{padding:.5rem;vertical-align:middle}.actions-menu-wrap{position:relative;display:inline-block}.actions-hamburger{display:flex;flex-direction:column;justify-content:center;gap:4px;width:36px;height:36px;padding:0;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:background .15s,border-color .15s}.actions-hamburger:hover{background:var(--surface-elevated);border-color:var(--border-strong)}.actions-hamburger[aria-expanded=true]{background:var(--primary-muted);border-color:var(--primary)}.actions-hamburger span{display:block;width:16px;height:2px;background:var(--text);border-radius:1px;margin:0 auto}.actions-dropdown{min-width:160px;padding:.35rem 0;background:var(--surface-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-lg);display:flex;flex-direction:column}.actions-dropdown-portal{z-index:10000}.actions-item{display:block;width:100%;padding:.5rem 1rem;text-align:left;font-size:.85rem;font-weight:500;color:var(--text);background:none;border:none;cursor:pointer;transition:background .15s}.actions-item:hover{background:var(--bg-subtle)}.actions-item--danger{color:#fca5a5}.actions-item--danger:hover{background:#dc262633}.actions-divider{height:1px;background:var(--border);margin:.25rem 0}.actions-label{padding:.35rem 1rem 0;font-size:.7rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.btn-sm{padding:.4rem .75rem;font-size:.8rem;font-weight:500;background:var(--primary);color:#fff;border:none;border-radius:var(--radius)}.btn-sm:hover{background:var(--primary-hover)}.btn-sm.danger{background:#dc2626}.btn-sm.danger:hover{background:#b91c1c}.select-sm{padding:.35rem .5rem;font-size:.8rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);color:var(--text)}.quota-panel{width:280px;flex-shrink:0;background:var(--surface);padding:1rem;border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.quota-panel h3{font-size:1rem;margin-bottom:.75rem;color:var(--text)}.quota-dl{font-size:.9rem}.quota-dl dt{color:var(--text-secondary);margin-top:.5rem}.quota-dl dd{margin-left:0;font-weight:500;color:var(--text)}.add-scans-box{margin-top:1rem}.add-scans-box h3{font-size:1rem;margin-bottom:.5rem}.add-scans-box input{width:80px;margin-right:.5rem;padding:.35rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);color:var(--text)}.add-scans-box .btn-sm{margin-right:.35rem;margin-top:.35rem}@media (max-width: 900px){.users-layout{flex-direction:column}.quota-panel{width:100%;max-width:none}.users-table-wrap{min-width:0}.data-table th,.data-table td{padding:.6rem .5rem;font-size:.85rem}}.products-page .toolbar{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.search-input{padding:.5rem .75rem;border:1px solid var(--border-strong);border-radius:var(--radius);width:280px;font-size:.95rem;background:var(--bg);color:var(--text)}.search-input::placeholder{color:var(--muted)}.count{color:var(--text-secondary);font-size:.9rem}.products-layout{display:flex;gap:1.5rem}.products-list{flex:1;background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow:auto;max-height:70vh}.products-list .data-table tr{cursor:pointer}.products-list .data-table tr:hover{background:var(--bg-subtle)}.products-list .data-table tr.selected{background:var(--primary-muted)}.list-note{padding:.75rem 1rem;font-size:.85rem;color:var(--text-secondary)}.product-detail{width:320px;flex-shrink:0;background:var(--surface);padding:1rem;border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.product-detail h3{font-size:1rem;margin-bottom:.75rem;color:var(--text)}.product-detail p{font-size:.9rem;margin-bottom:.5rem;color:var(--text)}.edit-form label{display:block;margin-bottom:.75rem;font-size:.9rem;color:var(--text-secondary)}.edit-form input,.edit-form textarea{width:100%;padding:.4rem .5rem;border:1px solid var(--border-strong);border-radius:var(--radius);margin-top:.2rem;background:var(--bg);color:var(--text)}.edit-form textarea{resize:vertical;min-height:60px}.form-actions{margin-top:1rem;display:flex;gap:.5rem}.product-scans{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.product-scans h4{font-size:.9rem;margin-bottom:.5rem;color:var(--text-secondary)}.product-scans .muted{font-size:.85rem;color:var(--muted);margin:0}.scan-list{list-style:none;margin:0;padding:0;font-size:.85rem}.scan-list li{padding:.25rem 0;border-bottom:1px solid var(--border);color:var(--text)}@media (max-width: 900px){.products-page .toolbar{flex-wrap:wrap}.search-input{width:100%;min-width:0}.products-layout{flex-direction:column}.products-list{max-height:50vh}.product-detail{width:100%;max-width:none}}.scans-intro{color:var(--text-secondary);font-size:.9rem;margin-bottom:1rem}.scans-chart-section{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);padding:1.25rem;margin-bottom:1.5rem;box-shadow:var(--shadow-sm)}.scans-chart-section h2{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:1rem}.scans-chart-wrap{width:100%;height:260px}.scans-chart-section .chart-loading{min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2rem;background:var(--bg-subtle);border-radius:var(--radius)}.scans-chart-section .chart-loading-bar{width:60%;max-width:200px;height:8px;border-radius:4px;background:var(--border);animation:chart-loading-pulse 1s ease-in-out infinite}.scans-chart-section .chart-loading-bar:nth-child(2){animation-delay:.15s}@keyframes chart-loading-pulse{0%,to{opacity:.4}50%{opacity:1}}.scans-table-section{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);padding:1.25rem;box-shadow:var(--shadow-sm)}.scans-table-section h2{font-size:1rem;font-weight:600;color:var(--text);margin-bottom:1rem}.scans-table-wrap{overflow-x:auto;margin-bottom:1rem}.scans-table-wrap .data-table th,.scans-table-wrap .data-table td{padding:.6rem .75rem;font-size:.9rem}.scans-pagination{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.scans-page-info{font-size:.9rem;color:var(--text-secondary)}.scans-content .message.error,.scans-chart-section .message.error,.scans-table-section .message.error{background:#dc262626;color:#fca5a5;padding:.75rem;border-radius:var(--radius);margin-bottom:1rem;border:1px solid rgba(220,38,38,.3)}.placeholder{color:var(--muted);padding:2rem;text-align:center}.scans-col-expand{width:2.5rem;vertical-align:middle}.scans-expand-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:.7rem;cursor:pointer;transition:background .15s,border-color .15s}.scans-expand-btn:hover{background:var(--surface-elevated);border-color:var(--border-strong)}.scans-ingredients-preview{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scans-row-expanded{background:var(--primary-muted)}.scans-detail-row{background:var(--bg-subtle)}.scans-detail-cell{padding:0!important;border-bottom:1px solid var(--border);vertical-align:top}.scans-detail{padding:1rem 1.25rem 1.25rem;display:flex;flex-direction:column;gap:1.5rem}.scans-detail-block h4{font-size:.85rem;font-weight:600;color:var(--text-secondary);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.03em}.scans-detail-ingredients{font-size:.9rem;line-height:1.6;color:var(--text);white-space:pre-wrap;word-break:break-word;margin:0;padding:.75rem;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);max-height:200px;overflow-y:auto}.scans-detail-images-grid{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start}.scans-detail-fig{margin:0;flex:0 0 auto}.scans-detail-img-btn{display:block;padding:0;border:none;background:none;cursor:pointer;border-radius:var(--radius);transition:transform .15s,box-shadow .15s}.scans-detail-img-btn:hover{transform:scale(1.02);box-shadow:0 4px 20px #0000004d}.scans-detail-img-btn:focus{outline:2px solid var(--primary);outline-offset:2px}.scans-detail-fig img{display:block;max-width:280px;max-height:280px;width:auto;height:auto;object-fit:contain;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface)}.scans-detail-fig figcaption{font-size:.8rem;color:var(--muted);margin-top:.35rem;text-align:center}.scans-lightbox-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:10000;padding:2rem;animation:scans-lightbox-fade .2s ease-out}@keyframes scans-lightbox-fade{0%{opacity:0}to{opacity:1}}.scans-lightbox-close{position:absolute;top:1rem;right:1rem;width:44px;height:44px;padding:0;border:none;background:var(--surface-elevated);color:var(--text);font-size:1.75rem;line-height:1;border-radius:var(--radius);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;z-index:10001}.scans-lightbox-close:hover{background:var(--bg-subtle)}.scans-lightbox-content{max-width:95vw;max-height:95vh;display:flex;flex-direction:column;align-items:center;gap:.75rem}.scans-lightbox-content img{max-width:100%;max-height:calc(95vh - 3rem);width:auto;height:auto;object-fit:contain;border-radius:var(--radius);box-shadow:var(--shadow-lg)}.scans-lightbox-caption{font-size:.95rem;color:var(--text-secondary);margin:0}.scans-detail-images .muted{font-size:.85rem;color:var(--muted);margin:0}@media (max-width: 900px){.scans-table-wrap .data-table th,.scans-table-wrap .data-table td{padding:.5rem .4rem;font-size:.8rem}.scans-ingredients-preview{max-width:120px}.scans-detail-images-grid{flex-direction:column}.scans-detail-fig img{max-width:100%;max-height:240px}.scans-pagination{gap:.5rem}}.allergens-page .toolbar{margin-bottom:1rem}.allergens-page .message.success{background:var(--primary-muted);color:var(--teal-300);padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;border:1px solid rgba(20,184,166,.3)}.allergens-page .message.error{background:#dc262626;color:#fca5a5;padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;border:1px solid rgba(220,38,38,.3)}.allergens-layout{display:flex;gap:1.5rem;align-items:flex-start}.allergens-list{flex:1;background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow-x:auto}.allergens-list .data-table td:last-child{display:flex;gap:.35rem}.allergen-form-panel{width:300px;flex-shrink:0;background:var(--surface);padding:1rem;border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.allergen-form-panel h3{font-size:1rem;margin-bottom:1rem;color:var(--text)}.allergen-form-panel label{display:block;margin-bottom:.75rem;font-size:.9rem;font-weight:500;color:var(--text-secondary)}.allergen-form-panel input{width:100%;margin-top:.25rem;padding:.5rem .6rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);color:var(--text)}.allergen-form-panel .form-actions{margin-top:1rem;display:flex;gap:.5rem}@media (max-width: 900px){.allergens-layout{flex-direction:column}.allergen-form-panel{width:100%;max-width:none}.allergens-list .data-table th,.allergens-list .data-table td{padding:.6rem .5rem;font-size:.85rem}}.layout{display:flex;min-height:100vh;position:relative}.layout-mobile-header{display:none;position:fixed;top:0;left:0;right:0;height:52px;background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:.75rem;padding:0 1rem;z-index:1003;box-shadow:var(--shadow-sm)}.menu-toggle{display:flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:10px;background:transparent;border:none;border-radius:var(--radius);color:var(--text);transition:background .15s}.menu-toggle:hover{background:var(--bg-subtle)}.menu-toggle-bar{display:block;width:20px;height:2px;background:currentColor;border-radius:1px;transition:transform .2s,opacity .2s}.layout--menu-open .menu-toggle-bar:nth-child(1){transform:translateY(7px) rotate(45deg)}.layout--menu-open .menu-toggle-bar:nth-child(2){opacity:0}.layout--menu-open .menu-toggle-bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.layout-mobile-title{font-size:1rem;font-weight:600;color:var(--text)}.sidebar-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:1001;opacity:0;pointer-events:none;transition:opacity .2s ease}.sidebar-backdrop--open{opacity:1;pointer-events:auto}.sidebar{width:260px;background:linear-gradient(180deg,#0c1222 0%,var(--surface) 100%);color:#e2e8f0;display:flex;flex-direction:column;flex-shrink:0;box-shadow:var(--shadow-lg);border-right:1px solid var(--border);z-index:1002}.sidebar-header{padding:1.5rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-title{font-size:1.25rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.35rem;color:#fff}.sidebar-user{font-size:.8rem;color:#94a3b8;word-break:break-all}.sidebar-nav{flex:1;padding:1rem .75rem}.nav-link{display:block;padding:.65rem 1rem;margin-bottom:2px;color:#94a3b8;text-decoration:none;border-radius:var(--radius);transition:background .15s,color .15s;font-weight:500}.nav-link:hover{background:#ffffff0f;color:#e2e8f0}.nav-link.active{background:var(--primary-muted);color:var(--teal-300);border:1px solid rgba(20,184,166,.3)}.logout-btn{margin:1rem 1rem 1.25rem;padding:.6rem 1rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#94a3b8;border-radius:var(--radius);font-size:.9rem;font-weight:500;transition:background .15s,color .15s}.logout-btn:hover{background:#ffffff1a;color:#e2e8f0}.main-content{flex:1;padding:1.75rem 2rem;background:var(--bg);overflow:auto;min-width:0}@media (max-width: 900px){.layout-mobile-header{display:flex}.sidebar-backdrop{display:block}.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(280px,85vw);transform:translate(-100%);transition:transform .25s ease}.sidebar--open{transform:translate(0)}.main-content{padding:1rem;padding-top:calc(52px + 1rem)}}.loading{display:flex;justify-content:center;align-items:center;min-height:100vh;font-size:1rem;font-weight:500;color:var(--text-secondary)}.error-page{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;text-align:center;padding:2rem}.error-page h1{color:#dc2626;margin-bottom:.75rem;font-size:1.25rem}.error-page p{color:var(--text-secondary);font-size:.95rem}.page-header{margin-bottom:1.25rem}.page-header h1{font-size:1.5rem;font-weight:700;color:var(--text);letter-spacing:-.02em}.main-content .data-table{font-size:.9rem}.main-content .data-table th{background:var(--bg);color:var(--text-secondary);font-weight:600;text-transform:none}.main-content .data-table td{border-color:var(--border)}.main-content .stat-card,.main-content [class*=-table-wrap],.main-content [class*=-list],.main-content .chart-card,.main-content .quota-panel,.main-content .product-detail,.main-content .allergen-form-panel{border-color:var(--border);box-shadow:var(--shadow-sm)}@media (max-width: 900px){.page-header h1{font-size:1.25rem}}.error-boundary{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:2rem}.error-boundary-card{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:2rem;max-width:400px;text-align:center}.error-boundary-card h1{font-size:1.25rem;color:var(--text);margin-bottom:.75rem}.error-boundary-card p{color:var(--text-secondary);font-size:.95rem;margin-bottom:1.5rem}.error-boundary-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.error-boundary-btn{padding:.6rem 1.25rem;border-radius:var(--radius);font-weight:500;font-size:.95rem;text-decoration:none;border:none;cursor:pointer;background:var(--primary);color:var(--teal-950)}.error-boundary-btn--secondary{background:var(--surface-elevated);color:var(--text);border:1px solid var(--border-strong)}.error-boundary-btn:hover{opacity:.9}:root{--bg: #0f172a;--bg-subtle: #1e293b;--surface: #1e293b;--surface-elevated: #334155;--text: #f1f5f9;--text-secondary: #94a3b8;--muted: #64748b;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .12);--teal-950: #042f2e;--teal-800: #115e59;--teal-600: #0d9488;--teal-500: #14b8a6;--teal-400: #2dd4bf;--teal-300: #5eead4;--teal-200: #99f6e4;--primary: #14b8a6;--primary-hover: #2dd4bf;--primary-muted: rgba(20, 184, 166, .2);--accent: #5eead4;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .5);--radius: 12px;--radius-lg: 16px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg);color:var(--text);line-height:1.5}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}a{color:inherit;text-decoration:none}@media (max-width: 900px){input,select,textarea{font-size:16px}}
