@keyframes loading-spin{to{transform:rotate(360deg)}}:root,[data-theme=dark]{color-scheme:dark;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;line-height:1.5;--bg:#2c2e35;--panel:#1c1e22;--panel-raised:#282a2e;--input-bg:#141518;--panel-border:#33353b;--text:#f0f0f0;--muted:#a0a0a0;--accent:#1f6e4c;--accent-hover:#1a5e41;--danger:#c0392b;--danger-hover:#a93226;--success:#3d9a4a;--success-hover:#338a3f;--error-text:#ff9a8b;--error-border:#8b3a34;--image-surface:#ffffff;--button-text:#ffffff;--on-filled-button:#ffffff;--image-pill-bg:rgba(20, 21, 24, 0.92);--image-pill-text:#f0f0f0;--image-pill-border:rgba(255, 255, 255, 0.14);--secondary-bg:#282a2e;--secondary-bg-hover:#32353b;--secondary-border:#454850;--radius:4px;--radius-lg:6px;--brand-font:"Poppins", system-ui, sans-serif;--layout-max-width:min(2800px, max(1400px, 92vw));--layout-padding-x:clamp(16px, 2vw, 48px)}[data-theme=light]{color-scheme:light;--bg:#eef2f7;--panel:#ffffff;--panel-raised:#f7f9fc;--input-bg:#ffffff;--panel-border:#c5d3e0;--text:#1e3a5f;--muted:#5a718a;--accent:#1f6e4c;--accent-hover:#1a5e41;--danger:#c0392b;--danger-hover:#a93226;--success:#2e8b3c;--success-hover:#267a34;--error-text:#c0392b;--error-border:#d4817a;--image-surface:#ffffff;--button-text:#ffffff;--on-filled-button:#ffffff;--secondary-bg:#d4e8dc;--secondary-bg-hover:#bddac8;--secondary-border:#7faa8c}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}main{max-width:var(--layout-max-width);margin:0 auto;padding:24px var(--layout-padding-x) 48px}body[data-page=home] main{display:flex;flex-direction:column;min-height:80vh}body[data-page=home] .view-panel{flex:1}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-top:16px;margin-bottom:8px}.page-header .site-brand{margin-bottom:0}.page-header-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.auth-header-button{display:inline-flex;align-items:center;justify-content:center;max-width:180px;min-height:44px;padding:8px 14px;border:1px solid var(--panel-border);border-radius:var(--radius);background:var(--panel-raised);color:var(--text);font:inherit;font-weight:600;cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease}.auth-header-button:hover{background:var(--input-bg);border-color:var(--accent)}.auth-header-button.is-signed-in{color:var(--accent)}.auth-header-button-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-gear-link{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;border-radius:var(--radius);color:var(--muted);text-decoration:none;transition:color .15s ease,background .15s ease}.settings-gear-link:hover{color:var(--text);background:var(--panel-raised)}.settings-gear-link:focus{outline:0}.settings-gear-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.settings-gear-link[aria-current=page]{color:var(--accent);background:var(--panel-raised)}.site-brand{display:flex;align-items:center;gap:16px;margin-bottom:8px}.home-link{display:flex;padding:0;border:0;background:0 0;color:inherit;font:inherit;text-align:left;text-decoration:none;cursor:pointer}.home-link:hover{background:0 0;opacity:.88}.home-link:focus{outline:0}.home-link:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:var(--radius)}.site-logo{width:64px;height:64px;object-fit:contain;flex-shrink:0}.site-brand-title{margin:0;font-family:var(--brand-font);font-size:2rem;letter-spacing:-.02em}.brand-rebuild{font-weight:800}.brand-mate{font-weight:500}.brand-beta{margin-left:8px;font-size:.7rem;font-weight:600;color:var(--muted);vertical-align:super}.intro-section{display:flex;flex-direction:column;align-items:center;text-align:center;padding:48px 16px 24px;gap:12px}.intro-heading{margin:0;font-size:2.3rem;font-weight:800;font-family:var(--brand-font);max-width:25ch;line-height:1.2}.intro-subtext{margin:0;color:var(--muted);max-width:50ch;font-size:1rem;line-height:1.5}.cloud-signup-banner{margin:0 auto 16px;padding:12px 16px;border-radius:var(--radius-lg);background:var(--accent);color:var(--on-filled-button);font-size:.9rem;line-height:1.4;cursor:pointer;width:fit-content;text-align:center}.cloud-signup-banner:hover{filter:brightness(1.1)}.cloud-signup-banner p{margin:0}.cloud-signup-banner[hidden]{display:none}.section-heading{margin:0 0 12px;font-size:1.1rem;font-weight:600}.add-set-form{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px;align-items:end}.add-set-form-status{flex:1 1 100%;margin:0;font-size:.9rem;line-height:1.4;color:var(--muted)}.add-set-form-status.error{color:var(--error-text)}.project-name-field{flex:1 1 100%;max-width:100%}.qty-label{flex:0 1 80px}.project-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:16px}.pending-sets-wrap{padding:16px;margin-bottom:16px;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-lg)}.pending-sets-wrap[hidden]{display:none}.pending-sets-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.pending-set-row,.pending-set-thumb{border-radius:var(--radius);border:1px solid var(--panel-border)}.pending-set-row{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--input-bg)}.pending-set-thumb{width:48px;height:48px;flex-shrink:0;overflow:hidden;background:var(--image-surface);display:grid;place-items:center}.pending-set-thumb img{width:100%;height:100%;object-fit:contain}.pending-set-thumb.loading{background:var(--panel-raised)}.pending-set-thumb.loading .loading-spinner{width:22px;height:22px}.pending-set-thumb.placeholder{background:var(--panel-raised);color:var(--muted);font-size:.85rem;font-weight:700}.pending-set-details{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.pending-set-qty{min-width:2.5rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--accent)}.pending-set-number{font-weight:600}.pending-set-name{color:var(--muted);font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pending-set-remove{flex-shrink:0}.projects-header{display:flex;flex-direction:column;align-items:stretch;gap:12px;margin-bottom:12px}.projects-header-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.projects-header .section-heading{margin-bottom:0}.projects-remaining{font-size:1rem;font-weight:700;color:var(--text-secondary, #888);margin-left:8px}.projects-header-actions .file-button,.projects-header-actions button{display:inline-flex;flex:0 0 auto;width:auto;flex-direction:row;gap:0;align-items:center;justify-content:center;line-height:1.25;white-space:nowrap}.import-project-button{padding:4px 10px;font-size:.75rem;font-weight:500;border-radius:calc(var(--radius) - 2px)}.new-project-panel{width:min(100%,560px);max-height:min(90vh,720px);overflow-y:auto}.new-project-panel h2{margin:0 0 16px;font-size:1.2rem;font-weight:600}.new-project-panel .dialog-actions{margin-top:16px}.new-project-panel .pending-sets-wrap{margin-bottom:0}.empty-state{margin:0;color:var(--muted)}.projects-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.projects-list[hidden]{display:none}.project-card{display:flex;gap:16px;align-items:center;justify-content:space-between;padding:16px;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-lg);cursor:pointer;transition:border-color .15s ease,background .15s ease}.project-card:hover{border-color:var(--secondary-border);background:var(--panel-raised)}.project-card:focus{outline:0}.project-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.set-collage{display:grid;gap:1px;overflow:hidden;background:var(--panel-border);border:1px solid var(--panel-border);border-radius:var(--radius);flex-shrink:0;min-height:0}.set-collage-card{width:112px;height:112px}.set-collage-header{width:100%;height:100%}.set-collage-cell{background:var(--image-surface);display:flex;align-items:center;justify-content:center;overflow:hidden;min-width:0;min-height:0;position:relative}.set-collage-cell img{display:block;max-width:calc(100% - 8px);max-height:calc(100% - 8px);width:auto;height:auto;object-fit:contain}.set-collage-qty{position:absolute;right:4px;bottom:4px;padding:2px 5px;border-radius:var(--radius);background:var(--image-pill-bg);border:1px solid var(--image-pill-border);color:var(--image-pill-text);font-size:.65rem;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;pointer-events:none}.set-collage-header .set-collage-qty{font-size:.8rem;padding:3px 7px;right:6px;bottom:6px}.set-collage.count-1{grid-template-columns:1fr}.set-collage.count-2,.set-collage.count-4{grid-template-columns:1fr 1fr}.set-collage.count-4{grid-template-rows:minmax(0,1fr) minmax(0,1fr)}.set-collage-cell.overflow-only{background:var(--input-bg);color:var(--text);font-weight:700;font-size:1.1rem}.set-collage-cell-empty,.set-collage.placeholder{background:var(--panel-raised)}.set-image-wrap{aspect-ratio:1;border-radius:var(--radius);overflow:hidden;background:var(--image-surface);display:grid;min-height:0;min-width:0;border:1px solid var(--panel-border);padding:0}.set-image-wrap .set-collage{width:100%;height:100%;min-height:0}.set-image-wrap img{width:100%;height:100%;object-fit:contain}.project-card-body{flex:1;min-width:0}.project-card-title-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}.project-card-title-row .project-card-title{margin:0;min-width:0}.project-card-rename-form{margin-bottom:8px}.project-card-rename-form[hidden]{display:none}.project-card.is-renaming{cursor:default}.project-card-title{margin:0 0 4px;font-size:1.1rem;font-weight:600}.project-card-meta,.project-stats{margin:0;color:var(--muted);font-size:.9rem}.project-card-date{margin:0;color:var(--muted)}.project-set-count{display:inline-block;padding:2px 8px;margin-right:6px;border-radius:var(--radius);background:var(--image-pill-bg);border:1px solid var(--image-pill-border);color:var(--image-pill-text);font-weight:600;font-size:.85em;vertical-align:baseline}.set-meta .project-set-count{font-size:.9em}.project-stats,label{display:flex;flex-direction:column}.project-stats{gap:2px;margin-top:4px}.project-stat-item{white-space:nowrap}.project-stat-value{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.project-card-date{margin-top:4px;font-size:.8rem}.project-card-actions{display:flex;flex-shrink:0;gap:8px;align-items:center}.build-nav{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px}.back-link,input,select{border-radius:var(--radius)}.back-link{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border:1px solid var(--secondary-border);background:var(--secondary-bg);color:var(--text);text-decoration:none}.back-link:hover,.file-button.secondary:hover,button.secondary:hover{background:var(--secondary-bg-hover);border-color:var(--accent);color:var(--text)}.project-card-link{color:inherit;text-decoration:none}.footer-links a:hover,.project-card-link:hover{text-decoration:underline}.toolbar,form{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px;align-items:end}label{gap:6px;flex:1 1 260px;font-size:.9rem;color:var(--text)}.toolbar label{flex:0 1 180px}input,select{padding:10px 12px;border:1px solid var(--panel-border);background:var(--input-bg);color:inherit;font:inherit}input::placeholder{color:var(--muted)}input:focus,select:focus{outline:0;border-color:var(--accent)}.file-button,button{padding:10px 18px;border:1px solid transparent;border-radius:var(--radius);background:var(--accent);color:var(--on-filled-button);color-scheme:normal;font:inherit;cursor:pointer}.file-button:hover,button:hover{background:var(--accent-hover);color:var(--on-filled-button)}.file-button{display:inline-block;text-align:center}.file-button.secondary,button.secondary{background:var(--secondary-bg);border-color:var(--secondary-border);color:var(--text);color-scheme:normal}.reset-button{margin-left:auto;background:0 0;border-color:var(--danger);color:var(--error-text)}.reset-button:hover{background:var(--danger);border-color:var(--danger);color:var(--button-text)}.dialog{position:fixed;inset:0;display:grid;place-items:center;padding:16px;background:rgba(0,0,0,.65);z-index:20}.dialog[hidden]{display:none}.dialog-panel{width:min(100%,420px);padding:24px;border-radius:var(--radius-lg);background:var(--panel);border:1px solid var(--panel-border)}.dialog-panel h2{margin:0 0 10px;font-size:1.2rem;font-weight:600}.dialog-panel p{margin:0 0 20px;color:var(--muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:10px}.dialog-actions .danger{background:var(--danger);border-color:var(--danger);color:var(--on-filled-button)}.dialog-actions .danger:hover{background:var(--danger-hover);color:var(--on-filled-button)}button:disabled{opacity:.5;cursor:not-allowed}.status{min-height:1.5rem;margin-bottom:16px;color:var(--accent)}#home-status,.build-status{margin-top:0}.status.error .status-prefix,.status[hidden]{display:none}.status-prefix{color:var(--muted);margin-right:6px}.status.error{color:var(--error-text)}.settings-panel{max-width:720px;margin-inline:auto}.settings-title{margin:0 0 20px;font-size:1.5rem;font-weight:600}.settings-section{padding:20px;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-lg)}.settings-section+.settings-section{margin-top:16px}.settings-cache-stats{margin:0 0 16px;color:var(--text);font-weight:600}.settings-description{margin:0 0 12px;color:var(--muted);line-height:1.5}.settings-actions{margin-top:20px;display:flex;flex-wrap:wrap;gap:12px}.settings-section-body-center{display:flex;flex-direction:column;align-items:center}.settings-actions-center{justify-content:center}.settings-actions .danger{background:var(--danger);border-color:var(--danger);color:#fff}.settings-actions .danger:hover{background:var(--danger-hover);border-color:var(--danger-hover)}.account-form{display:grid;gap:14px;max-width:360px}.account-form label{display:grid;gap:6px;font-weight:500}.account-form input,.auth-field input{width:100%}.auth-intro,.auth-tabs{margin-bottom:16px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px}.auth-tab{padding:10px 12px;border:1px solid var(--panel-border);border-radius:var(--radius);background:var(--input-bg);color:var(--muted);font:inherit;font-weight:600;cursor:pointer}.auth-tab[aria-selected=true]{color:var(--text);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--input-bg))}.auth-dialog-panel{position:relative}.auth-dialog-close{position:absolute;top:12px;right:12px;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:var(--radius);background:0 0;color:var(--muted);font-size:1.5rem;line-height:1;cursor:pointer}.auth-dialog-close:hover{color:var(--text);background:var(--secondary-bg)}.auth-dialog-actions{justify-content:stretch;margin-top:16px}.auth-dialog-actions .secondary{flex:1}.auth-update-password-panel{max-width:420px}.auth-dialog-panel [hidden],.auth-update-password-panel [hidden]{display:none!important}.auth-field,.auth-form{display:grid;gap:14px}.auth-field{gap:6px;font-weight:500}.auth-field .auth-hint{font-weight:400}.auth-form-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:4px}.auth-form-actions-stack{flex-direction:column;align-items:stretch}.auth-primary-button{min-width:140px}.auth-text-button{padding:0;border:0;background:0 0;color:var(--accent);font:inherit;font-weight:500;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.auth-text-button:hover{color:var(--accent-hover)}.auth-hint{margin:0;color:var(--muted);font-size:.92rem}.auth-status{margin:16px 0 0;padding:10px 12px;border-radius:var(--radius);background:color-mix(in srgb,var(--accent) 10%,var(--panel));color:var(--text)}.auth-status.error{background:color-mix(in srgb,var(--danger) 12%,var(--panel));color:var(--error-text)}.auth-signed-in{max-width:480px}.auth-user-card{display:flex;align-items:center;gap:14px;margin-bottom:12px;padding:16px;background:var(--panel-raised);border:1px solid var(--panel-border);border-radius:var(--radius-lg)}.auth-user-avatar{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:color-mix(in srgb,var(--accent) 16%,var(--panel));color:var(--accent)}.auth-user-label{margin:0 0 4px;color:var(--muted);font-size:.92rem}.auth-user-email{margin:0;font-weight:600;word-break:break-word}.settings-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;background:var(--input-bg);border:1px solid var(--panel-border);border-radius:var(--radius)}.settings-toggle-copy{display:flex;flex-direction:column;gap:4px;flex:1 1 auto;min-width:0}.settings-toggle-label{font-weight:600;color:var(--text)}.settings-toggle-hint{margin:0;font-size:.9rem;color:var(--muted)}.theme-switch{position:relative;display:inline-flex;width:48px;height:28px;flex:0 0 48px;flex-direction:row;gap:0;align-self:center}.theme-switch input{position:absolute;opacity:0;width:0;height:0}.theme-switch-slider{position:absolute;inset:0;cursor:pointer;border-radius:999px;background:var(--panel-border);transition:background .2s ease}.theme-switch-slider::before{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--panel);box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s ease}.theme-switch input:checked+.theme-switch-slider{background:var(--accent)}.theme-switch input:checked+.theme-switch-slider::before{transform:translateX(20px)}.theme-switch input:focus-visible+.theme-switch-slider{outline:2px solid var(--accent);outline-offset:2px}.loading-indicator{display:inline-flex;align-items:center;gap:10px}.loading-spinner{width:16px;height:16px;flex-shrink:0;border:2px solid var(--panel-border);border-top-color:var(--accent);border-radius:50%;animation:loading-spin .8s linear infinite}.add-set-form-status.loading,.status.loading{color:var(--muted)}.settings-status{margin-top:16px;margin-bottom:0}.set-header{display:grid;grid-template-columns:280px 1fr;gap:24px;align-items:center;padding:20px;margin-bottom:24px;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-lg)}.set-title{margin:0;font-size:1.5rem;font-weight:600}.project-title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}.rename-project-button{flex-shrink:0}.icon-button{display:inline-grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:var(--radius);background:0 0;color:var(--muted);cursor:pointer}.icon-button:hover{background:0 0;color:var(--text)}.icon-button:focus{outline:0}.icon-button-outlined{background:var(--secondary-bg);border:1px solid var(--secondary-border)}.icon-button-outlined:hover{background:var(--secondary-bg-hover);border-color:var(--accent)}.icon-button-danger,.icon-button-outlined.icon-button-danger:hover{color:var(--error-text)}.project-card-actions .icon-button{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:auto;height:auto;padding:10px 12px;line-height:1}.scroll-to-top-button{position:fixed;right:20px;bottom:20px;z-index:10;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid transparent;border-radius:var(--radius);background:var(--accent);color:var(--on-filled-button);color-scheme:normal;box-shadow:0 4px 16px rgba(0,0,0,.2);cursor:pointer}.scroll-to-top-button[hidden]{display:none}.scroll-to-top-button:hover{background:var(--accent-hover);color:var(--on-filled-button)}.rename-project-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:8px}.project-title-row[hidden],.rename-project-form[hidden]{display:none}.rename-project-form input{flex:1 1 220px;min-width:0}.set-meta{margin:0 0 16px;color:var(--muted)}.stats{display:flex;flex-wrap:wrap;gap:16px}.stat-group{flex:1 1 220px;padding:14px;border-radius:var(--radius-lg);background:var(--panel);border:1px solid var(--panel-border)}.stat-group-title{margin:0 0 10px;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text)}.stat-group-items{display:flex;flex-wrap:wrap;gap:10px}.stat{flex:1 1 120px;min-width:120px;padding:12px 14px;border-radius:var(--radius);background:var(--input-bg);border:1px solid var(--panel-border)}.stat-label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}.stat-value{font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums}.parts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--grid-min),1fr));gap:var(--grid-gap)}.parts-grid[data-grid-size=compact]{--grid-min:120px;--grid-gap:10px}.parts-grid,.parts-grid[data-grid-size=comfortable]{--grid-min:180px;--grid-gap:16px}.parts-grid[data-grid-size=spacious]{--grid-min:240px;--grid-gap:18px}.parts-grid[data-grid-size=large]{--grid-min:300px;--grid-gap:20px}.parts-grid[data-grid-size=compact] .part-image-wrap{padding:8px}.parts-grid[data-grid-size=compact] .part-body{padding:10px}.parts-grid[data-grid-size=compact] .part-name,.parts-grid[data-grid-size=compact] .used-count{font-size:.8rem}.parts-grid[data-grid-size=large] .part-name{font-size:1.05rem}#import-input,.part-image-wrap.is-uncached img,.parts-grid[hidden]{display:none}.part-card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-lg);overflow:hidden;min-height:100%}.part-card.used-up{opacity:.65}.part-image-wrap{position:relative;width:100%;aspect-ratio:1;height:auto;background:#fff;display:flex;align-items:center;justify-content:center;padding:12px;border-bottom:1px solid var(--panel-border)}.part-image-wrap img{max-width:min(100%,200px);max-height:min(100%,200px);width:auto;height:auto;object-fit:contain}.part-image-uncached{display:none;margin:0;padding:8px;text-align:center;font-size:.72rem;line-height:1.35;color:#4a4a4a}.footer-logo-link img,.part-image-wrap.is-uncached .part-image-uncached{display:block}.qty-badge{position:absolute;top:10px;right:10px;min-width:2rem;padding:4px 8px;border-radius:var(--radius);background:var(--image-pill-bg);border:1px solid var(--image-pill-border);color:var(--image-pill-text);font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums;text-align:center}.part-body{padding:14px;display:flex;flex-direction:column;gap:8px;flex:1}.part-number{font-size:.85rem;color:var(--accent);font-weight:600}.part-name{margin:0;font-size:.95rem;line-height:1.35;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;cursor:pointer}.part-name.expanded{-webkit-line-clamp:unset}.color-row{display:flex;align-items:flex-start;gap:8px;color:var(--muted);font-size:.85rem;min-height:2.4em}.used-controls{margin-top:auto;padding-top:8px}.step-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.step-button{width:40px;height:40px;padding:0;border-radius:var(--radius);font-size:1.2rem;line-height:1;border:1px solid transparent}.step-button[data-action=increase]{background:var(--success);color:var(--on-filled-button)}.step-button[data-action=increase]:hover{background:var(--success-hover);color:var(--on-filled-button)}.step-button[data-action=decrease]{background:var(--danger);color:var(--on-filled-button)}.step-button[data-action=decrease]:hover{background:var(--danger-hover);color:var(--on-filled-button)}.step-button:disabled{opacity:.35;cursor:not-allowed}.site-footer p,.used-count{color:var(--muted);text-align:center}.used-count{font-size:.85rem;font-variant-numeric:tabular-nums;flex:1}.color-dot{width:14px;height:14px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:0 0;flex-shrink:0;margin-top:.35em}.color-dot.solid{border-color:rgba(255,255,255,.15)}.color-dot.transparent-color{background:linear-gradient(45deg,rgba(255,255,255,.1) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.1) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.1) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.1) 75%);background-size:6px 6px;background-position:0 0,0 3px,3px -3px,-3px 0}.color-dot.unavailable{opacity:.55}@media (min-width:1200px){.parts-grid[data-grid-size=comfortable]{--grid-min:200px}.parts-grid[data-grid-size=spacious]{--grid-min:260px}.parts-grid[data-grid-size=large]{--grid-min:320px}.set-header{grid-template-columns:320px 1fr}.projects-list{align-items:center}.project-card{max-width:50%;width:100%}}@media (min-width:1800px){.set-header{grid-template-columns:380px 1fr}}.site-footer{max-width:var(--layout-max-width);margin:32px auto 0;padding:16px var(--layout-padding-x) 32px;border-top:1px solid var(--panel-border)}.site-footer p{margin:0;font-size:.8rem;line-height:1.4;max-width:70ch;margin-inline:auto}.footer-disclaimer{margin-top:8px!important}.footer-links{margin-top:4px!important}.footer-links a{color:var(--accent);text-decoration:none}.desktop-app-promo{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:12px}.desktop-app-logo{display:block;width:240px;height:auto;max-width:100%;border-radius:var(--radius)}.coming-soon-badge{display:inline-block;padding:4px 10px;border-radius:var(--radius);background:var(--input-bg);color:var(--muted);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.github-link{display:inline-flex;align-items:center;gap:6px}@media (max-width:640px){.page-header{flex-wrap:wrap}.page-header-actions{width:100%;justify-content:center}.set-header{grid-template-columns:1fr}.set-image-wrap{max-width:180px}.project-card{flex-direction:column;align-items:stretch}.project-card .set-collage-card{align-self:flex-start}.project-card-actions{justify-content:flex-end}}.footer-credit{margin-bottom:4px!important;font-size:.85rem!important}.footer-credit-link{color:var(--accent);text-decoration:none}.footer-logo-link{display:flex;justify-content:center;margin-bottom:8px}.dex-logo{border-radius:8px}.store-badges{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:16px}.store-badge{filter:brightness(0) saturate(100%) invert(28%) sepia(35%) saturate(700%) hue-rotate(120deg)}