:root{--color-accent: #D97706;--color-accent-hover: #B8512D;--color-accent-soft: #FEF3E2;--color-text: #1F2937;--color-muted: #6B7280;--color-bg: #FFFBF0;--color-card: #FFFFFF;--color-border: #E5E7EB;--color-row-divider: #F3F4F6;--color-table-head: #F9F5EB;--color-placeholder: #9CA3AF;--color-danger: #B91C1C;--color-secondary-border: #D1D5DB;--header-grad: linear-gradient(90deg, #1F2937 0%, #374151 100%);--transition: all .2s ease;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 10px}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,-apple-system,BlinkMacSystemFont,Helvetica Neue,Roboto,sans-serif;font-size:14px;font-weight:400;color:var(--color-text);background:var(--color-bg)}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:20px;font-weight:500;margin-top:0;color:var(--color-text)}h2{font-size:16px;font-weight:600;margin-top:2rem;color:var(--color-text)}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-body{flex:1;display:flex;min-height:0}.topbar{height:64px;background:var(--header-grad);color:#fff;display:flex;align-items:center;gap:.75rem;padding:0 1.5rem}.topbar .spacer{flex:1}.topbar .user{color:#ffffffb3;font-size:13px;padding:0 .25rem}.topbar-link{color:#ffffffd9;font-size:14px;padding:.5rem .85rem;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.2);transition:var(--transition)}.topbar-link:hover{background:#ffffff14;color:#fff;text-decoration:none}.topbar-link.active{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.topbar-btn{background:transparent;color:#ffffffd9;border:1px solid rgba(255,255,255,.2);padding:.5rem .85rem;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;transition:var(--transition)}.topbar-btn:hover{background:#ffffff14;color:#fff}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:32px;height:32px;border-radius:var(--radius-md);background:var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;letter-spacing:.5px}.brand-text{color:#fff;font-size:20px;font-weight:500;letter-spacing:.2px}.app-sidebar{width:200px;flex:0 0 200px;background:var(--color-card);border-right:1px solid var(--color-border);padding:1.25rem 1rem;min-height:0}.sidebar-section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-muted);margin-bottom:1rem}.sidebar-nav{display:flex;flex-direction:column}.sidebar-item{display:block;font-size:14px;color:var(--color-text);padding:10px 12px;border-radius:var(--radius-sm);margin-bottom:8px;cursor:pointer;transition:var(--transition);text-decoration:none}.sidebar-item:hover{background:var(--color-accent-soft);color:var(--color-accent);text-decoration:none}.sidebar-item.active{background:var(--color-accent);color:#fff;font-weight:500}.app-main{flex:1;min-width:0;background:var(--color-bg)}.container{max-width:1200px;margin:0 auto;padding:2rem;width:100%}.card{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1.5rem;box-shadow:0 1px 3px #0000000d}button{font-family:inherit}button.primary{background:var(--color-accent);color:#fff;border:none;padding:10px 20px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:500;transition:var(--transition)}button.primary:hover{background:var(--color-accent-hover)}button.primary:disabled{background:#e5e7eb;color:#9ca3af;cursor:not-allowed}button.secondary{background:#fff;color:var(--color-text);border:1px solid var(--color-secondary-border);padding:10px 20px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:500;transition:var(--transition)}button.secondary:hover{background:var(--color-accent-soft)}button.secondary:disabled{color:#9ca3af;cursor:not-allowed;background:#f9fafb}button.danger{background:var(--color-danger);color:#fff;border:none;padding:8px 16px;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:500;transition:var(--transition)}button.danger:hover{background:#991b1b}button.danger:disabled{background:#fca5a5;cursor:not-allowed}input,select,textarea{font:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;background:#fff;color:var(--color-text);transition:var(--transition)}input::placeholder,textarea::placeholder{color:var(--color-placeholder)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #d977061a}label{display:block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-muted);margin-bottom:.4rem;margin-top:.75rem}.row{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap}.row>*{flex:1;min-width:150px}table{width:100%;border-collapse:collapse;margin-top:.5rem;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--color-row-divider);font-size:14px}th{background:var(--color-table-head);color:var(--color-muted);font-weight:500;border-bottom:2px solid var(--color-border);text-transform:uppercase;letter-spacing:.4px;font-size:12px}tbody tr{transition:background .15s ease}tbody tr:hover{background:var(--color-bg)}tbody tr:last-child td{border-bottom:none}tr.material-section-header td{background:var(--color-accent);color:#fff;font-weight:600;letter-spacing:.3px;padding:12px;border-bottom:none;text-transform:none;font-size:14px;cursor:pointer;-webkit-user-select:none;user-select:none}tr.material-section-header td:first-child{text-transform:none}tr.material-section-header:hover td{background:var(--color-accent-hover)}tr.material-row td:nth-child(3){color:var(--color-accent);font-weight:600}tr.material-row .muted{color:var(--color-placeholder)}.tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-top:1rem;background:#fff;border-radius:0}.tabs .tab{background:transparent;border:none;border-bottom:2px solid transparent;padding:12px 24px;cursor:pointer;color:var(--color-muted);font-size:14px;font-weight:500;margin-bottom:-2px;transition:var(--transition)}.tabs .tab:hover{color:var(--color-text)}.tabs .tab.active{color:var(--color-accent);border-bottom-color:var(--color-accent);background:transparent}.sketch-toolbar{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid var(--color-border);border-bottom:none;border-radius:var(--radius-md) var(--radius-md) 0 0;padding:.6rem .85rem}.sketch-toolbar label{margin:0}.sketch-area{display:flex;gap:.75rem;align-items:flex-start}.sketch-canvas-wrap{flex:1;min-width:0;border:1px solid var(--color-border);border-top:none;background:var(--color-bg);border-radius:0 0 var(--radius-md) var(--radius-md);overflow:hidden}.sketch-canvas-wrap canvas{outline:none}.wall-editor{width:280px;flex:0 0 280px;margin-bottom:0}.muted{color:var(--color-muted);font-size:13px}.error{color:var(--color-danger);margin:.5rem 0;background:#fef2f2;border:1px solid #FECACA;padding:.6rem .85rem;border-radius:var(--radius-sm);font-size:14px}.toolbar{display:flex;gap:.5rem;align-items:center;margin:.75rem 0;flex-wrap:wrap}.right{margin-left:auto}.login-wrap{max-width:380px;margin:6rem auto;padding:2rem;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 4px 12px #0000000f}.assembly-items th,.assembly-items td{font-size:13px}.assembly-items input{padding:6px 8px}.storey-badge{display:inline-block;margin-left:.5rem;padding:.15rem .55rem;border-radius:999px;background:var(--color-accent-soft);color:var(--color-accent);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;vertical-align:middle}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .15s ease-out}.modal{background:#fff;border-radius:var(--radius-lg);padding:2rem;width:100%;max-width:540px;box-shadow:0 10px 25px #0000001a;max-height:90vh;overflow-y:auto}.modal h2{margin-top:0;font-size:18px;font-weight:600}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}tr.material-row td:first-child{color:var(--color-text)}@media (max-width: 768px){.app-sidebar{display:none}.container{padding:1rem}.topbar{padding:0 1rem}.brand-text{font-size:18px}}
