:root{--color-bg-primary:#0f1117;--color-bg-secondary:#161822;--color-bg-elevated:#1c1e2e;--color-bg-surface:#232538;--color-bg-hover:#2a2d44;--color-bg-input:#1a1c2c;--color-sidebar:#0c0d14;--color-sidebar-hover:#181a28;--color-border:#2a2d44;--color-border-subtle:#1f2136;--color-border-focus:#6366f1;--color-text-primary:#f0f0f5;--color-text-secondary:#9ca3b4;--color-text-muted:#636882;--color-text-inverse:#0f1117;--color-accent:#6366f1;--color-accent-hover:#818cf8;--color-accent-soft:rgba(99,102,241,.12);--color-accent-glow:rgba(99,102,241,.25);--color-success:#34d399;--color-success-soft:rgba(52,211,153,.12);--color-warning:#fbbf24;--color-warning-soft:rgba(251,191,36,.12);--color-danger:#f87171;--color-danger-soft:hsla(0,91%,71%,.12);--color-group-bg:rgba(99,102,241,.06);--color-group-border:rgba(99,102,241,.15);--color-grand-total-bg:rgba(52,211,153,.06);--color-grand-total-border:rgba(52,211,153,.15);--font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-size-xs:.6875rem;--font-size-sm:.75rem;--font-size-base:.8125rem;--font-size-md:.875rem;--font-size-lg:1rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:2rem;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--line-height-tight:1.2;--line-height-normal:1.5;--line-height-relaxed:1.7;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-full:9999px;--shadow-sm:0 1px 2px rgba(0,0,0,.3);--shadow-md:0 4px 12px rgba(0,0,0,.3);--shadow-lg:0 8px 24px rgba(0,0,0,.4);--shadow-xl:0 16px 48px rgba(0,0,0,.5);--shadow-glow:0 0 20px var(--color-accent-glow);--transition-fast:.15s ease;--transition-base:.2s ease;--transition-slow:.3s ease;--transition-spring:.4s cubic-bezier(.34,1.56,.64,1);--sidebar-width:260px;--header-height:60px;--cell-height:36px;--cell-padding:0 8px;--feature-col-width:200px;--assumptions-col-width:260px;--number-col-width:80px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background-color:var(--color-bg-primary);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal);overflow:hidden}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-accent-hover)}button{background:none;color:inherit;cursor:pointer}button,input,textarea{border:none;font-family:var(--font-family);font-size:inherit}input,textarea{background:transparent;color:var(--color-text-primary);outline:none}.app-layout{overflow:hidden}.app-layout,.sidebar{display:flex;height:100vh}.sidebar{background:var(--color-sidebar);border-right:1px solid var(--color-border);flex-direction:column;min-width:var(--sidebar-width);overflow-y:auto;width:var(--sidebar-width)}.sidebar-logo{align-items:center;border-bottom:1px solid var(--color-border-subtle);display:flex;gap:var(--space-3);padding:var(--space-6) var(--space-5)}.sidebar-logo-icon{align-items:center;background:linear-gradient(135deg,var(--color-accent),#a78bfa);border-radius:var(--radius-md);color:#fff;display:flex;flex-shrink:0;height:36px;justify-content:center;width:36px}.sidebar-logo-icon,.sidebar-logo-text{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.sidebar-logo-text{background:linear-gradient(135deg,var(--color-text-primary),var(--color-accent-hover));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.sidebar-nav{flex:1;padding:var(--space-4) var(--space-3)}.sidebar-nav-label{color:var(--color-text-muted);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:.08em;text-transform:uppercase}.sidebar-nav-item,.sidebar-nav-label{padding:var(--space-2) var(--space-3)}.sidebar-nav-item{align-items:center;border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;display:flex;font-size:var(--font-size-md);gap:var(--space-3);text-decoration:none;transition:all var(--transition-fast);width:100%}.sidebar-nav-item:hover{background:var(--color-sidebar-hover);color:var(--color-text-primary)}.sidebar-nav-item.active{background:var(--color-accent-soft);color:var(--color-accent-hover)}.sidebar-nav-icon{flex-shrink:0;font-size:var(--font-size-lg);text-align:center;width:20px}.main-content{background:var(--color-bg-primary);flex:1;overflow:auto}.page-header{background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;min-height:var(--header-height);padding:var(--space-5) var(--space-8)}.page-header,.page-header-left{align-items:center;display:flex;gap:var(--space-4)}.page-header-left{min-width:0}.page-header-right{align-items:center;display:flex;flex-shrink:0;gap:var(--space-3)}.page-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-subtitle{color:var(--color-text-muted)}.btn,.page-subtitle{font-size:var(--font-size-sm)}.btn{align-items:center;border-radius:var(--radius-md);display:inline-flex;font-weight:var(--font-weight-medium);gap:var(--space-2);height:34px;justify-content:center;line-height:1;padding:var(--space-2) var(--space-4);transition:all var(--transition-fast);white-space:nowrap}.btn-primary{background:linear-gradient(135deg,var(--color-accent),#7c3aed);box-shadow:var(--shadow-sm),0 0 0 0 var(--color-accent-glow);color:#fff}.btn-primary:hover{box-shadow:var(--shadow-md),var(--shadow-glow);transform:translateY(-1px)}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.btn-danger-ghost{background:transparent;color:var(--color-text-muted)}.btn-danger-ghost:hover{background:var(--color-danger-soft);color:var(--color-danger)}.btn-sm{font-size:var(--font-size-xs);height:28px;padding:var(--space-1) var(--space-3)}.btn-icon{align-items:center;border-radius:var(--radius-md);display:inline-flex;height:32px;justify-content:center;padding:0;width:32px}.btn-icon-sm{font-size:var(--font-size-sm);height:26px;width:26px}.card{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:all var(--transition-base)}.card:hover{border-color:var(--color-border-focus);box-shadow:var(--shadow-md),0 0 0 1px var(--color-accent-soft);transform:translateY(-2px)}.modal-overlay{align-items:center;animation:fade-in var(--transition-fast) ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;display:flex;inset:0;justify-content:center;position:fixed;z-index:100}.modal{animation:scale-in var(--transition-slow) cubic-bezier(.34,1.56,.64,1);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:440px;padding:var(--space-8);width:100%}.modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-6)}.modal-input{background:var(--color-bg-input);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-md);padding:var(--space-3) var(--space-4);transition:border-color var(--transition-fast);width:100%}.modal-input:focus{border-color:var(--color-border-focus);box-shadow:0 0 0 3px var(--color-accent-soft)}.modal-actions{display:flex;gap:var(--space-3);justify-content:flex-end;margin-top:var(--space-6)}.estimate-table-wrapper{flex:1;overflow:auto}.estimate-table{border-collapse:collapse;min-width:1200px;table-layout:fixed;width:100%}.estimate-table td,.estimate-table th{border:1px solid var(--color-border-subtle);font-size:var(--font-size-sm);height:var(--cell-height);overflow:hidden;padding:var(--cell-padding);text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.estimate-table th{background:var(--color-bg-secondary);color:var(--color-text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:.04em;position:sticky;text-align:center;text-transform:uppercase;top:0;z-index:10}.col-actions{width:40px}.col-feature{width:var(--feature-col-width)}.col-assumptions{width:var(--assumptions-col-width)}.col-number{width:var(--number-col-width)}.th-group{background:var(--color-bg-surface)!important;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.06em}.th-group-design{color:#a78bfa}.th-group-be{color:#34d399}.th-group-fe{color:#60a5fa}.row-grand-total td{background:var(--color-grand-total-bg);border-color:var(--color-grand-total-border);color:var(--color-success);font-size:var(--font-size-base);font-weight:var(--font-weight-bold)}.row-grand-total .cell-feature,.row-grand-total td:first-child{color:var(--color-text-primary);font-size:var(--font-size-md)}.row-group-header td{background:var(--color-group-bg);border-color:var(--color-group-border);color:var(--color-accent-hover);font-weight:var(--font-weight-semibold)}.row-feature td{background:var(--color-bg-primary)}.row-feature:hover td{background:var(--color-bg-hover)}.cell-editable{cursor:text;position:relative}.cell-editable:hover{background:var(--color-bg-surface)!important}.cell-editable.editing{padding:0}.cell-editable input,.cell-editable textarea{background:var(--color-bg-input);border:2px solid var(--color-border-focus);border-radius:0;box-shadow:inset 0 0 0 1px var(--color-accent-soft);color:inherit;font-size:inherit;font-weight:inherit;height:100%;outline:none;padding:var(--cell-padding);width:100%}.cell-number{font-variant-numeric:tabular-nums;text-align:right}.cell-feature{padding-left:var(--space-3)}.cell-assumptions,.cell-feature{text-align:left}.cell-actions{padding:0;text-align:center;width:40px}.row-actions{opacity:0;transition:opacity var(--transition-fast)}.row-feature:hover .row-actions,.row-group-header:hover .row-actions{opacity:1}.add-row-btn{align-items:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;display:flex;font-size:var(--font-size-xs);gap:var(--space-2);padding:var(--space-1) var(--space-3);transition:all var(--transition-fast)}.add-row-btn:hover{background:var(--color-accent-soft);color:var(--color-accent)}.add-group-row td{background:transparent;border-color:transparent;padding:var(--space-2) var(--space-3)}.dashboard{max-width:1200px;padding:var(--space-8)}.estimates-grid{display:grid;gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));margin-top:var(--space-6)}.estimate-card{cursor:pointer;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6)}.estimate-card-header{align-items:flex-start;display:flex;gap:var(--space-3);justify-content:space-between}.estimate-card-title{color:var(--color-text-primary);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}.estimate-card-date{color:var(--color-text-muted);font-size:var(--font-size-xs);white-space:nowrap}.estimate-card-stats{display:flex;gap:var(--space-5)}.estimate-card-stat{display:flex;flex-direction:column;gap:2px}.estimate-card-stat-label{color:var(--color-text-muted);font-size:var(--font-size-xs);letter-spacing:.04em;text-transform:uppercase}.estimate-card-stat-value{font-size:var(--font-size-md);font-variant-numeric:tabular-nums;font-weight:var(--font-weight-semibold)}.stat-design{color:#a78bfa}.stat-be{color:#34d399}.stat-fe{color:#60a5fa}.estimate-card-footer{align-items:center;border-top:1px solid var(--color-border-subtle);display:flex;justify-content:space-between;padding-top:var(--space-3)}.estimate-card-groups{color:var(--color-text-muted);font-size:var(--font-size-xs)}.empty-state{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:var(--space-16) var(--space-8);text-align:center}.empty-state-icon{font-size:4rem;margin-bottom:var(--space-6);opacity:.4}.empty-state-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-2)}.empty-state-text{color:var(--color-text-muted);font-size:var(--font-size-md);margin-bottom:var(--space-8);max-width:400px}.back-btn{align-items:center;border-radius:var(--radius-sm);color:var(--color-text-secondary);display:inline-flex;font-size:var(--font-size-sm);gap:var(--space-2);padding:var(--space-1) var(--space-2);transition:color var(--transition-fast)}.back-btn:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.editable-title{background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);min-width:200px;padding:var(--space-1) var(--space-2);transition:all var(--transition-fast)}.editable-title:hover{border-color:var(--color-border)}.editable-title:focus{background:var(--color-bg-input);border-color:var(--color-border-focus);box-shadow:0 0 0 3px var(--color-accent-soft)}.estimate-editor{display:flex;flex-direction:column;height:100vh;overflow:hidden}.estimate-editor-body{flex:1;overflow:auto;padding:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fade-in var(--transition-base) ease}.animate-slide-up{animation:slide-up var(--transition-slow) ease}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}::-webkit-scrollbar-corner{background:transparent}
