:root{--bg-primary: #ffffff;--bg-secondary: #f5f5f5;--bg-tertiary: #e8e8e8;--text-primary: #0a0a0a;--text-secondary: #555555;--text-tertiary: #888888;--accent: #0066ff;--accent-hover: #0052cc;--success: #00aa44;--warning: #ff8800;--error: #dd2200;--border: #d4d4d4;--sat: 0px;--sar: 0px;--sab: 0px;--sal: 0px;--space-0: 0px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--text-xs-size: 12px;--text-xs-line-height: 16px;--text-xs-weight: 400;--text-sm-size: 14px;--text-sm-line-height: 20px;--text-sm-weight: 400;--text-base-size: 16px;--text-base-line-height: 24px;--text-base-weight: 400;--text-lg-size: 18px;--text-lg-line-height: 28px;--text-lg-weight: 500;--text-xl-size: 20px;--text-xl-line-height: 28px;--text-xl-weight: 500;--text-2xl-size: 24px;--text-2xl-line-height: 32px;--text-2xl-weight: 600;--text-3xl-size: 30px;--text-3xl-line-height: 36px;--text-3xl-weight: 600;--text-4xl-size: 36px;--text-4xl-line-height: 40px;--text-4xl-weight: 700;--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .35s;--duration-fast-easing: cubic-bezier(.4, 0, .2, 1);--duration-normal-easing: cubic-bezier(.4, 0, .2, 1);--duration-slow-easing: cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--bg-primary: #0a0a0a;--bg-secondary: #141414;--bg-tertiary: #1e1e1e;--text-primary: #ffffff;--text-secondary: #aaaaaa;--text-tertiary: #666666;--accent: #4d9fff;--accent-hover: #80bfff;--success: #44cc77;--warning: #ffaa44;--error: #ff5544;--border: #333333}*{margin:0;padding:0;box-sizing:border-box}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:var(--text-base-size);line-height:var(--text-base-line-height);font-weight:var(--text-base-weight);background:var(--bg-primary);color:var(--text-primary);transition:background var(--duration-normal) var(--duration-normal-easing),color var(--duration-normal) var(--duration-normal-easing);overflow:hidden;height:100vh}#app{display:flex;flex-direction:column;height:100vh}.toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0}.logo{font-size:var(--text-xl-size);font-weight:var(--text-2xl-weight);letter-spacing:.05em;color:var(--accent)}.toolbar-actions{display:flex;align-items:center;gap:var(--space-2)}.divider{width:1px;height:24px;background:var(--border);margin:0 var(--space-1)}.btn{padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);font-size:var(--text-sm-size);cursor:pointer;transition:all var(--duration-fast) var(--duration-fast-easing);white-space:nowrap;min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center}.btn:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--accent)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.workspace{display:flex;flex:1;overflow:hidden}.panel{width:260px;background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto}.panel-right{border-right:none;border-left:1px solid var(--border);width:300px}.panel-title{padding:var(--space-3) var(--space-4);font-size:var(--text-sm-size);font-weight:var(--text-lg-weight);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);border-bottom:1px solid var(--border)}.core-list{padding:var(--space-2);display:flex;flex-direction:column;gap:var(--space-1)}.core-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);min-height:44px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-primary);font-size:var(--text-sm-size);cursor:pointer;text-align:left;transition:all var(--duration-fast) var(--duration-fast-easing)}.core-btn:hover{background:var(--bg-tertiary)}.core-btn.active{background:var(--accent);color:#fff}.core-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:var(--text-base-size)}.canvas-area{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-primary);position:relative;padding:var(--space-4)}#gl-canvas{border:1px solid var(--border);border-radius:8px;background:var(--bg-tertiary);max-width:100%;max-height:calc(100% - 40px);image-rendering:pixelated}.canvas-info{display:flex;gap:var(--space-4);margin-top:var(--space-3);font-size:var(--text-xs-size);color:var(--text-tertiary)}.stack-list{padding:var(--space-2);display:flex;flex-direction:column;gap:var(--space-1);min-height:60px}.stack-empty{padding:var(--space-4);text-align:center;color:var(--text-tertiary);font-size:var(--text-sm-size)}.stack-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:6px;background:var(--bg-primary);cursor:pointer;transition:all var(--duration-fast) var(--duration-fast-easing)}.stack-item:hover{border-color:var(--accent)}.stack-item.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.stack-item.disabled{opacity:.5}.stack-item-name{flex:1;font-size:var(--text-sm-size);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stack-item-toggle{width:44px;height:44px;min-width:44px;min-height:44px;border:none;background:transparent;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center}.stack-item-remove{width:44px;height:44px;min-width:44px;min-height:44px;border:none;background:transparent;cursor:pointer;font-size:14px;color:var(--text-tertiary);display:flex;align-items:center;justify-content:center}.stack-item-remove:hover{color:var(--error)}.inspector{padding:var(--space-3);border-top:1px solid var(--border);flex:1;overflow-y:auto}.inspector-empty{color:var(--text-tertiary);font-size:var(--text-sm-size);text-align:center;padding:var(--space-4)}.inspector-title{font-size:var(--text-sm-size);font-weight:var(--text-lg-weight);margin-bottom:var(--space-3);color:var(--text-primary)}.param-group{margin-bottom:var(--space-3)}.param-label{display:block;font-size:var(--text-xs-size);color:var(--text-secondary);margin-bottom:var(--space-1)}.param-value{float:right;color:var(--text-tertiary);font-size:var(--text-xs-size)}.param-slider{width:100%;height:4px;-webkit-appearance:none;appearance:none;background:var(--bg-tertiary);border-radius:2px;outline:none}.param-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer}.param-select{width:100%;padding:var(--space-2);border:1px solid var(--border);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:var(--text-sm-size)}.param-color{display:flex;gap:var(--space-2);align-items:center}.param-color input[type=color]{width:32px;height:32px;border:1px solid var(--border);border-radius:4px;cursor:pointer;background:none}.param-color span{font-size:var(--text-xs-size);color:var(--text-tertiary)}.sync-status{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4) var(--space-2) var(--space-4);padding-bottom:calc(var(--space-2) + var(--sab));background:var(--bg-secondary);border-top:1px solid var(--border);font-size:var(--text-xs-size);color:var(--text-tertiary);flex-shrink:0}.sync-indicator{width:8px;height:8px;border-radius:50%;background:var(--text-tertiary);flex-shrink:0}.sync-indicator.synced{background:var(--success)}.sync-indicator.pending{background:var(--warning)}.sync-indicator.error{background:var(--error)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.canvas-container{position:relative;display:inline-block}.mask-canvas{position:absolute;top:0;left:0;width:100%;height:100%;cursor:crosshair}.mask-canvas.hidden{display:none}.mask-overlay{position:absolute;inset:0;background:#0000004d;display:flex;flex-direction:column;justify-content:flex-end;pointer-events:none}.mask-overlay.hidden{display:none}.mask-toolbar{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--bg-secondary);border-top:1px solid var(--border);pointer-events:auto}.mask-toolbar label{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs-size);color:var(--text-secondary)}.help-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;pointer-events:none;transition:opacity var(--duration-fast) var(--duration-fast-easing)}.help-overlay.visible{opacity:1;pointer-events:auto}.help-modal{background:var(--bg-primary);border:1px solid var(--border);border-radius:8px;padding:var(--space-6);max-width:480px;width:90%;max-height:80vh;overflow-y:auto;position:relative}.help-close{position:absolute;top:var(--space-3);right:var(--space-3);background:none;border:none;color:var(--text-tertiary);cursor:pointer;font-size:var(--text-lg-size)}.help-content h3{margin-bottom:var(--space-4);color:var(--text-primary)}.help-content table{width:100%;border-collapse:collapse}.help-content td{padding:var(--space-2);border-bottom:1px solid var(--border);font-size:var(--text-sm-size)}.help-content td.shortcut-key{font-family:monospace;font-weight:var(--text-lg-weight);color:var(--accent);white-space:nowrap;width:120px}.vector-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg-primary);border:1px solid var(--border);border-radius:8px;padding:var(--space-4);z-index:1000;box-shadow:0 8px 32px #0000004d}.vector-panel.hidden{display:none}.vector-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.vector-header h3{margin:0;font-size:var(--text-lg-size);color:var(--text-primary)}.vector-toolbar{display:flex;align-items:center;gap:var(--space-1);margin-bottom:var(--space-3);flex-wrap:wrap}.vector-svg{border:1px solid var(--border);border-radius:4px;background:var(--bg-primary);display:block}.vector-svg:hover{border-color:var(--accent)}.preset-panel{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);background:var(--bg-primary);border-left:1px solid var(--border);box-shadow:-8px 0 32px #0003;z-index:1100;display:flex;flex-direction:column;overflow:hidden}.preset-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);flex-shrink:0}.preset-panel-title{margin:0;font-size:var(--text-lg-size);color:var(--text-primary)}.preset-panel-grid{flex:1;overflow-y:auto;padding:var(--space-3)}.preset-grid-container{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.preset-grid-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);flex-wrap:wrap}.preset-grid-title{margin:0;font-size:var(--text-base-size);font-weight:var(--text-lg-weight);color:var(--text-primary)}.preset-grid-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.preset-grid-btn{min-height:44px;touch-action:manipulation}.preset-grid-file-input{display:none}.preset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--space-3)}.preset-grid-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-8) var(--space-4);text-align:center}.preset-grid-empty-text{font-size:var(--text-base-size);color:var(--text-secondary)}.preset-grid-empty-hint{font-size:var(--text-sm-size);color:var(--text-tertiary)}.preset-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding:var(--space-3);min-height:44px;border:1px solid var(--border);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font-size:var(--text-sm-size);text-align:left;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:border-color var(--duration-fast) var(--duration-fast-easing),background var(--duration-fast) var(--duration-fast-easing);min-width:0}.preset-card:hover{border-color:var(--accent);background:var(--bg-tertiary)}.preset-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.preset-card-thumb{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:6px;background:var(--bg-tertiary)}.preset-card-name{font-weight:var(--text-lg-weight);font-size:var(--text-sm-size);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-card-badge{display:inline-flex;align-items:center;padding:2px var(--space-2);border-radius:999px;background:var(--bg-tertiary);color:var(--text-tertiary);font-size:var(--text-xs-size);font-weight:var(--text-lg-weight)}.preset-card-badge.over-budget{background:var(--error);color:#fff}.preset-card-tags{display:flex;flex-wrap:wrap;gap:var(--space-1)}.preset-card-tag{padding:1px var(--space-1);border-radius:4px;background:var(--bg-tertiary);color:var(--text-secondary);font-size:var(--text-xs-size)}.preset-card-desc{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-tertiary);font-size:var(--text-xs-size)}.preset-card-actions{display:flex;align-items:center;gap:var(--space-1);width:100%;margin-top:auto}.preset-card-action{min-height:44px;min-width:44px;padding:var(--space-1) var(--space-2);font-size:var(--text-xs-size);touch-action:manipulation}.preset-card-delete{color:var(--text-tertiary)}.preset-card-delete:hover{color:var(--error);border-color:var(--error)}@media (max-width: 600px){.preset-panel{width:100vw;border-left:none}.preset-grid{grid-template-columns:1fr}.preset-grid-header{flex-direction:column;align-items:stretch}.preset-grid-actions{width:100%}.preset-grid-btn{flex:1}}@media (prefers-reduced-motion: reduce){.preset-card,.preset-card-action,.preset-grid-btn{transition:none}}.ai-panel-container{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);background:var(--bg-primary);border-left:1px solid var(--border);box-shadow:-8px 0 32px #0003;z-index:1100;display:flex;flex-direction:column;overflow:hidden}.ai-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);flex-shrink:0}.ai-panel-title{margin:0;font-size:var(--text-lg-size);color:var(--text-primary)}.ai-panel-close{background:none;border:none;color:var(--text-tertiary);cursor:pointer;font-size:var(--text-lg-size);padding:2px 6px}.ai-panel-close:hover{color:var(--text-primary)}.ai-status-bar{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0}.ai-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--text-tertiary)}.ai-status-dot.loading{background:var(--warning)}.ai-status-dot.error{background:var(--error)}.ai-status-dot.success{background:var(--success)}.ai-status-dot.idle{background:var(--text-tertiary)}.ai-status-text{font-size:var(--text-xs-size);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-panel-actions{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3) var(--space-4);flex-shrink:0}.ai-btn{width:100%;min-height:44px;touch-action:manipulation;font-size:var(--text-sm-size)}.ai-candidates-section{flex:1;overflow-y:auto;padding:var(--space-3) var(--space-4)}.ai-candidates-title{margin:0 0 var(--space-2);font-size:var(--text-xs-size);font-weight:var(--text-lg-weight);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.ai-candidates-list{display:flex;flex-direction:column;gap:var(--space-2)}.ai-candidates-empty{padding:var(--space-4);text-align:center;color:var(--text-tertiary);font-size:var(--text-sm-size)}.ai-candidate-card{padding:var(--space-2);border:1px solid var(--border);border-radius:6px;background:var(--bg-secondary);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:all var(--duration-fast) var(--duration-fast-easing)}.ai-candidate-card:hover{border-color:var(--accent);background:var(--bg-tertiary)}.ai-candidate-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-1)}.ai-candidate-name{font-size:var(--text-sm-size);color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-candidate-score{font-size:var(--text-xs-size);color:var(--text-tertiary);font-family:monospace}.ai-candidate-meta{font-size:var(--text-xs-size);color:var(--text-tertiary)}.review-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000c;display:flex;justify-content:center;align-items:center;z-index:1000}.review-modal{background:var(--bg-primary);color:var(--text-primary);border-radius:var(--space-2);width:90vw;max-width:800px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 4px 24px #0000004d}[data-theme=dark] .review-modal{background:var(--bg-secondary);color:var(--text-primary)}.review-tabs{display:flex;border-bottom:1px solid var(--border);background:var(--bg-secondary)}.review-tab{padding:var(--space-3) var(--space-4);cursor:pointer;border:none;background:transparent;color:var(--text-secondary);font-size:var(--text-sm-size);position:relative;transition:color var(--duration-fast)}.review-tab:hover{color:var(--text-primary)}.review-tab.active{color:var(--accent);font-weight:500}.review-tab.active:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--accent)}.review-content{flex:1;overflow-y:auto;padding:var(--space-4)}.review-panel{display:none}.review-panel:not(.hidden){display:block}.review-canvas{width:100%;height:auto;max-height:60vh;object-fit:contain;border-radius:var(--space-1);background:var(--bg-tertiary)}.review-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-2);margin-top:var(--space-3)}.metric-card{background:var(--bg-secondary);padding:var(--space-2);border-radius:var(--space-1);text-align:center;border:1px solid var(--border)}.metric-card span:first-child{font-size:var(--text-xs-size);color:var(--text-secondary);display:block;margin-bottom:var(--space-0)}.metric-card span:last-child{font-size:var(--text-base-size);font-weight:500;color:var(--text-primary)}.review-layer-item{display:flex;justify-content:space-between;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border)}.review-layer-item:last-child{border-bottom:none}.layer-info{display:flex;gap:var(--space-2);align-items:center}.layer-name{font-weight:500}.layer-enabled{padding:2px 6px;border-radius:var(--space-0);font-size:var(--text-xs-size);font-weight:500}.layer-enabled.enabled{background:var(--success);color:#fff}.layer-enabled.disabled{background:var(--error);color:#fff}.layer-details{display:flex;gap:var(--space-2);font-size:var(--text-xs-size);color:var(--text-secondary)}.review-warning{padding:var(--space-3);background:var(--warning);color:#fff;border-radius:var(--space-1);margin-top:var(--space-3);text-align:center;font-size:var(--text-sm-size)}.compare-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000c;display:flex;justify-content:center;align-items:center;z-index:1000}.compare-modal{background:var(--bg-primary);color:var(--text-primary);border-radius:var(--space-2);width:90vw;max-width:900px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 4px 24px #0000004d}[data-theme=dark] .compare-modal{background:var(--bg-secondary);color:var(--text-primary)}.compare-tools{display:flex;border-bottom:1px solid var(--border);background:var(--bg-secondary);padding:var(--space-1) var(--space-2)}.compare-tool-btn{padding:var(--space-2) var(--space-3);cursor:pointer;border:none;background:transparent;color:var(--text-secondary);font-size:var(--text-sm-size);position:relative;transition:color var(--duration-fast)}.compare-tool-btn:hover{color:var(--text-primary)}.compare-tool-btn.active{color:var(--accent);font-weight:500}.compare-tool-btn.active:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--accent)}.compare-content{flex:1;overflow-y:auto;position:relative}.split-view{position:relative;width:100%;height:100%;overflow:hidden}.split-left,.split-right{position:absolute;top:0;height:100%;overflow:hidden}.split-left{left:0;width:50%}.split-right{right:0;width:50%}.split-handle{position:absolute;top:0;left:50%;width:4px;height:100%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;cursor:ew-resize;z-index:10;transform:translate(-50%);user-select:none}.onion-skin-wrapper{position:relative;width:100%;height:100%}.onion-reference,.onion-reconstruction{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;transition:opacity var(--duration-fast)}.onion-slider-container{position:absolute;bottom:var(--space-4);left:var(--space-4);right:var(--space-4);display:flex;align-items:center;gap:var(--space-2);background:#ffffffe6;padding:var(--space-2);border-radius:var(--space-1)}[data-theme=dark] .onion-slider-container{background:#000000b3}.onion-slider{flex:1;height:var(--space-2)}.diff-canvas{width:100%;height:100%;display:block}.isolate-layer-wrapper{padding:var(--space-4)}.isolate-select{width:100%;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--space-1);background:var(--bg-secondary);color:var(--text-primary);font-size:var(--text-sm-size);margin-bottom:var(--space-3)}.isolate-canvas{width:100%;height:auto;max-height:300px;border:1px solid var(--border);border-radius:var(--space-1);background:var(--bg-tertiary)}.learning-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0000008c;backdrop-filter:blur(2px)}.learning-modal{display:flex;flex-direction:column;width:min(920px,94vw);max-height:88vh;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 40px #00000059;overflow:hidden}.learning-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--border);background:var(--bg-secondary)}.learning-title{font-size:var(--text-lg-size);font-weight:var(--text-lg-weight);margin:0}.learning-close{min-width:36px;min-height:36px}.learning-tabs{display:flex;gap:var(--space-1);padding:var(--space-2) var(--space-4) 0;border-bottom:1px solid var(--border);background:var(--bg-secondary)}.learning-tab{padding:var(--space-2) var(--space-4);min-height:44px;border:1px solid transparent;border-bottom:none;border-radius:6px 6px 0 0;background:transparent;color:var(--text-secondary);font-size:var(--text-sm-size);cursor:pointer;transition:background var(--duration-fast) var(--duration-fast-easing),color var(--duration-fast) var(--duration-fast-easing)}.learning-tab:hover{background:var(--bg-tertiary);color:var(--text-primary)}.learning-tab.active{background:var(--bg-primary);color:var(--text-primary);border-color:var(--border);font-weight:500}.learning-content{padding:var(--space-4);overflow:auto;flex:1}.learning-content .tab-content{display:none}.learning-content .tab-content.active{display:block}.acceptance-matrix{overflow:auto}.acceptance-table{border-collapse:collapse;width:100%;font-size:var(--text-xs-size)}.acceptance-table th,.acceptance-table td{border:1px solid var(--border);padding:var(--space-2);text-align:center;white-space:nowrap}.acceptance-table th{background:var(--bg-secondary);color:var(--text-secondary);font-weight:500;position:sticky;top:0}.acceptance-table th:first-child,.acceptance-table td:first-child{text-align:left;position:sticky;left:0;background:var(--bg-secondary);color:var(--text-primary)}.acceptance-cell{font-variant-numeric:tabular-nums}.acceptance-empty,.acceptance-loading,.retrieval-guidance{padding:var(--space-6);text-align:center;color:var(--text-secondary);font-size:var(--text-sm-size)}.retrieval-btn{min-height:40px;margin-bottom:var(--space-3)}.retrieval-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-2)}.retrieval-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--border);border-radius:6px;background:var(--bg-secondary)}.retrieval-stack{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--text-sm-size);color:var(--text-primary)}.retrieval-meta{display:flex;gap:var(--space-3);color:var(--text-secondary);font-size:var(--text-xs-size)}.retrieval-rating{color:var(--accent);font-variant-numeric:tabular-nums}.consent-toggle{display:flex;align-items:center;gap:var(--space-2);min-height:44px;cursor:pointer;font-size:var(--text-sm-size);color:var(--text-primary)}.consent-toggle input[type=checkbox]{width:20px;height:20px;cursor:pointer}@media (max-width: 640px){.learning-modal{width:100vw;max-height:100vh;border-radius:0}.learning-tab{padding:var(--space-2) var(--space-3)}}.hidden{display:none!important}.library-container{display:flex;flex-direction:column;width:100%;height:100%}.library-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0000008c;backdrop-filter:blur(2px)}.library-modal{display:flex;flex-direction:column;width:min(1080px,96vw);max-height:90vh;background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 40px #00000059;overflow:hidden}.library-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--border);background:var(--bg-secondary)}.library-title{font-size:var(--text-lg-size);font-weight:var(--text-lg-weight);margin:0}.library-actions{display:flex;gap:var(--space-2)}.library-close{min-width:44px;min-height:44px}.library-search{margin:var(--space-3) var(--space-4);min-height:44px;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:6px;background:var(--bg-secondary);color:var(--text-primary);font-size:var(--text-sm-size)}.library-search::placeholder{color:var(--text-tertiary)}.library-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:0 var(--space-4) var(--space-2)}.library-chip{min-height:44px;padding:0 var(--space-3);border:1px solid var(--border);border-radius:999px;background:var(--bg-secondary);color:var(--text-secondary);font-size:var(--text-xs-size);cursor:pointer;transition:background var(--duration-fast) var(--duration-fast-easing),color var(--duration-fast) var(--duration-fast-easing)}.library-chip:hover{background:var(--bg-tertiary);color:var(--text-primary)}.library-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.library-chip-tag{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3);padding:var(--space-4);overflow:auto;flex:1;align-content:start}.library-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:8px;background:var(--bg-secondary);overflow:hidden;transition:border-color var(--duration-fast) var(--duration-fast-easing),transform var(--duration-fast) var(--duration-fast-easing)}.library-card:hover{border-color:var(--accent)}.library-thumb{position:relative;width:100%;aspect-ratio:4 / 3;background:var(--bg-tertiary)}.library-thumb-img{width:100%;height:100%;object-fit:cover;display:block}.library-card-body{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3)}.library-card-name{font-size:var(--text-sm-size);font-weight:var(--text-sm-weight);color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-card-badge{align-self:flex-start;padding:2px var(--space-2);border-radius:4px;background:var(--bg-tertiary);color:var(--text-secondary);font-size:var(--text-xs-size);font-variant-numeric:tabular-nums}.library-card-badge.over-budget{background:var(--error);color:#fff}.library-card-visibility{align-self:flex-start;padding:2px var(--space-2);border-radius:4px;background:var(--bg-tertiary);color:var(--text-secondary);font-size:var(--text-xs-size)}.library-card-category{align-self:flex-start;padding:2px var(--space-2);border-radius:4px;background:var(--accent);color:#fff;font-size:var(--text-xs-size)}.library-card-tags{display:flex;flex-wrap:wrap;gap:var(--space-1)}.library-card-tag{padding:1px var(--space-1);border-radius:3px;background:var(--bg-tertiary);color:var(--text-tertiary);font-size:var(--text-xs-size)}.library-card-desc{color:var(--text-secondary);font-size:var(--text-xs-size);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.library-card-actions{display:flex;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-2) var(--space-3) var(--space-3);margin-top:auto}.library-card-action{min-height:44px;min-width:44px;flex:1 1 auto;white-space:nowrap}.library-card-delete{flex:0 0 auto}.library-empty{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-10) var(--space-4);text-align:center;color:var(--text-secondary)}.library-empty-text{font-size:var(--text-md-size);color:var(--text-primary);margin:0}.library-empty-hint{font-size:var(--text-sm-size);margin:0}.library-file-input{display:none}@media (max-width: 640px){.library-modal{width:100vw;max-height:100vh;border-radius:0}.library-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.library-card-actions{flex-direction:column}}
