:root{--bg-base: #0a0a14;--bg-surface: #12121e;--bg-elevated: #1a1a2e;--bg-card: #16162a;--bg-input: #0e0e1a;--border: #2a2a44;--border-focus: #5865f2;--text-primary: #e4e4ef;--text-secondary: #8888a8;--text-muted: #5c5c78;--accent: #5865f2;--accent-hover: #6d78f7;--accent-glow: rgba(88, 101, 242, .25);--success: #43b581;--warning: #faa61a;--danger: #f04747;--radius: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow: 0 4px 24px rgba(0, 0, 0, .4);--shadow-glow: 0 0 30px var(--accent-glow);--font: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--transition: .2s cubic-bezier(.4, 0, .2, 1);--nav-h: 56px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;max-width:100vw;font-family:var(--font);font-size:14px;color:var(--text-primary);background:var(--bg-base);overflow:hidden;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}#app{display:flex;flex-direction:column;height:100vh;height:100dvh;max-width:100vw;overflow-x:hidden}#nav{display:flex;align-items:center;height:var(--nav-h);padding:0 16px;background:var(--bg-surface);border-bottom:1px solid var(--border);gap:16px;z-index:100;flex-shrink:0;max-width:100vw;overflow-x:hidden}.nav-brand{display:flex;align-items:center;gap:10px;color:var(--text-primary);flex-shrink:0}.nav-logo{color:var(--accent)}.nav-title{font-size:16px;font-weight:700;letter-spacing:-.3px}.nav-tabs{display:flex;gap:4px;flex:1;justify-content:center;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}.nav-tab{padding:8px 18px;border:none;background:transparent;color:var(--text-secondary);font-family:var(--font);font-size:13px;font-weight:500;border-radius:var(--radius);cursor:pointer;transition:all var(--transition);white-space:nowrap}.nav-tabs::-webkit-scrollbar{display:none}.nav-tab:hover{color:var(--text-primary);background:var(--bg-elevated)}.nav-tab.active{color:var(--text-primary);background:var(--accent)}.nav-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.nav-link{display:flex;align-items:center;justify-content:center;width:36px;height:36px;color:var(--text-secondary);border-radius:var(--radius);transition:all var(--transition)}.nav-link:hover{color:var(--text-primary);background:var(--bg-elevated)}#main{flex:1;overflow:hidden;display:flex;flex-direction:column;position:relative;min-height:0;max-width:100vw}.tab-content{display:none;flex-direction:column;flex:1;min-height:0;overflow:hidden;max-width:100%}.tab-content.active{display:flex}.panel-layout{display:flex;width:100%;flex:1;min-height:0}.control-panel{width:320px;flex-shrink:0;padding:20px;background:var(--bg-surface);border-right:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column;gap:16px}.control-panel>*{flex-shrink:0}.viewer-panel{flex:1;position:relative;background:var(--bg-base);overflow:hidden}.viewer-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted);gap:16px}.placeholder-icon{opacity:.3}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.form-select,.form-input{padding:10px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font);font-size:13px;outline:none;transition:border-color var(--transition);width:100%}.form-select:focus,.form-input:focus{border-color:var(--accent)}.form-select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238888a8' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.form-select option{background:var(--bg-input);color:var(--text-primary)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;border:none;border-radius:var(--radius);font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer;transition:all var(--transition);white-space:nowrap}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 2px 12px var(--accent-glow)}.btn-primary:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:var(--shadow-glow)}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--accent)}.btn-full{width:100%}.btn-sm{padding:8px 14px;font-size:12px}.divider{height:1px;background:var(--border);margin:4px 0}.info-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:14px;font-size:12px;line-height:1.8}.info-panel .info-row{display:flex;justify-content:space-between}.info-panel .info-label{color:var(--text-secondary)}.info-panel .info-value{color:var(--text-primary);font-family:var(--font-mono);font-size:11px}.upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;border:2px dashed var(--border);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition);text-align:center;min-height:200px}.upload-zone:hover,.upload-zone.dragover{border-color:var(--accent);background:#5865f20d}.upload-zone.dragover .upload-icon{color:var(--accent);transform:translateY(-4px)}.upload-icon{color:var(--text-muted);transition:all var(--transition)}.upload-text{color:var(--text-primary);margin-top:12px}.upload-text code{color:var(--accent);font-family:var(--font-mono);font-size:13px}.upload-subtext{color:var(--text-muted);font-size:12px;margin-top:4px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-content:start;gap:16px;padding:20px;overflow-y:auto;flex:1 1 0;min-height:0}.gallery-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:all var(--transition);min-height:240px}.gallery-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}.gallery-preview{width:100%;height:180px;background:var(--bg-base);position:relative;overflow:hidden}.gallery-preview canvas{width:100%!important;height:100%!important;display:block;object-fit:contain}.gallery-meta{padding:14px;display:flex;flex-direction:column;gap:4px}.gallery-title{font-size:14px;font-weight:600;color:var(--text-primary);text-transform:capitalize}.gallery-desc{font-size:12px;color:var(--text-secondary)}.gallery-tags{display:flex;gap:6px;margin-top:4px}.tag{font-size:10px;font-weight:600;padding:3px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.3px}.tag-type{background:#5865f226;color:var(--accent)}.tag-style{background:#43b58126;color:var(--success)}.viewer-overlay{position:fixed;inset:0;z-index:200;background:var(--bg-base);display:none;flex-direction:column}.viewer-overlay:not([hidden]){display:flex}.viewer-toolbar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#12121ee6;backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:10}.viewer-info{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;color:var(--text-secondary)}.viewer-toolbar>.close-btn{flex-shrink:0}.viewer-info b{color:var(--text-primary);font-weight:600}.viewer-info .accent{color:var(--accent)}.viewer-tools{flex:1;display:flex;gap:4px;justify-content:flex-end;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.viewer-tools::-webkit-scrollbar{display:none}.tool-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:transparent;color:var(--text-secondary);border-radius:var(--radius);cursor:pointer;transition:all var(--transition)}.tool-btn:hover{color:var(--text-primary);background:var(--bg-elevated)}.tool-btn.active{color:var(--accent);background:#5865f21a}.close-btn:hover{color:var(--danger);background:#f047471a}.tool-btn-labeled{width:auto;gap:5px;padding:0 10px}.tool-label{font-size:11px;font-weight:600;font-family:var(--font-mono);letter-spacing:.3px}.download-dropdown{position:relative}.download-chevron{margin-left:2px;transition:transform var(--transition)}.download-dropdown.open .download-chevron{transform:rotate(180deg)}.download-menu{position:absolute;top:100%;right:0;margin-top:4px;min-width:210px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px #0006;z-index:20;padding:4px;display:flex;flex-direction:column}.download-menu[hidden]{display:none}.download-menu-up{top:auto;bottom:100%;margin-top:0;margin-bottom:4px}.download-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border:none;background:transparent;color:var(--text-primary);font-family:var(--font-mono);font-size:12px;font-weight:500;cursor:pointer;border-radius:4px;transition:background var(--transition);text-align:left;white-space:nowrap}.download-item:hover{background:var(--bg-card)}.download-option{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 10px;border-top:1px solid var(--border);color:var(--text-secondary);font-size:.72rem;white-space:nowrap}.download-option select{min-width:92px;padding:3px 5px;border:1px solid var(--border);border-radius:4px;background:var(--bg-primary);color:var(--text-primary)}.live-delivery-backdrop{position:fixed;inset:0;z-index:10020;display:grid;place-items:center;padding:18px;background:#06060fc7;backdrop-filter:blur(5px)}.live-delivery-card{width:min(560px,100%);max-height:calc(100vh - 36px);overflow:auto;padding:22px;border:1px solid var(--border);border-radius:12px;background:var(--bg-secondary);box-shadow:0 24px 80px #00000080}.live-delivery-card h2{margin:0 0 14px;font-size:1.25rem}.live-delivery-steps{margin:0;padding-left:22px}.live-delivery-steps li{margin:10px 0;line-height:1.45}.live-delivery-command{display:flex;align-items:center;gap:8px;margin-top:7px}.live-delivery-command code{min-width:0;flex:1;overflow-wrap:anywhere;user-select:all;padding:9px;border-radius:5px;background:var(--bg-primary);color:var(--accent-light, #c4b5fd)}.live-delivery-warnings{margin-top:12px;padding:9px 11px;border:1px solid rgba(251,191,36,.45);border-radius:6px;background:#fbbf2414;color:#fde68a;font-size:.78rem}.live-delivery-warnings ul{margin:5px 0 0;padding-left:18px}.live-delivery-meter{height:7px;margin-top:18px;overflow:hidden;border-radius:999px;background:var(--bg-primary)}.live-delivery-meter span{display:block;width:0;height:100%;border-radius:inherit;background:var(--accent);transition:width .16s ease}.live-delivery-status{min-height:2.8em;margin:10px 0;font-size:.88rem}.live-delivery-status.success{color:var(--success)}.live-delivery-status.error{color:var(--danger)}.live-delivery-actions{display:flex;justify-content:flex-end;gap:8px}.live-delivery-actions [hidden]{display:none}.download-desc{font-family:var(--font);font-weight:400;color:var(--text-secondary);font-size:11px}.viewer-canvas{flex:1;position:relative;overflow:hidden}.viewer-canvas canvas{display:block}.cutaway-panel{position:fixed;right:20px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:11}.cutaway-slider{writing-mode:vertical-lr;direction:rtl;width:28px;height:200px;accent-color:var(--accent)}.cutaway-label{color:var(--text-muted);font-size:11px;font-family:var(--font-mono)}.viewer-hint{position:fixed;bottom:12px;left:50%;transform:translate(-50%);color:var(--text-muted);font-size:11px;background:#0009;padding:6px 14px;border-radius:var(--radius);backdrop-filter:blur(8px);pointer-events:none;z-index:11}.loading-overlay{position:fixed;inset:0;z-index:300;display:none;flex-direction:column;align-items:center;justify-content:center;background:#0a0a14d9;backdrop-filter:blur(8px);gap:16px;color:var(--text-secondary)}.loading-overlay:not([hidden]){display:flex}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.nav-install-btn{padding:5px 12px;font-size:11px;font-weight:600;border-radius:6px;animation:fadeIn .3s ease both}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:focus-visible,.tool-btn:focus-visible,.nav-tab:focus-visible,.style-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 4px var(--accent-glow)}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media(max-width:768px){#nav{padding:0 10px;gap:10px}.nav-tabs{gap:2px;justify-content:flex-start;min-width:0;flex-wrap:nowrap;overflow-x:auto}.nav-tab{padding:5px 8px;font-size:10.5px;flex-shrink:0}.nav-title{display:none}.panel-layout{flex-direction:column}.control-panel{width:100%;border-right:none;border-bottom:1px solid var(--border);max-height:40vh;overflow-y:auto;flex-shrink:1}.panel-layout[data-has-model] .control-panel{max-height:35vh}.lego-results{max-height:none}.viewer-panel{flex:1;min-height:55vh}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));padding:12px;gap:12px}.viewer-toolbar{padding:6px 10px}.viewer-tools{gap:2px}.tool-btn{width:32px;height:32px}.cutaway-panel{right:10px}.cutaway-slider{height:140px}.inline-cutaway-slider{width:70px}}@media(max-width:480px){#nav{padding:0 8px;gap:8px}.nav-version{display:none}.nav-actions{gap:4px}.gallery-grid{grid-template-columns:1fr}}.inline-viewer{position:relative;overflow:hidden}.inline-viewer canvas{width:100%!important;height:100%!important;display:block}.inline-viewer-controls{position:absolute;bottom:12px;right:12px;display:flex;align-items:center;gap:6px;z-index:5}.inline-cutaway-group{display:flex;align-items:center;gap:6px;background:#0a0a1499;backdrop-filter:blur(8px);padding:4px 10px;border-radius:var(--radius)}.inline-cutaway-slider{width:100px;height:4px;accent-color:var(--accent);cursor:pointer}.inline-cutaway-label{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);min-width:28px;text-align:right}.viewer-fallback{padding:1em;color:var(--text-muted);text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.section-title{font-size:14px;font-weight:600;color:var(--text-primary);padding-bottom:8px;border-bottom:1px solid var(--border)}.gen-options-header{display:flex;align-items:center;justify-content:space-between}.gen-collapse-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:var(--text-secondary);border-radius:var(--radius);cursor:pointer;transition:all var(--transition)}.gen-collapse-btn:hover{color:var(--text-primary);background:var(--bg-elevated)}.gen-collapse-btn svg{transition:transform var(--transition)}.gen-collapse-btn.collapsed svg{transform:rotate(-90deg)}.gen-options-body{display:flex;flex-direction:column;gap:16px}.gen-options-body.collapsed{display:none}.gen-actions{display:flex;flex-direction:column;gap:10px;flex-shrink:0}.customize-section{border:1px solid var(--border);border-radius:8px;padding:0;margin-top:4px}.customize-summary{padding:8px 12px;cursor:pointer;color:var(--text-secondary);font-size:13px;font-family:var(--font);user-select:none;list-style:none}.customize-summary:before{content:"▶";display:inline-block;margin-right:6px;font-size:10px;transition:transform .15s}.customize-section[open] .customize-summary:before{transform:rotate(90deg)}.customize-summary::-webkit-details-marker{display:none}.customize-body{padding:8px 12px 12px;display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--border)}.import-address-row{display:flex;gap:8px}.import-address-row .form-input{flex:1;min-width:0}.import-status{font-size:11px;margin-top:4px;padding:4px 8px;border-radius:4px;line-height:1.4}.import-status-success{color:var(--success);background:#43b5811a}.import-status-error{color:var(--danger);background:#f047471a}.import-status-loading{color:var(--text-secondary);background:var(--bg-elevated)}.import-floorplan-drop{display:flex;align-items:center;justify-content:center;padding:20px;border:2px dashed var(--border);border-radius:var(--radius);cursor:pointer;transition:all var(--transition);text-align:center;min-height:60px}.import-floorplan-drop:hover,.import-floorplan-drop.dragover{border-color:var(--accent);background:#5865f20d}.import-satellite-wrapper{width:100%;height:100%;position:relative;display:flex;align-items:center;justify-content:center;background:var(--bg-base)}.import-satellite-overlay{position:absolute;bottom:12px;left:12px;font-size:11px;font-family:var(--font-mono);color:#fff;background:#0009;backdrop-filter:blur(8px);padding:4px 10px;border-radius:var(--radius)}.import-api-list{display:flex;flex-direction:column;gap:10px}.import-api-row{display:flex;flex-direction:column;gap:3px;padding-bottom:10px;border-bottom:1px solid var(--border)}.import-api-row:last-child{border-bottom:none;padding-bottom:0}.import-api-label{display:flex;align-items:baseline;gap:8px;font-size:12px}.import-api-label strong{color:var(--text);white-space:nowrap}.import-api-desc{font-size:11px;color:var(--text-muted)}.import-api-input-row{display:flex;gap:6px;align-items:center}.import-api-key-input{flex:1;min-width:0;font-size:12px}.import-api-link{font-size:11px;color:var(--accent);white-space:nowrap;text-decoration:none;opacity:.8}.import-api-link:hover{opacity:1;text-decoration:underline}.import-api-status{font-size:11px;color:var(--text-muted)}.import-api-badge{font-size:10px;color:var(--text-muted);background:var(--bg-light);border-radius:8px;padding:1px 6px;margin-left:6px}.import-api-hint{font-size:11px;color:var(--text-muted);line-height:1.5;margin-bottom:4px}.import-color-swatch{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid rgba(255,255,255,.25);vertical-align:middle;margin:0 2px}.import-api-toggles{display:flex;flex-wrap:wrap;gap:6px}.import-api-toggle{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition);user-select:none;min-height:32px}.import-api-toggle:has(input:checked){border-color:var(--success);color:var(--success);background:#43b58114}.import-api-toggle:has(input:not(:checked)){border-color:var(--border);color:var(--text-muted);opacity:.6}.import-api-toggle input[type=checkbox]{width:12px;height:12px;accent-color:var(--success);cursor:pointer}.import-api-toggle:has(input:disabled){opacity:.35;cursor:not-allowed;pointer-events:none}.import-api-toggle .toggle-disabled{text-decoration:line-through;font-style:italic}.import-api-divider{width:100%;height:1px;background:var(--border);margin:4px 0 2px}.import-api-grid{display:flex;flex-direction:column;gap:12px}.import-api-entry{display:flex;flex-direction:column;gap:4px}.enrich-group{display:flex;align-items:baseline;gap:8px;padding:3px 0;font-size:11px;line-height:1.4;border-bottom:1px solid rgba(255,255,255,.04)}.enrich-group:last-child{border-bottom:none}.enrich-label{flex-shrink:0;width:72px;color:var(--text-muted);font-weight:500;font-size:10px;text-transform:uppercase;letter-spacing:.03em}.enrich-val{color:var(--text-secondary);word-break:break-word}@media(max-width:480px){.import-api-toggle{font-size:11px;padding:5px 10px;min-height:30px}}.import-streetview-container{position:relative;width:100%;max-height:300px;overflow:hidden;background:var(--bg-base);border-top:1px solid var(--border)}.import-streetview-img{width:100%;height:auto;max-height:280px;object-fit:cover;display:block;border-radius:0 0 var(--radius) var(--radius)}.import-footprint-overlay{position:absolute;inset:0;pointer-events:none}.import-field-filled{animation:importFieldPulse 1.5s ease-out}@keyframes importFieldPulse{0%{border-color:var(--success);box-shadow:0 0 8px #43b5814d}to{border-color:var(--border);box-shadow:none}}.import-field-uncertain{border-color:var(--warning, #f0a030)!important;border-style:dashed}.style-chip{padding:6px 14px;border:1px solid var(--border);border-radius:6px;background:var(--bg-input);color:var(--text-secondary);font-family:var(--font);font-size:12px;font-weight:500;cursor:pointer;transition:all var(--transition)}.style-chip:hover{border-color:var(--chip-color);color:var(--chip-color)}.style-chip.active{border-color:var(--chip-color);color:var(--chip-color);background:color-mix(in srgb,var(--chip-color) 10%,var(--bg-input));box-shadow:0 0 8px color-mix(in srgb,var(--chip-color) 25%,transparent)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes slideInOverlay{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.viewer-overlay:not([hidden]){animation:slideInOverlay .25s cubic-bezier(.2,0,0,1) both}.gallery-card{animation:fadeInUp .4s cubic-bezier(.2,0,0,1) both}.gallery-preview.loading{background:linear-gradient(90deg,var(--bg-base) 0%,var(--bg-elevated) 40%,var(--bg-base) 80%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}.info-panel:not([hidden]){animation:fadeInUp .3s cubic-bezier(.2,0,0,1) both}.btn:active:not(:disabled){transform:scale(.97)}.inline-viewer{animation:fadeIn .3s ease both}.loading-overlay:not([hidden]){animation:fadeIn .2s ease both}#tab-comparison{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}#comparison-root{padding:16px;max-width:1200px;width:100%;margin:0 auto;box-sizing:border-box;flex-shrink:0}.cmp-loading{text-align:center;color:var(--text-secondary);padding:60px 20px;font-size:14px}.cmp-header{text-align:center;margin-bottom:16px}.cmp-title{font-size:20px;font-weight:700;color:var(--accent);margin-bottom:4px}.cmp-subtitle{font-size:12px;color:var(--text-secondary)}.cmp-nav{display:flex;justify-content:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.cmp-nav-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);padding:8px 16px;border-radius:20px;cursor:pointer;font-size:12px;font-weight:500;transition:all var(--transition);line-height:1.3;text-align:center;font-family:var(--font)}.cmp-nav-btn:hover{border-color:var(--accent);color:var(--text-primary)}.cmp-nav-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.cmp-nav-label{font-weight:600;font-size:13px;display:block}.cmp-nav-addr{font-size:10px;opacity:.7;display:block;margin-top:2px}.cmp-tabs{display:flex;justify-content:center;gap:4px;margin-bottom:10px}.cmp-tab-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);padding:6px 14px;border-radius:var(--radius);cursor:pointer;font-size:12px;font-weight:500;transition:all var(--transition);font-family:var(--font)}.cmp-tab-btn:hover{border-color:var(--accent)}.cmp-tab-btn.active{background:var(--bg-elevated);border-color:var(--accent);color:var(--text-primary)}.cmp-layers{display:flex;justify-content:center;gap:4px;margin-bottom:10px;min-height:28px}.cmp-layers.hidden{display:none}.cmp-layer-btn{width:28px;height:28px;background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);border-radius:4px;cursor:pointer;font-size:11px;font-weight:600;transition:all var(--transition);font-family:var(--font)}.cmp-layer-btn:hover{border-color:var(--accent)}.cmp-layer-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.cmp-slider-wrap{position:relative;margin:0 auto 16px;max-width:100%;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.cmp-slider{position:relative;width:100%;min-height:250px;touch-action:none;cursor:col-resize}.cmp-slider img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.cmp-img-noapi{z-index:1}.cmp-img-someapis{z-index:2}.cmp-img-allapis{z-index:3}.cmp-img-enriched{z-index:4}.cmp-divider{position:absolute;top:0;bottom:0;width:3px;background:var(--accent);z-index:10;pointer-events:none}.cmp-handle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:36px;height:36px;background:var(--accent);border:2px solid #fff;border-radius:50%;z-index:11;pointer-events:auto;cursor:col-resize;display:flex;align-items:center;justify-content:center}.cmp-handle:before{content:"◄►";color:#fff;font-size:10px;letter-spacing:-1px}.cmp-tier-label{position:absolute;top:10px;z-index:15;font-size:11px;font-weight:600;padding:4px 10px;border-radius:4px;pointer-events:none}.cmp-label-noapi{left:10px;background:#dc3c3cd9;color:#fff}.cmp-label-someapis{background:#c8a028d9;color:#fff}.cmp-label-allapis{background:#28a745d9;color:#fff}.cmp-label-enriched{right:10px;background:#5865f2d9;color:#fff}.cmp-actions{display:flex;justify-content:center;gap:8px;margin-bottom:16px;flex-wrap:wrap;max-width:100%}.cmp-action-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius);cursor:pointer;font-size:12px;font-weight:500;font-family:var(--font);transition:all var(--transition);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.cmp-action-btn:hover{border-color:var(--accent);background:var(--bg-elevated)}.cmp-action-btn svg{flex-shrink:0}.cmp-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.cmp-stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:12px}.cmp-stat-card h4{font-size:12px;font-weight:600;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--border)}.cmp-stat-card.noapi h4{color:var(--danger, #f87171)}.cmp-stat-card.someapis h4{color:#fbbf24}.cmp-stat-card.allapis h4{color:var(--success, #4ade80)}.cmp-stat-card.enriched h4{color:var(--accent, #5865f2)}.cmp-stat-card.tiles h4{color:#f472b6}.cmp-stat-card.tiles{border-color:#f472b64d}.cmp-stat-card table{width:100%;font-size:11px;border-collapse:collapse}.cmp-stat-card td{padding:2px 0;vertical-align:top}.cmp-stat-card td:first-child{color:var(--text-secondary);width:80px;font-weight:500}.cmp-stat-card td:last-child{color:var(--text-primary);font-family:var(--font-mono);font-size:10px}.cmp-stat-card td.changed{color:var(--accent);font-weight:600}.cmp-api-heading{font-size:14px;font-weight:600;color:var(--accent);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--bg-elevated)}.cmp-api-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px}.cmp-api-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px;overflow:hidden}.cmp-api-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;padding-bottom:5px;border-bottom:1px solid var(--bg-elevated)}.cmp-api-name{font-size:12px;font-weight:600;color:var(--text-primary)}.cmp-api-status{font-size:9px;font-weight:700;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.5px}.cmp-api-status.ok{background:#1a4a2a;color:#4ade80}.cmp-api-status.error{background:#4a1a1a;color:#f87171}.cmp-api-status.skipped{background:#3a3a1a;color:#fbbf24}.cmp-api-status.unavailable{background:var(--bg-elevated);color:var(--text-secondary)}.cmp-api-error{font-size:10px;color:#f87171;font-style:italic;margin-bottom:4px}.cmp-api-table{width:100%;font-size:11px;border-collapse:collapse}.cmp-api-table td{padding:1px 0;vertical-align:top}.cmp-api-table td:first-child{color:var(--text-secondary);width:100px;font-weight:500;white-space:nowrap;padding-right:6px}.cmp-api-table td:last-child{color:var(--text-primary);font-family:var(--font-mono);font-size:10px;word-break:break-all}.cmp-api-thumb-link{display:block;margin-bottom:6px;border-radius:4px;overflow:hidden;line-height:0}.cmp-api-thumb{width:100%;height:auto;max-height:140px;object-fit:cover;border-radius:4px;opacity:.9;transition:opacity var(--transition)}.cmp-api-thumb:hover{opacity:1}.cmp-api-swatches{display:flex;gap:8px;margin-bottom:6px;padding:4px 0}.cmp-api-swatch{display:flex;align-items:center;gap:4px}.cmp-swatch-color{display:inline-block;width:18px;height:18px;border-radius:3px;border:1px solid rgba(255,255,255,.15);flex-shrink:0}.cmp-swatch-label{font-size:10px;color:var(--text-secondary)}.cmp-tag-row{display:flex;align-items:flex-start;gap:6px;margin-top:5px}.cmp-tag-label{font-size:10px;font-weight:600;color:var(--accent);min-width:45px;padding-top:1px}.cmp-tags{display:flex;flex-wrap:wrap;gap:3px}.cmp-tag{font-size:9px;padding:1px 5px;border-radius:3px;font-family:var(--font-mono)}.cmp-tags-green .cmp-tag{background:#1a2a1a;color:#6aaa6a;border:1px solid #2a442a}.cmp-tags-blue .cmp-tag{background:#1a1a40;color:#88c;border:1px solid #2a2a55}@media(max-width:900px){.cmp-stats{grid-template-columns:1fr 1fr}.cmp-nav{justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;padding-bottom:4px}.cmp-nav-btn{flex-shrink:0}}@media(max-width:600px){#comparison-root{padding:8px}.cmp-header{padding:0 4px}.cmp-title{font-size:16px}.cmp-subtitle{font-size:11px}.cmp-stats,.cmp-api-grid{grid-template-columns:1fr}.cmp-nav-btn{padding:6px 10px;font-size:11px}.cmp-nav-label{font-size:12px}.cmp-nav-addr{font-size:9px}.cmp-slider{min-height:180px}.cmp-actions{flex-wrap:wrap;gap:6px}.cmp-action-btn{padding:6px 10px;font-size:11px}.cmp-stat-card{padding:10px}.cmp-stat-card h4{font-size:12px}.cmp-stat-card td{padding:3px 6px;font-size:11px}.cmp-api-card{padding:10px}.cmp-api-name{font-size:12px}.cmp-api-table td{padding:3px 6px;font-size:11px}.cmp-tag{font-size:9px;padding:1px 5px}}#tab-map{overflow:hidden}#tab-map.active{display:flex;flex-direction:column}#map3d-root{display:flex;flex-direction:column;height:100%;min-height:0}.map3d-controls{flex-shrink:0;padding:12px 16px;background:var(--bg-surface);border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.map3d-search-row{display:flex;gap:8px}.map3d-search-input{flex:1;padding:8px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font);font-size:13px;outline:none;transition:border-color var(--transition)}.map3d-search-input:focus{border-color:var(--accent)}.map3d-key-row{display:flex;flex-direction:column;gap:4px}.map3d-key-label{font-size:11px;color:var(--text-secondary);font-weight:500;display:flex;align-items:center;gap:8px}.map3d-key-status{font-size:10px;font-family:var(--font-mono);opacity:.7}.map3d-key-input-row{display:flex;gap:6px;align-items:center}.map3d-key-input{flex:1;padding:6px 10px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font-mono);font-size:11px;outline:none;transition:border-color var(--transition)}.map3d-key-input:focus{border-color:var(--accent)}.map3d-key-link{font-size:10px;color:var(--accent);white-space:nowrap}.map3d-status{font-size:11px;font-family:var(--font-mono);min-height:16px;padding:0 2px}.map3d-status-info{color:var(--text-secondary)}.map3d-status-error{color:var(--danger, #f87171)}.map3d-status-success{color:var(--success, #4ade80)}.map3d-viewer{flex:1;min-height:300px;position:relative;background:#0a0a14}.map3d-viewer canvas{display:block;width:100%!important;height:100%!important}.map3d-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:300px;color:var(--text-secondary);gap:12px;padding:40px;text-align:center}.map3d-placeholder svg{opacity:.3}.map3d-placeholder p{font-size:14px;margin:0}.map3d-placeholder-sub{font-size:11px;opacity:.6}@media(max-width:600px){.map3d-search-row{flex-direction:column}.map3d-key-input-row{flex-wrap:wrap}}#tab-tiles{overflow-y:auto}#tiles-root{display:flex;flex-direction:column;height:100%;min-height:0}.tiles-controls{flex-shrink:0;padding:12px 16px;background:var(--bg-surface);border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:10px}.tiles-header{display:flex;flex-direction:column;gap:2px}.tiles-title{font-size:15px;font-weight:600;color:var(--text-primary);margin:0}.tiles-desc{font-size:11px;color:var(--text-secondary);margin:0}.tiles-search-row{display:flex;gap:8px}.tiles-input{flex:1;padding:8px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font);font-size:13px;outline:none;transition:border-color var(--transition)}.tiles-input:focus{border-color:var(--accent)}.tiles-params{display:flex;gap:16px;flex-wrap:wrap}.tiles-param{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);cursor:default}.tiles-param input[type=range]{width:100px;accent-color:var(--accent)}.tiles-param-value{font-family:var(--font-mono);font-size:11px;color:var(--text-primary);min-width:60px}.tiles-scene-options{display:flex;flex-wrap:wrap;gap:6px 14px;margin-left:20px;padding:8px 12px;font-size:12px;color:var(--text-secondary);border-left:2px solid var(--border-focus);background:var(--bg-surface);border-radius:0 6px 6px 0}.tiles-scene-options label{display:flex;align-items:center;gap:4px;cursor:pointer;white-space:nowrap}.tiles-scene-options input[type=checkbox]{accent-color:var(--accent)}@media(max-width:640px){.tiles-scene-options{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin-left:12px}}.tiles-key-hint{padding:8px 12px;background:var(--bg-elevated);border-radius:var(--radius);font-size:12px;color:var(--text-secondary)}.tiles-key-hint p{margin:0 0 6px}.tiles-key-row{display:flex;gap:6px}.tiles-key-input{flex:1;padding:6px 10px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font-mono);font-size:11px;outline:none;transition:border-color var(--transition)}.tiles-key-input:focus{border-color:var(--accent)}.tiles-batch-row{display:flex;align-items:center;gap:8px;padding:4px 0}.tiles-batch-hint{font-size:11px;color:var(--text-secondary)}.tiles-status{font-size:11px;font-family:var(--font-mono);min-height:16px;padding:0 2px}.tiles-status-info{color:var(--text-secondary)}.tiles-status-error{color:var(--danger, #f87171)}.tiles-status-success{color:var(--success, #4ade80)}.tiles-viewer{flex:1;min-height:300px;position:relative;background:#0a0a14}.tiles-viewer canvas{display:block;width:100%!important;height:100%!important}.tiles-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:300px;color:var(--text-secondary);gap:12px;padding:40px;text-align:center}.tiles-placeholder svg{opacity:.3}.tiles-placeholder p{font-size:14px;margin:0}.tiles-placeholder-sub{font-size:11px;opacity:.6}@media(max-width:600px){.tiles-search-row{flex-direction:column}.tiles-params{flex-direction:column;gap:8px}.tiles-param input[type=range]{width:80px}}.tiles-selection-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:#ffb4321f;border:1px solid rgba(255,180,50,.3);border-radius:6px;margin-bottom:8px;flex-wrap:wrap}.tiles-selection-info{font-size:12px;color:var(--text-primary, #e0e0e0);line-height:1.5;flex:1;min-width:200px}.tiles-selection-info strong{color:#ffb432}.tiles-sel-hint{display:inline-block;font-size:10px;opacity:.6;margin-left:6px}.tiles-selection-actions{display:flex;gap:6px;flex-shrink:0}.lego-status{padding:8px 16px 0;font-size:11px;flex-shrink:0}.lego-status[hidden]{display:none}.lego-section{padding:12px 16px;border-bottom:1px solid var(--border)}.lego-scale-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;row-gap:6px;padding:8px 16px}.lego-scale-row select{border:1px solid var(--border);background:var(--bg-secondary, #1d1d2b);color:var(--text-secondary);cursor:pointer;max-width:110px}.lego-scale-row select:hover{background:var(--bg-hover, rgba(255,255,255,.06))}.lego-scale-row select option,.lego-scale-row select optgroup{background:var(--bg-secondary, #1d1d2b);color:var(--text-primary, #e5e5ee)}.lego-view-btn,#lego-flip-front{border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .15s,color .15s}.lego-view-btn:hover,#lego-flip-front:hover{background:var(--bg-hover, rgba(255,255,255,.06));color:var(--text-primary, #fff)}.lego-scale-btns{display:flex;gap:4px}.lego-scale-btn{padding:3px 10px;font-size:11px;border-radius:4px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .15s,color .15s}.lego-scale-btn:hover{background:var(--bg-hover, rgba(255,255,255,.06))}.lego-scale-btn.active{background:var(--accent, #3b82f6);color:#fff;border-color:transparent}.lego-section-inner{padding:8px 16px;border-bottom:none}.lego-label-row{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.lego-section-label{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.lego-section-sub{font-size:10px;color:var(--text-secondary);opacity:.7}.lego-upload-zone{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px 14px;border:2px dashed var(--border);border-radius:10px;cursor:pointer;text-align:center;color:var(--text-secondary);transition:border-color .15s,color .15s,background .15s;margin-bottom:8px}.lego-upload-zone:hover,.lego-upload-zone.dragover{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}.lego-upload-zone svg{opacity:.6}.lego-upload-zone:hover svg,.lego-upload-zone.dragover svg{opacity:1}.lego-upload-zone-text{font-size:12px;line-height:1.4}.lego-upload-zone-text code{background:var(--bg-secondary);padding:1px 4px;border-radius:3px;font-family:var(--font-mono);font-size:11px}.lego-omr-quick{display:flex;align-items:center;gap:8px;font-size:11px}.lego-divider{display:flex;align-items:center;gap:8px;padding:0 16px;margin:4px 0;color:var(--text-secondary);font-size:10px;text-transform:uppercase;letter-spacing:.06em;opacity:.6}.lego-divider:before,.lego-divider:after{content:"";flex:1;height:1px;background:var(--border)}.lego-search-details{border-bottom:1px solid var(--border)}.lego-search-summary{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;cursor:pointer;user-select:none;font-size:12px;font-weight:600;color:var(--text-primary);list-style:none}.lego-search-summary::-webkit-details-marker{display:none}.lego-search-summary:after{content:"›";font-size:14px;color:var(--text-secondary);transform:rotate(90deg);transition:transform .15s;display:inline-block}.lego-search-details[open] .lego-search-summary:after{transform:rotate(-90deg)}.lego-search-summary-sub{font-size:10px;font-weight:400;color:var(--text-secondary);margin-right:auto;margin-left:8px}.lego-key-input-row{display:flex;gap:6px;align-items:center}.lego-input{background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-size:12px;padding:7px 10px;width:100%;box-sizing:border-box;transition:border-color .15s;font-family:var(--font-sans)}.lego-input:focus{outline:none;border-color:var(--accent)}.lego-search-row{display:flex;gap:6px;align-items:center;margin-bottom:8px}.lego-search-input{flex:1;min-width:0}.lego-filters{display:flex;gap:6px;flex-wrap:wrap}.lego-select{background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-size:12px;padding:7px 8px;flex:1;min-width:110px;transition:border-color .15s}.lego-select:focus{outline:none;border-color:var(--accent)}.lego-year-input{width:90px;flex:0 0 90px}.lego-status{margin-top:8px;font-size:11px;min-height:16px}.lego-status-info{color:var(--text-secondary)}.lego-status-error{color:var(--danger, #f87171)}.lego-status-success{color:var(--success, #4ade80)}.lego-results{overflow-y:auto;max-height:min(58vh,640px);flex-shrink:0;border-bottom:1px solid var(--border)}.lego-results-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--border)}.lego-show-more{grid-column:1 / -1;background:var(--bg-primary);border:none;border-top:1px solid var(--border);color:var(--accent);cursor:pointer;padding:12px;font-size:12px;font-weight:600;font-family:inherit;transition:background .12s}.lego-show-more:hover{background:var(--bg-secondary)}.lego-result-card{background:var(--bg-primary);border:none;cursor:pointer;padding:10px;text-align:left;display:flex;flex-direction:column;gap:6px;transition:background .12s}.lego-result-card:hover{background:var(--bg-secondary)}.lego-result-card.selected{background:color-mix(in srgb,var(--accent) 12%,var(--bg-primary))}.lego-result-card.selected .lego-result-num{color:var(--accent)}.lego-result-card{position:relative}.lego-omr-badge{position:absolute;top:5px;right:5px;background:var(--accent);color:#fff;font-size:9px;font-weight:700;letter-spacing:.04em;padding:1px 4px;border-radius:3px;pointer-events:none}.lego-src-badge{position:absolute;top:5px;left:5px;background:color-mix(in srgb,var(--bg-primary) 55%,transparent);border:1px solid var(--border);color:var(--text-secondary);font-size:9px;font-weight:600;letter-spacing:.03em;padding:0 4px;border-radius:3px;pointer-events:none;backdrop-filter:blur(2px)}.lego-src-badge.lego-src-authentic{color:#4ade80;border-color:color-mix(in srgb,#4ade80 45%,transparent)}.lego-src-badge.lego-src-recon{opacity:.75}.lego-result-img{width:100%;aspect-ratio:4/3;object-fit:contain;background:var(--bg-secondary);border-radius:4px}.lego-result-img-placeholder{width:100%;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);border-radius:4px;color:var(--text-secondary)}.lego-result-info{display:flex;flex-direction:column;gap:2px}.lego-result-num{font-family:var(--font-mono);font-size:10.5px;color:var(--text-secondary)}.lego-result-name{font-size:12px;font-weight:500;color:var(--text-primary);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lego-result-meta{font-size:10.5px;color:var(--text-secondary)}.lego-detail{padding:12px 16px;border-bottom:1px solid var(--border)}.lego-detail-header{display:flex;gap:12px;align-items:flex-start;margin-bottom:12px}.lego-detail-img{width:80px;height:60px;object-fit:contain;background:var(--bg-secondary);border-radius:6px;flex-shrink:0}.lego-detail-meta{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.lego-detail-num{font-family:var(--font-mono);font-size:11px;color:var(--text-secondary)}.lego-detail-name{font-size:13px;font-weight:600;color:var(--text-primary);line-height:1.3}.lego-detail-stats{display:flex;gap:10px;font-size:11px;color:var(--text-secondary)}.lego-build-section{display:flex;flex-direction:column;gap:8px}.lego-mpd-hint{font-size:11px;color:var(--text-secondary);margin-top:4px}.lego-mpd-hint code{background:var(--bg-secondary);padding:1px 4px;border-radius:3px;font-family:var(--font-mono);font-size:10px}.lego-upload-label{display:flex;align-items:center;gap:8px;padding:10px 14px;border:1px dashed var(--border);border-radius:8px;cursor:pointer;font-size:12px;color:var(--text-secondary);transition:border-color .15s,color .15s,background .15s}.lego-upload-label:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,transparent)}.lego-omr-links{display:flex;flex-direction:column;gap:4px}.lego-omr-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.lego-omr-label{font-size:11px;color:var(--text-secondary)}.lego-omr-note{font-size:10px;color:var(--text-secondary);margin:0;line-height:1.4}.lego-omr-note code{background:var(--bg-secondary);padding:1px 4px;border-radius:3px;font-family:var(--font-mono);font-size:10px}.lego-ext-link{font-size:11px;color:var(--accent);text-decoration:none;white-space:nowrap}.lego-ext-link:hover{text-decoration:underline}.lego-ext-link-highlight{font-size:12px;font-weight:600;padding:4px 8px;background:color-mix(in srgb,var(--accent) 15%,transparent);border-radius:4px}.lego-auto-load-btn{margin-top:8px;width:100%}.review-layout{display:flex;flex-direction:column;height:100%}.review-toolbar{display:flex;gap:.75rem;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border);flex-wrap:wrap;background:var(--bg-card)}.review-file-actions{display:flex;gap:.5rem;flex-shrink:0}.review-versions{display:flex;gap:.25rem;overflow-x:auto;flex:1;padding:2px 0}.review-version-tab{padding:.3rem .7rem;border-radius:4px;background:var(--bg-base);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;font-size:.78rem;font-family:var(--font-mono, "JetBrains Mono", monospace);white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.review-version-tab:hover{border-color:var(--accent);color:var(--text-primary)}.review-version-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}.review-content{display:flex;flex:1;min-height:0}.review-viewer{flex:3;min-height:300px;position:relative}.review-images{flex:2;overflow-y:auto;padding:.75rem;border-left:1px solid var(--border);background:var(--bg-base)}.review-thumb-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.review-thumb{cursor:pointer;border-radius:6px;overflow:hidden;border:1px solid var(--border);background:var(--bg-card);transition:border-color .15s,transform .1s}.review-thumb:hover{border-color:var(--accent);transform:scale(1.02)}.review-thumb img{width:100%;display:block;object-fit:cover;aspect-ratio:4 / 3}.review-thumb-label{font-size:.7rem;padding:.25rem .4rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono, "JetBrains Mono", monospace)}.review-lightbox{position:fixed;inset:0;z-index:1000;background:#000000eb;display:flex;align-items:center;justify-content:center;cursor:pointer;animation:review-lb-in .15s ease-out}@keyframes review-lb-in{0%{opacity:0}to{opacity:1}}.review-lightbox img{max-width:95vw;max-height:95vh;object-fit:contain;border-radius:4px}.review-images-placeholder{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:.85rem;text-align:center;padding:2rem}.review-dragover .review-viewer,.review-dragover .review-images{outline:2px dashed var(--accent);outline-offset:-4px}@media(max-width:768px){.review-content{flex-direction:column}.review-images{border-left:none;border-top:1px solid var(--border);max-height:40vh;flex:none}.review-thumb-grid{grid-template-columns:repeat(3,1fr)}}
