*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f5f5f5;--surface: #ffffff;--text: #1a1a1a;--text-muted: #666;--accent: #e3000b;--accent-hover: #c00009;--border: #ddd;--success: #2e7d32;--radius: 8px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}.home{max-width:480px;margin:0 auto;padding:2rem 1rem;text-align:center}.home h1{font-size:2rem;color:var(--accent);margin-bottom:.5rem}.home p{color:var(--text-muted);margin-bottom:1.5rem}.home form{display:flex;gap:.5rem}.home input{flex:1;padding:.75rem 1rem;border:2px solid var(--border);border-radius:var(--radius);font-size:1rem;outline:none;transition:border-color .2s}.home input:focus{border-color:var(--accent)}.home button{padding:.75rem 1.25rem;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);font-size:1rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .2s}.home button:hover:not(:disabled){background:var(--accent-hover)}.home button:disabled{opacity:.6;cursor:not-allowed}.tagline{color:var(--text-muted);margin-bottom:.5rem}.home-description{color:var(--text-muted);font-size:.9rem;margin-bottom:1.5rem;line-height:1.6}.home-features{display:flex;gap:1.5rem;margin-top:2rem;justify-content:center}.feature{display:flex;flex-direction:column;align-items:center;gap:.25rem;flex:1;max-width:140px}.feature strong{font-size:.8rem}.feature span{font-size:.75rem;color:var(--text-muted)}.powered-by{display:inline-flex;align-items:center;gap:.5rem;margin-top:2rem;padding:.5rem 1rem;border-radius:var(--radius);text-decoration:none;color:var(--text-muted);font-size:.8rem;transition:opacity .2s}.powered-by:hover{opacity:.7}.powered-by img{height:24px;object-fit:contain}.error{color:var(--accent);margin-top:1rem}.loading{text-align:center;padding:3rem;color:var(--text-muted)}.session-page{max-width:960px;margin:0 auto;padding:1rem}.session-header{margin-bottom:1rem}.session-info{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.set-thumb{width:80px;height:80px;object-fit:contain;border-radius:var(--radius);background:var(--surface)}.session-info h1{font-size:1.25rem;line-height:1.3}.set-num{color:var(--text-muted);font-size:.875rem}.progress{margin-bottom:1rem}.progress-bar{height:8px;background:var(--border);border-radius:4px;overflow:hidden;margin-bottom:.25rem}.progress-fill{height:100%;background:var(--success);border-radius:4px;transition:width .3s ease}.progress-text{font-size:.875rem;color:var(--text-muted)}.controls{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:1rem}.control-group{display:flex;align-items:center;gap:.25rem}.control-group label{font-size:.875rem;color:var(--text-muted)}.control-group select{padding:.375rem .5rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem;background:var(--surface)}.btn-secondary{padding:.375rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem;cursor:pointer}.btn-danger{padding:.375rem .75rem;background:var(--surface);border:1px solid var(--accent);border-radius:var(--radius);font-size:.875rem;color:var(--accent);cursor:pointer}.qr-container{display:flex;flex-direction:column;align-items:center;padding:1rem;background:var(--surface);border-radius:var(--radius);margin-bottom:1rem}.share-url{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem;max-width:100%}.share-url-text{font-size:.75rem;color:var(--text-muted);word-break:break-all;background:var(--bg);padding:.375rem .5rem;border-radius:4px;flex:1;min-width:0}.btn-copy{padding:.375rem .625rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:.75rem;cursor:pointer;white-space:nowrap}.qr-hint{font-size:.75rem;color:var(--text-muted);margin-top:.5rem}.parts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.5rem}.part-card{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius);padding:.5rem;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:border-color .2s,opacity .2s;display:flex;flex-direction:column;align-items:center;text-align:center}.part-card.complete{border-color:var(--success)}.part-card.complete>:not(.context-menu){opacity:.45}.part-img-container{width:80px;height:80px;display:flex;align-items:center;justify-content:center;margin-bottom:.25rem}.part-img{max-width:100%;max-height:100%;object-fit:contain}.part-img-placeholder{width:60px;height:60px;background:var(--bg);border-radius:4px}.color-swatch{width:100%;height:6px;border-radius:3px;margin-bottom:.25rem}.part-name{font-size:.7rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.part-counter{display:flex;align-items:center;gap:.25rem;margin-top:.25rem;width:100%}.counter-btn{flex:1;height:44px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);font-size:1.3rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text);transition:background .15s,border-color .15s;padding:0}.counter-btn:active:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff}.counter-btn:disabled{opacity:.3;cursor:default}.part-qty{font-size:.875rem;font-weight:700;min-width:3ch;text-align:center}.part-card{position:relative}.part-img-container,.part-qty{cursor:pointer}.context-menu{position:absolute;z-index:100;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 16px #00000026;min-width:160px;overflow:hidden}.context-menu-item{display:block;width:100%;padding:.625rem 1rem;border:none;background:none;font-size:.875rem;text-align:left;cursor:pointer;color:var(--text)}.context-menu-item:active:not(:disabled){background:var(--bg)}.context-menu-item:disabled{color:var(--border);cursor:default}.context-menu-item+.context-menu-item{border-top:1px solid var(--bg)}.similar-filter-banner{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .75rem;background:var(--surface);border:1px solid var(--accent);border-radius:var(--radius);margin-bottom:1rem;font-size:.875rem}.spares-heading{margin:1.5rem 0 .75rem;font-size:1rem;color:var(--text-muted)}
