.landing{min-height:100vh;background:var(--bg);color:var(--text)}.landing header{position:static}.landing-nav{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;max-width:1000px;margin:0 auto;border-bottom:1px solid var(--border)}.landing-logo{font-weight:700;font-size:1.1rem;color:var(--text);text-decoration:none;letter-spacing:-.02em}.landing-logo:hover{color:var(--accent)}.landing-nav-actions{display:flex;align-items:center;gap:.75rem}.landing-cta{padding:.5rem 1rem;border-radius:8px;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s}.landing-cta--primary{background:var(--accent);color:#fff}.landing-cta--primary:hover{background:var(--accent-hover);color:#fff}.landing-cta--secondary{color:var(--text-muted);border:1px solid var(--border)}.landing-cta--secondary:hover{background:var(--surface-hover);color:var(--text)}.landing-hero{padding:4rem 1.5rem;max-width:720px;margin:0 auto;text-align:center}.landing-hero-title{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;line-height:1.2;letter-spacing:-.03em;margin:0 0 1rem}.landing-hero-subtitle{font-size:1.1rem;color:var(--text-muted);line-height:1.6;margin:0 0 1.75rem}.landing-hero-cta{display:inline-block;padding:.75rem 1.5rem;background:var(--accent);color:#fff;font-weight:600;border-radius:8px;text-decoration:none;transition:background .15s}.landing-hero-cta:hover{background:var(--accent-hover);color:#fff}.landing-section{padding:3rem 1.5rem;max-width:1000px;margin:0 auto}.landing-section-title{font-size:1.35rem;font-weight:700;margin:0 0 1rem;letter-spacing:-.02em}.landing-section-lead{font-size:1rem;color:var(--text-muted);line-height:1.65;margin:0}.landing-section-lead strong{color:var(--text)}.landing-screenshots-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-top:1rem}.landing-screenshot-placeholder{aspect-ratio:16 / 10;background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius);display:flex;align-items:center;justify-content:center}.landing-screenshot-label{font-size:.9rem;color:var(--text-muted)}.landing-features{list-style:none;padding:0;margin:0;display:grid;gap:.75rem}.landing-features li{padding-left:1.5rem;position:relative;color:var(--text-muted);line-height:1.5}.landing-features li:before{content:"";position:absolute;left:0;top:.5rem;width:6px;height:6px;border-radius:50%;background:var(--accent)}.landing-features li strong{color:var(--text)}.landing-pricing{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem;margin-top:1rem}.landing-tier{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;position:relative;display:flex;flex-direction:column}.landing-tier--highlight{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.landing-tier-badge{position:absolute;top:-.5rem;right:1rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);background:var(--bg);padding:.2rem .5rem;border-radius:4px}.landing-tier-name{font-size:1.1rem;font-weight:600;margin:0 0 .5rem}.landing-tier-price{font-size:2rem;font-weight:700;margin-bottom:.25rem}.landing-tier-currency{font-size:1.25rem;color:var(--text-muted)}.landing-tier-period{font-size:1rem;font-weight:500;color:var(--text-muted)}.landing-tier-desc{font-size:.9rem;color:var(--text-muted);margin:0 0 1rem;line-height:1.45}.landing-tier-features{list-style:none;padding:0;margin:0 0 1.25rem;flex:1}.landing-tier-features li{font-size:.9rem;color:var(--text-muted);padding:.25rem 0 .25rem 1.25rem;position:relative}.landing-tier-features li:before{content:"✓";position:absolute;left:0;color:var(--success);font-weight:600}.landing-tier-cta{display:block;text-align:center;padding:.6rem 1rem;border-radius:8px;font-size:.9rem;font-weight:500;text-decoration:none;border:1px solid var(--border);color:var(--text);background:transparent;transition:background .15s,color .15s}.landing-tier-cta:hover{background:var(--surface-hover);color:var(--text)}.landing-tier-cta--primary{background:var(--accent);border-color:var(--accent);color:#fff}.landing-tier-cta--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.landing-footer{padding:2rem 1.5rem;max-width:1000px;margin:0 auto;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem}.landing-footer p{margin:0;font-size:.9rem;color:var(--text-muted)}.landing-footer-link{font-size:.9rem;color:var(--accent);text-decoration:none}.landing-footer-link:hover{text-decoration:underline}:root{--bg: #0f1419;--surface: #1a2332;--surface-hover: #243044;--border: #2d3a4d;--text: #e6edf3;--text-muted: #8b9cb3;--accent: #3b82f6;--accent-hover: #2563eb;--success: #22c55e;--warning: #eab308;--radius: 10px;--shadow: 0 4px 24px rgba(0,0,0,.35)}*{box-sizing:border-box}body{margin:0;font-family:DM Sans,system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;line-height:1.5;overflow-x:hidden}.app{max-width:1100px;margin:0 auto;padding:1.5rem}header{position:sticky;top:0;z-index:100;margin-bottom:1rem;padding-bottom:.6rem;border-bottom:1px solid var(--border);background:var(--bg)}.header-cards{display:flex;gap:.6rem;width:100%;margin-top:.4rem}.header-cards>*{flex:1;min-width:0}.save-export-row{margin-top:.5rem;display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}header input[type=range]{display:block;width:100%;height:4px;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--border);border-radius:2px}header input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--accent);cursor:pointer;margin-top:-4px}header input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--accent);cursor:pointer;border:none}header h1{font-size:1.35rem;font-weight:700;margin:0;letter-spacing:-.02em}h1{font-size:1.5rem;font-weight:700;margin:0 0 .25rem;letter-spacing:-.02em}.subtitle{color:var(--text-muted);font-size:.9rem}.top-nav{margin-top:.75rem;display:flex;gap:.75rem;border-bottom:1px solid var(--border);padding-bottom:.5rem}.nav-link{font-size:.85rem;color:var(--text-muted);text-decoration:none;padding:.25rem .5rem;border-radius:999px;transition:background .15s,color .15s}.nav-link:hover{background:var(--surface-hover);color:var(--text)}.nav-link-active{background:var(--accent);color:#fff}.tab-panel.hidden{display:none}.layout{display:grid;grid-template-columns:280px 1fr;gap:1.5rem}.layout--full-width{grid-template-columns:1fr}.layout--full-width aside{display:none}.layout main{min-width:0}@media (max-width: 700px){.layout{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1rem;box-shadow:var(--shadow)}.card h2{font-size:.75rem;font-weight:600;margin:0 0 .75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.assembly-graph-wrap{padding:.5rem 0;border-radius:var(--radius)}.assembly-graph rect{transition:fill .15s}.assembly-graph g:hover rect{fill:var(--surface-hover)}.task-dependency-graph-wrap{margin-top:.75rem;margin-bottom:.5rem;padding:.5rem 0;border-radius:var(--radius);overflow-x:auto}.task-dependency-graph{min-width:100%}.task-dependency-graph .task-dep-node{transition:fill .15s,stroke .15s}.task-dependency-graph g:hover .task-dep-node{fill:var(--surface-hover)}.task-dep-node-html{transition:background .15s,border-color .15s}.task-dep-node-html:hover{background:var(--surface-hover)!important}label{display:block;font-size:.8rem;font-weight:500;margin-bottom:.3rem;color:var(--text-muted)}input,select,button{font-family:inherit;font-size:.9rem}input,select{width:100%;padding:.5rem .65rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);margin-bottom:.5rem}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #3b82f633}button{cursor:pointer;font-weight:500;padding:.5rem .75rem;border-radius:6px;border:none;transition:background .15s}button.primary{background:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover)}button.secondary{background:var(--surface-hover);color:var(--text);border:1px solid var(--border)}button.secondary:hover{background:var(--border)}button.danger{background:transparent;color:#f87171;border:1px solid rgba(248,113,113,.4)}button.danger:hover{background:#f871711a}.palette{display:flex;flex-direction:column;gap:.4rem;max-height:55vh;overflow-y:auto}.palette-item{display:flex;align-items:start;justify-content:space-between;flex-direction:column;gap:.5rem;padding:.5rem .65rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;cursor:grab;-webkit-user-select:none;user-select:none;transition:border-color .15s,box-shadow .15s}.palette-item:hover{border-color:var(--accent)}.palette-item:active{cursor:grabbing}.palette-item.dragging{opacity:.5}.palette-item-selected{border-color:var(--accent);background:#3b82f614}.palette-item .name{font-weight:500}.palette-item .meta{font-size:.75rem;color:var(--text-muted)}.palette-item .badge{font-size:.65rem;padding:.15rem .4rem;border-radius:4px;background:var(--surface-hover);color:var(--text-muted)}.palette-item .badge.assembly{background:#3b82f633;color:var(--accent)}.palette-item .badge.category{background:#22c55e33;color:var(--success)}.add-buttons{display:flex;gap:.5rem;margin-top:.5rem}.add-buttons button{flex:1}.category-add-row{display:flex;gap:.5rem;margin-bottom:.75rem;flex-wrap:wrap}.category-add-row input,.category-add-row select{flex:1;min-width:100px;margin-bottom:0}.categories-list{max-height:50vh}.categories-list .palette-item .badge{display:none}.category-drop-root{padding:.5rem .65rem;margin-bottom:.35rem;border:1px dashed var(--border);border-radius:6px;color:var(--text-muted);font-size:.8rem;text-align:center;transition:border-color .15s,background .15s}.category-drop-root.category-drag-over{border-color:var(--accent);background:#3b82f61a;color:var(--text)}.category-tree-item{align-items:center;cursor:grab}.category-tree-item:active{cursor:grabbing}.category-tree-item.category-dragging{opacity:.5}.category-tree-item.category-drag-over{border-color:var(--accent);background:#3b82f614}.category-tree-branch{color:var(--text-muted);font-size:.85em;margin-right:.2rem}.category-item-delete{margin-left:auto;font-size:.75rem;padding:.2rem .4rem}.detail-form .row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);gap:.5rem;margin-bottom:.75rem}.detail-form .row.single{grid-template-columns:1fr}.detail-form .used-in-row label{display:block;font-size:.85rem;color:var(--text-muted);margin-bottom:.35rem}.used-in-list{display:flex;flex-wrap:wrap;gap:.35rem}.used-in-assembly{padding:.25rem .5rem;font-size:.8rem;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);cursor:pointer;transition:border-color .15s,color .15s}.used-in-assembly:hover{border-color:var(--accent);color:var(--accent)}.detail-form input{margin-bottom:0}.price-history-section{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border)}.price-history-section .price-history-label{display:block;margin-bottom:.35rem;font-size:.7rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.price-history-graph-wrap{width:100%;max-width:240px;max-height:72px;margin-bottom:.5rem;background:var(--bg);border-radius:4px;border:1px solid var(--border);overflow:hidden}.price-history-svg{width:100%;height:auto;display:block;min-height:72px}.price-history-axis{fill:var(--text-muted);font-size:.6rem;font-family:JetBrains Mono,monospace;opacity:.8}.price-history-grid{stroke:var(--border);stroke-width:.5;stroke-dasharray:2 2;opacity:.6}.price-history-table{width:100%;max-width:200px;border-collapse:collapse;font-size:.75rem}.price-history-table th,.price-history-table td{padding:.2rem .35rem;text-align:left;border-bottom:1px solid var(--border);color:var(--text-muted)}.price-history-table th{font-weight:500}.price-history-table tr.price-history-current{font-weight:600;color:var(--accent)}.components-zone{min-height:80px;padding:.75rem 1rem;border:2px dashed var(--border);border-radius:8px;background:#3b82f608;margin-top:.5rem;transition:border-color .2s,background .2s}.components-zone.drag-over{border-color:var(--accent);background:#3b82f614}.components-zone .hint{font-size:.8rem;color:var(--text-muted);margin-bottom:.5rem}.components-zone .formula-hint{margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--border);font-size:.72rem;color:var(--text-muted);line-height:1.35}.component-row{display:grid;grid-template-columns:1fr minmax(10rem,auto) auto auto;align-items:center;gap:.75rem 1rem;padding:.5rem .6rem;background:var(--bg);border-radius:6px;margin-bottom:.35rem;font-size:.9rem}.component-name-cell{min-width:0}.component-name-open-item{cursor:pointer;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.component-name-open-item:hover{color:var(--accent);text-decoration:underline}.comp-controls{display:flex;align-items:center;gap:.4rem;min-width:0}.component-row input.qty,.component-row input.comp-value{width:100%;min-width:60px;max-width:100px;margin:0;padding:.3rem .45rem;font-size:.875rem;text-align:left}.comp-unit{font-size:.8rem;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.comp-fixed{display:flex;align-items:center;gap:.35rem;font-size:.8rem;white-space:nowrap;cursor:pointer;margin:0}.component-row .remove-comp{padding:.25rem .5rem;font-size:.8rem;justify-self:end}.component-row .formula-warning{grid-column:1 / -1;margin:.25rem 0 0}.estimate-row{display:grid;grid-template-columns:1fr 120px 100px;gap:.5rem;align-items:end;margin-bottom:.75rem}.estimate-row input,.estimate-row select{margin-bottom:0}.results-card{border-left:4px solid var(--accent)}.results-card h2{color:var(--accent)}.result-item{display:flex;justify-content:space-between;align-items:baseline;padding:.5rem 0;border-bottom:1px solid var(--border);font-size:.9rem}.result-item:last-child{border-bottom:none}.result-value{font-family:JetBrains Mono,monospace;font-weight:500;color:var(--success)}.result-unit{color:var(--text-muted);font-size:.8rem;margin-left:.25rem}.result-item.total{font-weight:600;font-size:1rem;padding-top:.75rem;margin-top:.25rem;border-top:1px solid var(--border)}.result-item-open{cursor:pointer}.result-item-open:hover{background:#3b82f60f}.icon-link-button{border:none;padding:0 0 0 .25rem;margin:0;background:none;color:var(--text-muted);cursor:pointer;font:inherit}.icon-link-button:hover{color:var(--accent)}.takeoff-create-all-tasks-wrap{margin-top:.75rem}.error{background:#f871711a;border:1px solid rgba(248,113,113,.3);color:#fca5a5;padding:.75rem 1rem;border-radius:6px;margin-top:1rem;font-size:.9rem}.hidden{display:none}.formula-warning{margin-top:.35rem;font-size:.75rem;color:var(--warning);display:flex;align-items:center;gap:.35rem}.formula-warning:before{content:"⚠"}.empty-state{color:var(--text-muted);font-size:.9rem;padding:.5rem 0}.takeoff-item-filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.takeoff-item-filters input,.takeoff-item-filters select{padding:.35rem .5rem;font-size:.85rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text)}.takeoff-item-filters input{min-width:10rem;flex:1}.takeoff-item-filters select{min-width:6rem}.takeoff-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:.75rem;align-items:end;margin-bottom:.75rem}.takeoff-sidebar .takeoff-row{grid-template-columns:1fr}.takeoff-sidebar .takeoff-row>div{min-width:0}.takeoff-sidebar .takeoff-select{max-width:none}.takeoff-row-actions{grid-template-columns:1fr;margin-top:-.25rem}.takeoff-toolbar{margin-bottom:.5rem;padding:.25rem 0;border-bottom:1px solid var(--border);display:grid;grid-template-columns:1fr auto;gap:1rem 1.25rem;align-items:center;min-height:36px;max-height:100px}.takeoff-toolbar-col{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .5rem;min-width:0}.takeoff-toolbar-marking{justify-content:flex-start}.takeoff-toolbar-zoom-cal{justify-content:flex-end;flex-shrink:0}.takeoff-toolbar-label{font-size:.65rem;font-weight:500;color:var(--text-muted);flex-shrink:0;line-height:1.2}.takeoff-toolbar input,.takeoff-toolbar select,.takeoff-toolbar button{height:26px;min-height:26px;padding:0 .35rem;font-size:.75rem;line-height:1.2;border-radius:4px}.takeoff-toolbar select{padding-top:0;padding-bottom:0}.takeoff-toolbar button{padding:.1rem .35rem}.takeoff-toolbar-filter-input{width:5rem;min-width:4.5rem}.takeoff-toolbar .filter-select{min-width:4rem}.takeoff-toolbar-category{min-width:5.5rem}.takeoff-toolbar-select{max-width:11rem;min-width:7rem}.takeoff-toolbar-mark{max-width:5.5rem;min-width:4.5rem}.takeoff-toolbar-actions{gap:.15rem}.takeoff-toolbar-actions button{padding:.1rem .35rem;font-size:.75rem}.takeoff-toolbar-scale-text{font-size:.7rem;color:var(--text-muted);line-height:26px}.takeoff-item-dropdown{position:relative;min-width:7rem;max-width:14rem}.takeoff-item-dropdown-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;height:26px;min-height:26px;padding:0 .5rem;background:var(--input-bg, #fff);border:1px solid var(--border);border-radius:4px;font:inherit;color:inherit;cursor:pointer;text-align:left;gap:.25rem}.takeoff-item-dropdown-trigger:hover{border-color:var(--border-strong, #999)}.takeoff-item-dropdown-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.takeoff-item-dropdown-chevron{flex-shrink:0;color:var(--text-muted);font-size:.7rem}.takeoff-item-dropdown-panel{position:absolute;top:100%;left:0;margin-top:2px;min-width:100%;width:max-content;max-width:22rem;max-height:280px;display:flex;flex-direction:column;background:var(--surface, #fff);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 12px #00000026;z-index:1000}.takeoff-item-dropdown-filters{display:flex;flex-wrap:wrap;gap:.35rem;padding:.35rem;border-bottom:1px solid var(--border)}.takeoff-item-dropdown-search{flex:1;min-width:8rem;padding:.25rem .5rem;border:1px solid var(--border);border-radius:4px;font-size:.85rem}.takeoff-item-dropdown-category{min-width:6rem;padding:.25rem .5rem;border:1px solid var(--border);border-radius:4px;font-size:.85rem}.takeoff-item-dropdown-list{list-style:none;margin:0;padding:.2rem 0;overflow-y:auto;max-height:200px}.takeoff-item-dropdown-option{padding:.35rem .5rem;cursor:pointer;font-size:.9rem}.takeoff-item-dropdown-option:hover,.takeoff-item-dropdown-option.highlighted{background:var(--surface-hover, #f0f0f0)}.takeoff-item-dropdown-option.selected{font-weight:600}.takeoff-item-dropdown-unit{color:var(--text-muted);font-weight:400}.takeoff-item-dropdown-empty{padding:.5rem .75rem;color:var(--text-muted);font-size:.85rem}.takeoff-actions{display:flex;justify-content:flex-start;gap:.75rem;flex-wrap:wrap}.takeoff-canvas-wrapper{border-radius:8px;border:1px solid var(--border);background:#050811;margin-top:.5rem;overflow:auto;position:relative;max-height:500px}#takeoffCard{width:100%;max-width:100%;overflow-x:auto;padding-top:.5rem}#takeoffCard h2{margin-bottom:.25rem}#takeoffCard .empty-state{padding:.15rem 0 .35rem;margin-bottom:0;font-size:.8rem}#takeoffCanvas{display:block;background:#050811}.takeoff-list{margin-top:.75rem;font-size:.8rem;color:var(--text-muted);max-height:140px;overflow-y:auto;border-top:1px solid var(--border);padding-top:.5rem}.takeoff-row-item{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.25rem 0;flex-wrap:wrap}.takeoff-row-item-content{flex:1;min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:.25rem}.takeoff-item-display{display:inline-flex;align-items:center;gap:.2rem}.takeoff-edit-item-btn{padding:.1rem .25rem;font-size:.75rem;line-height:1;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--text-muted);cursor:pointer}.takeoff-edit-item-btn:hover{color:var(--text);background:var(--border)}.takeoff-row-item-content .takeoff-item-select{max-width:12rem;padding:.2rem .35rem;font-size:.8rem;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text)}.takeoff-row-item-content .takeoff-item-select.hidden{display:none}.takeoff-row-item-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.takeoff-visible-toggle{display:inline-flex;align-items:center;gap:.25rem;cursor:pointer;font-size:.75rem;color:var(--text-muted);-webkit-user-select:none;user-select:none}.takeoff-visible-toggle input{margin:0;cursor:pointer}.takeoff-row-item button{padding:.15rem .45rem;font-size:.75rem}.takeoff-row-item .takeoff-height-input,.takeoff-row-item .takeoff-depth-input{width:3.5rem;padding:.2rem .35rem;font-size:.8rem;margin:0 .15rem;display:inline-block}.takeoff-select{width:100%;max-width:14rem;padding:.35rem .5rem;font-size:.85rem;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);margin-bottom:.35rem}.takeoff-picture-actions,.takeoff-layer-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.35rem}.takeoff-picture-actions input[type=file]{font-size:.8rem}.takeoff-layers-list{margin-top:.5rem;font-size:.8rem}.takeoff-layer-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.takeoff-layer-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.5rem .75rem;min-height:2.25rem;padding:0 .5rem;margin:0 -.5rem;border-radius:6px;cursor:pointer;transition:background .12s ease}.takeoff-layer-item:hover,.takeoff-layer-item-active{background:var(--border)}.takeoff-layer-cb{display:flex;align-items:center;justify-content:center;margin:0;cursor:pointer}.takeoff-layer-cb input{margin:0;width:1rem;height:1rem;cursor:pointer;flex-shrink:0}.takeoff-layer-name{min-width:0;word-break:break-word;line-height:1.35}.takeoff-layer-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.takeoff-layer-btn{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;font-size:.85rem;line-height:1;background:transparent;border:none;border-radius:4px;color:var(--text-muted);cursor:pointer;transition:color .12s ease,background .12s ease}.takeoff-layer-btn:hover{color:var(--text);background:var(--surface)}.takeoff-layer-btn.danger:hover{color:var(--danger, #e57373);background:#e5737326}.takeoff-layer-remove{font-size:1.1rem;font-weight:300}.takeoff-item-meta{display:block;font-size:.7rem;color:var(--text-muted);margin-bottom:.15rem}.takeoff-item-meta .takeoff-layer-display{display:inline}.takeoff-item-meta .takeoff-layer-display.hidden{display:none}.takeoff-item-meta .takeoff-edit-layer-btn{padding:.1rem .25rem;font-size:.75rem;line-height:1;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--text-muted);cursor:pointer;margin-left:.15rem}.takeoff-item-meta .takeoff-edit-layer-btn:hover{color:var(--text);background:var(--border)}.takeoff-item-meta .takeoff-mark-layer-select{max-width:10rem;padding:.15rem .25rem;font-size:.75rem;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);margin-left:.2rem;vertical-align:middle}.takeoff-item-meta .takeoff-mark-layer-select.hidden{display:none}.takeoff-total-row{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}.takeoff-total-row span{flex:1;min-width:0}.takeoff-total-row .takeoff-create-task-btn{flex-shrink:0;padding:.25rem .5rem;font-size:.75rem}.result-item-with-task .result-value-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.result-item-with-task .create-task-btn{flex-shrink:0;padding:.25rem .5rem;font-size:.75rem}.tasks-toolbar{display:flex;align-items:flex-end;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.tasks-toolbar label{margin-bottom:0}.tasks-list{margin-bottom:1.5rem}.task-row{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;padding:.6rem .75rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;margin-bottom:.4rem;font-size:.9rem}.task-row.task-dependent{border-left:3px solid var(--accent);margin-left:.4rem}.task-row.dependency-source{outline:1px solid var(--accent)}.task-info{min-width:0}.task-name{font-weight:500;display:block}.task-name-open-item{cursor:pointer;text-decoration:underline;text-decoration-style:dotted}.task-name-open-item:hover{color:var(--accent)}.task-meta{font-size:.75rem;color:var(--text-muted)}.task-actions{flex-shrink:0;display:flex;flex-direction:column;align-items:stretch;gap:.25rem}.task-actions button{width:100%}.task-remove{padding:.25rem .5rem;font-size:.8rem}.tasks-holidays-section{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border)}.tasks-holidays-section label{display:block;font-weight:500}.tasks-holidays-add{display:flex;gap:.35rem;align-items:center;margin-bottom:.35rem}.tasks-holidays-add input[type=date]{flex:1;min-width:0}.tasks-holidays-list{list-style:none;margin:0;padding:0;font-size:.85rem}.tasks-holidays-list li{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.25rem 0;border-bottom:1px solid var(--border)}.tasks-holidays-list li:last-child{border-bottom:none}.tasks-holidays-list .task-holiday-remove{padding:.2rem .4rem;font-size:.75rem}.task-estimate-tooltip{position:fixed;z-index:1000;max-width:320px;padding:.5rem .65rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);font-size:.8rem;pointer-events:none}.task-estimate-tooltip.hidden{display:none}.task-estimate-tooltip-title{font-weight:600;margin-bottom:.35rem;color:var(--text)}.task-estimate-tooltip-line{padding:.15rem 0;color:var(--text-muted);border-bottom:1px solid var(--border)}.task-estimate-tooltip-line:last-of-type{border-bottom:none}.task-estimate-tooltip-total{margin-top:.35rem;padding-top:.35rem;font-weight:600;border-top:1px solid var(--border)}.cashflow-table-wrap{margin-top:.5rem;overflow-x:auto}.cashflow-table{width:100%;border-collapse:collapse;font-size:.9rem}.cashflow-table th,.cashflow-table td{padding:.4rem .6rem;text-align:left;border-bottom:1px solid var(--border)}.cashflow-table th{font-weight:600;color:var(--text-muted)}.cashflow-table tfoot td{font-weight:600;border-top:1px solid var(--border)}.cashflow-table .cashflow-receipt-remove{padding:.2rem .4rem;font-size:.8rem}.workforce-table-wrap{margin-top:.5rem;overflow-x:auto}.workforce-table{width:100%;border-collapse:collapse;font-size:.9rem}.workforce-table th,.workforce-table td{padding:.4rem .6rem;text-align:left;border-bottom:1px solid var(--border)}.workforce-table th{font-weight:600;color:var(--text-muted)}.workforce-table td:nth-child(n+4){text-align:right}.workforce-table td.workforce-short{color:var(--warning);font-weight:500}.workforce-table td.workforce-excess{color:var(--text-muted)}.workforce-table td.workforce-not-needed{color:var(--warning);font-weight:500}.labour-allocation-add{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:1rem}.labour-allocation-list-wrap{margin-top:.5rem;overflow-x:auto}.labour-allocation-table{width:100%;border-collapse:collapse;font-size:.9rem}.labour-allocation-table th,.labour-allocation-table td{padding:.4rem .6rem;text-align:left;border-bottom:1px solid var(--border)}.labour-allocation-table th{font-weight:600;color:var(--text-muted)}.labour-alloc-remove{padding:.2rem .4rem;font-size:.8rem}.labour-allocation-add-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:1rem}.labour-allocation-add-below{margin-top:1rem;margin-bottom:0}.labour-allocation-grid .labour-alloc-input{width:4rem;padding:.25rem .35rem;font-size:.9rem;text-align:right;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text)}.labour-allocation-grid td:nth-child(n+2):not(:last-child){padding:.25rem}.labour-allocation-grid .labour-alloc-day{display:inline-block;min-width:2.5rem;color:var(--text-muted);font-size:.9em}.labour-allocation-grid td.labour-alloc-date-weekend{background:var(--surface);color:var(--text-muted)}.labour-allocation-totals-row th{border-top:1px solid var(--border);padding-top:.35rem;font-weight:600}.labour-allocation-totals-row th:nth-child(n+2):not(:last-child){text-align:right}.labour-allocation-cost-row th{padding-bottom:.35rem}.labour-allocation-grand-total{text-align:right;font-weight:700}.workforce-merged-actions{margin-bottom:1rem}.workforce-merged-layout{display:flex;flex-direction:column;gap:2rem}.workforce-merged-section{margin:0}.workforce-merged-section h3{font-size:1.1rem;margin:0 0 .5rem;color:var(--text)}.workforce-merged-section .meta{margin-top:0;margin-bottom:.75rem}.workforce-merged-allocation{padding-top:0}.workforce-merged-coverage{border-top:1px solid var(--border);padding-top:1.5rem}@media (min-width: 1000px){.workforce-merged-layout{flex-direction:row;align-items:flex-start;gap:2rem}.workforce-merged-allocation{flex:1.2;min-width:0}.workforce-merged-coverage{flex:1;min-width:0;border-top:none;padding-top:0;border-left:1px solid var(--border);padding-left:1.5rem}}.workforce-merged-table-wrap{margin-top:.5rem;max-height:calc(100vh - 10rem);overflow:auto}.labour-merged-table{table-layout:auto}.labour-merged-table thead th{position:sticky;top:0;z-index:2;background:var(--surface);box-shadow:0 1px 0 var(--border)}.labour-merged-table thead tr:first-child th{top:0;z-index:3;vertical-align:bottom}.labour-merged-table thead tr:nth-child(2) th{top:4.5rem;z-index:2}.labour-merged-table .workforce-merged-task-cell{vertical-align:top;padding-right:1rem;max-width:12rem}.labour-merged-table .workforce-merged-task-name{font-weight:600;margin-bottom:.25rem}.labour-merged-table .workforce-merged-task-dates{font-size:.8rem;color:var(--text-muted);display:flex;flex-direction:column;gap:.1rem}.labour-merged-table td:nth-child(n+3):not(:last-child){text-align:right}.labour-merged-table .workforce-merged-task-row td{background:var(--surface);border-bottom:1px solid var(--border)}.labour-merged-table .workforce-merged-summary-cell{padding:.35rem .5rem;font-size:.9rem;vertical-align:middle}.workforce-merged-summary-label{color:var(--text-muted);margin-right:.5rem}.workforce-merged-summary-pill{display:inline-block;margin-right:.75rem;white-space:nowrap}.workforce-merged-quota-label{font-weight:600;color:var(--text-muted);font-size:.85rem;background:var(--surface)}.workforce-merged-quota-row td{background:var(--surface)}.workforce-merged-quota-cell{text-align:right;font-weight:500}.workforce-merged-quota-cell.workforce-merged-required{color:var(--text)}.workforce-merged-total-cost-row th{font-weight:600;font-size:.9rem;border-top:1px solid var(--border);padding:.35rem .5rem;background:var(--surface)}.workforce-merged-total-cost-row th:first-child{text-align:left;color:var(--text-muted)}.workforce-merged-cost-cell{text-align:right}.workforce-merged-cost-row.workforce-merged-quota-row td{border-bottom:1px solid var(--border)}.workforce-merged-add-row td{border-top:none;padding:.25rem .5rem;background:var(--surface)}.labour-merged-table .labour-alloc-day{display:inline-block;min-width:2.5rem;color:var(--text-muted);font-size:.9em}.cashflow-receipts-add{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;margin-bottom:.75rem}.cashflow-receipts-add input[type=date]{min-width:10rem}.cashflow-receipts-add input[type=number]{width:6rem}.cashflow-receipts-add input[type=text]{flex:1;min-width:8rem}.cashflow-chart{margin-top:1rem;min-height:160px;padding:.75rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius)}.cashflow-chart-empty{color:var(--text-muted);font-size:.9rem;margin:0}.cashflow-bars{display:flex;align-items:flex-end;gap:.5rem;height:140px;padding:.5rem 0}.cashflow-bar-wrap{flex:1;min-width:24px;display:flex;flex-direction:column;align-items:center;height:100%}.cashflow-bar{width:100%;min-height:2px;border-radius:4px 4px 0 0;transition:height .2s}.cashflow-bar-label{font-size:.65rem;color:var(--text-muted);margin-top:.25rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cashflow-balance-chart{position:relative;height:180px;margin-top:.5rem}.cashflow-balance-svg{width:100%;height:100%;display:block}.cashflow-balance-labels{display:flex;justify-content:space-between;font-size:.7rem;color:var(--text-muted);margin-top:.25rem}.gantt-card-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.gantt-card-header h2{margin:0}.gantt-header-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.gantt-header-actions label{font-size:.9rem;color:var(--text-muted);margin:0}.gantt-header-actions select{padding:.35rem .5rem;font-size:.9rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text)}.gantt-container{margin-top:1rem}.gantt-title{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 .5rem}.gantt-chart{overflow-x:auto;border:1px solid var(--border);border-radius:8px;background:var(--bg);min-height:120px}.gantt-header,.gantt-row{display:flex;align-items:stretch;min-width:max-content;border-bottom:1px solid var(--border)}.gantt-row:last-child{border-bottom:none}.gantt-label-col{width:180px;min-width:180px;padding:.4rem .6rem;font-size:.8rem;border-right:1px solid var(--border);display:flex;align-items:center}.gantt-task-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-timeline-col{flex:1;min-width:400px;position:relative}.gantt-days{display:flex;height:100%}.gantt-day{flex:0 0 24px;min-width:24px;font-size:.65rem;color:var(--text-muted);text-align:center;padding:.2rem 0}.gantt-day-nonwork{background:linear-gradient(90deg,rgba(0,0,0,.12) 1px,transparent 1px) 33% 0 / 1px 100% no-repeat,linear-gradient(90deg,rgba(0,0,0,.12) 1px,transparent 1px) 66% 0 / 1px 100% no-repeat,#0000000a;color:var(--text-muted);opacity:.9}.gantt-bar-wrap{position:relative;height:100%;min-height:28px}.gantt-bar{position:absolute;top:4px;height:20px;border-radius:4px;background:var(--accent);opacity:.9;min-width:8px}.gantt-bar:hover{opacity:1}.gantt-bar-empty{min-width:0;width:0;opacity:.4;pointer-events:none}.gantt-chart-items .gantt-bar-item{opacity:.88;border-radius:3px}.gantt-chart-items .gantt-bar-item:hover{opacity:1}.gantt-chart-items .gantt-label-col{font-size:.8rem}.gantt-label-open-item{cursor:pointer}.gantt-label-open-item:hover{color:var(--accent)}.category-actions{margin-bottom:.75rem}.category-actions .secondary{width:100%}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-overlay.hidden{display:none}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);max-width:520px;width:100%;max-height:85vh;display:flex;flex-direction:column;overflow:hidden}.modal-card h2{margin:0;padding:1rem 1rem 0;font-size:1.1rem}.modal-hint{margin:.25rem 1rem 0;padding:0;font-size:.85rem;color:var(--text-muted)}.modal-select-all{display:block;margin:.75rem 1rem 0;font-size:.9rem;cursor:pointer}.modal-list{overflow-y:auto;padding:.75rem 1rem;margin:.5rem 0 0;flex:1;min-height:120px}.auto-classify-table{width:100%;border-collapse:collapse}.auto-classify-row{cursor:pointer;font-size:.9rem;border-bottom:1px solid var(--border)}.auto-classify-row:last-child{border-bottom:none}.auto-classify-row:hover{background:var(--surface-hover)}.auto-classify-cell-checkbox{width:2rem;padding:.4rem .25rem .4rem 0;vertical-align:middle}.auto-classify-cell-name{padding:.4rem .5rem .4rem 0;color:var(--text);vertical-align:middle;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auto-classify-cell-category{padding:.4rem 0;color:var(--text-muted);vertical-align:middle;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auto-classify-cell-edit{padding:.4rem 0 .4rem .25rem;vertical-align:middle;width:2rem}.auto-classify-edit-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:.2rem;font-size:1rem;line-height:1;border-radius:4px}.auto-classify-edit-btn:hover{color:var(--accent);background:var(--surface-hover)}.auto-classify-checkbox{margin:0}.auto-classify-dropdown-inner{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:.25rem 0;max-height:280px;overflow-y:auto}.auto-classify-dropdown-option{display:block;width:100%;text-align:left;padding:.4rem .75rem;border:none;background:none;color:var(--text);cursor:pointer;font-size:.9rem}.auto-classify-dropdown-option:hover{background:var(--surface-hover)}.auto-classify-dropdown-divider{height:1px;background:var(--border);margin:.25rem 0}.auto-classify-dropdown-new{display:flex;gap:.25rem;padding:.4rem .75rem;align-items:center}.auto-classify-dropdown-new .auto-classify-new-input{flex:1;min-width:0;padding:.35rem .5rem;font-size:.9rem;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text)}.auto-classify-dropdown-new .auto-classify-new-add{flex-shrink:0;padding:.35rem .5rem;font-size:.85rem}.auto-classify-suggest-ai{display:block;width:100%;text-align:left;padding:.4rem .75rem;margin:0;font-size:.9rem;border:none;border-radius:0;background:none;color:var(--accent);cursor:pointer}.auto-classify-suggest-ai:hover{background:var(--surface-hover)}.auto-classify-suggest-ai:disabled{opacity:.6;cursor:not-allowed}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem;border-top:1px solid var(--border)}.modal-actions .primary,.modal-actions .secondary{margin:0}.price-updater-source{margin-bottom:.75rem}.price-updater-source label,.price-updater-uploads label{display:block;font-size:.85rem;margin-bottom:.25rem;color:var(--text-muted)}.price-updater-source textarea{width:100%;padding:.5rem .75rem;font-size:.9rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);resize:vertical;font-family:inherit}.price-updater-uploads{margin-bottom:.75rem}.price-updater-file-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem}.price-updater-file-row .meta{font-size:.8rem;color:var(--text-muted)}.price-updater-actions{display:flex;gap:.5rem;flex-wrap:wrap}.price-updater-actions .primary,.price-updater-actions .secondary{margin:0}.price-updater-results{margin-top:.75rem}.price-updater-table{width:100%;border-collapse:collapse;font-size:.9rem}.price-updater-table th,.price-updater-table td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid var(--border)}.price-updater-table th{color:var(--text-muted);font-weight:600}.price-updater-table tr:hover{background:var(--surface-hover)}.price-updater-table .price-old{color:var(--text-muted)}.price-updater-table .price-new{color:var(--success)}.price-updater-table .price-updater-apply{padding:.2rem .5rem;font-size:.8rem}.price-updater-apply-all{margin-top:.75rem}.saved-toast{position:fixed;bottom:1rem;right:1rem;padding:.35rem .6rem;font-size:.75rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:6px;opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity .2s ease,transform .2s ease;z-index:9999}.saved-toast.saved-toast-visible{opacity:1;transform:translateY(0)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:9000}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);min-width:260px;max-width:360px;width:100%}.modal-header{padding:.75rem 1rem .25rem;border-bottom:1px solid var(--border)}.modal-body{padding:.75rem 1rem}.modal-field{margin-bottom:.75rem}.modal-field label{display:block;font-size:.8rem;margin-bottom:.25rem;color:var(--text-muted)}.chatbot-container{position:fixed;bottom:20px;right:20px;width:350px;background:#2d2d2d;border-radius:10px;box-shadow:0 4px 12px #0000004d;display:flex;flex-direction:column;z-index:1000}#chatbot-header{padding:10px 15px;background:#1e1e1e;border-radius:10px 10px 0 0;display:flex;justify-content:space-between;align-items:center;font-weight:700}#chatbot-header button{background:none;border:none;color:#fff;cursor:pointer;font-size:16px}#chatbot-messages{flex:1;padding:15px;overflow-y:auto;max-height:400px}.chatbot-message{margin-bottom:10px;padding:8px 12px;border-radius:18px;max-width:80%}.chatbot-message.user{background:#4a90e2;margin-left:auto}.chatbot-message.bot{background:#333;margin-right:auto}#chatbot-input-area{padding:10px;background:#1e1e1e;border-radius:0 0 10px 10px;display:flex;gap:10px}#chatbot-input{flex:1;padding:8px;border:1px solid #444;border-radius:4px;background:#2d2d2d;color:#fff}#chatbot-send{padding:8px 15px;background:#4a90e2;color:#fff;border:none;border-radius:4px;cursor:pointer}
