:root{--bg:#fff;--ink:#1a1d21;--ink-muted:#6b7280;--line:#e7eaee;--line-major:#d4d9df;--accent:#1f6feb;--grid-minor:16px;--grid-major:80px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*,:before,:after{box-sizing:border-box}body{background:var(--bg);margin:0}.app-header{border-bottom:1px solid var(--line);align-items:baseline;gap:12px;padding:16px 24px;display:flex}.brand{font-weight:600}.title{color:var(--ink-muted);letter-spacing:.08em;text-transform:uppercase;font-size:.875rem}.cad-grid{background-color:var(--bg);background-image:linear-gradient(var(--line-major) 1px, transparent 1px), linear-gradient(90deg, var(--line-major) 1px, transparent 1px), linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);background-size:var(--grid-major) var(--grid-major), var(--grid-major) var(--grid-major), var(--grid-minor) var(--grid-minor), var(--grid-minor) var(--grid-minor);background-position:50%}.viewer{border-bottom:1px solid var(--line);place-items:center;height:min(72vh,760px);min-height:420px;display:grid;position:relative}.viewer-stage{position:absolute;inset:0}.viewer-canvas{touch-action:none}.part-list,.info-panel,.viewer-toolbar{z-index:10;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line-major);background:#ffffffe0;border-radius:6px;position:absolute}.panel-label{color:var(--ink-muted);letter-spacing:.1em;text-transform:uppercase;margin:0 0 6px;font-size:.6875rem;font-weight:600}.part-list{width:190px;padding:10px;top:16px;left:16px}.part-list ul{margin:0;padding:0;list-style:none}.part-list button{width:100%;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:5px 8px;font-size:.8125rem;display:block}.part-list button.is-hovered,.part-list button:hover{background:#eef3fc}.part-list button[aria-pressed=true]{background:var(--accent);color:#fff}.part-list button:focus-visible,.viewer-toolbar button:focus-visible,.info-panel .close:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.info-panel{width:min(360px,100% - 32px);max-height:calc(100% - 32px);padding:14px 16px;top:16px;right:16px;overflow-y:auto}.in-build{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.in-build .panel-label{margin-bottom:2px}.info-panel .in-build-name{justify-content:space-between;gap:12px;font-weight:600;display:flex}.in-build-price{font-variant-numeric:tabular-nums;white-space:nowrap}.spec-chips{flex-wrap:wrap;gap:4px;margin:8px 0 0;padding:0;list-style:none;display:flex}.spec-chips li{border:1px solid var(--line-major);color:var(--ink-muted);border-radius:3px;padding:2px 7px;font-size:.75rem}.info-panel details{border-top:1px solid var(--line);margin-top:12px;padding-top:10px;font-size:.875rem}.info-panel summary{cursor:pointer;font-weight:600}.info-panel details ul{margin:8px 0 0;padding-left:18px;line-height:1.5}.info-panel details li+li{margin-top:4px}.guide-panel{z-index:10;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line-major);background:#ffffffeb;border-radius:6px;flex-direction:column;width:min(380px,100% - 32px);max-height:calc(100% - 32px);padding:14px 16px;display:flex;position:absolute;top:16px;right:16px}.guide-panel h2{margin:0;font-size:1rem}.guide-progress{color:var(--ink-muted);margin:2px 0 0;font-size:.75rem}.guide-track{background:var(--line);border-radius:2px;height:3px;margin:10px 0 6px}.guide-track div{background:var(--accent);border-radius:2px;height:100%;transition:width .3s}.guide-steps{margin:0;padding:0;list-style:none;overflow-y:auto}.guide-steps li{border-bottom:1px solid var(--line)}.guide-step-head{width:100%;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:9px 0;font-size:.875rem;display:flex}.guide-step-head[aria-expanded=true]{font-weight:600}.guide-num{border:1px solid var(--line-major);width:22px;height:22px;color:var(--ink-muted);border-radius:50%;flex:none;place-items:center;font-size:.6875rem;font-weight:600;display:inline-grid}.guide-step-head[aria-expanded=true] .guide-num{border-color:var(--accent);background:var(--accent);color:#fff}.guide-steps li.is-done .guide-num{color:#3f9e5a;border-color:#3f9e5a}.guide-step-body{padding:0 0 12px 32px;font-size:.875rem;line-height:1.5}.guide-step-body p{margin:0 0 8px}.guide-warning{background:#fffaeb;border-left:3px solid #dc8b0b;border-radius:0 4px 4px 0;padding:6px 10px}.guide-controls{background:#fff;gap:6px;margin-top:10px;padding:6px 0;display:flex;position:sticky;bottom:0}.guide-controls button{border:1px solid var(--line-major);color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:4px;padding:6px 12px;font-size:.8125rem}.guide-controls button:disabled{color:#b3b9c1;cursor:not-allowed}.guide-controls .primary{border-color:var(--accent);background:var(--accent);color:#fff;margin-left:auto}.guide-step-head:focus-visible,.guide-controls button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.viewer-toolbar button:disabled{color:#b3b9c1;cursor:not-allowed}.leaders{z-index:5;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.leader-line{fill:none;stroke:#a9b2bd;stroke-width:1px}.leader-anchor{fill:#fff;stroke:var(--accent);stroke-width:1.25px}.leader-pulse{fill:none;stroke:var(--accent);stroke-width:1.5px;stroke-linecap:round;stroke-dasharray:7 100;stroke-dashoffset:7px}.leader-close-leg .leader-pulse{opacity:.55;animation:3.2s ease-in-out infinite leader-pulse}.leader-info-leg .leader-pulse{animation:5s ease-in-out infinite leader-pulse-rest}.leader-chevron{fill:none;stroke:#a9b2bd;stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round;animation:5s ease-in-out infinite leader-chevron}.leader-arrow{fill:var(--accent)}@keyframes leader-pulse{0%{stroke-dashoffset:7px}to{stroke-dashoffset:-107px}}@keyframes leader-pulse-rest{0%{stroke-dashoffset:7px}32%,to{stroke-dashoffset:-107px}}@keyframes leader-chevron{0%,10%,to{stroke:#a9b2bd}4%{stroke:var(--accent)}}.leader-close{z-index:6;cursor:pointer;background:#fff;border:1px solid #353a41;border-radius:2px;place-items:center;width:22px;height:22px;padding:0;display:grid;position:absolute;top:0;left:0}.leader-close svg{stroke:#353a41;stroke-width:1.5px;stroke-linecap:round;width:9px;height:9px}.leader-close:hover{border-color:var(--accent);background:var(--accent)}.leader-close:hover svg{stroke:#fff}.leader-close:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.mouse-hint{pointer-events:none;width:180px;height:32px;position:absolute;bottom:12px;right:16px}.mouse-hint-row{opacity:0;justify-content:flex-end;align-items:center;gap:8px;animation:9s ease-in-out infinite backwards mouse-hint-cycle;display:flex;position:absolute;inset:0}.mouse-hint-how,.mouse-hint-does{white-space:nowrap;display:block}.mouse-hint-how{color:var(--ink-muted);letter-spacing:.06em;text-transform:uppercase;font-size:.625rem}.mouse-hint-does{color:var(--ink);font-size:.75rem}.mouse-icon path,.mouse-wheel{fill:#fff}.mouse-body{fill:none;stroke:#6b7280;stroke-width:1px}.mouse-icon path{stroke:#6b7280;stroke-width:1px}.mouse-icon .is-active{fill:var(--accent)}.mouse-wheel{stroke:#6b7280;stroke-width:.75px}@keyframes mouse-hint-cycle{0%{opacity:0}4%,30%{opacity:1}34%,to{opacity:0}}@media (hover:none){.mouse-hint{display:none}}@media (prefers-reduced-motion:reduce){.leader-pulse{display:none}.leader-chevron{animation:none}.mouse-hint{width:auto;height:auto;right:128px}.mouse-hint-row{opacity:1;animation:none;position:static}}.callout{color:var(--ink);font:inherit;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #353a41;border-radius:2px;padding:3px 8px;font-size:.6875rem}.callout-hover,.callout-selected{border-color:var(--accent);background:var(--accent);color:#fff}.callout-dimmed,.callout-aside{opacity:.45}.viewer-toolbar button[aria-pressed=true],.viewer-toolbar button[aria-pressed=true]:hover{background:var(--accent);color:#fff}.info-panel-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.info-panel h2{margin:0 0 8px;font-size:1rem}.info-panel p{margin:0;font-size:.875rem;line-height:1.5}.info-panel .close{color:var(--ink-muted);cursor:pointer;background:0 0;border:0;font-size:1.25rem;line-height:1}.viewer-toolbar{gap:2px;padding:3px;display:flex;bottom:16px;left:16px}.viewer-toolbar button{min-width:32px;height:30px;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0 10px;font-size:.8125rem}.viewer-toolbar button:hover{background:#eef3fc}.viewer-hint{color:var(--ink-muted);white-space:nowrap;pointer-events:none;margin:0;font-size:.75rem;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.picker{max-width:1200px;margin:0 auto;padding:32px 24px 64px}.picker h2{margin:0 0 4px;font-size:1.25rem}.picker-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.picker-blurb{max-width:60ch;color:var(--ink-muted);margin:0;font-size:.9375rem}.quick-select{flex-wrap:wrap;gap:8px;display:flex}.segmented{border:1px solid var(--line-major);background:#fff;border-radius:6px;padding:3px;display:inline-flex}.segmented button{color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:6px 14px;font-size:.875rem}.segmented button:hover:not(:disabled){background:#eef3fc}.segmented button[aria-pressed=true]{background:var(--accent);color:#fff}.segmented button:disabled{color:#b3b9c1;cursor:not-allowed}.segmented button:focus-visible,.part-link:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.build-table{border-collapse:collapse;width:100%;font-size:.9375rem}.build-table th,.build-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:10px 8px}.build-table thead th{color:var(--ink-muted);letter-spacing:.1em;text-transform:uppercase;font-size:.6875rem;font-weight:600}.build-table tbody th{width:150px;color:var(--ink-muted);font-weight:500}.build-table tbody tr:hover{background:#f6f9fe}.build-table tr.has-issue th{color:#b42318}.build-table .num{text-align:right;white-space:nowrap}.build-table td.num a{color:var(--ink);font-variant-numeric:tabular-nums;text-decoration:none}.build-table td.num a:hover{color:var(--accent)}.retailer{color:var(--ink-muted);font-size:.75rem;display:block}.part-link{color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.part-link:hover{color:var(--accent);text-decoration:underline}.build-table tfoot th,.build-table tfoot td{border-bottom:0;font-weight:600}.build-table .total{font-variant-numeric:tabular-nums;font-size:1.125rem}.muted{color:var(--ink-muted);font-weight:400}.compat{margin-top:12px;font-size:.875rem}.compat ul{margin:0;padding:0;list-style:none}.compat li,.compat-ok{border-left:3px solid;border-radius:0 4px 4px 0;margin:0 0 6px;padding:8px 12px}.compat-ok{background:#f0f8f2;border-color:#3f9e5a}.compat-error{background:#fef3f2;border-color:#d92d20}.compat-warning{background:#fffaeb;border-color:#dc8b0b}.compat-info{border-color:var(--line-major);background:#f7f8fa}.row-specs{color:var(--ink-muted);margin-top:2px;font-size:.75rem;display:block}.row-actions{gap:6px;margin-top:6px;display:inline-flex}.row-actions button,.add-row button,.fixes button,.chooser-close,.share{border:1px solid var(--line-major);color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:4px;padding:3px 10px;font-size:.75rem}.row-actions button:hover,.add-row button:hover,.fixes button:hover,.chooser-close:hover,.share:hover{border-color:var(--accent);color:var(--accent)}.row-actions button[aria-expanded=true]{border-color:var(--accent);background:var(--accent);color:#fff}.add-row td{border-bottom:0}.chooser-row td{background:#f8fafc;padding-top:0}.chooser ul{border:1px solid var(--line-major);background:#fff;border-radius:6px;max-height:360px;margin:0;padding:0;list-style:none;overflow-y:auto}.chooser li+li{border-top:1px solid var(--line)}.chooser-option{width:100%;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-left:3px solid #0000;grid-template-columns:1fr auto;gap:2px 12px;padding:8px 12px 8px 14px;font-size:.875rem;display:grid}.chooser-option:hover{background:#f6f9fe}.chooser-option[aria-pressed=true]{border-left-color:var(--accent);background:#eef3fc}.chooser-option:focus-visible,.row-actions button:focus-visible,.add-row button:focus-visible,.fixes button:focus-visible,.share:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.chooser-name{font-weight:500}.chooser-price{font-variant-numeric:tabular-nums;text-align:right}.chooser-meta,.chooser-status{color:var(--ink-muted);grid-column:1/-1;font-size:.75rem}.chooser-ok .chooser-status{color:#2f7a46}.chooser-warning .chooser-status{color:#a15c07}.chooser-error{opacity:.75}.chooser-error .chooser-status{color:#b42318}.chooser-close{margin-top:8px}.fixes{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.fixes-label{color:var(--ink-muted);font-size:.75rem}.fix-price{color:var(--ink-muted);font-variant-numeric:tabular-nums;margin-left:6px}.picker-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.price-note{max-width:70ch;color:var(--ink-muted);margin:0;font-size:.75rem}.placeholder{color:var(--ink-muted);margin:0;font-size:.875rem}@media (width<=900px){.viewer-hint{display:none}}@media (width<=640px){.app-header,.picker{padding-left:16px;padding-right:16px}.viewer{height:64vh}.part-list{width:auto;padding:6px;top:8px;left:8px;right:8px;overflow-x:auto}.part-list .panel-label{display:none}.part-list ul{gap:4px;display:flex}.part-list button{white-space:nowrap}.info-panel,.guide-panel{width:auto;max-height:55%;inset:auto 8px 56px}.viewer-toolbar{bottom:8px;left:8px}.build-table thead{display:none}.build-table tr{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;column-gap:12px;padding:8px 0;display:grid}.build-table th,.build-table td{border:0;padding:0}.build-table tbody th,.build-table tfoot th{grid-column:1/-1;width:auto;font-size:.75rem}.build-table tfoot tr{border-bottom:0}.build-table tr.chooser-row,.build-table tr.add-row,.build-table tr.chooser-row td,.build-table tr.add-row td{display:block}}
