:root{color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,Segoe UI,Roboto,sans-serif;text-rendering:optimizeLegibility;--color-primary: #0071e3;--color-primary-hover: #0058b0;--color-primary-soft: #e5f1fe;--gradient-primary: linear-gradient(135deg, #0071e3 0%, #5856d6 100%);--gradient-primary-hover: linear-gradient(135deg, #0058b0 0%, #4644ab 100%);--color-success: #16a34a;--color-success-soft: #dcfce7;--color-danger: #ef4444;--color-danger-soft: #fee2e2;--color-warning: #f59e0b;--color-warning-soft: #fef3c7;--color-info: #0ea5e9;--color-info-soft: #e0f2fe;--color-neutral: #64748b;--color-neutral-soft: #f1f5f9;--color-purple: #7c3aed;--color-purple-soft: #ede9fe;--color-navy: #1e293b;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #0f172a;--color-text-secondary: #475569;--color-text-muted: #94a3b8;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--shadow-card: 0 1px 1px rgba(15, 23, 42, .03), 0 8px 24px -14px rgba(15, 23, 42, .16);--shadow-card-lg: 0 2px 4px rgba(15, 23, 42, .04), 0 16px 40px -16px rgba(15, 23, 42, .22);--ease-spring: cubic-bezier(.32, .72, 0, 1);--duration-fast: .12s;--duration-base: .22s;--duration-slow: .32s;--sidebar-width: 236px;--mobile-bar-height: 52px}*{box-sizing:border-box}body{margin:0;background:radial-gradient(1100px 560px at 50% -8%,rgba(0,113,227,.07),transparent 60%),var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased}h1,h2,h3{font-weight:700;color:var(--color-text);margin:0 0 1rem}h1{font-size:1.85rem;line-height:1.2;letter-spacing:-.02em}h2{font-size:1.25rem;line-height:1.4;font-weight:600;letter-spacing:-.01em;margin-bottom:.85rem}h3{font-size:1rem;line-height:1.4;font-weight:600}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.center{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--color-text-muted)}.login-page{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;overflow:hidden}.login-page:before,.login-page:after{content:"";position:absolute;width:480px;height:480px;border-radius:50%;z-index:0}.login-page:before{top:-160px;left:-120px;background:radial-gradient(circle,#0071e338,#0071e300 70%)}.login-page:after{bottom:-180px;right:-140px;background:radial-gradient(circle,#5856d633,#5856d600 70%)}.login-page>*{position:relative;z-index:1}.login-form{background:var(--color-surface);padding:2.5rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-card-lg);border:1px solid var(--color-border);width:340px;display:flex;flex-direction:column;gap:1.1rem;animation:modal-card-in var(--duration-slow) var(--ease-spring) both}.login-brand{display:flex;flex-direction:column;align-items:center;gap:.75rem;margin-bottom:.25rem}.login-form h1{margin:0;text-align:center;font-size:1.5rem}.login-subtitle{margin:0;color:var(--color-text-secondary);font-size:.9rem;text-align:center}.logo-mark{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius-sm);background:var(--gradient-primary);color:#fff;font-weight:700;font-size:1.1rem;flex-shrink:0;box-shadow:inset 0 1px #ffffff59,0 4px 10px -4px #0071e373}.logo-mark.large{width:3rem;height:3rem;font-size:1.4rem;border-radius:10px}.login-form label,.form-grid label,.add-user-form label{display:flex;flex-direction:column;gap:.4rem;font-size:.85rem;font-weight:500;color:var(--color-text-secondary)}.password-field{position:relative;display:flex}.password-field input{flex:1;padding-right:2.25rem}.password-toggle{position:absolute;right:.4rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--color-text-muted);padding:.2rem;font-size:.85rem;cursor:pointer;line-height:1}.password-toggle:hover{color:var(--color-text-secondary)}input,select{padding:.55rem .7rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.9rem;font-family:inherit;color:var(--color-text);background:var(--color-surface);transition:border-color var(--duration-fast) ease,box-shadow var(--duration-base) var(--ease-spring)}input:focus,select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 4px var(--color-primary-soft)}input::placeholder{color:var(--color-text-muted)}button{padding:.55rem 1rem;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--gradient-primary);color:#fff;font-family:inherit;font-size:.85rem;font-weight:600;cursor:pointer;box-shadow:0 4px 14px -6px #0071e373;transition:background var(--duration-fast) ease,border-color var(--duration-fast) ease,color var(--duration-fast) ease,transform var(--duration-fast) var(--ease-spring),box-shadow var(--duration-base) ease}button:hover:not(:disabled){background:var(--gradient-primary-hover);box-shadow:0 6px 20px -6px #0071e38c}button:active:not(:disabled){transform:scale(.97);box-shadow:0 2px 8px -4px #0071e366}button:disabled{opacity:.55;cursor:not-allowed}button+button{margin-left:.5rem}button+button:not(.btn-danger):not(.btn-primary){background:var(--color-surface);color:var(--color-text-secondary);border-color:var(--color-border);box-shadow:none}button+button:not(.btn-danger):not(.btn-primary):hover:not(:disabled){background:var(--color-neutral-soft);border-color:var(--color-text-muted);box-shadow:none}.btn-secondary{background:var(--color-surface);color:var(--color-text-secondary);border-color:var(--color-border);box-shadow:none}.btn-secondary:hover:not(:disabled){background:var(--color-neutral-soft);border-color:var(--color-text-muted);box-shadow:none}.btn-danger{background:var(--color-danger);color:#fff;box-shadow:0 4px 14px -6px #ef444473}.btn-danger:hover:not(:disabled){background:#b91c1c;box-shadow:0 6px 20px -6px #ef44448c}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:none;transition:background var(--duration-fast) ease,transform var(--duration-fast) var(--ease-spring)}.btn-icon:active:not(:disabled){transform:scale(.92)}.btn-icon:hover:not(:disabled){background:var(--color-neutral-soft)}.error{color:var(--color-danger);font-size:.85rem;margin:0;background:var(--color-danger-soft);padding:.5rem .75rem;border-radius:var(--radius-sm)}.app-shell{min-height:100vh;padding-left:var(--sidebar-width)}.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);display:flex;flex-direction:column;gap:.85rem;padding:1.15rem .8rem 1rem;background:#ffffffb8;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);box-shadow:1px 0 #0f172a0f,10px 0 28px -24px #0f172a40;overflow-y:auto;z-index:50}@media (prefers-reduced-transparency: reduce){.sidebar,.mobile-bar{background:var(--color-surface);backdrop-filter:none;-webkit-backdrop-filter:none}}.sidebar-brand{padding:.15rem .35rem .35rem}.sidebar-nav{display:flex;flex-direction:column;gap:.12rem}.sidebar-group-title{margin:.85rem 0 .3rem;padding:0 .6rem;font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-group-title:first-child{margin-top:0}.sidebar-link{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:var(--radius-sm);color:var(--color-text-secondary);text-decoration:none;font-size:.88rem;font-weight:500;transition:color var(--duration-fast) ease,background var(--duration-base) var(--ease-spring)}.sidebar-link:hover{color:var(--color-primary);background:var(--color-primary-soft)}.sidebar-link.active{color:#fff;background:var(--gradient-primary);font-weight:600;box-shadow:0 3px 10px -4px #0071e380}.sidebar-link.active:hover{color:#fff;background:var(--gradient-primary)}.sidebar-link-icon{width:1.15rem;flex-shrink:0;font-size:.92rem;text-align:center;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.sidebar-link-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer{margin-top:auto;padding-top:.85rem;display:flex;flex-direction:column;gap:.5rem;border-top:1px solid var(--color-border)}.sidebar-logout{width:100%}.sidebar-backdrop,.mobile-bar{display:none}.brand{display:flex;align-items:center;gap:.6rem;font-weight:700;font-size:1.05rem;color:var(--color-text)}.brand-button{background:none;border:none;padding:0;cursor:pointer;transition:transform var(--duration-fast) var(--ease-spring)}.brand-button:hover .logo-mark{background:var(--gradient-primary-hover)}.brand-button:active{transform:scale(.96)}.business-select-wrap{position:relative;display:inline-flex;align-items:center}.business-select-icon{position:absolute;left:.6rem;font-size:.85rem;pointer-events:none}.business-select{font-weight:500;padding-left:1.9rem;width:100%}.business-select-wrap{width:100%}.topbar-toggle{display:none;background:none;border:none;box-shadow:none;padding:.4rem;cursor:pointer}.topbar-toggle:active{transform:scale(.9)}.hamburger,.hamburger:before,.hamburger:after{display:block;width:20px;height:2px;background:var(--color-text);border-radius:2px}.hamburger{position:relative;transition:background var(--duration-fast) ease}.hamburger:before,.hamburger:after{content:"";position:absolute;left:0;transition:transform var(--duration-base) var(--ease-spring)}.hamburger:before{top:-6px}.hamburger:after{top:6px}.hamburger.open{background:transparent}.hamburger.open:before{transform:translateY(6px) rotate(45deg)}.hamburger.open:after{transform:translateY(-6px) rotate(-45deg)}.user-email{color:var(--color-text-muted);font-size:.85rem;text-decoration:none}.user-email:hover{color:var(--color-text-secondary);text-decoration:underline}.content{flex:1;padding:1.75rem;max-width:1200px;width:100%;margin:0 auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem;flex-wrap:wrap;gap:.75rem}.page-header h1{margin:0}.breadcrumb{color:var(--color-text-muted);font-size:.82rem;margin-bottom:.5rem}.breadcrumb-link{display:inline-block;color:var(--color-primary);font-size:.82rem;font-weight:500;margin-bottom:.75rem}.breadcrumb-link:hover{color:var(--color-primary-hover);text-decoration:underline}.login-form .breadcrumb-link{align-self:center;margin-bottom:0}.page-subtitle{color:var(--color-text-muted);font-size:.85rem;margin:.2rem 0 0}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.18rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;line-height:1.4;white-space:nowrap}.badge:before{content:"";width:.4rem;height:.4rem;border-radius:50%;background:currentColor;flex-shrink:0}.badge-navy:before{display:none}.badge-gray{background:var(--color-neutral-soft);color:var(--color-text-secondary)}.badge-green{background:var(--color-success-soft);color:#15803d}.badge-red{background:var(--color-danger-soft);color:#b91c1c}.badge-orange{background:var(--color-warning-soft);color:#b45309}.sales-summary{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.sales-summary-item{display:flex;flex-direction:column;gap:.15rem;padding:.65rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 1px 2px #0f172a0a,0 4px 12px -6px #0f172a14;min-width:11rem}.sales-summary-item-warning{background:var(--color-warning-soft);box-shadow:inset 3px 0 0 var(--color-warning)}.sales-summary-label{font-size:.75rem;color:var(--color-text-muted);font-weight:500}.sales-summary-value{font-size:1.05rem;font-weight:700;font-variant-numeric:tabular-nums}.inline-checkbox{display:inline-flex;align-items:center;gap:.4rem;margin-right:.75rem;font-size:.85rem;font-weight:500;color:var(--color-text-secondary);cursor:pointer}.inline-checkbox input{width:auto;margin:0}.badge-blue{background:var(--color-primary-soft);color:#1d4ed8}.badge-purple{background:var(--color-purple-soft);color:#6d28d9}.badge-navy{background:var(--color-navy);color:#fff}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1.1rem 1.25rem}.data-table{display:block;width:100%;max-height:calc(100vh - 15rem);overflow:auto;-webkit-overflow-scrolling:touch;border-collapse:collapse;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.data-table thead th{position:sticky;top:0;z-index:2;box-shadow:inset 0 -1px 0 var(--color-border),0 4px 10px -8px #0f172a66}.data-table th,.data-table td{padding:.65rem .85rem;text-align:left;border-bottom:1px solid var(--color-border);font-size:.87rem}.data-table th{background:#f8fafc;font-weight:600;color:var(--color-text-secondary);font-size:.78rem;text-transform:uppercase;letter-spacing:.02em}.data-table tbody tr{transition:background var(--duration-fast) ease}.data-table tbody tr:hover{background:#f8fafc}.data-table tbody tr:last-child td{border-bottom:none}.inactive-row{opacity:.55}.empty-cell{text-align:center;color:var(--color-text-muted);padding:2rem!important;font-size:.85rem}.empty-cell:before{content:"–";display:block;font-size:1.5rem;margin-bottom:.3rem;opacity:.35}.row-actions button{font-size:.8rem;padding:.35rem .6rem}.role-cell{display:flex;align-items:center;gap:.5rem}.low-stock-row,.dead-stock-row,.price-deviation-row{background:#fffaf0;box-shadow:inset 3px 0 0 var(--color-warning)}.stock-reservations-row>td{background:#f8fafc}.product-form,.add-user-form{background:var(--color-surface);border:1px solid var(--color-border);padding:1.25rem;border-radius:var(--radius-md);margin-bottom:1.25rem;box-shadow:var(--shadow-card)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.85rem;margin-bottom:.9rem}.form-actions{display:flex}.ship-qty-input{width:5rem;text-align:right;font-variant-numeric:tabular-nums}.ship-hint{align-self:center;margin-left:.75rem;font-size:.8rem;color:var(--color-text-muted)}.purchase-summary th{background:#f8fafc;width:160px;color:var(--color-text-secondary)}.reprice-tool{background:var(--color-surface);border:1px solid var(--color-border);padding:1.25rem;border-radius:var(--radius-md);margin-bottom:1.25rem;box-shadow:var(--shadow-card)}.reprice-tool-hint{margin:0 0 .9rem;font-size:.87rem;color:var(--color-text-secondary)}.warning-badge{display:inline-block;margin-left:.35rem;background:var(--color-warning);color:#fff;border-radius:999px;min-width:1.1rem;padding:0 .4rem;line-height:1.1rem;text-align:center;font-size:.7rem;font-weight:600;white-space:nowrap;cursor:help}.muted-note{color:var(--color-text-muted);font-size:.75rem;white-space:nowrap}.warning-text{color:#92400e;background:var(--color-warning-soft);border-left:3px solid var(--color-warning);padding:.65rem .9rem;border-radius:var(--radius-sm);font-size:.85rem}.shortfall-banner{background:var(--color-warning-soft);border-left:3px solid var(--color-warning);padding:1rem 1.1rem;border-radius:var(--radius-sm);margin-bottom:1rem}.shortfall-banner ul{margin:.5rem 0;padding-left:1.25rem}.info-banner{background:var(--color-info-soft);border-left:3px solid var(--color-info);padding:.65rem .9rem;border-radius:var(--radius-sm);font-size:.85rem;color:#0c4a6e}.period-selector{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.period-btn{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border);padding:.4rem .85rem;font-size:.82rem;font-weight:500;border-radius:999px;transition:background var(--duration-fast) ease,color var(--duration-fast) ease,border-color var(--duration-fast) ease,transform var(--duration-fast) var(--ease-spring)}.period-btn:active:not(:disabled){transform:scale(.95)}.period-btn:hover:not(:disabled){background:var(--color-neutral-soft)}.period-btn.active{background:var(--gradient-primary);color:#fff;border-color:transparent;box-shadow:0 4px 12px -6px #0071e373}.period-custom{display:flex;align-items:center;gap:.3rem;font-size:.85rem;color:var(--color-text-muted)}.period-custom input{padding:.4rem .5rem;font-size:.82rem}.delta-badge{display:inline-block;font-size:.75rem;font-weight:700;padding:.12rem .5rem;border-radius:999px;margin-top:.35rem}.delta-badge.positive{color:#15803d;background:var(--color-success-soft)}.delta-badge.negative{color:#b91c1c;background:var(--color-danger-soft)}.delta-badge.neutral{color:var(--color-text-muted);background:var(--color-neutral-soft)}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1rem;margin-bottom:1.75rem}.summary-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:1.1rem 1.2rem}.summary-card-icon{display:inline-flex;align-items:center;justify-content:center;width:2.1rem;height:2.1rem;border-radius:10px;font-size:1.05rem;margin-bottom:.7rem}.summary-card-icon.tint-blue{background:var(--color-primary-soft)}.summary-card-icon.tint-green{background:var(--color-success-soft)}.summary-card-icon.tint-purple{background:var(--color-purple-soft)}.summary-card-icon.tint-orange{background:var(--color-warning-soft)}.summary-card-icon.tint-red{background:var(--color-danger-soft)}.summary-card-label{font-size:.8rem;color:var(--color-text-muted);margin-bottom:.4rem;font-weight:500}.summary-card-value{font-size:1.5rem;font-weight:700;color:var(--color-text);letter-spacing:-.01em}.summary-card-sub{font-size:.78rem;color:var(--color-text-muted)}.warning-card{background:var(--color-warning-soft);border-color:#fde68a}.chart-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card-lg);padding:1.25rem;margin-bottom:1.75rem}.dashboard-columns{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.dashboard-column-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card-lg);padding:1.1rem 1.25rem}.dashboard-column-card h2{margin-bottom:.75rem}.dashboard-column-card .data-table{border:none;box-shadow:none}.dashboard-links{margin-top:1.75rem;display:flex;gap:1.25rem}.dashboard-links a{color:var(--color-primary);text-decoration:none;font-size:.87rem;font-weight:500}.dashboard-links a:hover{text-decoration:underline}.toolbar{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.toolbar input[type=search]{flex:1;max-width:320px}.analytics-top-select{display:inline-flex;align-items:center;gap:.5rem;white-space:nowrap;color:var(--color-text-secondary);font-size:.9rem}.analytics-top-select select{width:auto}.btn-secondary-link{display:inline-flex;align-items:center;background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border);padding:.5rem .9rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;text-decoration:none}.btn-secondary-link:hover{background:var(--color-neutral-soft)}.frozen-value{font-weight:600;color:#92400e}.data-table.sortable th{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table.sortable th.sorted{color:var(--color-primary)}.margin-share-bar{position:relative;background:var(--color-neutral-soft);border-radius:4px;height:1.3rem;min-width:100px;overflow:hidden}.margin-share-fill{position:absolute;inset:0 auto 0 0;background:var(--color-primary-soft)}.margin-share-bar span{position:relative;z-index:1;font-size:.75rem;font-weight:600;color:var(--color-primary-hover);padding:0 .5rem;line-height:1.3rem}.link-button{background:none;border:none;color:var(--color-primary);padding:0;font-size:inherit;font-weight:500;cursor:pointer;text-decoration:none}.link-button:hover{text-decoration:underline}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes modal-card-in{0%{opacity:0;transform:scale(.94) translateY(4px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;animation:modal-backdrop-in var(--duration-base) ease-out both}.modal-card{background:var(--color-surface);border-radius:var(--radius-lg);padding:1.5rem;width:380px;max-width:90vw;box-shadow:var(--shadow-card-lg);animation:modal-card-in var(--duration-base) var(--ease-spring) both}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.1rem}.modal-header h2{margin:0}.modal-close{background:none;border:none;color:var(--color-text-muted);font-size:1.4rem;line-height:1;padding:.2rem;width:auto}.modal-close:hover{color:var(--color-text-secondary);background:none}.client-card-fields{display:grid;grid-template-columns:auto 1fr;gap:.5rem 1.25rem;margin:0}.client-card-fields dt{color:var(--color-text-muted);font-size:.82rem}.client-card-fields dd{margin:0;font-size:.9rem;color:var(--color-text)}.account-security-page{max-width:640px}.account-security-page>button,.account-security-page>form{margin-top:1rem}.setup-steps{padding-left:1.25rem;color:var(--color-text-secondary);font-size:.9rem;line-height:1.6}.setup-steps li{margin-bottom:.75rem}.secret-row{display:flex;align-items:center;gap:.6rem;margin-top:.4rem}.secret-row code{background:var(--color-neutral-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.4rem .6rem;font-size:.9rem;letter-spacing:.03em;word-break:break-all}.backup-codes-list{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(140px,1fr));gap:.5rem;padding:0;margin:1rem 0}.backup-codes-list code{display:block;background:var(--color-neutral-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.5rem .75rem;font-size:.95rem;text-align:center;letter-spacing:.04em}@media (max-width: 900px){.app-shell{padding-left:0;padding-top:var(--mobile-bar-height)}.mobile-bar{display:flex;align-items:center;gap:.5rem;position:fixed;top:0;left:0;right:0;height:var(--mobile-bar-height);padding:0 .85rem;background:#ffffffd1;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);box-shadow:0 1px #0f172a0f;z-index:60}.topbar-toggle{display:inline-flex;align-items:center;justify-content:center}.sidebar{width:min(280px,82vw);padding-top:calc(var(--mobile-bar-height) + .5rem);transform:translate(-100%);transition:transform var(--duration-base) var(--ease-spring);box-shadow:none;background:var(--color-surface);backdrop-filter:none;-webkit-backdrop-filter:none}.sidebar.open{transform:none;box-shadow:0 0 60px -10px #0f172a59}.sidebar-brand{display:none}.sidebar-link{padding:.62rem .65rem;font-size:.92rem}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;border:none;padding:0;background:#0f172a73;z-index:48;animation:lock-fade-in var(--duration-fast) ease-out}.dashboard-columns{grid-template-columns:minmax(0,1fr)}.dashboard-column-card{min-width:0}}@media (max-width: 640px){.content{padding:1rem}.page-header{align-items:flex-start}.page-header h1{font-size:1.3rem}.data-table{max-height:calc(100vh - 12rem)}.data-table th,.data-table td{white-space:nowrap}.purchase-summary th,.purchase-summary td{white-space:normal}.purchase-summary th{width:auto}button+button{margin-top:.5rem}.form-actions,.toolbar{flex-wrap:wrap}.dashboard-columns{grid-template-columns:1fr}.login-page{padding:1.25rem}.login-form{width:100%;max-width:360px;padding:1.75rem 1.5rem}.modal-card{width:100%}.backup-codes-list{grid-template-columns:1fr 1fr}.client-card-fields{grid-template-columns:1fr;gap:.15rem 0}.client-card-fields dt{margin-top:.5rem}}.infra-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.25rem}.infra-tabs a{padding:.4rem .9rem;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-secondary);text-decoration:none;font-size:.85rem;font-weight:500;white-space:nowrap;transition:background var(--duration-fast) ease,color var(--duration-fast) ease,border-color var(--duration-fast) ease,transform var(--duration-fast) var(--ease-spring)}.infra-tabs a:hover{background:var(--color-neutral-soft);color:var(--color-primary)}.infra-tabs a:active{transform:scale(.95)}.infra-tabs a.active{background:var(--gradient-primary);color:#fff;border-color:transparent;font-weight:600;box-shadow:0 4px 12px -6px #0071e373}.infra-tabs a.active:hover{color:#fff}.infra-table-wrap{margin-bottom:1.5rem}.infra-hint{color:var(--color-text-secondary);font-size:.85rem;margin:-.5rem 0 1rem}.infra-edit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem 1rem;padding:.5rem 0 .75rem}.infra-edit-field{display:flex;flex-direction:column;gap:.25rem;min-width:0}.infra-edit-field-label{font-size:.75rem;font-weight:600;color:var(--color-text-secondary)}.infra-edit-field input,.infra-edit-field select,.infra-edit-field textarea{width:100%}.infra-edit-field textarea{resize:vertical}.infra-edit-field-static{font-size:.9rem;padding:.45rem 0}.infra-edit-actions{display:flex;gap:.5rem;padding-top:.6rem;margin-top:.25rem;border-top:1px solid var(--color-border)}.infra-row-danger,.infra-row-danger:hover{background:var(--color-danger-soft)}.infra-balance-cell{background:none;border:none;padding:.2rem .4rem;font:inherit;color:inherit;cursor:pointer;border-radius:6px;text-decoration:underline dotted;text-underline-offset:3px}.infra-balance-cell:hover{background:var(--color-primary-soft)}.infra-balance-edit{display:inline-flex;align-items:center;gap:.3rem}.infra-balance-edit input{width:6rem}.infra-payments-cell{display:flex;flex-direction:column;gap:.35rem;min-width:8rem}.infra-payments-actions{display:flex;gap:.4rem;align-items:center}.infra-payments-toggle{background:none;border:none;padding:.2rem .3rem;font:inherit;color:var(--color-primary);cursor:pointer}.infra-payment-form{display:flex;flex-direction:column;gap:.35rem;padding:.5rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface)}.infra-payment-form input{width:100%}.infra-payment-form-actions{display:flex;gap:.4rem}.infra-payments-list{margin:0;padding-left:1.1rem;font-size:.82rem;color:var(--color-text-secondary)}.infra-payments-list li{margin-bottom:.2rem}details summary{cursor:pointer;color:var(--color-primary);font-size:.87rem}.infra-detail-block{margin:.4rem 0 0;font-size:.87rem;color:var(--color-text-secondary);white-space:pre-wrap}.infra-year-filter{margin-bottom:1rem}.infra-year-filter select{margin-left:.4rem}.infra-summary{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--color-border)}.infra-summary-total{font-size:1.05rem;margin-bottom:.75rem}.infra-section-title{margin:1.75rem 0 .75rem;font-size:1.05rem}.infra-section-title:first-of-type{margin-top:1.25rem}@media (max-width: 640px){.infra-edit-grid{grid-template-columns:1fr}}body:has(.lock-screen){overflow:hidden}.app-root-locked{filter:blur(26px) saturate(.5);transform:scale(1.03);pointer-events:none;-webkit-user-select:none;user-select:none;will-change:filter}.lock-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#0f172a8c;animation:lock-fade-in var(--duration-base) ease-out}@keyframes lock-fade-in{0%{opacity:0}to{opacity:1}}.lock-card{width:100%;max-width:340px;padding:2rem 1.75rem 1.5rem;border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-card-lg);text-align:center;animation:lock-card-in var(--duration-slow) var(--ease-spring)}@keyframes lock-card-in{0%{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}.lock-card-shake{animation:lock-shake .42s ease-in-out}@keyframes lock-shake{10%,90%{transform:translate(-4px)}20%,80%{transform:translate(7px)}30%,50%,70%{transform:translate(-10px)}40%,60%{transform:translate(10px)}}.lock-icon{font-size:1.9rem;margin-bottom:.35rem}.lock-card h2{margin:0;font-size:1.15rem}.lock-subtitle{margin:.3rem 0 1.35rem;color:var(--color-text-muted);font-size:.85rem}.lock-dots{display:flex;justify-content:center;gap:.85rem;margin-bottom:1rem}.lock-dot{width:13px;height:13px;border-radius:50%;border:1.5px solid var(--color-border);background:transparent;transition:background var(--duration-fast) ease-out,border-color var(--duration-fast) ease-out,transform var(--duration-fast) var(--ease-spring)}.lock-dot-filled{background:var(--gradient-primary);border-color:transparent;transform:scale(1.15)}.lock-error{margin:0 0 .85rem;color:var(--color-danger);font-size:.82rem}.lock-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-bottom:1.1rem}.lock-key{aspect-ratio:1;border:1px solid var(--color-border);border-radius:50%;background:var(--color-surface);color:var(--color-text);font-size:1.3rem;font-weight:500;cursor:pointer;transition:transform var(--duration-fast) var(--ease-spring),background var(--duration-fast) ease-out}.lock-key:hover:not(:disabled){background:var(--color-neutral-soft)}.lock-key:active:not(:disabled){transform:scale(.92);background:var(--color-neutral-soft)}.lock-key:disabled{opacity:.5;cursor:default}.lock-key-muted{border-color:transparent;color:var(--color-text-muted);font-size:1.1rem}.lock-logout{border:none;background:none;padding:.4rem;color:var(--color-text-muted);font-size:.82rem;cursor:pointer;text-decoration:underline}.lock-logout:hover{color:var(--color-text-secondary)}@media (prefers-reduced-motion: reduce){.lock-screen,.lock-card,.lock-card-shake{animation:none}}.account-section-title{margin-top:2.25rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}.search-box{position:relative;display:inline-flex;align-items:center;gap:.4rem}.search-box-icon{position:absolute;left:.65rem;font-size:.8rem;pointer-events:none;opacity:.6}.search-box-input{width:260px;max-width:100%;padding-left:2rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.search-box-input::-webkit-search-cancel-button{display:none}.search-box-clear{position:absolute;right:.4rem;border:none;background:none;box-shadow:none;padding:0 .35rem;font-size:1.15rem;line-height:1;color:var(--color-text-muted);cursor:pointer}.search-box-clear:hover{color:var(--color-text)}.search-box-count{font-size:.8rem;color:var(--color-text-muted);white-space:nowrap}@media (max-width: 640px){.search-box,.search-box-input{width:100%}}.th-sort-button{display:flex;align-items:center;gap:.3rem;width:100%;padding:0;border:none;background:none;box-shadow:none;cursor:pointer;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;text-align:left}.th-sort-button:hover{color:var(--color-primary)}.th-sort-arrow{font-size:.7em;opacity:.35;flex-shrink:0}.data-table th.sorted .th-sort-arrow{opacity:1}.data-table th.sorted{color:var(--color-primary)}
