:root{--bg:#0f1720;--panel:#17212b;--panel-2:#1e2b38;--border:#2a3a49;--border-strong:#3a4d5f;--text:#e7edf3;--muted:#9fb0c0;--primary:#2f7fe0;--primary-hover:#3a8cf0;--focus:#8ec0ff;--pos:#e0574b;--pos-bg:#3a1f1c;--neg:#35b37e;--neg-bg:#16301f;--warn-bg:#3a2f14;--warn-border:#6b581f;--warn-text:#f0e2bf;--radius-lg:16px;--radius:14px;--radius-md:10px;--radius-sm:8px;--shadow-sm:0 1px 1px #00000029, 0 2px 6px -1px #00000038;--shadow-md:0 1px 2px #0003, 0 6px 16px -4px #00000059;--shadow-lg:0 2px 4px #0000003d, 0 16px 40px -12px #0009;--ease-out:cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5}::selection{background:#2f7fe059}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.app{max-width:760px;margin:0 auto;padding:0 16px 48px}h1,h2,h3,.dropzone-title,.pipeline-title,.tile-title,.score-label,.queue-label{text-wrap:balance}p,li,figcaption,.subtitle,.muted,.selected-note,.score-range,.heatmap-caption,.tile-reason,.disclaimer-banner{text-wrap:pretty}.disclaimer-banner{background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--radius);color:var(--warn-text);margin:16px 0;padding:10px 14px;font-size:.9rem}.modal-overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;animation:overlay-in .18s var(--ease-out) backwards;background:#060a0eb8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);max-width:520px;max-height:calc(100dvh - 32px);box-shadow:var(--shadow-lg);animation:modal-in .22s var(--ease-out) backwards;padding:24px;overflow-y:auto}.modal h2{margin-top:0;font-size:1.25rem}.modal ul{padding-left:20px}.modal li{margin:4px 0}@keyframes overlay-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;filter:blur(3px);transform:translateY(8px)scale(.98)}}.app-header{margin:8px 0 20px}.app-header h1{letter-spacing:-.01em;margin:0;font-size:1.5rem}.subtitle{color:var(--muted);margin:4px 0 0}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin:16px 0;padding:18px}.card.queue,.card.pipeline,.card.result,.card.banner-error{animation:surface-in .24s var(--ease-out) backwards}@keyframes surface-in{0%{opacity:0;transform:translateY(6px)}}.banner-error{background:var(--pos-bg);color:#f4c9c4;border-color:#6b2b25}.ratelimit{margin:12px 0}.ratelimit-head{font-variant-numeric:tabular-nums;justify-content:space-between;gap:12px;margin-bottom:6px;font-size:.9rem;display:flex}.ratelimit-track{background:var(--panel-2);border-radius:999px;height:8px;overflow:hidden}.ratelimit-fill{background:var(--primary);height:100%;transition-property:width,background-color;transition-duration:.3s;transition-timing-function:var(--ease-out);border-radius:999px}.ratelimit-fill--low{background:var(--pos)}.tabs{gap:6px;margin-bottom:14px;display:flex}.tab{background:var(--panel-2);border:1px solid var(--border);min-height:40px;color:var(--muted);border-radius:var(--radius-sm);cursor:pointer;font:inherit;flex:1;padding:9px 12px;font-size:.92rem;transition-property:background-color,border-color,color;transition-duration:.15s;transition-timing-function:ease-out}.tab:hover:not(.tab--active){border-color:var(--border-strong);color:var(--text)}.tab--active{background:var(--primary);color:#fff;border-color:var(--primary)}.dropzone{border:2px dashed var(--border);border-radius:var(--radius-md);text-align:center;cursor:pointer;padding:32px 16px;transition-property:border-color,background-color;transition-duration:.18s;transition-timing-function:ease-out}.dropzone:hover:not(.dropzone--disabled){border-color:var(--border-strong)}.dropzone--over{border-color:var(--primary);background:#2f7fe014}.dropzone--disabled{opacity:.5;cursor:not-allowed}.dropzone-title{margin:0 0 4px;font-weight:600}.selected-note{margin:10px 0 0;font-size:.9rem}.sample-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;display:grid}.sample{border:2px solid var(--border);border-radius:var(--radius-md);cursor:pointer;background:var(--panel-2);aspect-ratio:1;padding:0;transition-property:border-color,box-shadow;transition-duration:.15s;transition-timing-function:ease-out;position:relative;overflow:hidden}.sample:hover:not(:disabled):not(.sample--active){border-color:var(--border-strong);box-shadow:var(--shadow-md)}.sample:disabled{cursor:not-allowed;opacity:.6}.sample img{object-fit:cover;width:100%;height:100%;display:block}.sample--active{border-color:var(--primary);box-shadow:0 0 0 2px #2f7fe066}.sample-placeholder{height:100%;color:var(--muted);justify-content:center;align-items:center;padding:8px;font-size:.8rem;display:flex}.tag{color:#fff;border-radius:999px;padding:2px 6px;font-size:.68rem;position:absolute;bottom:6px;left:6px;box-shadow:0 1px 3px #00000073}.tag--normal{background:#35b37eeb}.tag--pneumonia{background:#e0574beb}.preview-card{text-align:center}.preview-img{border-radius:var(--radius-md);outline-offset:-1px;outline:1px solid #ffffff1f;max-width:100%;max-height:340px}.actions{flex-wrap:wrap;align-items:center;gap:10px;margin:16px 0 4px;display:flex}.btn{border:1px solid var(--border);background:var(--panel-2);min-height:40px;color:var(--text);border-radius:var(--radius-sm);cursor:pointer;font:inherit;justify-content:center;align-items:center;padding:10px 16px;font-size:.95rem;transition-property:background-color,border-color,color,box-shadow,transform;transition-duration:.15s;transition-timing-function:ease-out;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--primary)}.btn:active:not(:disabled){transform:scale(.97)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-lg{min-height:46px;padding:12px 22px;font-size:1rem}.btn-ghost{background:0 0}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{min-height:32px;padding:5px 10px;font-size:.82rem;position:relative}.btn-sm:after{content:"";position:absolute;inset:-4px -6px}.queue{align-items:flex-start;gap:16px;display:flex}.queue .spinner{margin-top:-1px}.queue-text{flex:1}.queue-label{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.spinner{border:3px solid var(--panel-2);border-top-color:var(--primary);border-radius:50%;flex-shrink:0;width:28px;height:28px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.score-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.score-label{font-weight:600}.score-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:2rem;font-weight:700}.score-track{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;height:12px;margin-top:10px;position:relative}.score-band{background:#2f7fe073;border-radius:999px;position:absolute;top:0;bottom:0}.score-mark{background:var(--primary);border-radius:2px;width:3px;position:absolute;top:-3px;bottom:-3px;transform:translate(-50%)}.score-scale{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:4px;font-size:.7rem;display:flex}.score-range{color:var(--muted);margin:10px 0 8px;font-size:.88rem}.view-list{animation:list-in .2s var(--ease-out) backwards;margin:10px 0 0;padding:0;font-size:.82rem;list-style:none}@keyframes list-in{0%{opacity:0;transform:translateY(-4px)}}.view-list li{border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;justify-content:space-between;padding:3px 0;display:flex}.honesty{background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--radius-md);color:var(--warn-text);margin-top:16px;padding:12px 14px;font-size:.88rem}.honesty p{margin:0 0 8px}.honesty p:last-child{margin-bottom:0}.heatmap-area{margin-top:16px}.heatmap-stack{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius-md);background:#000;width:100%;max-width:420px;margin:0 auto;position:relative;overflow:hidden}.heatmap-base,.heatmap-overlay{object-fit:fill;width:100%;height:100%;position:absolute;inset:0}.heatmap-overlay{transition-property:opacity;transition-duration:.1s;transition-timing-function:linear}.slider{max-width:420px;color:var(--muted);flex-direction:column;gap:2px;margin:10px auto 0;font-size:.85rem;display:flex}.slider input[type=range]{appearance:none;cursor:pointer;width:100%;height:40px;accent-color:var(--primary);background:0 0;margin:0;padding:0}.slider input[type=range]::-webkit-slider-runnable-track{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;height:6px}.slider input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--primary);border:2px solid var(--panel);width:18px;height:18px;box-shadow:var(--shadow-sm);border-radius:50%;margin-top:-5px;transition-property:transform,background-color;transition-duration:.12s;transition-timing-function:ease-out}.slider input[type=range]:active::-webkit-slider-thumb{transform:scale(1.12)}.slider input[type=range]::-moz-range-track{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;height:6px}.slider input[type=range]::-moz-range-thumb{background:var(--primary);border:2px solid var(--panel);width:16px;height:16px;box-shadow:var(--shadow-sm);border-radius:50%}.heatmap-caption{text-align:left;max-width:420px;margin:10px auto 0;font-size:.82rem}.result-footer{font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:18px;display:flex}.pipeline-head{margin-bottom:14px}.pipeline-title{margin:0;font-size:1.05rem}.pipeline-sub{margin:4px 0 0;font-size:.85rem}.chain{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-wrap:nowrap;align-items:flex-start;margin:0;padding:0 0 6px;list-style:none;display:flex;overflow-x:auto}.chain::-webkit-scrollbar{height:8px}.chain::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}.chain::-webkit-scrollbar-track{background:0 0}.chain-item{align-items:flex-start;display:flex}.arrow{flex-shrink:0;width:26px;height:118px;position:relative}.arrow:before{content:"";background:var(--primary);height:2px;margin-top:-1px;position:absolute;top:50%;left:2px;right:8px}.arrow:after{content:"";border-top:2px solid var(--primary);border-right:2px solid var(--primary);width:8px;height:8px;position:absolute;top:50%;right:6px;transform:translateY(-50%)rotate(45deg)}.arrow--pending:before{background:var(--border)}.arrow--pending:after{border-color:var(--border)}.tile{width:118px;animation:tile-in .35s var(--ease-out) backwards;flex-shrink:0;margin:0}@keyframes tile-in{0%{opacity:0;transform:translate(-6px)}}.tile--pending{opacity:.45;animation:none}.tile-frame{border:1px solid var(--border);border-radius:var(--radius-md);background:#000;justify-content:center;align-items:center;width:118px;height:118px;transition-property:border-color,box-shadow;transition-duration:.15s;transition-timing-function:ease-out;display:flex;position:relative;overflow:hidden}.tile-frame img{object-fit:contain;width:100%;height:100%;display:block}.tile--explored .tile-frame{border-style:dashed;border-color:#4a5b6b}.tile--running .tile-frame{border-color:var(--primary);box-shadow:0 0 0 2px #2f7fe040}.tile--clickable{cursor:zoom-in}.tile--clickable:hover .tile-frame{border-color:var(--primary)}.tile:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:var(--radius-md)}.spinner--sm{border-width:2px;width:22px;height:22px}.tile-skip{color:var(--muted);font-size:.75rem}.tile-wait{border:2px dashed var(--border);border-radius:50%;width:26px;height:26px}.tile-caption{flex-direction:column;gap:2px;margin-top:6px;font-size:.75rem;line-height:1.3;display:flex}.tile-title{font-weight:600}.tile-ms,.tile-reason{color:var(--muted);font-size:.7rem}.tile-ms{font-variant-numeric:tabular-nums}.chip{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;align-self:flex-start;padding:1px 6px;font-size:.65rem}.chip--explored{border-color:var(--warn-border);background:var(--warn-bg);color:var(--warn-text)}.tile-note{color:var(--warn-text);background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--radius-sm);padding:8px 10px;font-size:.85rem}.modal--zoom{flex-direction:column;max-width:560px;padding:0;display:flex;overflow:hidden}.modal-head{flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:16px 16px 10px 20px;display:flex}.modal-head h2{margin:0;font-size:1.1rem}.modal-close{border:1px solid var(--border);border-radius:var(--radius-sm);width:40px;height:40px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;transition-property:background-color,border-color,color,transform;transition-duration:.15s;transition-timing-function:ease-out;display:flex}.modal-close span{margin-top:-2px;display:block}.modal-close:hover{color:var(--text);border-color:var(--primary)}.modal-close:active{transform:scale(.94)}.modal-scroll{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex:1;min-height:0;padding:0 20px 12px;overflow-y:auto}.modal-foot{border-top:1px solid var(--border);flex-shrink:0;justify-content:flex-end;padding:12px 20px 16px;display:flex}.zoom-img{object-fit:contain;border-radius:var(--radius-md);outline-offset:-1px;background:#000;outline:1px solid #ffffff1f;width:100%;max-height:55vh;display:block}@media (width<=560px){.chain,.chain-item{flex-direction:column;align-items:center;overflow-x:visible}.arrow{width:26px;height:26px}.arrow:before{width:2px;height:auto;margin:0 0 0 -1px;inset:2px auto 8px 50%}.arrow:after{inset:auto auto 6px 50%;transform:translate(-50%)rotate(135deg)}.tile-caption{text-align:center;align-items:center}.chip{align-self:center}}.fork{align-items:flex-start;display:flex}.fork-root{flex-shrink:0}.fork-rows{--mid:59px;--fork-gap:18px;--spine:26px;--spine-x:10px;gap:var(--fork-gap);padding-left:var(--spine);flex-direction:column;min-width:0;display:flex;position:relative}.fork-rows:before{content:"";left:0;top:calc(var(--mid) - 1px);width:var(--spine-x);background:var(--primary);height:2px;position:absolute}.fork-row--first:before{content:"";left:calc(-1 * var(--spine) + var(--spine-x));top:calc(var(--mid) - 1px);bottom:calc(-1 * (var(--fork-gap) + var(--mid) - 1px));background:var(--primary);width:2px;position:absolute}.fork-row:after{content:"";left:calc(-1 * var(--spine) + var(--spine-x));top:calc(var(--mid) - 1px);width:calc(var(--spine) - var(--spine-x));background:var(--primary);height:2px;position:absolute}.fork-row{margin:0;position:relative;overflow:visible}@media (width<=560px){.fork{flex-direction:column;align-items:center}.fork-rows{align-items:center;padding-left:0}.fork-rows:before,.fork-row--first:before,.fork-row:after{display:none}}.aside-card{box-shadow:none;background:0 0;border-style:dashed}.aside-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.aside-title{margin:0;font-size:1.05rem}.aside-head .chip{align-self:center}.aside-sub{margin:4px 0 0;font-size:.85rem}.aside-figure{margin:14px 0 0}.aside-img{border-radius:var(--radius-md);outline-offset:-1px;background:#000;outline:1px solid #ffffff1f;width:100%;max-width:360px;margin:0 auto;display:block}.aside-ms{text-align:center;font-variant-numeric:tabular-nums;margin:6px 0 0;font-size:.75rem}.aside-note{margin:14px 0 0}.muted{color:var(--muted)}.center{text-align:center}.error-text{color:#f4a79f;margin:8px 0 0;font-size:.88rem}.app-footer{border-top:1px solid var(--border);color:var(--muted);text-align:center;margin-top:32px;padding-top:16px;font-size:.8rem}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.btn:active:not(:disabled),.modal-close:active{transform:none}.slider input[type=range]:active::-webkit-slider-thumb{transform:none}.spinner{animation-duration:1.6s!important;animation-iteration-count:infinite!important}}
