@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap";:root{--primary:#38bdf8;--primary-glow:#38bdf880;--secondary:#818cf8;--accent:#f472b6;--success:#22c55e;--warning:#f59e0b;--danger:#ef4444;--bg-dark:#020617;--bg-card:#0f172a;--bg-card-hover:#1e293b;--text-main:#f8fafc;--text-muted:#94a3b8;--text-dim:#64748b;--border:#ffffff14;--border-focus:#38bdf866;--glass:#0f172a99;--glass-border:#ffffff1a;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--shadow-glow:0 0 20px -5px var(--primary-glow)}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-dark);color:var(--text-main);-webkit-font-smoothing:antialiased;height:100vh;font-family:Outfit,sans-serif;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.app-container{background:radial-gradient(circle at 50% 0,#38bdf814 0%,#0000 50%),radial-gradient(circle at 0 100%,#818cf80d 0%,#0000 40%);width:100vw;height:100vh;display:flex}.sidebar{background:var(--bg-card);border-right:1px solid var(--border);z-index:10;flex-direction:column;width:280px;padding:24px 16px;display:flex}.main-content{flex:1;padding:40px;position:relative;overflow-y:auto}h1,h2,h3,h4{letter-spacing:-.02em;font-weight:700}.gradient-text{background:linear-gradient(135deg, var(--primary), var(--secondary));-webkit-text-fill-color:transparent;-webkit-background-clip:text}.glass-card{background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--glass-border);box-shadow:var(--shadow-lg);border-radius:20px;padding:24px;transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-card:hover{border-color:#fff3;transform:translateY(-2px)}.btn{cursor:pointer;border:none;border-radius:12px;justify-content:center;align-items:center;gap:10px;padding:12px 24px;font-family:inherit;font-size:.95rem;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;box-shadow:var(--shadow-glow)}.btn-primary:hover{box-shadow:0 0 25px -5px var(--primary-glow);filter:brightness(1.1);transform:translateY(-2px)}.btn-primary:active{transform:translateY(0)}.btn-secondary{color:var(--text-main);border:1px solid var(--border);background:#ffffff0d}.btn-secondary:hover{background:#ffffff1a;border-color:#fff3}.nav-link{color:var(--text-muted);cursor:pointer;border-radius:12px;align-items:center;gap:12px;margin-bottom:4px;padding:12px 16px;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.nav-link:hover{color:var(--text-main);background:#ffffff0d}.nav-link.active{color:var(--primary);background:#38bdf81a;font-weight:600}.input-group{margin-bottom:20px}.label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-size:.8rem;font-weight:600;display:block}input,select,textarea{border:1px solid var(--border);color:#fff;background:#0f172acc;border-radius:10px;width:100%;padding:12px 16px;font-family:inherit;font-size:.95rem;transition:all .2s}input:focus,select:focus{border-color:var(--primary);background:var(--bg-dark);outline:none;box-shadow:0 0 0 4px #38bdf81a}.badge{text-transform:uppercase;letter-spacing:.02em;border-radius:99px;align-items:center;padding:4px 12px;font-size:.75rem;font-weight:600;display:inline-flex}.badge-success{color:#4ade80;background:#22c55e1a;border:1px solid #22c55e33}.badge-warning{color:#fbbf24;background:#f59e0b1a;border:1px solid #f59e0b33}.badge-danger{color:#f87171;background:#ef44441a;border:1px solid #ef444433}.status-indicator{border-radius:50%;width:8px;height:8px;display:inline-block}.status-online{background:var(--success);box-shadow:0 0 10px var(--success)}.status-busy{background:var(--warning);box-shadow:0 0 10px var(--warning)}.status-offline{background:var(--text-dim)}.grid{gap:24px;display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.console{color:#a7f3d0;background:#000;border:1px solid #a7f3d01a;border-radius:12px;padding:20px;font-family:JetBrains Mono,monospace;font-size:.85rem;line-height:1.6;box-shadow:inset 0 2px 10px #00000080}.console-line{gap:12px;margin-bottom:4px;display:flex}.console-prompt{color:#34d399;opacity:.7}.stats-card{flex-direction:column;gap:4px;display:flex}.stats-value{color:var(--text-main);font-size:1.8rem;font-weight:800}.stats-label{color:var(--text-muted);font-size:.85rem;font-weight:500}.card{background:#1e293b;border:1px solid #ffffff14;border-radius:16px;box-shadow:0 4px 24px #0000004d}.card.glass{-webkit-backdrop-filter:blur(16px);background:#1e293bf2}.nav-btn{color:#94a3b8;cursor:pointer;text-align:left;background:#ffffff0a;border:1px solid #0000;border-radius:10px;align-items:center;gap:10px;width:100%;padding:12px 16px;font-family:inherit;font-size:.9rem;font-weight:500;transition:all .2s;display:flex}.nav-btn:hover{color:#f8fafc;background:#38bdf814}.nav-btn.active{color:#38bdf8;background:#38bdf81f;border-color:#38bdf84d;font-weight:600}.btn-primary{color:#fff;cursor:pointer;letter-spacing:.03em;background:linear-gradient(135deg,#38bdf8,#0ea5e9);border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:14px 24px;font-family:inherit;font-size:.95rem;font-weight:700;transition:all .2s;display:inline-flex;box-shadow:0 0 20px -5px #38bdf880}.btn-primary:hover{filter:brightness(1.1);transform:translateY(-1px)}.result-item{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;padding:10px 0;display:flex}.result-value{color:#f8fafc;font-size:1.2rem;font-weight:700}.modern-table{border-collapse:collapse;color:#f8fafc;font-size:.875rem}.modern-table th{text-align:left;text-transform:uppercase;letter-spacing:.07em;color:#64748b;border-bottom:1px solid #ffffff14;padding:10px 14px;font-size:.7rem;font-weight:700}.modern-table td{vertical-align:middle;border-bottom:1px solid #ffffff0d;padding:12px 14px}.modern-table tbody tr:hover{background:#38bdf80a}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#020617d9!important}.upload-zone{transition:all .3s}.upload-zone:hover{transform:scale(1.01);border-color:var(--primary)!important;background:#38bdf81a!important}.badge-info{color:var(--primary);background:#38bdf81a;border:1px solid #38bdf833}.badge-pending{color:#fbbf24;background:#f59e0b1a;border:1px solid #f59e0b33}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;padding-right:40px}select option{background:var(--bg-card);color:#fff;padding:12px}.fab-root{flex-direction:column;gap:12px;min-height:80vh;padding:4px 0;display:flex}.fab-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.fab-title{color:#34d399;margin:0;font-size:1.3rem;font-weight:700}.fab-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.fab-select{color:#e2e8f0;background:#1e293b;border:1px solid #334155;border-radius:8px;min-width:200px;padding:6px 12px;font-size:.85rem}.fab-btn-reload{color:#94a3b8;cursor:pointer;background:#1e293b;border:1px solid #475569;border-radius:8px;padding:6px 14px;font-size:.85rem;transition:all .2s}.fab-btn-reload:hover{color:#34d399;border-color:#34d399}.fab-completeness-bar{background:#0f172a;border:1px solid #1e293b;border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;display:flex}.fab-drawing-class{color:#f59e0b;background:#f59e0b1a;border:1px solid #f59e0b;border-radius:4px;margin-right:6px;padding:2px 8px;font-size:.75rem;font-weight:700}.fab-flag{border-radius:4px;padding:2px 7px;font-family:monospace;font-size:.72rem}.fab-flag.ok{color:#22c55e;background:#14532d22;border:1px solid #22c55e44}.fab-flag.missing{color:#475569}.fab-flag.blocking{color:#ef4444;background:#7f1d1d22;border:1px solid #ef444444}.fab-flag.warning{color:#f59e0b;background:#78350f22;border:1px solid #f59e0b44}.fab-project-info{color:#94a3b8;flex-wrap:wrap;align-items:center;gap:16px;padding:6px 2px;font-size:.85rem;display:flex}.fab-project-info b{color:#e2e8f0}.fab-norma{color:#60a5fa;background:#1e293b;border:1px solid #334155;border-radius:4px;padding:2px 8px;font-size:.75rem}.fab-view-tabs{border-bottom:1px solid #1e293b;flex-wrap:wrap;gap:6px;padding-bottom:8px;display:flex}.fab-tab{color:#64748b;cursor:pointer;background:#1e293b;border:1px solid #0000;border-radius:8px;padding:6px 16px;font-size:.85rem;transition:all .2s;position:relative}.fab-tab:hover{color:#e2e8f0;border-color:#334155}.fab-tab.active{color:#34d399;background:#34d39914;border-color:#34d399}.fab-badge-red{color:#fff;background:#ef4444;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;display:flex;position:absolute;top:-6px;right:-6px}.fab-content{min-height:400px}.fab-view-panel{overflow:auto}.fab-loading{color:#64748b;align-items:center;gap:12px;padding:40px;display:flex}.fab-error{color:#ef4444;background:#7f1d1d22;border:1px solid #ef444444;border-radius:8px;padding:12px}.fab-empty{color:#475569;text-align:center;padding:60px;font-size:.9rem}.fab-plan-modes{gap:8px;margin-bottom:12px;display:flex}.fab-mode-btn{color:#64748b;cursor:pointer;background:#1e293b;border:1px solid #334155;border-radius:6px;padding:4px 14px;font-size:.8rem}.fab-mode-btn.active{color:#60a5fa;border-color:#60a5fa}.fab-elevation-svg,.fab-plan-svg{border-radius:8px;display:block}.bom-table-wrapper{flex-direction:column;gap:12px;display:flex}.bom-summary-row{color:#94a3b8;background:#1e293b;border-radius:8px;flex-wrap:wrap;align-items:center;gap:16px;padding:10px 16px;font-size:.85rem;display:flex}.bom-summary-row b{color:#e2e8f0}.bom-badge-class{color:#f59e0b;font-weight:600}.bom-filter-row{flex-wrap:wrap;gap:8px;display:flex}.bom-filter-btn{color:#64748b;cursor:pointer;text-transform:capitalize;background:#1e293b;border:1px solid #334155;border-radius:6px;padding:4px 12px;font-size:.8rem}.bom-filter-btn.active{color:#34d399;border-color:#34d399}.bom-table-scroll{border-radius:8px;overflow-x:auto}.bom-table{border-collapse:collapse;width:100%;font-size:.82rem}.bom-table th{color:#64748b;text-align:left;letter-spacing:.04em;background:#1e293b;border-bottom:1px solid #334155;padding:8px 12px;font-size:.75rem;font-weight:600}.bom-table td{color:#cbd5e1;border-bottom:1px solid #1e293b22;padding:7px 12px}.bom-table tr:hover td{background:#1e293b44}.bom-table .mono{font-family:monospace;font-size:.8rem}.bom-table .num{text-align:right;font-family:monospace}.bom-row-leg td:first-child{color:#60a5fa}.bom-row-diagonal td:first-child{color:#94a3b8}.fab-joints-panel{flex-direction:column;gap:10px;display:flex}.fab-panel-title{color:#94a3b8;margin:0 0 6px;font-size:.9rem}.fab-joint-card{background:#1e293b;border-left:4px solid #334155;border-radius:8px;padding:12px 16px}.fab-joint-card.severity-warning{border-left-color:#f59e0b}.fab-joint-card.severity-blocking{border-left-color:#ef4444}.fab-joint-card.severity-ok{border-left-color:#22c55e}.fab-joint-header{align-items:center;gap:12px;margin-bottom:6px;display:flex}.fab-joint-id{color:#64748b;font-family:monospace;font-size:.8rem}.fab-joint-severity.ok{color:#22c55e;font-size:.8rem;font-weight:600}.fab-joint-severity.warning{color:#f59e0b;font-size:.8rem;font-weight:600}.fab-joint-severity.blocking{color:#ef4444;font-size:.8rem;font-weight:600}.fab-joint-reason{color:#475569;font-family:monospace;font-size:.75rem}.fab-joint-detail{color:#94a3b8;flex-wrap:wrap;gap:16px;margin-bottom:4px;font-size:.8rem;display:flex}.fab-joint-detail code{color:#60a5fa;background:#0f172a;border-radius:3px;padding:1px 5px}.fab-joint-note{color:#64748b;font-size:.8rem;font-style:italic}
