:root{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,sans-serif;line-height:1.47;font-weight:400;color-scheme:light;color:#1c1c1e;background-color:#f9f9f9;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:600;color:#007aff;text-decoration:none;transition:color .15s ease}a:hover{color:#0051d5}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%;min-height:100vh}h1{font-size:1.875rem;line-height:1.2;font-weight:700;letter-spacing:-.02em}button{border-radius:10px;border:1px solid transparent;padding:.625em 1.25em;font-size:1em;font-weight:600;font-family:inherit;background-color:#007aff;color:#fff;cursor:pointer;transition:all .2s ease;letter-spacing:-.01em}button:hover{background-color:#0051d5;transform:translateY(-1px);box-shadow:0 2px 6px #007aff40}button:active{transform:translateY(0)}button:focus,button:focus-visible{outline:2px solid #007AFF;outline-offset:2px}*{box-sizing:border-box}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:root{--primary-color: #FF3B30;--primary-hover: #D32F2F;--secondary-color: #007AFF;--secondary-hover: #0051D5;--success-color: #34C759;--warning-color: #FF9500;--info-color: #007AFF;--replacement-found-color: #FF9500;--gray-50: #F9F9F9;--gray-100: #F2F2F7;--gray-200: #E5E5EA;--gray-300: #D1D1D6;--gray-400: #C7C7CC;--gray-500: #AEAEB2;--gray-600: #8E8E93;--gray-700: #636366;--gray-800: #48484A;--gray-900: #1C1C1E;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--max-width: 1024px;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--border-radius: 10px;--border-radius-sm: 6px;--border-radius-lg: 14px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 2px 8px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .12);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .15);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;background-color:var(--gray-50);color:var(--gray-900);line-height:1.47;font-size:var(--font-size-base);letter-spacing:-.01em}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden;background-color:var(--gray-50)}.app-header{background:#fff;padding:var(--spacing-md) 0 var(--spacing-sm) 0;flex-shrink:0;z-index:100;border-bottom:1px solid var(--gray-200);box-shadow:0 1px #0000000d;width:100%}.header-content{max-width:var(--max-width);margin:0 auto;padding:0 var(--spacing-md);display:flex;align-items:center;gap:var(--spacing-lg);flex-wrap:wrap}.header-title{display:flex;align-items:center;gap:var(--spacing-md)}.app-icon{width:48px;height:48px;border-radius:12px;object-fit:cover}.header-content h1{margin:0;font-size:var(--font-size-3xl);color:var(--gray-900);font-weight:700;letter-spacing:-.02em}.header-content p{margin:0;color:var(--gray-600);font-size:var(--font-size-sm);font-weight:400}.header-stats{display:flex;align-items:center;gap:var(--spacing-md);margin-left:auto;background:#fff;padding:.625rem var(--spacing-md);border-radius:var(--border-radius);border:1px solid var(--gray-200);box-shadow:var(--shadow-sm)}.stat-item{display:flex;flex-direction:column;align-items:center;gap:.125rem}.stat-value{font-size:var(--font-size-lg);font-weight:700;color:var(--gray-900);line-height:1;letter-spacing:-.02em}.stat-label{font-size:var(--font-size-xs);color:var(--gray-600);text-transform:uppercase;letter-spacing:.05em;font-weight:600;line-height:1}.stat-divider{color:var(--gray-400);font-size:var(--font-size-sm);font-weight:300}.stat-item.unresolved .stat-value,.stat-item.unresolved .stat-label{color:var(--warning-color)}.stat-item.clickable{cursor:pointer;transition:var(--transition-fast);border-radius:var(--border-radius-sm);padding:.25rem;margin:-.25rem}.stat-item.clickable:hover{background-color:var(--gray-100);transform:scale(1.05)}.stat-item.clickable:active{transform:scale(.98)}.unresolved-badge{background:var(--warning-color);color:#fff;padding:.25rem .75rem;border-radius:1rem;font-size:.8rem;font-weight:600;margin-left:auto}.app-nav{max-width:var(--max-width);margin:0 auto;padding:0 var(--spacing-md);display:flex;align-items:center;gap:var(--spacing-sm);margin-top:var(--spacing-md);flex-wrap:wrap}.app-nav button,.app-nav .import-btn{background:#fff;border:1px solid var(--gray-300);padding:.5rem 1rem;border-radius:var(--border-radius);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-base);text-decoration:none;color:var(--gray-900);letter-spacing:-.01em}.app-nav button:hover,.app-nav .import-btn:hover{background:var(--gray-100);border-color:var(--gray-400);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.app-nav button.active{background:var(--secondary-color);color:#fff;border-color:var(--secondary-color);box-shadow:0 1px 3px #007aff33}.app-nav button:active,.app-nav .import-btn:active{transform:translateY(0)}.nav-actions{margin-left:auto;display:flex;gap:var(--spacing-sm)}.hidden-file-input{display:none}.app-main{flex:1;width:100%;padding:0;overflow-y:auto;overflow-x:hidden;box-sizing:border-box;display:flex;flex-direction:column;align-items:center}.search-controls{background:#fff;padding:var(--spacing-md);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-sm);margin-bottom:var(--spacing-xl);display:flex;gap:var(--spacing-md);align-items:center;flex-wrap:wrap;border:1px solid var(--gray-200)}.search-field{flex:1;min-width:200px}.add-controls{flex-shrink:0}.add-global-btn{padding:.5rem 1rem;font-size:.9rem;white-space:nowrap}.search-input{width:100%;padding:.75rem 1rem;border:1px solid var(--gray-300);border-radius:var(--border-radius);font-size:var(--font-size-base);background:#fff;transition:all var(--transition-base);letter-spacing:-.01em}.search-input:focus{outline:none;border-color:var(--secondary-color);box-shadow:0 0 0 4px #007aff1a}.search-input::placeholder{color:var(--gray-500)}.filter-controls{display:flex;align-items:center;gap:.5rem}.filter-controls select{padding:.5rem .75rem;border:1px solid var(--gray-300);border-radius:var(--border-radius);background:#fff;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-base);letter-spacing:-.01em}.filter-controls select:hover{border-color:var(--gray-400);background:var(--gray-50)}.filter-controls select:focus{outline:none;border-color:var(--secondary-color);box-shadow:0 0 0 4px #007aff1a}.btn-primary{background:var(--secondary-color);color:#fff;border:none;padding:.625rem 1.25rem;border-radius:var(--border-radius);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all var(--transition-base);letter-spacing:-.01em;box-shadow:0 1px 3px #007aff33}.btn-primary:hover{background:var(--secondary-hover);box-shadow:0 2px 6px #007aff4d;transform:translateY(-1px)}.btn-primary:active{transform:translateY(0);box-shadow:0 1px 2px #007aff33}.btn-secondary{background:var(--gray-100);color:var(--gray-900);border:1px solid var(--gray-300);padding:.625rem 1.25rem;border-radius:var(--border-radius);font-size:var(--font-size-base);font-weight:500;cursor:pointer;transition:all var(--transition-base);letter-spacing:-.01em}.btn-secondary:hover{background:var(--gray-200);border-color:var(--gray-400);transform:translateY(-1px)}.btn-secondary:active{transform:translateY(0);background:var(--gray-300)}.substitution-form{background:#fff;padding:var(--spacing-xl);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);max-width:680px;margin:var(--spacing-xl) auto;width:calc(100% - var(--spacing-md) * 2);box-sizing:border-box;border:1px solid var(--gray-200);flex-shrink:0}.substitution-form h2{margin:0 0 var(--spacing-xl) 0;color:var(--gray-900);font-size:var(--font-size-2xl);font-weight:700;letter-spacing:-.02em}.form-section{margin-bottom:var(--spacing-lg);padding-bottom:0}.form-section:last-of-type{border-bottom:none!important;padding-bottom:0;margin-bottom:0}.substitution-form .form-section:last-child{border-bottom:none!important}.form-field{margin:0 0 var(--spacing-md) 0;color:var(--gray-900);font-size:var(--font-size-lg);font-weight:700;letter-spacing:-.02em}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-md)}.form-field{display:flex;flex-direction:column;gap:var(--spacing-sm)}.form-field label{font-weight:600;color:var(--gray-900);font-size:var(--font-size-sm);letter-spacing:-.01em}.form-field input,.form-field textarea,.form-field select{padding:.75rem 1rem;border:1px solid var(--gray-300);border-radius:var(--border-radius);font-size:var(--font-size-base);background:#fff;transition:all var(--transition-base);letter-spacing:-.01em;font-family:inherit}.form-field input:focus,.form-field textarea:focus,.form-field select:focus{outline:none;border-color:var(--secondary-color);box-shadow:0 0 0 4px #007aff1a;background:#fff}.form-field input::placeholder,.form-field textarea::placeholder{color:var(--gray-500)}.form-field input[type=checkbox]{width:auto;margin-right:.5rem}.form-field label:has(input[type=checkbox]){flex-direction:row;align-items:center;font-weight:400}.form-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;margin-top:var(--spacing-xl);padding-top:0}.saving-indicator{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--secondary-color);font-size:var(--font-size-sm);font-weight:500;margin-right:auto}.saving-indicator .spinner{width:16px;height:16px;border:2px solid var(--gray-200);border-top-color:var(--secondary-color);border-radius:50%;animation:spin .8s linear infinite}.set-info{background:var(--gray-50);padding:var(--spacing-md);border-radius:var(--border-radius);margin-top:var(--spacing-md);border:1px solid var(--gray-200)}.set-info-form-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.5rem}.set-info h4{margin:0;color:var(--gray-900);flex:1;font-weight:700;font-size:var(--font-size-base);letter-spacing:-.01em}.set-image{max-width:200px;height:auto;border-radius:var(--border-radius);margin-top:var(--spacing-sm);border:1px solid var(--gray-200)}.manual-set-info{background:var(--gray-100);border:1px solid var(--gray-300);padding:var(--spacing-md);border-radius:var(--border-radius);margin-top:var(--spacing-md)}.help-text{margin:0 0 var(--spacing-sm) 0;color:var(--gray-600);font-size:var(--font-size-sm)}.manual-entry-btn{font-size:.9rem;padding:.5rem 1rem}.sets-view{width:100%;max-width:var(--max-width);margin:0 auto;padding:var(--spacing-xl) var(--spacing-md);box-sizing:border-box;flex-shrink:0}.add-set-control{background:#fff;border:1px solid var(--gray-200);border-radius:var(--border-radius-lg);padding:var(--spacing-lg);margin-bottom:var(--spacing-xl);box-shadow:var(--shadow-sm)}.add-set-input{display:flex;gap:1rem;align-items:end;flex-wrap:wrap}.add-set-input .form-field{flex:1;min-width:250px;margin-bottom:0}.add-set-input .form-field label{display:block;margin-bottom:.5rem;font-weight:600;color:var(--gray-700)}.set-number-input{width:100%;padding:.75rem 1rem;border:1px solid var(--gray-300);border-radius:var(--border-radius);font-size:var(--font-size-base);background:#fff;transition:all var(--transition-base);letter-spacing:-.01em}.set-number-input:focus{outline:none;border-color:var(--secondary-color);box-shadow:0 0 0 4px #007aff1a}.set-number-input::placeholder{color:var(--gray-500)}.add-set-btn{padding:.75rem 1.25rem;font-size:var(--font-size-base);min-width:100px;font-weight:600;letter-spacing:-.01em;align-self:flex-end;flex-shrink:0}.add-set-btn:disabled{background:var(--gray-300);cursor:not-allowed;opacity:.6}.set-info-preview{margin-top:var(--spacing-md);padding:var(--spacing-md);background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--border-radius)}.set-info-preview.loading{text-align:center;color:var(--gray-600);font-style:italic}.loading-text{text-align:center;color:var(--gray-600);font-style:italic;margin:var(--spacing-md) 0}.loading-indicator{color:var(--gray-500);font-size:var(--font-size-sm);font-style:italic}.set-info-header{display:flex;align-items:center;gap:1rem}.set-preview-image{width:80px;height:60px;object-fit:contain;border-radius:4px;border:1px solid var(--gray-200)}.edit-set-inline-btn{background:#fff;color:var(--secondary-color);border:1px solid var(--gray-300);padding:.5rem .875rem;border-radius:var(--border-radius);cursor:pointer;font-size:var(--font-size-sm);font-weight:600;transition:all var(--transition-base);letter-spacing:-.01em;white-space:nowrap}.edit-set-inline-btn:hover{background:var(--gray-100);border-color:var(--gray-400);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.edit-set-inline-btn:active{transform:translateY(0)}.set-details-preview h4{margin:0 0 .5rem;font-size:1.1rem;color:var(--gray-800)}.set-details-preview .theme,.set-details-preview .year{margin:.25rem 0;font-size:.9rem;color:var(--gray-600)}.already-owned{color:var(--success-color);font-weight:600;margin:.25rem 0}@media(max-width:768px){.add-set-input{flex-direction:column;align-items:stretch}.add-set-input .form-field{min-width:auto}.set-info-header{flex-direction:column;align-items:flex-start;gap:.75rem}.set-preview-image{width:60px;height:45px}}.sets-list{margin-top:2rem}.sets-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg);gap:var(--spacing-md)}.sets-list-header h2{margin:0;color:var(--gray-900);font-size:var(--font-size-2xl);font-weight:700;letter-spacing:-.02em}.sets-header-controls{display:flex;gap:var(--spacing-md);align-items:center}.sets-search{flex:0 1 300px;position:relative}.sets-search .search-input{width:100%;padding:.5rem 2.25rem .5rem .875rem;border:1px solid var(--gray-300);border-radius:var(--border-radius);font-size:var(--font-size-sm)}.input-with-clear{position:relative;display:inline-block;width:100%}.input-with-clear .set-number-input{padding-right:2.25rem}.search-clear-button{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--gray-500);font-size:1.5rem;line-height:1;cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius-sm);transition:background-color var(--transition-fast),color var(--transition-fast);width:1.5rem;height:1.5rem;will-change:background-color,color}.search-clear-button:hover{background:var(--gray-200);color:var(--gray-700);transform:translateY(-50%)}.search-clear-button:active{transform:translateY(-50%) scale(.95)}.filter-menu-container{position:relative}.filter-toggle-button{background:#fff;border:1px solid var(--gray-300);border-radius:var(--border-radius);padding:.5rem;font-size:var(--font-size-sm);font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.375rem;transition:all var(--transition-fast);white-space:nowrap;color:var(--gray-800);min-width:2.5rem;height:2.5rem}.filter-toggle-button:hover{background:var(--gray-50);border-color:var(--gray-400)}.filter-toggle-button.has-filters{background:var(--secondary-color);border-color:var(--secondary-color);color:#fff}.filter-toggle-button.has-filters:hover{background:var(--secondary-hover);border-color:var(--secondary-hover)}.filter-toggle-button svg{flex-shrink:0}.filter-count{background:#ffffff4d;border-radius:10px;padding:.125rem .375rem;font-size:var(--font-size-xs);font-weight:600;min-width:1.25rem;text-align:center;position:absolute;top:-.25rem;right:-.25rem;background:var(--primary-color);color:#fff;box-shadow:0 1px 3px #0003}.filter-dropdown{position:absolute;top:calc(100% + .5rem);right:0;background:#fff;border:1px solid var(--gray-200);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);padding:var(--spacing-md);min-width:200px;z-index:100}.filter-dropdown-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--gray-200)}.filter-dropdown-header h3{margin:0;font-size:var(--font-size-sm);font-weight:600;color:var(--gray-800)}.filter-clear-button{background:none;border:none;color:var(--secondary-color);font-size:var(--font-size-xs);font-weight:500;cursor:pointer;padding:.25rem .5rem;border-radius:var(--border-radius-sm);transition:background-color var(--transition-fast)}.filter-clear-button:hover{background:var(--gray-100)}.filter-options{display:flex;flex-direction:column;gap:var(--spacing-sm)}.filter-option{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;padding:var(--spacing-sm);border-radius:var(--border-radius-sm);transition:background-color var(--transition-fast);-webkit-user-select:none;user-select:none}.filter-option:hover{background:var(--gray-50)}.filter-option input[type=checkbox],.filter-option input[type=radio]{cursor:pointer;width:1.125rem;height:1.125rem;margin:0}.filter-tag-label{font-size:var(--font-size-sm);color:var(--gray-800)}.add-substitution-btn{white-space:nowrap;font-size:var(--font-size-sm);font-weight:600;padding:.5rem var(--spacing-md)}@media(max-width:768px){.sets-list-header{flex-direction:column;align-items:stretch}.sets-header-controls{flex-direction:column}.sets-search{flex:1}}.sets-grid{display:grid;grid-template-columns:1fr;gap:var(--spacing-lg)}.set-card{background:#fff;border:1px solid var(--gray-200);border-radius:var(--border-radius-lg);overflow:visible;transition:all var(--transition-base);box-shadow:var(--shadow-sm);position:relative;z-index:1}.set-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--gray-300);z-index:2}.set-card:has(.overflow-menu-button[aria-expanded=true]){z-index:100}.set-card-header{padding:var(--spacing-md);position:relative;border-radius:var(--border-radius-lg)}.set-card-header.clickable{cursor:pointer;transition:background-color var(--transition-base)}.set-card-header.clickable:hover{background-color:var(--gray-50)}.set-card-header .set-card-menu{position:absolute;top:var(--spacing-sm);right:var(--spacing-sm);z-index:10}.set-card-image{width:80px;height:60px;object-fit:contain;border-radius:var(--border-radius-sm);margin-right:var(--spacing-md)}.view-set-btn{background:var(--secondary-color);color:#fff;border:none;padding:.5rem 1rem;border-radius:var(--border-radius);cursor:pointer;font-size:var(--font-size-sm);font-weight:600;transition:all var(--transition-base);display:flex;align-items:center;gap:.25rem;letter-spacing:-.01em}.view-set-btn:hover{background:var(--secondary-hover);transform:translateY(-1px);box-shadow:0 2px 6px #007aff40}.view-set-btn:active{transform:translateY(0)}.delete-set-btn{background:#fff;color:var(--gray-600);border:1px solid var(--gray-300);padding:.5rem;border-radius:var(--border-radius);cursor:pointer;font-size:var(--font-size-base);transition:all var(--transition-base);display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}.delete-set-btn:hover{background:var(--gray-100);border-color:var(--gray-400);color:var(--gray-900);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.delete-set-btn:active{transform:translateY(0)}.no-substitutions{color:var(--gray-500);font-size:var(--font-size-xs);font-weight:500}.set-detail-view{width:100%;max-width:var(--max-width);margin:0 auto;padding:var(--spacing-xl) var(--spacing-md);box-sizing:border-box;display:flex;flex-direction:column;flex-shrink:0}.set-detail-header{flex-shrink:0;margin-bottom:0}.set-detail-content{flex:1;overflow-y:auto;overflow-x:hidden}.detail-header-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg);gap:var(--spacing-md);padding:0}.filter-dropdown{padding:.5rem 1rem;border:1px solid var(--gray-300);border-radius:var(--border-radius);background:#fff;color:var(--gray-900);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-base);letter-spacing:-.01em;font-weight:500}.filter-dropdown:hover{border-color:var(--gray-400);background:var(--gray-50)}.filter-dropdown:focus{outline:none;border-color:var(--secondary-color);box-shadow:0 0 0 4px #007aff1a}.filter-controls{display:flex;gap:var(--spacing-md);align-items:center}.filter-controls .search-input{padding:.5rem 1rem;border:1px solid var(--gray-300);border-radius:var(--border-radius);font-size:var(--font-size-sm);letter-spacing:-.01em;transition:all var(--transition-base);min-width:250px}.filter-controls .search-input:focus{outline:none;border-color:var(--secondary-color);box-shadow:0 0 0 4px #007aff1a}.back-btn{background:var(--gray-700);color:#fff;border:none;padding:.5rem 1rem;border-radius:var(--border-radius);cursor:pointer;font-size:var(--font-size-sm);font-weight:600;transition:all var(--transition-base);letter-spacing:-.01em}.back-btn:hover{background:var(--gray-800);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.back-btn:active{transform:translateY(0)}@media(max-width:768px){.sets-grid{grid-template-columns:1fr}.set-card-header .set-info-header{flex-direction:column;align-items:flex-start;gap:.5rem}.set-card-image{width:60px;height:45px;margin-right:.75rem}.filter-controls{flex-direction:column;width:100%}.filter-controls .search-input{width:100%;min-width:unset}.filter-controls .filter-dropdown{width:100%}}.grouped-substitution-list{width:100%}.summary-stats{display:flex;gap:var(--spacing-md);color:var(--gray-600);font-size:var(--font-size-sm);align-items:center;font-weight:500}.summary-stats span{white-space:nowrap}.set-groups{display:flex;flex-direction:column;gap:var(--spacing-lg)}.set-group{background:#fff;border-radius:var(--border-radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;border:1px solid var(--gray-200)}.set-header{padding:var(--spacing-md);background:var(--gray-50)}.set-header-content{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md)}.set-info-header{display:flex;align-items:center;gap:var(--spacing-md);flex:1}.set-header-image{width:60px;height:60px;object-fit:cover;border-radius:var(--border-radius);background:var(--gray-200);border:1px solid var(--gray-200)}.set-details h3{margin:0;line-height:1.3;display:flex;align-items:baseline;gap:.5rem}.set-details h3 .set-name{color:var(--gray-900);font-weight:700;font-size:var(--font-size-xl);letter-spacing:-.02em}.set-details h3 .set-number{color:var(--gray-600);font-weight:500;font-size:var(--font-size-sm)}.set-details h2 .set-name{color:var(--gray-900);font-weight:700;font-size:var(--font-size-xl);letter-spacing:-.02em}.set-details h2 .set-number{color:var(--gray-600);font-weight:500;font-size:var(--font-size-sm)}.set-details h2{margin:0 0 .125rem;line-height:1.3;display:flex;align-items:baseline;gap:.5rem}.set-theme{margin:.125rem 0 0;color:var(--gray-500);font-size:var(--font-size-sm);font-style:italic;font-weight:400}.set-stats{display:flex;gap:var(--spacing-md);margin-top:.25rem;font-size:var(--font-size-xs)}.substitution-count{color:var(--gray-600);font-weight:500}.unresolved-count{color:var(--warning-color);font-weight:700}.set-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.add-to-set-btn{background:var(--primary-color);color:#fff;border:none;padding:.5rem 1rem;border-radius:var(--border-radius);cursor:pointer;font-size:var(--font-size-sm);font-weight:600;display:flex;align-items:center;justify-content:center;gap:.25rem;transition:all var(--transition-base);white-space:nowrap;letter-spacing:-.01em}.add-to-set-btn:hover{background:var(--primary-hover);transform:translateY(-1px);box-shadow:0 2px 6px #ff3b3040}.add-to-set-btn:active{transform:translateY(0)}.substitution-rows{background:#fff}.substitution-header{background:var(--gray-50);border-bottom:1px solid var(--gray-200);padding:var(--spacing-sm) var(--spacing-md)}.column-headers{display:grid;grid-template-columns:minmax(200px,1fr) 2fr 2fr auto;gap:var(--spacing-md);align-items:center;font-weight:700;font-size:var(--font-size-xs);color:var(--gray-700);text-transform:uppercase;letter-spacing:.05em}.step-header,.needed-header,.used-header{text-align:left;justify-self:start}.step-header{min-width:4rem}.actions-header{text-align:center;justify-self:end;min-width:7rem}.substitution-row{display:grid;grid-template-columns:minmax(200px,1fr) 2fr 2fr auto;gap:var(--spacing-md);align-items:center;padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--gray-100);transition:background-color var(--transition-fast)}.substitution-row:hover{background:var(--gray-50)}.substitution-row:last-child{border-bottom:none}.substitution-row.status-resolved{background-color:#34c7590d}.substitution-row.status-resolved:hover{background-color:#34c7591a}.substitution-row.status-replacement-found{background-color:#ff95000d}.substitution-row.status-replacement-found:hover{background-color:#ff95001a}.substitution-row.status-unresolved{background-color:#fff}.substitution-row.status-unresolved:hover{background-color:var(--gray-50)}.row-pieces{display:contents}.step-cell,.needed-piece,.substituted-piece{display:flex;align-items:center;text-align:left;justify-self:start}.step-cell{min-width:200px;font-size:var(--font-size-sm);color:var(--gray-600);font-weight:600;line-height:1.3;white-space:nowrap;letter-spacing:-.01em}.needed-piece span,.substituted-piece span{font-size:var(--font-size-sm);color:var(--gray-900);line-height:1.3;text-align:left;font-weight:500}.row-actions{display:flex;gap:.375rem;align-items:center;justify-content:center;justify-self:end;min-width:7rem}.row-actions button{background:none;border:none;padding:.375rem;border-radius:var(--border-radius-sm);cursor:pointer;font-size:var(--font-size-base);transition:all var(--transition-fast)}.row-actions button:hover{background:var(--gray-200);transform:scale(1.1)}.row-actions button:active{transform:scale(1)}.row-actions .resolve-btn.status-resolved{color:var(--success-color)}.row-actions .resolve-btn.status-replacement-found{color:var(--replacement-found-color)}.row-actions .resolve-btn.status-unresolved{color:var(--gray-400)}.all-substitutions-view .column-headers.all-subs-headers,.all-substitutions-view .substitution-row{grid-template-columns:minmax(150px,1.5fr) minmax(180px,1fr) 2fr 2fr auto}.all-substitutions-view .row-pieces.all-subs-row{display:contents}.set-header-col{text-align:left;justify-self:start}.set-cell{display:flex;align-items:center;text-align:left;justify-self:start;font-weight:500;color:var(--gray-900)}.set-name-text{cursor:default}@media(max-width:768px){.set-header-content{flex-direction:column;align-items:stretch;gap:.75rem}.set-info-header{justify-content:flex-start}.set-actions{justify-content:space-between}.column-headers{display:none}.substitution-row{grid-template-columns:1fr;gap:.75rem;padding:1rem}.row-pieces{display:grid;grid-template-columns:1fr;gap:.75rem}.all-substitutions-view .row-pieces.all-subs-row{display:grid}.step-cell,.needed-piece,.substituted-piece,.set-cell{display:flex;flex-direction:column;gap:.25rem}.set-cell:before{content:"Set:";font-size:.7rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.05em}.needed-piece:before{content:"Need:";font-size:.7rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.05em}.substituted-piece:before{content:"Used:";font-size:.7rem;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.05em}.row-actions{justify-content:flex-end;min-width:auto}.summary-stats{flex-wrap:wrap;gap:.5rem}}.list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);flex-wrap:wrap;gap:var(--spacing-md)}.sort-controls{display:flex;align-items:center;gap:var(--spacing-sm)}.sort-btn{background:#fff;border:1px solid var(--gray-300);padding:.5rem .875rem;border-radius:var(--border-radius);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-base);letter-spacing:-.01em}.sort-btn:hover{background:var(--gray-100);border-color:var(--gray-400);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.sort-btn:active{transform:translateY(0)}.sort-btn.active{background:var(--secondary-color);color:#fff;border-color:var(--secondary-color);box-shadow:0 1px 3px #007aff33}.results-count{color:var(--gray-600);font-size:var(--font-size-sm);margin:0;font-weight:500}.substitution-list-empty{text-align:center;padding:var(--spacing-xl) var(--spacing-lg);color:var(--gray-600)}.substitution-list-empty p{margin:0 0 var(--spacing-md) 0;font-size:var(--font-size-lg);font-weight:500}.add-first-btn{margin-top:var(--spacing-md);padding:.75rem 1.25rem;font-size:var(--font-size-base);font-weight:600}.substitution-cards{display:grid;gap:var(--spacing-md)}.substitution-card{background:#fff;border-radius:var(--border-radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--gray-200);border-left:4px solid var(--gray-300);transition:all var(--transition-base)}.substitution-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.substitution-card.status-resolved{border-left-color:var(--success-color);background-color:#34c7590d}.substitution-card.status-replacement-found{border-left-color:var(--replacement-found-color);background-color:#ff95000d}.substitution-card.status-unresolved{border-left-color:var(--warning-color)}.card-header{display:flex;justify-content:space-between;align-items:flex-start;padding:var(--spacing-md) var(--spacing-md) var(--spacing-sm) var(--spacing-md);gap:var(--spacing-md)}.set-info h3{margin:0;color:var(--gray-900);font-size:var(--font-size-lg);font-weight:700;letter-spacing:-.02em}.set-name{margin:.25rem 0 0;color:var(--gray-600);font-size:var(--font-size-sm);font-weight:500}.location{margin:.25rem 0 0;color:var(--gray-500);font-size:var(--font-size-xs);font-weight:400}.card-actions{display:flex;gap:var(--spacing-sm);align-items:center}.resolve-btn,.edit-btn,.delete-btn{background:none;border:none;padding:.5rem;border-radius:var(--border-radius);cursor:pointer;font-size:var(--font-size-lg);transition:all var(--transition-fast);color:var(--gray-600)}.resolve-btn:hover,.edit-btn:hover,.delete-btn:hover{background:var(--gray-100);transform:scale(1.1);color:var(--gray-900)}.resolve-btn:active,.edit-btn:active,.delete-btn:active{transform:scale(1)}.resolve-btn.status-resolved{color:var(--success-color)}.resolve-btn.status-replacement-found{color:var(--replacement-found-color)}.resolve-btn.status-unresolved{color:var(--gray-400)}.card-content{padding:var(--spacing-sm) var(--spacing-md) var(--spacing-md) var(--spacing-md)}.piece-info{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.needed-piece,.substituted-piece{display:flex;flex-direction:column;gap:.25rem}.needed-piece label,.substituted-piece label{font-weight:600;font-size:var(--font-size-xs);color:var(--gray-600);text-transform:uppercase;letter-spacing:.05em}.needed-piece span,.substituted-piece span{font-size:var(--font-size-sm);color:var(--gray-900);font-weight:500}.notes{margin-bottom:var(--spacing-md)}.notes label{font-weight:600;font-size:var(--font-size-xs);color:var(--gray-600);text-transform:uppercase;letter-spacing:.05em;display:block;margin-bottom:.25rem}.notes p{margin:0;color:var(--gray-900);font-size:var(--font-size-sm);line-height:1.5;font-weight:400}.metadata{display:flex;justify-content:space-between;align-items:center;color:var(--gray-500);font-size:var(--font-size-xs);border-top:1px solid var(--gray-200);padding-top:var(--spacing-sm)}.set-thumbnail{width:40px;height:40px;object-fit:cover;border-radius:var(--border-radius-sm);border:1px solid var(--gray-200)}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;padding:var(--spacing-xl);gap:var(--spacing-lg)}.loading-spinner{width:48px;height:48px;border:4px solid var(--gray-200);border-top-color:var(--secondary-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-container p{color:var(--gray-600);font-size:var(--font-size-base);font-weight:500;margin:0;letter-spacing:-.01em}@media(max-width:768px){.app-main{padding:var(--spacing-md)}.header-content{padding:0 var(--spacing-md);gap:var(--spacing-md)}.header-content h1{font-size:1.5rem}.header-stats{width:100%;justify-content:space-around;margin-left:0;padding:.5rem .75rem}.stat-value{font-size:1rem}.stat-label{font-size:.65rem}.app-nav{padding:0 1rem}.nav-actions{margin-left:0;margin-top:.5rem}.search-controls{flex-direction:column;align-items:stretch}.filter-controls{justify-content:flex-start}.substitution-form{padding:1rem}.form-row{grid-template-columns:1fr}.form-actions{flex-direction:column}.piece-info{grid-template-columns:1fr;gap:.75rem}.card-header{flex-direction:column;align-items:stretch;gap:.75rem}.card-actions{justify-content:flex-end}.list-header{flex-direction:column;align-items:stretch}.sort-controls{justify-content:flex-start;flex-wrap:wrap}}@media(max-width:480px){.app-nav{flex-direction:column;align-items:stretch;gap:.5rem}.app-nav button,.app-nav .import-btn{text-align:center}.form-actions{position:sticky;bottom:0;background:#fff;padding:1rem;margin:1rem -1rem -1rem}}.modal-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-md);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:fadeIn var(--transition-base)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:#fff;border-radius:var(--border-radius-lg);box-shadow:var(--shadow-xl);width:100%;max-width:480px;max-height:90vh;overflow:auto;border:1px solid var(--gray-200);animation:slideUp var(--transition-base)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) var(--spacing-lg) var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--gray-200)}.modal-header h3{margin:0;color:var(--gray-900);font-size:var(--font-size-xl);font-weight:700;letter-spacing:-.02em}.modal-close-btn{background:var(--gray-100);border:none;font-size:var(--font-size-xl);color:var(--gray-600);cursor:pointer;padding:.25rem;line-height:1;border-radius:var(--border-radius-sm);width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.modal-close-btn:hover{background:var(--gray-200);color:var(--gray-900)}.modal-close-btn:active{transform:scale(.95)}.set-edit-form{padding:var(--spacing-lg)}.set-edit-form .form-field{margin-bottom:var(--spacing-md)}.set-edit-form .form-field:last-of-type{margin-bottom:var(--spacing-lg)}.disabled-input{background:var(--gray-100);color:var(--gray-600);cursor:not-allowed;border-color:var(--gray-200)}.modal-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;margin-top:var(--spacing-lg)}.set-number-link{color:var(--secondary-color);text-decoration:none;font-weight:600;border-bottom:1px solid transparent;transition:all var(--transition-fast);letter-spacing:-.01em}.set-number-link:hover{color:var(--secondary-hover);border-bottom-color:var(--secondary-hover);text-decoration:none}.set-number-link:focus{outline:2px solid var(--secondary-color);outline-offset:2px;border-radius:var(--border-radius-sm)}.set-number-link:active{opacity:.8}@media(max-width:640px){.modal-overlay{padding:.5rem}.modal-content{max-height:95vh}.set-edit-form{padding:1rem}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}.notification-container{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:1000;display:flex;flex-direction:column;gap:var(--spacing-sm);pointer-events:none}.notification-overlay{animation:slideDown var(--transition-slow);pointer-events:auto;cursor:pointer}.notification-message{padding:.875rem 1.5rem;border-radius:var(--border-radius);box-shadow:var(--shadow-lg);font-weight:600;display:flex;align-items:center;gap:var(--spacing-sm);color:#fff;min-width:200px;text-align:center;letter-spacing:-.01em;font-size:var(--font-size-base)}.notification-success .notification-message{background:var(--success-color)}.notification-error .notification-message{background:var(--primary-color)}.notification-warning .notification-message{background:var(--warning-color)}.notification-info .notification-message{background:var(--info-color)}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.overflow-menu{position:relative}.overflow-menu-button{background:transparent;border:none;font-size:var(--font-size-2xl);color:var(--gray-600);cursor:pointer;padding:.375rem .5rem;border-radius:var(--border-radius);transition:all var(--transition-fast);line-height:1;display:flex;align-items:center;justify-content:center;min-width:2.25rem;min-height:2.25rem}.overflow-menu-button:hover{background:var(--gray-200);color:var(--gray-900)}.overflow-menu-button:active{transform:scale(.95);background:var(--gray-300)}.overflow-menu-button[aria-expanded=true]{background:var(--gray-200);color:var(--gray-900)}.overflow-menu-dropdown{position:absolute;top:calc(100% + .5rem);right:0;background:#fff;border:1px solid var(--gray-200);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);min-width:200px;z-index:1001;overflow:hidden;animation:menuSlideIn var(--transition-fast)}@keyframes menuSlideIn{0%{opacity:0;transform:translateY(-8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.overflow-menu-item{display:flex;align-items:center;width:100%;padding:.875rem 1rem;background:transparent;border:none;text-align:left;cursor:pointer;font-size:var(--font-size-base);color:var(--gray-900);transition:background-color var(--transition-fast);font-weight:500;letter-spacing:-.01em}.overflow-menu-item:hover{background:var(--gray-100)}.overflow-menu-item:active{background:var(--gray-200)}.overflow-menu-item:first-child{border-radius:var(--border-radius-lg) var(--border-radius-lg) 0 0}.overflow-menu-item:last-child{border-radius:0 0 var(--border-radius-lg) var(--border-radius-lg)}.overflow-menu-item:only-child{border-radius:var(--border-radius-lg)}.overflow-menu-item+.overflow-menu-item{border-top:1px solid var(--gray-200)}.set-tags{display:inline-flex;gap:var(--spacing-xs);margin-left:var(--spacing-sm);align-items:center;vertical-align:middle}.set-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .5rem;border-radius:var(--border-radius-sm);font-size:var(--font-size-xs);font-weight:600;border:1.5px solid transparent;background:var(--gray-100);color:var(--gray-500);cursor:pointer;transition:all var(--transition-fast);letter-spacing:.01em;white-space:nowrap;line-height:1}.set-tag.inactive{opacity:0;pointer-events:none}.set-card:hover .set-tag.inactive,.set-header:hover .set-tag.inactive,.set-tags:hover .set-tag.inactive{opacity:1;pointer-events:auto}.set-tag:hover{background:var(--gray-200);color:var(--gray-600);transform:translateY(-1px)}.set-tag:active{transform:translateY(0)}.set-tag.active{opacity:1;pointer-events:auto}.set-tag.tag-built.active,.set-tag.tag-give-away.active,.set-tag.tag-given-away.active{background:var(--gray-100);color:var(--gray-600);border-color:var(--gray-600)}
