:root{--bg: #0e1116;--panel: #161b22;--panel-2: #1c2330;--border: #2a3240;--text: #e6edf3;--muted: #8b98a9;--self: #4aa3ff;--ref: #ff8f3f;--good: #3fb950;--bad: #f85149;--accent: #7c5cff;--font-ui: "IBM Plex Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif;--radius: 10px;--radius-sm: 8px;--pad-panel: 18px;--h1-size: 22px;--h2-size: 15px;--h3-size: 13px;--control-h: 38px;--focus-ring: 0 0 0 2px color-mix(in srgb, var(--accent) 45%, transparent);--scrollbar-track: var(--panel);--scrollbar-thumb: #3a4658}*{box-sizing:border-box}html{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:var(--scrollbar-track)}*::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px;border:2px solid var(--scrollbar-track)}*::-webkit-scrollbar-thumb:hover{background:#4a586c}body{margin:0;font-family:var(--font-ui);font-weight:400;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app{max-width:1400px;margin:0 auto;padding:0 20px 60px}.app-compare{max-width:none;height:100vh;height:100dvh;display:flex;flex-direction:column;padding-bottom:0;overflow:hidden}.app-compare header.top{flex-shrink:0;margin-bottom:12px}.compare-page{flex:1;min-height:0;display:flex;flex-direction:column;gap:0}.compare-page>.compare-select{flex-shrink:0;margin-bottom:10px}.compare-page>.workspace-bar{flex-shrink:0;margin-bottom:10px}.workspace-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.workspace-bar .segmented{margin-bottom:0}.workspace-bar .workspace-presets button{min-width:3.5em}.workspace-tiles{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}.workspace-tiles .ghost{padding:5px 10px;font-size:12px}.compare-select.is-collapsed{padding-top:10px;padding-bottom:10px}.compare-select-toggle{display:flex;align-items:center;gap:8px;width:100%;margin:0;padding:0;border:none;background:transparent;color:inherit;cursor:pointer;text-align:left;font:inherit;min-width:0}.compare-select-toggle:hover .compare-select-title{color:var(--text)}.compare-select-chevron{color:var(--muted);font-size:12px;width:1em;flex-shrink:0}.compare-select-title{font-size:var(--h2-size);font-weight:600;flex-shrink:0}.compare-select.is-collapsed .compare-select-title{font-size:13px;color:var(--muted)}.compare-select-summary{display:flex;align-items:baseline;gap:6px;min-width:0;margin-left:4px;font-size:13px;color:var(--muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.compare-select-trick{flex-shrink:0;color:var(--text);font-weight:600}.compare-select-trick:after{content:"·";margin-left:6px;color:var(--muted);font-weight:400}.compare-select-summary .tag-self,.compare-select-summary .tag-ref{flex-shrink:0;font-weight:600}.compare-select-vs{flex-shrink:0;opacity:.7}.compare-select-body{margin-top:14px}.compare-workspace{flex:1;min-height:0;display:grid;gap:12px;align-items:stretch}.compare-workspace.player-left{grid-template-columns:minmax(0,1.25fr) minmax(280px,.95fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"player analysis"}.compare-workspace.player-left.has-markers-dock{grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"player analysis" "markers analysis"}.compare-workspace.player-top{grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);grid-template-rows:minmax(200px,.42fr) minmax(0,1fr);grid-template-areas:"player player" "analysis analysis"}.compare-workspace.player-top.has-skeleton-dock{grid-template-areas:"player player" "skeleton analysis"}.compare-tile{min-width:0;min-height:0}.compare-tile-player{grid-area:player;display:flex;flex-direction:column}.compare-tile-markers{grid-area:markers}.compare-tile-skeleton{grid-area:skeleton;display:flex;flex-direction:column;min-height:0}.compare-tile-analysis{grid-area:analysis;min-height:0;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding-right:2px;padding-bottom:8px}.compare-workspace.analysis-tabs .compare-tile-analysis{overflow:hidden}.compare-analysis-tabs{display:flex;gap:2px;flex-shrink:0;padding:3px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.compare-analysis-tabs button{flex:1;background:transparent;border:none;color:var(--muted);padding:7px 8px;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:500;white-space:nowrap}.compare-analysis-tabs button:hover{color:var(--text)}.compare-analysis-tabs button.active{background:var(--panel-2);color:var(--text);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 70%,var(--border))}.compare-analysis-tab-body{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column}.compare-analysis-tab-body>.panel,.compare-tile-skeleton>.panel,.compare-tile-player>.panel{margin-bottom:0}.compare-panel-fill{flex:1;min-height:0;display:flex;flex-direction:column}.compare-panel-fill .skeleton-pair,.compare-panel-fill .canvas-box{flex:1;min-height:220px}.compare-panel-fill .skeleton-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.compare-panel-fill .skeleton-pair>div{min-width:0;min-height:0;display:flex;flex-direction:column}.compare-panel-fill .skeleton-pair .canvas-box{flex:1}.compare-tile-player .compare-player-panel{flex:1;min-height:0;margin:0;display:flex;flex-direction:column}.compare-player-panel-inner{display:flex;flex-direction:column;min-height:0;flex:1;height:100%}.compare-player-panel-inner>.row,.compare-player-panel-inner .playback-bar,.compare-player-panel-inner>.hint{flex-shrink:0}.compare-player-panel.is-maximized{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;margin:0;border-radius:0;border:none;display:flex;align-items:center;justify-content:center;height:100vh;height:100dvh;max-height:100dvh;padding:16px 20px;background:color-mix(in srgb,var(--bg) 78%,black);box-sizing:border-box}.compare-player-panel.is-maximized .compare-player-panel-inner{display:flex;flex-direction:column;align-items:stretch;height:100%;max-height:100%;width:100%;max-width:min(1680px,100%);min-width:0;padding:14px 16px 16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-sizing:border-box}.compare-player-panel.is-maximized .compare-player-panel-inner>.row{flex-shrink:0;width:100%}.compare-player-panel.is-maximized .player-wrap.is-expanded{flex:1 1 auto;min-height:0;width:100%;display:flex;justify-content:center;align-items:center;gap:16px}.compare-player-panel.is-maximized .player-wrap.is-expanded .player-slot{overflow:hidden;border-radius:var(--radius-sm);background:#000}.compare-player-panel.is-maximized .player-wrap.is-expanded video{display:block;width:100%;height:100%;border-radius:0;object-fit:contain;background:#000}.compare-player-panel.is-maximized .playback-bar{flex-shrink:0;margin-top:12px;width:100%}body:has(.compare-player-panel.is-maximized){overflow:hidden}.compare-pane-left .panel:last-child{margin-bottom:0}.compare-pane-right{min-height:0;overflow-x:hidden;overflow-y:auto;padding-right:2px;padding-bottom:20px;display:flex;flex-direction:column}.compare-pane-right .panel:last-child{margin-bottom:0}.compare-pane-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 8px 2px}.playback-bar{display:flex;flex-direction:column;gap:10px;margin-top:12px}.playback-bar-scrub{display:flex;align-items:center;gap:10px;width:100%}.playback-bar-scrub .scrub{flex:1;width:100%;min-width:0}.playback-bar-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.playback-play{min-width:40px;padding-left:12px;padding-right:12px;font-size:13px;line-height:1;letter-spacing:0}.playback-max{margin-left:auto;min-width:40px;font-size:15px;line-height:1}.playback-bar .meta{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}@media (max-width: 960px){.app-compare{height:auto;max-height:none;overflow:visible;padding-bottom:60px}.compare-page{display:block}.compare-workspace{display:flex;flex-direction:column;height:auto}.compare-tile-player,.compare-tile-markers,.compare-tile-skeleton,.compare-tile-analysis{grid-area:auto}.compare-tile-player .compare-player-panel{min-height:52vh}.compare-workspace.analysis-tabs .compare-tile-analysis,.compare-analysis-tab-body{overflow:visible}}header.top{display:flex;align-items:center;gap:20px;padding:14px 0;border-bottom:1px solid var(--border);margin-bottom:24px}header.top h1{font-size:var(--h1-size);font-weight:700;margin:0;letter-spacing:-.02em;line-height:1.2}header.top .sub{color:var(--muted);font-size:12px;font-weight:400;margin-top:2px}nav.tabs{display:flex;gap:2px;margin-left:auto;padding:3px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}nav.tabs button{background:transparent;border:none;color:var(--muted);padding:8px 14px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:500}nav.tabs button:hover{color:var(--text)}nav.tabs button.active{background:var(--panel-2);color:var(--text);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 70%,var(--border))}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:var(--pad-panel);margin-bottom:20px}.panel h2{margin:0 0 14px;font-size:var(--h2-size);font-weight:600;letter-spacing:.01em}.panel h3{margin:0 0 10px;font-size:var(--h3-size);font-weight:500;color:var(--muted);letter-spacing:.02em}.row{display:flex;gap:16px;flex-wrap:wrap}.col{flex:1;min-width:0}label.field{display:block;margin-bottom:12px;font-size:12px;font-weight:500;color:var(--muted)}label.field span{display:block;margin-bottom:5px}input,select,button,textarea{font-family:var(--font-ui);font-size:14px}input[type=text],input[type=number],input[type=url],select,textarea{width:100%;height:var(--control-h);background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:0 12px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}textarea{height:auto;padding:10px 12px;resize:vertical}input[type=text]:focus,input[type=number]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:var(--focus-ring)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%238b98a9' d='M1.2 1.2L6 6l4.8-4.8'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;margin:0 6px 0 0;vertical-align:-3px;border:1px solid var(--border);border-radius:4px;background:var(--panel-2);cursor:pointer;position:relative}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";position:absolute;left:4px;top:1px;width:5px;height:9px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}input[type=checkbox]:focus-visible{box-shadow:var(--focus-ring)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:6px;background:var(--border);border-radius:999px;outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--text);border:2px solid var(--accent);cursor:pointer}input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--text);border:2px solid var(--accent);cursor:pointer}.file-picker{display:flex;align-items:center;gap:10px;min-height:var(--control-h);padding:6px 6px 6px 12px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.file-picker input[type=file]{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0,0,0,0)}.file-picker-btn{flex-shrink:0;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-size:13px;font-weight:500;cursor:pointer}.file-picker:hover .file-picker-btn{border-color:color-mix(in srgb,var(--accent) 50%,var(--border))}.file-picker-name{flex:1;min-width:0;font-size:13px;color:var(--muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.file-picker-name.has-file{color:var(--text)}.segmented{display:inline-flex;gap:2px;padding:3px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px}.segmented button{background:transparent;border:none;color:var(--muted);padding:7px 14px;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500}.segmented button:hover{color:var(--text)}.segmented button.active{background:var(--panel);color:var(--text);box-shadow:inset 0 0 0 1px var(--border)}.check-label{display:inline-flex;align-items:center;font-size:13px;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}label.field+button.ghost{margin-top:2px}button.primary{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);padding:9px 16px;cursor:pointer;font-size:14px;font-weight:500}button.primary:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:var(--radius-sm);padding:7px 12px;cursor:pointer;font-size:13px;font-weight:500}button.ghost:hover{color:var(--text)}button.ghost:disabled{opacity:.45;cursor:not-allowed}button.ghost.is-toggle-on{color:var(--text);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,var(--panel-2))}button.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 55%,var(--border))}button.danger:hover{color:var(--bad);border-color:var(--bad)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.card{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:8px}.card.is-selected-a{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--self) 55%,transparent)}.card.is-selected-b{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ref) 55%,transparent)}.card.is-selected-a.is-selected-b{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--self) 45%,transparent),inset 0 0 0 2px color-mix(in srgb,var(--ref) 35%,transparent)}.card .title{font-weight:600;font-size:14px;word-break:break-word;display:flex;align-items:flex-start;gap:8px}.card .title-text{flex:1;min-width:0}.card .meta{font-size:12px;color:var(--muted)}.card .actions{display:flex;gap:8px;margin-top:auto;flex-wrap:wrap}.card .actions-primary{display:flex;gap:6px;flex-wrap:nowrap;margin-top:auto}.card .actions-primary>button{flex:1 1 0;min-width:0;padding:6px 8px;font-size:12px;white-space:nowrap}.card .actions-secondary{display:flex;gap:8px;flex-wrap:wrap;padding-top:8px;border-top:1px solid var(--border)}.card-head{display:flex;align-items:center;gap:6px}.card-drag-handle{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:4px;color:var(--muted);cursor:grab;-webkit-user-select:none;user-select:none;font-size:14px;line-height:1}.card-drag-handle:hover:not(.is-disabled){color:var(--text);background:color-mix(in srgb,var(--border) 55%,transparent)}.card-drag-handle:active:not(.is-disabled){cursor:grabbing}.card-drag-handle.is-disabled{opacity:.35;cursor:not-allowed}.card-reorder{display:inline-flex;gap:2px;flex-shrink:0}.card-reorder-btn{padding:2px 6px!important;font-size:12px!important;min-width:0;line-height:1.2}.card.is-dragging{opacity:.55}.card.is-drag-over{outline:1px solid var(--accent);outline-offset:2px}.library-select-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 16px;margin-bottom:16px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.library-select-slots{display:flex;align-items:baseline;gap:10px;flex:1;min-width:0;flex-wrap:wrap;font-size:13px}.library-select-slots .slot{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.library-select-slots .slot.empty{color:var(--muted)}.library-trick-group.is-collapsed{padding-top:10px;padding-bottom:10px}.library-trick-toggle{display:flex;align-items:center;gap:8px;width:100%;margin:0;padding:0;border:none;background:transparent;color:inherit;cursor:pointer;text-align:left;font:inherit;min-width:0}.library-trick-toggle:hover .library-trick-name{color:var(--text)}.library-trick-chevron{color:var(--muted);font-size:12px;width:1em;flex-shrink:0}.library-trick-name{font-size:var(--h2-size);font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-trick-group.is-collapsed .library-trick-name{font-size:14px}.library-trick-count{flex-shrink:0;margin-left:auto;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.library-trick-group:not(.is-collapsed) .library-trick-toggle{margin-bottom:12px}.library-select-hint{flex:1;font-size:13px;color:var(--muted)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:500;border:1px solid var(--border)}.badge.self{color:var(--self);border-color:var(--self)}.badge.reference{color:var(--ref);border-color:var(--ref)}.badge.done{color:var(--good);border-color:var(--good)}.badge.error{color:var(--bad);border-color:var(--bad)}.badge.running,.badge.pending{color:var(--muted)}.tag-self{color:var(--self)}.tag-ref{color:var(--ref)}table.metrics{width:100%;border-collapse:collapse;font-size:13px}table.metrics th,table.metrics td{padding:8px 10px;text-align:right;border-bottom:1px solid var(--border)}table.metrics th:first-child,table.metrics td:first-child{text-align:left}table.metrics thead th{color:var(--muted);font-weight:500}.diff-good{color:var(--good)}.diff-bad{color:var(--bad)}.diff-neutral{color:var(--muted)}.phase-source-toggle{display:flex;gap:6px;flex-wrap:wrap}.phase-source-toggle .ghost{padding:5px 10px;font-size:12px}.metric-label-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;border:none;border-bottom:1px dotted var(--muted);background:transparent;color:inherit;font:inherit;cursor:help;text-align:left}.metric-label-btn:hover,.metric-label-btn.is-open,.metric-label-btn:focus-visible{color:var(--text);border-bottom-color:var(--accent)}.metric-label-btn:focus-visible{outline:1px solid var(--accent);outline-offset:2px;border-radius:2px}.metric-tooltip-pop{position:fixed;z-index:10000;max-width:min(320px,calc(100vw - 16px));padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:#1a2230;color:var(--text);font-size:12px;line-height:1.5;text-align:left;white-space:normal;pointer-events:none;box-shadow:0 10px 28px #00000073}.player-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px}.player-wrap.is-fitted{display:flex;justify-content:center;align-items:center;flex:1;min-height:160px;height:100%;gap:12px;background:#07090c;border-radius:var(--radius-sm)}.player-wrap.is-fitted.is-side{flex-direction:row}.player-wrap.is-fitted.is-stack{flex-direction:column}.player-wrap.is-fitted .player-slot{position:relative;overflow:hidden;border-radius:var(--radius-sm);background:#000}.player-wrap.is-fitted video{display:block;width:100%;height:100%;object-fit:contain;background:#000}.player-wrap .player-slot{position:relative;min-width:0;overflow:hidden;border-radius:var(--radius-sm);background:#000}.player-wrap video{display:block;width:100%;border-radius:var(--radius-sm);background:#000}.player-label{font-size:13px;margin-bottom:6px;font-weight:600}.player-wrap .player-slot .player-label{position:absolute;top:8px;left:8px;right:8px;z-index:1;display:flex;align-items:baseline;gap:6px;margin:0;padding:3px 8px;border-radius:4px;background:#0000008c;font-size:12px;pointer-events:none;min-width:0}.player-wrap .player-slot .player-label-slot{flex-shrink:0;font-weight:600}.player-wrap .player-slot .player-label-title{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--text);font-weight:500}.controls{display:flex;align-items:center;gap:12px;margin-top:12px}.controls input[type=range]{flex:1}.canvas-box{height:420px;background:#0a0d12;border-radius:var(--radius);overflow:hidden}.com-topdown-wrap .com-topdown-svg{width:100%;height:auto;display:block;border-radius:var(--radius)}.empty{color:var(--muted);padding:40px;text-align:center}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:48px 24px;text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--panel) 60%,transparent)}.empty-state-title{font-size:15px;font-weight:600;color:var(--text)}.empty-state-desc{font-size:13px;max-width:360px;line-height:1.5}.empty-state .primary{margin-top:8px}.spinner{width:28px;height:28px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-inline{display:inline-flex;align-items:center;gap:10px;color:var(--muted);font-size:13px}.loading-inline .spinner{width:16px;height:16px}.skeleton-block{background:linear-gradient(90deg,var(--panel-2) 25%,var(--border) 50%,var(--panel-2) 75%);background-size:200% 100%;animation:skeleton-shine 1.2s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes skeleton-shine{0%{background-position:100% 0}to{background-position:-100% 0}}.toast-host{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:1000;display:flex;flex-direction:column;gap:8px;pointer-events:none;width:min(420px,calc(100% - 32px))}.toast{pointer-events:auto;padding:12px 16px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 28px #00000059;font-size:13px;color:var(--text);animation:toast-in .2s ease}.toast.ok{border-color:color-mix(in srgb,var(--good) 45%,var(--border))}.toast.err{border-color:color-mix(in srgb,var(--bad) 45%,var(--border))}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:20px;animation:toast-in .15s ease}.modal{width:min(420px,100%);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:0 16px 48px #00000073}.modal h2{margin:0 0 10px;font-size:16px;font-weight:600}.modal p{margin:0 0 18px;font-size:13px;color:var(--muted);line-height:1.55}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.kbd-help{position:fixed;bottom:16px;right:16px;z-index:40}.kbd-help-panel{position:absolute;bottom:40px;right:0;width:260px;padding:12px 14px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 28px #00000059;font-size:12px;color:var(--muted);line-height:1.6}.kbd-help-panel strong{color:var(--text);font-weight:600}.kbd-help-toggle{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--panel);color:var(--muted);cursor:pointer;font-size:14px;font-weight:600}.kbd-help-toggle:hover{color:var(--text);border-color:var(--accent)}.error-text{color:var(--bad);font-size:13px}.hint{color:var(--muted);font-size:12px;margin-top:6px;line-height:1.45}.legend{display:flex;gap:16px;font-size:12px;margin-bottom:8px}.legend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px}.dot.self{background:var(--self)}.dot.ref{background:var(--ref)}.extract-progress{display:flex;flex-direction:column;gap:4px}.progress-bar{height:6px;background:var(--border);border-radius:999px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .3s ease}.progress-bar.indeterminate .progress-bar-fill{width:40%!important;animation:progress-indeterminate 1.4s ease-in-out infinite}@keyframes progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(350%)}}.progress-meta{display:flex;align-items:baseline;gap:8px;font-size:12px;color:var(--muted)}.progress-pct{min-width:2.5em;font-variant-numeric:tabular-nums}.progress-message{flex:1}.auth-gate{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-gate-panel{width:min(420px,100%)}.auth-gate-panel h2{margin-top:0}.auth-gate-panel .primary{margin-top:12px}
