*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0F1117;--bg-card: #1A1D27;--bg-hover: #242836;--border: #2A2E3B;--text: #E4E4E7;--text-dim: #9CA3AF;--accent: #6366F1;--accent-hover: #818CF8;--success: #22C55E;--warning: #F59E0B;--danger: #EF4444;--radius: 8px}body{font-family:Inter,-apple-system,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}button{font-family:inherit;cursor:pointer;border:none;border-radius:var(--radius);padding:8px 16px;font-size:14px;font-weight:500;transition:all .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-outline:hover{border-color:var(--accent);color:var(--accent)}.btn-danger{background:var(--danger);color:#fff}.btn-sm{padding:4px 10px;font-size:12px}.btn-icon{padding:6px;background:transparent;color:var(--text-dim);display:flex;align-items:center}.btn-icon:hover{color:var(--accent)}input,select{font-family:inherit;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:8px 12px;font-size:14px;outline:none;transition:border-color .15s}input:focus,select:focus{border-color:var(--accent)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.app-layout{display:flex;min-height:100vh}.sidebar{width:280px;border-right:1px solid var(--border);padding:16px;flex-shrink:0;overflow-y:auto}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden}.toolbar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border)}.canvas-area{flex:1;position:relative;overflow:hidden}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.panel-header h3{font-size:14px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.room-list{display:flex;flex-direction:column;gap:6px}.room-item{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border-radius:var(--radius);cursor:pointer;transition:background .15s}.room-item:hover{background:var(--bg-hover)}.room-item.active{background:var(--accent);color:#fff}.material-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.material-card{padding:10px;border-radius:var(--radius);border:1px solid var(--border);cursor:pointer;transition:all .15s;font-size:12px}.material-card:hover{border-color:var(--accent)}.material-card .price{font-weight:600;color:var(--success)}.cost-row{display:flex;justify-content:space-between;padding:6px 0;font-size:14px}.cost-row.total{font-weight:700;font-size:16px;border-top:1px solid var(--border);padding-top:10px;margin-top:4px}.auth-page{display:flex;justify-content:center;align-items:center;min-height:100vh}.auth-form{width:360px}.auth-form h1{font-size:24px;margin-bottom:24px;text-align:center}.auth-form .field{margin-bottom:14px}.auth-form .field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:4px}.auth-form .field input{width:100%}.auth-form button{width:100%;padding:10px;margin-top:8px}.dashboard{padding:32px;max-width:1000px;margin:0 auto}.dashboard h1{font-size:28px;margin-bottom:24px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.project-card{cursor:pointer;transition:border-color .15s}.project-card:hover{border-color:var(--accent)}.project-card h3{font-size:16px;margin-bottom:4px}.project-card .meta{font-size:12px;color:var(--text-dim)}.tag{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:500}.tag-draft{background:#374151;color:#9ca3af}.tag-active{background:#1e3a5f;color:#60a5fa}.tag-done{background:#14532d;color:#86efac}.top-nav{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;border-bottom:1px solid var(--border)}.top-nav .logo{font-weight:700;font-size:18px}.top-nav .logo span{color:var(--accent)}.top-nav .nav-actions{display:flex;gap:12px;align-items:center}
