@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--color-bg:#f0f4f8;--color-surface:#fff;--color-surface-alt:#f7fafc;--color-border:#cbd5e0;--color-border-light:#e2e8f0;--color-toolbar:#1565c0;--color-toolbar-mid:#1976d2;--color-accent:#2196f3;--color-accent-light:#e3f2fd;--color-accent-dark:#1565c0;--color-text:#1a2333;--color-text-mid:#455a64;--color-text-muted:#78909c;--color-success:#43a047;--color-success-bg:#e8f5e9;--color-warning:#f57c00;--color-error:#e53935;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 3px #00000014, 0 1px 2px #0000000f;--shadow-md:0 4px 12px #0000001a, 0 2px 6px #0000000f;--shadow-lg:0 10px 30px #0000001f, 0 4px 12px #00000014;--shadow-accent:0 4px 20px #2196f32e;--font-ui:"Inter", system-ui, Avenir, Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;font-family:var(--font-ui);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--color-text);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:1.5}a{color:var(--color-accent);-webkit-text-decoration:inherit;text-decoration:inherit;font-weight:500}a:hover{color:var(--color-accent-dark)}body{background-color:var(--color-bg);background-image:linear-gradient(#2196f30a 1px,#0000 1px),linear-gradient(90deg,#2196f30a 1px,#0000 1px);background-size:24px 24px;min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{line-height:1.2}button{border-radius:var(--radius-sm);border:1px solid var(--color-border);background-color:var(--color-surface);color:var(--color-text);cursor:pointer;padding:.6em 1.2em;font-family:inherit;font-size:1em;font-weight:500;transition:all .2s}button:hover{border-color:var(--color-accent)}button:focus,button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.search-filters{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border-light);border-left:3px solid var(--color-accent);box-shadow:var(--shadow-sm);margin-bottom:24px;overflow:hidden}.filters-header{background:var(--color-surface-alt);border-bottom:1px solid var(--color-border-light);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 20px;display:flex}.filters-header h2{color:var(--color-text);text-transform:uppercase;letter-spacing:.8px;align-items:center;gap:10px;margin:0;font-size:.85rem;font-weight:700;display:flex}.filters-title-icon{background:var(--color-accent-light);border-radius:var(--radius-sm);justify-content:center;align-items:center;width:24px;height:24px;font-size:.8rem;display:flex}.filters-active-count{font-family:var(--font-mono);background:var(--color-accent-light);color:var(--color-accent);border:1px solid #2196f340;border-radius:20px;padding:2px 8px;font-size:.72rem;font-weight:600}.clear-btn{color:var(--color-error);border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.5px;background:0 0;border:1px solid #e5393566;padding:6px 14px;font-size:.8rem;font-weight:600;transition:all .2s}.clear-btn:hover{border-color:var(--color-error);background:#ffebee}.filters-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;padding:16px 20px;display:grid}.filter-group{flex-direction:column;gap:5px;display:flex}.filter-group label{color:var(--color-text-mid);text-transform:uppercase;letter-spacing:.6px;font-size:.72rem;font-weight:700}.filter-group select,.filter-group input{border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:.9rem;font-family:var(--font-ui);padding:8px 12px;transition:all .2s}.filter-group select:focus,.filter-group input:focus{border-color:var(--color-accent);outline:none;box-shadow:0 0 0 3px #2196f31f}.filter-group select option{background:var(--color-surface);color:var(--color-text)}.filter-group input::placeholder{color:var(--color-text-muted)}.range-group{grid-column:span 1}.range-group label{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.range-value{font-family:var(--font-mono);color:var(--color-accent);font-size:.85rem;font-weight:600}.dual-range{height:24px;margin-top:8px;position:relative}.dual-range input[type=range]{pointer-events:none;appearance:none;z-index:5;background:0 0;border:none;width:100%;height:6px;padding:0;position:absolute;top:50%;transform:translateY(-50%)}.dual-range input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--color-surface);cursor:pointer;pointer-events:auto;border:2.5px solid var(--color-accent);z-index:5;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:relative;box-shadow:0 1px 4px #2196f34d}.dual-range input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}.dual-range input[type=range]::-moz-range-thumb{background:var(--color-surface);cursor:pointer;pointer-events:auto;border:2.5px solid var(--color-accent);z-index:5;border-radius:50%;width:18px;height:18px;position:relative;box-shadow:0 1px 4px #2196f34d}.range-track{background:var(--color-border);pointer-events:none;z-index:1;border-radius:3px;width:100%;height:5px;position:absolute;top:50%;transform:translateY(-50%)}.range-fill{background:linear-gradient(90deg, var(--color-accent), #42a5f5);z-index:2;border-radius:3px;height:100%;position:absolute}.range-labels{font-size:.72rem;font-family:var(--font-mono);color:var(--color-text-muted);justify-content:space-between;margin-top:4px;display:flex}@media (width>=600px){.range-group{grid-column:span 2}}.collapsible-section{border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border-light);margin-bottom:10px;overflow:hidden}.collapsible-section:last-child{margin-bottom:0}.collapsible-header{cursor:pointer;background:var(--color-surface);border-bottom:1px solid var(--color-border-light);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;transition:background .2s;display:flex}.collapsible-header:hover{background:var(--color-accent-light)}.collapsible-title{align-items:center;gap:8px;display:flex}.collapsible-title .section-icon{font-size:.95rem}.collapsible-title h4{color:var(--color-text);text-transform:uppercase;letter-spacing:.6px;margin:0;font-size:.82rem;font-weight:700}.collapse-arrow{color:var(--color-text-muted);margin-left:4px;font-size:.7rem;transition:transform .3s}.collapse-arrow.open{transform:rotate(180deg)}.collapsible-content{background:var(--color-surface-alt);max-height:0;padding:0 14px;transition:max-height .3s ease-out,padding .3s;overflow:hidden}.collapsible-content.open{max-height:1000px;padding:0 14px 14px;transition:max-height .4s ease-in,padding .3s}.gallery-modal-backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:2000;background:#0a1428f5;justify-content:center;align-items:center;padding:0;display:flex;position:fixed;inset:0}.gallery-modal{width:100%;max-width:100vw;height:100%;max-height:100vh;box-shadow:none;background:#0d1b2a;border:none;border-radius:0;flex-direction:column;display:flex;overflow:hidden}.gallery-header{border-bottom:2px solid var(--color-accent);background:var(--color-toolbar);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.gallery-header h3{color:#fff;text-transform:uppercase;letter-spacing:.6px;margin:0;font-size:1rem;font-weight:700}.gallery-close-btn{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #ffffff40;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-size:1.1rem;transition:all .2s;display:flex}.gallery-close-btn:hover{background:#e5393580}.gallery-body{flex:1;justify-content:center;align-items:center;min-height:0;padding:20px 60px;display:flex;position:relative;overflow:hidden}.gallery-image-container{flex:1;justify-content:center;align-items:center;height:100%;min-height:0;display:flex;overflow:hidden}.gallery-image{object-fit:contain;border-radius:var(--radius-sm);-webkit-user-select:none;user-select:none;max-width:100%;max-height:100%}.gallery-nav{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #fff3;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;font-size:2rem;line-height:1;transition:all .2s;display:flex}.gallery-nav:hover{border-color:var(--color-accent);background:#2196f34d}.gallery-nav-prev{margin-right:12px}.gallery-nav-next{margin-left:12px}.gallery-footer{background:#0000004d;border-top:1px solid #ffffff1a;flex-direction:column;align-items:center;gap:10px;padding:14px 20px;display:flex}.gallery-counter{font-family:var(--font-mono);color:#fff9;font-size:.82rem;font-weight:500}.gallery-dots{gap:8px;display:flex}.gallery-dot{cursor:pointer;background:0 0;border:1px solid #ffffff4d;border-radius:50%;width:9px;height:9px;padding:0;transition:all .2s}.gallery-dot.active{background:var(--color-accent);border-color:var(--color-accent)}.gallery-dot:hover{background:#2196f380}@media (width<=600px){.gallery-nav{width:38px;height:38px;font-size:1.4rem}.gallery-body{padding:10px 8px}}.ebike-card{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border-light);border-top:3px solid var(--color-accent);box-shadow:var(--shadow-sm);cursor:pointer;flex-direction:column;transition:box-shadow .2s,transform .2s;display:flex;position:relative;overflow:visible}.ebike-card:hover{box-shadow:var(--shadow-accent);transform:translateY(-2px)}.ebike-card.selected{border-top-color:var(--color-success);box-shadow:0 0 0 2px #43a04733, var(--shadow-md)}.ebike-card.selected:hover{border-top-color:var(--color-success)}.compare-checkbox{border:1px solid var(--color-border);cursor:pointer;background:#f0f4f8f2;border-radius:20px;align-items:center;gap:5px;margin-left:auto;padding:4px 10px;transition:all .2s;display:flex}.compare-checkbox:hover{background:var(--color-accent-light);border-color:var(--color-accent)}.compare-checkbox input[type=checkbox]{width:14px;height:14px;accent-color:var(--color-success);cursor:pointer}.compare-checkbox .checkbox-label{color:var(--color-text-mid);text-transform:uppercase;letter-spacing:.4px;font-size:.72rem;font-weight:600}.compare-checkbox .checkbox-label.disabled{color:var(--color-text-muted)}.card-header{background:var(--color-surface-alt);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;padding:9px 14px;display:flex}.bike-type{border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.8px;background:var(--color-accent-light);color:var(--color-accent-dark);border:1px solid #2196f333;padding:3px 10px;font-size:.7rem;font-weight:700}.frame-material{border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.5px;padding:3px 10px;font-size:.7rem;font-weight:700}.frame-material--carbon{color:#546e7a;background:#eceff1;border:1px solid #b0bec5}.frame-material--aluminum{background:var(--color-accent-light);color:var(--color-accent-dark);border:1px solid #2196f34d}.frame-material--other{background:var(--color-surface-alt);color:var(--color-text-muted);border:1px solid var(--color-border)}.product-url-btn{background:var(--color-surface-alt);border:1px solid var(--color-border);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:.85rem;text-decoration:none;transition:all .2s;display:flex}.product-url-btn:hover{background:var(--color-accent-light);border-color:var(--color-accent);transform:scale(1.1)}.product-url-link{color:var(--color-accent);opacity:.8;align-items:center;gap:5px;margin-top:8px;font-size:.78rem;font-weight:500;text-decoration:none;transition:opacity .2s;display:inline-flex}.product-url-link:hover{opacity:1;text-decoration:underline}.card-body{flex:1;padding:16px 18px}.brand{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:1.2px;margin:0 0 2px;font-size:.72rem;font-weight:700}.model-row{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.model-info{flex-wrap:wrap;flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.model{color:var(--color-text);margin:0;font-size:1.3rem;font-weight:700;line-height:1.2}.bike-year{font-family:var(--font-mono);color:var(--color-accent-dark);background:var(--color-accent-light);border:1px solid #2196f340;border-radius:12px;padding:2px 9px;font-size:.82rem;font-weight:600}.trim-selector{background:var(--color-bg);border-radius:var(--radius-md);border:1px solid var(--color-border-light);margin-bottom:12px;padding:3px}.trim-select{border-radius:calc(var(--radius-md) - 2px);background:var(--color-accent);color:#fff;width:100%;font-size:.78rem;font-weight:600;font-family:var(--font-mono);cursor:pointer;appearance:auto;border:none;outline:none;padding:5px 10px}.trim-select option{background:var(--color-surface);color:var(--color-text)}.bike-thumbnail{border-radius:var(--radius-md);cursor:pointer;border:2px solid var(--color-border);background:var(--color-surface-alt);flex-shrink:0;width:68px;height:68px;transition:all .2s;position:relative;overflow:hidden}.bike-thumbnail:hover{border-color:var(--color-accent);transform:scale(1.05);box-shadow:0 4px 12px #2196f333}.bike-thumbnail img{object-fit:cover;width:100%;height:100%}.thumbnail-badge{color:#fff;font-size:.58rem;font-weight:600;font-family:var(--font-mono);background:#1565c0d9;border-radius:5px;padding:1px 4px;position:absolute;bottom:2px;right:2px}.specs-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;display:grid}.spec{background:var(--color-surface-alt);border-radius:var(--radius-sm);border:1px solid var(--color-border-light);align-items:flex-start;gap:8px;padding:8px 10px;display:flex}.spec-icon{min-width:20px;margin-top:1px;font-size:1rem;line-height:1}.spec-content{flex-direction:column;gap:1px;min-width:0;display:flex}.spec-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:.68rem;font-weight:600}.spec-value{font-family:var(--font-mono);color:var(--color-accent-dark);white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;font-weight:500;overflow:hidden}.weight-description{color:var(--color-text-muted);white-space:normal;margin-top:1px;font-size:.68rem;font-style:italic;line-height:1.3}.suspension-info{background:var(--color-surface-alt);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);flex-direction:column;gap:4px;padding:8px 12px;display:flex}.shock-item{gap:8px;font-size:.78rem;display:flex}.shock-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.4px;min-width:38px;font-size:.7rem;font-weight:700}.shock-value{font-family:var(--font-mono);color:var(--color-text-mid);font-size:.78rem}.card-footer{border-top:1px solid var(--color-border-light);background:var(--color-surface-alt);padding:12px 18px}.details-btn{border:1px solid var(--color-accent);width:100%;color:var(--color-accent);border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.4px;background:0 0;padding:8px;font-size:.82rem;font-weight:600;transition:all .2s}.details-btn:hover{background:var(--color-accent-light);border-color:var(--color-accent)}.details-panel{opacity:0;background:var(--color-surface-alt);border-top:1px solid var(--color-border-light);border-radius:0 0 var(--radius-lg) var(--radius-lg);max-height:0;transition:max-height .4s ease-out,opacity .3s;overflow:hidden}.details-panel.open{opacity:1;max-height:none;transition:opacity .3s;overflow:visible}.details-content{padding:16px}.size-selector-wrapper{align-items:center;gap:8px;display:flex}.size-selector-wrapper label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.4px;font-size:.78rem;font-weight:600}.size-selector{background:var(--color-accent-light);border-radius:var(--radius-sm);color:var(--color-accent-dark);font-size:.82rem;font-family:var(--font-mono);cursor:pointer;border:1px solid #2196f366;min-width:65px;padding:4px 10px;font-weight:600}.size-selector:focus{border-color:var(--color-accent);outline:none}.size-selector option{background:var(--color-surface);color:var(--color-text)}.details-grid{background:var(--color-border-light);border-radius:var(--radius-md);border:1px solid var(--color-border-light);grid-template-columns:repeat(2,1fr);gap:1px;display:grid;overflow:hidden}.detail-item{background:var(--color-surface);flex-direction:column;gap:2px;padding:9px 12px;display:flex}.detail-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:.68rem;font-weight:600}.detail-value{font-family:var(--font-mono);color:var(--color-text);font-size:.82rem;font-weight:500}.battery-options{flex-wrap:wrap;gap:8px;display:flex}.battery-option{font-family:var(--font-mono);background:var(--color-accent-light);color:var(--color-accent-dark);border:1px solid #2196f34d;border-radius:20px;padding:5px 14px;font-size:.82rem;font-weight:600}.ebike-card.expanded{box-shadow:var(--shadow-lg);border-top-color:var(--color-accent-dark);transform:none}.ebike-card.expanded:hover{transform:none}@media (width<=500px){.details-grid{grid-template-columns:1fr}}.ebike-list{margin-top:20px}.list-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.list-header h2{color:var(--color-text);text-transform:uppercase;letter-spacing:.8px;align-items:center;gap:10px;margin:0;font-size:.9rem;font-weight:700;display:flex}.list-count{font-family:var(--font-mono);background:var(--color-accent-light);color:var(--color-accent-dark);border:1px solid #2196f333;border-radius:20px;padding:3px 10px;font-size:.8rem;font-weight:600}.compare-button{color:#fff;cursor:pointer;letter-spacing:.3px;background:linear-gradient(135deg,#43a047,#388e3c);border:none;border-radius:20px;align-items:center;gap:7px;padding:10px 22px;font-size:.9rem;font-weight:600;transition:all .2s;display:flex;box-shadow:0 3px 10px #43a0474d}.compare-button:hover{transform:translateY(-2px);box-shadow:0 5px 16px #43a04766}.compare-hint{background:var(--color-accent-light);border:1px solid #2196f340;border-left:3px solid var(--color-accent);color:var(--color-accent-dark);border-radius:var(--radius-sm);font-size:.85rem;font-family:var(--font-mono);margin-bottom:16px;padding:9px 16px}.ebike-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:22px;display:grid}.ebike-list-status{background:var(--color-surface);border-radius:var(--radius-lg);border:1px dashed var(--color-border);flex-direction:column;justify-content:center;align-items:center;margin-top:20px;padding:60px 20px;display:flex}.ebike-list-status p{color:var(--color-text-mid);margin:8px 0;font-size:1.05rem}.ebike-list-status .hint{color:var(--color-text-muted);font-size:.88rem;font-family:var(--font-mono)}.ebike-list-status.error{background:#fff5f5;border-color:#e539354d}.ebike-list-status.error p{color:var(--color-error)}.error-icon,.empty-icon{margin-bottom:16px;font-size:3rem}.loading-spinner{border:4px solid #2196f326;border-top-color:var(--color-accent);border-radius:50%;width:48px;height:48px;margin-bottom:16px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=768px){.ebike-grid{grid-template-columns:1fr}}.compare-modal-backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1000;background:#1565c01f;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.compare-modal{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:1200px;max-height:90vh;box-shadow:var(--shadow-lg), 0 0 0 1px #2196f31a;border:1px solid var(--color-border-light);flex-direction:column;display:flex;overflow:hidden}.modal-header{background:var(--color-toolbar);border-bottom:3px solid var(--color-accent);justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.modal-header h2{color:#fff;text-transform:uppercase;letter-spacing:.8px;align-items:center;gap:10px;margin:0;font-size:1rem;font-weight:700;display:flex}.close-btn{color:#fff;cursor:pointer;background:#ffffff1f;border:1px solid #ffffff40;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;transition:all .2s;display:flex}.close-btn:hover{background:#e5393580;border-color:#e53935b3}.modal-content{flex:1;overflow:auto}.compare-table-wrapper{min-width:fit-content}.compare-table{border-collapse:collapse;width:100%;min-width:600px}.compare-table th,.compare-table td{text-align:left;border-bottom:1px solid var(--color-border-light);padding:10px 16px;font-size:.88rem}.compare-table th{background:var(--color-surface-alt);z-index:10;border-bottom:2px solid var(--color-border);font-weight:700;position:sticky;top:0;box-shadow:0 2px 4px #0000000d}.param-header{width:200px;min-width:180px;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.6px;font-size:.72rem}.bike-header{min-width:220px}.bike-title{flex-direction:column;gap:2px;display:flex}.bike-brand{text-transform:uppercase;letter-spacing:.8px;color:var(--color-text-muted);font-size:.72rem;font-weight:700}.bike-model{color:var(--color-text);font-size:1.05rem;font-weight:700}.bike-year{font-family:var(--font-mono);color:var(--color-accent);font-size:.8rem;font-weight:600}.compare-table tbody tr:hover{background:#f0f7ff}.compare-table tbody td:first-child{color:var(--color-text-mid);text-transform:uppercase;letter-spacing:.4px;font-size:.8rem;font-weight:600}.compare-table tbody td:not(:first-child){font-family:var(--font-mono);color:var(--color-text);font-size:.85rem}.compare-table td.highlight{color:var(--color-accent-dark)!important;font-weight:700!important}.section-header td{background:var(--color-accent-light)!important;color:var(--color-accent-dark)!important;text-transform:uppercase!important;letter-spacing:.8px!important;font-size:.75rem!important;font-weight:700!important;font-family:var(--font-ui)!important;border-top:2px solid #2196f326!important;border-bottom:1px solid #2196f333!important;padding:8px 16px!important}.geometry-section td{vertical-align:middle}.size-selector-inline{background:var(--color-accent-light);border-radius:var(--radius-sm);color:var(--color-accent-dark);font-size:.82rem;font-family:var(--font-mono);cursor:pointer;border:1px solid #2196f366;min-width:60px;padding:4px 8px;font-weight:600}.size-selector-inline:focus{border-color:var(--color-accent);outline:none}.size-selector-inline option{background:var(--color-surface);color:var(--color-text)}.compare-table tbody tr:nth-child(2n):not(.section-header){background:var(--color-surface-alt)}.modal-content::-webkit-scrollbar{width:8px;height:8px}.modal-content::-webkit-scrollbar-track{background:var(--color-surface-alt)}.modal-content::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.modal-content::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}.mullet-badge{color:#f57c00;background:#fff8e1;border:1px solid #ffe082;border-radius:10px;padding:2px 8px;font-size:.72rem;font-weight:600}@media (width<=768px){.compare-modal{max-height:95vh}.compare-table th,.compare-table td{padding:9px 12px;font-size:.82rem}.param-header{width:140px;min-width:140px}}.language-switcher{position:relative}.language-switcher select{appearance:none;border-radius:var(--radius-sm);color:#fff;font-size:.85rem;font-family:var(--font-ui);cursor:pointer;background-color:#ffffff1f;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath fill='white' d='M5 7L1 3h8z'/%3E%3C/svg%3E");background-position:right 9px center;background-repeat:no-repeat;border:1px solid #ffffff40;padding:7px 30px 7px 12px;transition:all .2s}.language-switcher select:hover{background-color:#fff3;border-color:#fff6}.language-switcher select:focus{border-color:#fff9;outline:none;box-shadow:0 0 0 2px #ffffff26}.language-switcher select option{background-color:var(--color-toolbar);color:#fff;padding:8px}.upload-page{background:var(--color-bg);flex-direction:column;min-height:100vh;display:flex}.upload-loading,.upload-disabled-notice{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;padding:60px 20px;display:flex}.disabled-icon{font-size:3.5rem}.upload-disabled-notice h2{color:var(--color-text);margin:0;font-size:1.3rem;font-weight:700}.upload-disabled-notice p{color:var(--color-text-mid);margin:0;font-size:.95rem}.upload-disabled-notice code{background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--color-accent-dark);padding:2px 8px;font-size:.88rem}.back-link{color:var(--color-accent);border-radius:var(--radius-md);border:1px solid #2196f366;margin-top:8px;padding:8px 18px;font-size:.9rem;font-weight:600;text-decoration:none;transition:all .2s;display:inline-block}.back-link:hover{background:var(--color-accent-light);text-decoration:none}.upload-header{background:linear-gradient(135deg, var(--color-toolbar) 0%, var(--color-toolbar-mid) 100%);border-bottom:3px solid var(--color-accent);z-index:100;align-items:center;height:64px;padding:0 28px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #1565c04d}.upload-header-left{align-items:center;gap:20px;display:flex}.upload-back-btn{color:#ffffffd9;border-radius:var(--radius-sm);white-space:nowrap;background:#ffffff1a;border:1px solid #fff3;flex-shrink:0;padding:6px 14px;font-size:.85rem;font-weight:600;text-decoration:none;transition:background .2s}.upload-back-btn:hover{color:#fff;background:#fff3}.upload-header-divider{background:#fff3;width:1px;height:32px}.upload-title{color:#fff;letter-spacing:.3px;margin:0;font-size:1.1rem;font-weight:700;line-height:1.2}.upload-subtitle{color:#fff9;font-size:.75rem;font-family:var(--font-mono);letter-spacing:.4px;margin:0}.upload-main{flex:1;width:100%;max-width:900px;margin:0 auto;padding:28px 24px}.upload-form{flex-direction:column;gap:24px;display:flex}.upload-section{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border-light);border-left:3px solid var(--color-accent);box-shadow:var(--shadow-sm);overflow:hidden}.upload-section-title{color:var(--color-text);text-transform:uppercase;letter-spacing:.8px;background:var(--color-surface-alt);border-bottom:1px solid var(--color-border-light);align-items:center;gap:10px;margin:0;padding:12px 20px;font-size:.85rem;font-weight:700;display:flex}.section-num{font-family:var(--font-mono);background:var(--color-accent-light);color:var(--color-accent-dark);border-radius:var(--radius-sm);border:1px solid #2196f340;flex-shrink:0;padding:2px 7px;font-size:.72rem;font-weight:700}.section-hint{color:var(--color-text-muted);text-transform:none;letter-spacing:0;font-size:.72rem;font-weight:400;font-family:var(--font-mono);margin-left:auto}.bike-selector-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;padding:16px 20px;display:grid}.selector-group{flex-direction:column;gap:5px;display:flex}.selector-label{color:var(--color-text-mid);text-transform:uppercase;letter-spacing:.6px;font-size:.72rem;font-weight:700}.selector-select{border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:.9rem;font-family:var(--font-ui);padding:8px 12px;transition:all .2s}.selector-select:focus{border-color:var(--color-accent);outline:none;box-shadow:0 0 0 3px #2196f31f}.selector-select:disabled{background:var(--color-surface-alt);color:var(--color-text-muted);cursor:not-allowed}.selected-bike-info{background:var(--color-accent-light);border-top:1px solid #2196f333;align-items:center;gap:10px;padding:10px 20px;font-size:.85rem;display:flex}.selected-bike-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:.72rem;font-weight:700}.selected-bike-value{font-family:var(--font-mono);color:var(--color-accent-dark);font-weight:600}.url-fields{flex-direction:column;display:flex}.url-field{border-bottom:1px solid var(--color-border-light);align-items:center;gap:14px;padding:9px 20px;transition:background .15s;display:flex}.url-field:last-child{border-bottom:none}.url-field:hover{background:var(--color-surface-alt)}.thumbnail-field{background:var(--color-accent-light);border-bottom:2px solid #2196f333!important}.thumbnail-field:hover{background:#d8eeff}.url-field-label{flex-shrink:0;align-items:center;gap:10px;min-width:220px;display:flex}.url-index{font-family:var(--font-mono);text-align:center;background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-sm);width:36px;color:var(--color-text-mid);flex-shrink:0;padding:3px 0;font-size:.75rem;font-weight:700}.thumb-tag{background:var(--color-accent);color:#fff;border-color:var(--color-accent);letter-spacing:.5px;width:auto;padding:3px 8px;font-size:.68rem}.url-desc{color:var(--color-text-muted);font-size:.75rem;font-family:var(--font-mono)}.url-input{border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-size:.85rem;font-family:var(--font-mono);flex:1;padding:7px 12px;transition:all .2s}.url-input:focus{border-color:var(--color-accent);outline:none;box-shadow:0 0 0 3px #2196f31f}.url-input::placeholder{color:var(--color-text-muted);font-size:.8rem}.slot-mode-toggle{flex-shrink:0;gap:0;display:flex}.mode-btn{background:var(--color-surface-alt);border:1px solid var(--color-border);color:var(--color-text-muted);font-size:.72rem;font-weight:600;font-family:var(--font-ui);cursor:pointer;letter-spacing:.3px;border-radius:0;padding:5px 10px;transition:all .15s}.mode-btn:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.mode-btn:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left:none}.mode-btn.active{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.mode-btn:not(.active):hover{background:var(--color-accent-light);border-color:var(--color-accent);color:var(--color-accent-dark)}.file-input-wrap{flex:1;align-items:center;gap:8px;display:flex}.file-choose-btn{text-align:left;border-radius:var(--radius-sm);border:1px dashed var(--color-border);background:var(--color-surface);color:var(--color-text-mid);font-size:.85rem;font-family:var(--font-mono);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;flex:1;padding:7px 12px;transition:all .2s;overflow:hidden}.file-choose-btn:hover{border-color:var(--color-accent);background:var(--color-accent-light);border-style:solid}.file-clear-btn{border:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;width:28px;height:28px;padding:0;font-size:.75rem;transition:all .15s}.file-clear-btn:hover{border-color:var(--color-error);color:var(--color-error);background:#ffebee}.upload-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.upload-submit-btn{background:linear-gradient(135deg, var(--color-toolbar), var(--color-toolbar-mid));color:#fff;border-radius:var(--radius-md);cursor:pointer;letter-spacing:.3px;border:none;padding:12px 28px;font-size:.95rem;font-weight:700;transition:all .2s;box-shadow:0 3px 10px #1565c04d}.upload-submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 16px #1565c066}.upload-submit-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.upload-reset-btn{color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;background:0 0;padding:12px 20px;font-size:.9rem;font-weight:600;transition:all .2s}.upload-reset-btn:hover{border-color:var(--color-error);color:var(--color-error);background:#ffebee}.upload-error{border:1px solid #e539354d;border-left:3px solid var(--color-error);border-radius:var(--radius-sm);color:var(--color-error);background:#fff5f5;padding:12px 16px;font-size:.9rem;font-weight:500}.upload-result{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border-light);box-shadow:var(--shadow-sm);overflow:hidden}.upload-result.success{border-left:3px solid var(--color-success)}.upload-result.partial{border-left:3px solid var(--color-warning)}.result-title{background:var(--color-surface-alt);border-bottom:1px solid var(--color-border-light);text-transform:uppercase;letter-spacing:.7px;color:var(--color-text);margin:0;padding:12px 20px;font-size:.85rem;font-weight:700}.result-group{border-bottom:1px solid var(--color-border-light);flex-direction:column;gap:8px;padding:12px 20px;display:flex}.result-group:last-child{border-bottom:none}.result-label{text-transform:uppercase;letter-spacing:.5px;font-size:.72rem;font-weight:700}.success-label{color:var(--color-success)}.error-label{color:var(--color-error)}.result-chips{flex-wrap:wrap;gap:6px;display:flex}.result-chip{font-family:var(--font-mono);border-radius:12px;padding:3px 10px;font-size:.78rem;font-weight:600}.success-chip{background:var(--color-success-bg);color:var(--color-success);border:1px solid #43a0474d}.error-chip{color:var(--color-error);cursor:help;background:#fff5f5;border:1px solid #e539354d}.result-errors{flex-direction:column;gap:4px;margin-top:4px;display:flex}.result-error-row{color:var(--color-text-mid);font-size:.8rem;font-family:var(--font-mono);background:var(--color-surface-alt);border-radius:var(--radius-sm);padding:4px 10px}.result-error-row code{color:var(--color-error);font-weight:700}.upload-progress{background:var(--color-surface);border:1px solid var(--color-border-light);border-left:3px solid var(--color-accent);border-radius:var(--radius-sm);flex-direction:column;gap:8px;padding:12px 16px;display:flex}.progress-bar-wrap{background:var(--color-border-light);border-radius:4px;width:100%;height:8px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg, var(--color-accent), #42a5f5);border-radius:4px;height:100%;transition:width .3s}.progress-label{font-family:var(--font-mono);color:var(--color-text-mid);font-size:.78rem}.upload-s3-warning{border:1px solid #ffe082;border-left:3px solid var(--color-warning);border-radius:var(--radius-sm);color:#e65100;font-size:.85rem;font-weight:500;font-family:var(--font-mono);background:#fff8e1;padding:10px 16px}@media (width<=640px){.url-field{flex-direction:column;align-items:flex-start;gap:6px}.url-field-label{min-width:unset}.upload-header{height:auto;padding:12px 16px}.upload-header-divider{display:none}.bike-selector-grid{grid-template-columns:1fr}}*{box-sizing:border-box}.app{background:var(--color-bg);flex-direction:column;min-height:100vh;display:flex}.app-header{background:linear-gradient(135deg, var(--color-toolbar) 0%, var(--color-toolbar-mid) 100%);border-bottom:3px solid var(--color-accent);z-index:100;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;height:64px;padding:0 28px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #1565c04d}.header-content{align-items:center;gap:14px;display:flex}.header-logo-mark{border-radius:var(--radius-sm);background:#ffffff26;border:1px solid #ffffff4d;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.1rem;display:flex}.header-text h1{color:#fff;letter-spacing:.3px;margin:0;font-size:1.15rem;font-weight:700;line-height:1.2}.header-text p{color:#fff9;font-size:.75rem;font-family:var(--font-mono);letter-spacing:.5px;margin:0}.header-divider{background:#fff3;flex-shrink:0;width:1px;height:32px}.header-meta{color:#fff9;font-size:.78rem;font-family:var(--font-mono);align-items:center;gap:6px;display:flex}.header-status-dot{background:#69f0ae;border-radius:50%;flex-shrink:0;width:7px;height:7px;box-shadow:0 0 6px #69f0ae}.app-main{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:28px 24px}.app-footer{text-align:center;border-top:1px solid var(--color-border-light);background:var(--color-surface);padding:16px 24px}.app-footer p{color:var(--color-text-muted);font-size:.78rem;font-family:var(--font-mono);margin:0}@media (width<=768px){.app-header{height:auto;padding:12px 16px}.header-divider,.header-meta{display:none}.header-text h1{font-size:1rem}.app-main{padding:20px 16px}}
