@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-bg-base: #0f1b2d;--color-bg-sidebar: #162236;--color-bg-card: #1c2b3f;--color-bg-card-hover: #223450;--color-border: #2a3a52;--color-border-active: #3b82f6;--color-text-primary: #e8edf5;--color-text-secondary: #8a9bb5;--color-text-muted: #5d7090;--color-accent-start: #3b82f6;--color-accent-mid: #14b8a6;--color-accent-end: #22c55e;--color-accent-gradient: linear-gradient(135deg, var(--color-accent-start), var(--color-accent-mid));--color-accent-gradient-full: linear-gradient(135deg, var(--color-accent-start), var(--color-accent-mid), var(--color-accent-end));--color-glass-bg: rgba(15, 27, 45, .8);--color-glass-border: rgba(255, 255, 255, .08);--color-error: #f87171;--shadow-card: 0 4px 12px rgba(0, 0, 0, .3);--shadow-glow: 0 0 20px rgba(59, 130, 246, .15);font-family:Inter Variable,Inter,system-ui,sans-serif;color:var(--color-text-primary);background:var(--color-bg-base)}*{box-sizing:border-box}body{margin:0}.app-shell{display:flex;flex-direction:column;height:100vh}.tab-bar{display:flex;gap:2px;padding:0 16px;background:var(--color-bg-sidebar);border-bottom:1px solid var(--color-border);flex-shrink:0}.tab-btn{padding:10px 20px;font-family:inherit;font-size:.85rem;font-weight:600;color:var(--color-text-secondary);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s ease,border-color .15s ease}.tab-btn:hover{color:var(--color-text-primary)}.tab-btn.active{color:var(--color-text-primary);border-bottom-color:var(--color-border-active)}.app{display:grid;grid-template-columns:240px 1fr;flex:1;min-height:0}.sidebar{padding:16px;background:var(--color-bg-sidebar);box-shadow:4px 0 24px #0000004d;overflow-y:auto;display:flex;flex-direction:column}.main-area{display:flex;flex-direction:column;min-height:0}.subtitle{margin-top:4px;color:var(--color-text-secondary)}.version{font-size:.75rem;color:var(--color-text-muted);font-weight:500}.patient-list-container{margin-top:16px;flex:1;min-height:0;display:flex;flex-direction:column}.patient-search{width:100%;padding:8px 10px;border-radius:8px;border:1px solid var(--color-border);background:var(--color-bg-card);color:var(--color-text-primary);font-family:inherit;font-size:.85rem;outline:none;transition:border-color .15s ease}.patient-search::placeholder{color:var(--color-text-muted)}.patient-search:focus{border-color:var(--color-border-active)}.patient-list{list-style:none;padding:0;margin:8px 0 0;overflow-y:auto;flex:1;min-height:0}.patient-item{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:8px;cursor:pointer;transition:all .15s ease;content-visibility:auto;contain-intrinsic-size:auto 36px}.patient-item:hover{background:var(--color-bg-card-hover)}.patient-item.active{background:var(--color-bg-card);border-left:3px solid var(--color-border-active);box-shadow:var(--shadow-glow)}.patient-name{font-size:.85rem;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.patient-count{font-size:.7rem;font-weight:600;color:var(--color-text-muted);background:var(--color-bg-card);padding:2px 7px;border-radius:10px;flex-shrink:0;margin-left:8px}.patient-item.active .patient-count{background:#3b82f626;color:#60a5fa}.slide-strip{height:120px;flex-shrink:0;display:flex;gap:12px;padding:12px 16px;overflow-x:auto;background:var(--color-bg-sidebar);border-top:1px solid var(--color-border)}.slide-strip-item{display:inline-flex;flex-direction:column;align-items:center;gap:6px;padding:0;border:2px solid transparent;border-radius:10px;background:none;cursor:pointer;flex-shrink:0;font-family:inherit;transition:border-color .15s ease}.slide-strip-item:hover{border-color:#3b82f64d}.slide-strip-item.active{border-color:var(--color-border-active);box-shadow:var(--shadow-glow)}.slide-strip-item img{width:72px;height:72px;object-fit:cover;border-radius:6px}.slide-strip-name{font-size:.7rem;color:var(--color-text-secondary);max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error{color:var(--color-error);font-size:.9rem}.error p{margin:0 0 6px}.retry-btn{border:1px solid var(--color-error);border-radius:6px;padding:4px 12px;font-size:.8rem;font-weight:600;font-family:inherit;color:var(--color-error);background:#f871711a;cursor:pointer;transition:background .15s ease}.retry-btn:hover{background:#f8717133}.viewer{position:relative;flex:1;min-height:0;background:var(--color-bg-base);overflow:hidden}.viewer-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.viewer-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--color-text-muted);font-size:1.1rem;pointer-events:none;background:#0f1b2d66;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.viewer-controls{position:absolute;top:16px;right:16px;display:grid;gap:12px;z-index:2}.slide-info{background:var(--color-glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--color-glass-border);padding:10px 12px;border-radius:12px;color:var(--color-text-primary);font-size:.9rem;box-shadow:var(--shadow-card);display:grid;gap:4px}.connection-badge{display:flex;align-items:center;gap:6px;background:var(--color-glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--color-glass-border);padding:6px 10px;border-radius:8px;color:var(--color-text-primary);font-size:.75rem;font-weight:600;box-shadow:var(--shadow-card)}.connection-dot{width:8px;height:8px;border-radius:50%;animation:pulse-dot 1.5s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.minimap{position:absolute;left:16px;bottom:16px;width:180px;height:140px;border-radius:12px;overflow:hidden;border:1px solid var(--color-glass-border);box-shadow:var(--shadow-card);background:var(--color-glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:pointer;z-index:11}.minimap img{width:100%;height:100%;object-fit:cover;display:block}.minimap-viewport{position:absolute;border:2px solid rgba(59,130,246,.8);box-shadow:inset 0 0 0 1px #ffffff26;background:#3b82f614;pointer-events:none}.plugin-panel{margin-top:16px;padding-top:12px;border-top:1px solid var(--color-border);max-height:40%;overflow-y:auto}.plugin-panel-error{color:var(--color-error);font-size:.85rem}.plugin-error{color:var(--color-error);font-size:.85rem;margin-bottom:6px}.plugin-info{color:var(--color-text-secondary);font-size:.85rem;margin-bottom:6px}.plugin-section-header{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:8px}.plugin-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}.plugin-item{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:10px;padding:10px;transition:border-color .2s ease,box-shadow .2s ease}.plugin-item:hover{border-color:var(--color-border-active);box-shadow:var(--shadow-glow)}.plugin-card-header{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:4px}.plugin-name{font-weight:600;font-size:.85rem;color:var(--color-text-primary)}.plugin-badges{display:flex;gap:4px;flex-shrink:0}.plugin-badge{font-size:.6rem;font-weight:600;padding:1px 5px;border-radius:8px;text-transform:uppercase;letter-spacing:.03em}.plugin-badge--region{background:#3b82f61f;color:#60a5fa}.plugin-badge--wsi{background:#14b8a61f;color:#2dd4bf}.plugin-badge--loaded{background:#22c55e1f;color:#4ade80}.plugin-badge--unloaded{background:#ffffff0d;color:var(--color-text-muted)}.plugin-description{font-size:.75rem;color:var(--color-text-muted);line-height:1.4;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.plugin-input,.plugin-select{border-radius:6px;border:1px solid var(--color-border);background:#ffffff08;color:var(--color-text-primary);padding:4px 8px;font:inherit;font-size:.8rem}.plugin-input{width:100%}.plugin-select{flex:1;min-width:0}.plugin-input::placeholder{color:var(--color-text-muted)}.plugin-btn{border:none;border-radius:6px;padding:7px 12px;font-size:.78rem;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s ease;white-space:nowrap;width:100%}.plugin-btn:disabled{opacity:.5;cursor:default}.plugin-btn-primary{background:var(--color-accent-gradient);color:#fff}.plugin-btn-primary:hover:not(:disabled){box-shadow:0 0 16px #3b82f64d;transform:translateY(-1px)}.plugin-btn-secondary{background:#3b82f61a;color:var(--color-text-secondary)}.plugin-btn-secondary:hover:not(:disabled){background:#3b82f633}.plugin-btn-danger{background:#ef444426;color:#ef4444}.plugin-btn-danger:hover:not(:disabled){background:#ef444440}.psma-preset-section{display:grid;gap:6px;margin-top:4px}.psma-preset-row{display:flex;gap:6px;align-items:center}.psma-delete-btn{background:none;border:none;color:var(--color-text-muted);font-size:.9rem;cursor:pointer;padding:2px 4px;font-family:inherit;line-height:1;flex-shrink:0}.psma-delete-btn:hover:not(:disabled){color:var(--color-error)}.psma-delete-btn:disabled{opacity:.5;cursor:default}.psma-create-toggle{display:flex;align-items:center;gap:4px;font-size:.72rem;color:var(--color-text-muted);cursor:pointer;padding:2px 0;-webkit-user-select:none;user-select:none}.psma-create-toggle:hover{color:var(--color-text-secondary)}.psma-create-row{display:flex;gap:6px}.psma-create-row .plugin-btn{width:auto;flex-shrink:0}@keyframes progress-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.plugin-progress-shell{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:10px;padding:10px;margin-bottom:10px}.plugin-progress{display:flex;align-items:center;gap:8px}.plugin-progress-bar{flex:1;height:8px;border-radius:4px;background:var(--color-border);overflow:hidden}.plugin-progress-fill{height:100%;background:linear-gradient(90deg,var(--color-accent-start),var(--color-accent-mid),var(--color-accent-start));background-size:200% 100%;border-radius:4px;transition:width .3s ease;animation:progress-shimmer 2s linear infinite}.plugin-progress-text{font-size:.8rem;font-weight:600;color:var(--color-text-secondary);min-width:36px;text-align:right}.plugin-progress-meta{margin-top:6px;display:grid;gap:2px}.plugin-progress-stage{font-size:.75rem;font-weight:600;color:var(--color-text-primary)}.plugin-progress-detail,.plugin-progress-timings{font-size:.7rem;color:var(--color-text-secondary);line-height:1.35}.measurements-panel{position:absolute;bottom:16px;right:16px;width:280px;max-height:320px;overflow-y:auto;background:var(--color-glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--color-glass-border);border-radius:12px;box-shadow:var(--shadow-card);z-index:12}.measurements-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--color-border)}.measurements-title{font-weight:600;font-size:.9rem;color:var(--color-text-primary)}.measurements-close{background:none;border:none;font-size:1.2rem;color:var(--color-text-muted);cursor:pointer;padding:0 4px;line-height:1}.measurements-close:hover{color:var(--color-text-primary)}.measurements-body{padding:10px 12px}.measurements-meta{display:flex;justify-content:space-between;font-size:.8rem;color:var(--color-text-secondary);margin-bottom:8px}.measurements-time{color:var(--color-text-muted)}.measurements-table{width:100%;border-collapse:collapse;font-size:.8rem}.measurements-table td{padding:3px 0}.measurements-key{color:var(--color-text-secondary);padding-right:12px}.measurements-value{color:var(--color-text-primary);font-weight:500;text-align:right}.measurements-histograms{display:flex;flex-wrap:wrap;gap:6px 12px;margin-bottom:8px}.sparkline-row{display:flex;flex-direction:column;align-items:center;gap:2px}.sparkline-label{font-size:.65rem;color:var(--color-text-secondary);text-transform:capitalize}.sparkline-svg{display:block;border-radius:2px;background:#ffffff08}.measurements-group{margin-top:6px}.measurements-row{display:flex;justify-content:space-between;font-size:.8rem;padding:1px 0}.measurements-indent-1{padding-left:8px}.measurements-indent-2{padding-left:16px}.measurements-subtitle{font-weight:600;font-size:.8rem;color:var(--color-text-primary);margin:8px 0 4px}.measurements-annotation-row{display:grid;grid-template-columns:10px 1fr auto;gap:6px;align-items:center;font-size:.8rem;padding:2px 0}.measurements-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.measurements-label{color:var(--color-text-primary)}.measurements-count{font-weight:600;color:var(--color-text-primary);text-align:right}.measurements-total{border-top:1px solid var(--color-border);margin-top:4px;padding-top:4px}.measurements-annotations{margin-top:4px}.object-size-panel{position:absolute;bottom:16px;right:304px;width:312px;background:var(--color-glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--color-glass-border);border-radius:12px;box-shadow:var(--shadow-card);z-index:12}.object-size-body{padding:8px 12px 12px}.object-size-summary{font-size:.8rem;color:var(--color-text-secondary);margin-bottom:6px}.object-size-svg{display:block}.debug-panel{position:absolute;top:16px;left:16px;z-index:12;width:264px;background:var(--color-glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--color-glass-border);border-radius:10px;box-shadow:var(--shadow-card);padding:8px 10px;font-family:SF Mono,Cascadia Mono,Fira Code,monospace;font-size:1rem;line-height:1.5;color:var(--color-text-secondary);pointer-events:none;-webkit-user-select:none;user-select:none}.debug-header{display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:1.05rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;pointer-events:auto}.debug-sep{border-top:1px solid var(--color-glass-border);margin:3px 0}.debug-row{display:flex;gap:4px;align-items:baseline;flex-wrap:wrap}.debug-label{color:var(--color-text-secondary);min-width:36px}.debug-value{color:var(--color-text-primary);font-weight:600;margin-right:6px}.debug-accent{color:#93c5fd}.debug-dim{color:var(--color-text-secondary);font-weight:400}.debug-help-btn{width:20px;height:20px;border-radius:50%;border:1px solid var(--color-glass-border);background:#ffffff0f;color:var(--color-text-secondary);font-size:.7rem;font-weight:700;font-family:inherit;cursor:pointer;pointer-events:auto;display:grid;place-items:center;padding:0;line-height:1;transition:background .15s ease,color .15s ease}.debug-help-btn:hover{background:#ffffff1f;color:var(--color-text-primary)}.debug-help{max-height:320px;overflow-y:auto;padding-top:4px;pointer-events:auto}.debug-help-item{margin-bottom:6px}.debug-help-name{font-weight:700;font-size:.85rem;color:#93c5fd}.debug-help-desc{font-size:.8rem;color:var(--color-text-secondary);line-height:1.35}@media (max-width: 900px){.app{grid-template-columns:1fr}.sidebar{box-shadow:0 4px 24px #0000004d}.viewer-controls{position:static;margin:12px;grid-auto-flow:column;justify-content:space-between}.minimap{width:140px;height:110px}.slide-strip{height:100px}.slide-strip-item img{width:56px;height:56px}}.preprocess-search{width:100%;padding:6px 10px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg-card);color:var(--color-text-primary);font-size:12px;margin-bottom:8px;box-sizing:border-box}.preprocess-search::placeholder{color:var(--color-text-muted)}.preprocess-file-list{max-height:200px;overflow-y:auto;margin-bottom:8px;border:1px solid var(--color-border);border-radius:6px}.preprocess-file-item{display:flex;align-items:center;gap:6px;padding:5px 8px;font-size:12px;color:var(--color-text-secondary);cursor:pointer;border-bottom:1px solid var(--color-border);transition:background-color .15s}.preprocess-file-item:last-child{border-bottom:none}.preprocess-file-item:hover{background:var(--color-bg-card-hover)}.preprocess-file-item.selected{background:#3b82f61a}.preprocess-file-item input[type=checkbox]{flex-shrink:0;accent-color:var(--color-border-active)}.preprocess-file-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-primary)}.preprocess-file-size{flex-shrink:0;color:var(--color-text-muted);font-size:11px}.preprocess-status-badge{flex-shrink:0;font-size:10px;font-weight:600;padding:1px 6px;border-radius:4px;text-transform:uppercase}.preprocess-status-badge.done{background:#22c55e26;color:#22c55e}.preprocess-status-badge.pending{background:#3b82f626;color:#3b82f6}.preprocess-progress{margin-bottom:8px}.preprocess-progress-detail{display:flex;justify-content:space-between;font-size:11px;color:var(--color-text-muted);margin-top:4px}.preprocess-cancel-btn{display:block;width:100%;margin-top:6px;padding:5px 8px;font-size:12px;font-weight:500;color:#ef4444;background:transparent;border:1px solid #ef4444;border-radius:6px;cursor:pointer;transition:background-color .15s}.preprocess-cancel-btn:hover{background:#ef44441a}.preprocess-result{padding:8px 10px;border-radius:6px;font-size:12px;margin-bottom:8px}.preprocess-result-success{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);color:var(--color-text-primary)}.preprocess-result-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444}.preprocess-result-time{font-size:11px;color:var(--color-text-muted);margin-top:2px}.preprocess-error-list{margin:4px 0 0;padding-left:16px;font-size:11px;color:#ef4444}.preprocess-dismiss-btn{display:inline-block;margin-top:4px;padding:2px 8px;font-size:11px;color:var(--color-text-muted);background:transparent;border:1px solid var(--color-border);border-radius:4px;cursor:pointer}.preprocess-dismiss-btn:hover{color:var(--color-text-primary);border-color:var(--color-text-muted)}.preprocess-page{flex:1;min-height:0;overflow-y:auto;padding:32px 24px;background:var(--color-bg-base)}.preprocess-page-inner{max-width:720px;margin:0 auto}.preprocess-page-heading{margin:0 0 20px;font-size:1.25rem;font-weight:700;color:var(--color-text-primary)}.preprocess-page-search{font-size:.85rem;padding:8px 12px;border-radius:8px}.preprocess-page-file-list{max-height:480px;overflow-y:auto;margin-bottom:12px;border:1px solid var(--color-border);border-radius:8px}.preprocess-page-file-list .preprocess-file-item{padding:8px 12px;font-size:.85rem}.preprocess-page-empty{padding:24px;text-align:center;color:var(--color-text-muted);font-size:.85rem}.preprocess-page-actions{display:flex;gap:8px;margin-bottom:12px}.preprocess-page-actions .plugin-btn{padding:8px 16px;font-size:.85rem}.preprocess-force-toggle{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--color-text-secondary);margin-bottom:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.preprocess-force-toggle input[type=checkbox]{accent-color:var(--color-border-active)}.preprocess-download-btn{flex-shrink:0;padding:1px 8px;font-size:11px;font-weight:500;color:var(--color-text-secondary);background:transparent;border:1px solid var(--color-border);border-radius:4px;cursor:pointer;font-family:inherit;transition:color .15s,border-color .15s}.preprocess-download-btn:hover{color:var(--color-text-primary);border-color:var(--color-text-muted)}.preprocess-dir-group+.preprocess-dir-group{border-top:1px solid var(--color-border)}.preprocess-dir-header{display:flex;align-items:center;gap:6px;padding:6px 8px;font-size:12px;font-weight:600;color:var(--color-text-secondary);background:#ffffff05;border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none}.preprocess-dir-header input[type=checkbox]{flex-shrink:0;accent-color:var(--color-border-active)}.preprocess-dir-chevron{background:none;border:none;color:var(--color-text-muted);font-size:10px;cursor:pointer;padding:0 2px;line-height:1;flex-shrink:0}.preprocess-dir-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.preprocess-dir-count{flex-shrink:0;font-size:10px;font-weight:600;color:var(--color-text-muted);background:var(--color-bg-card);padding:1px 6px;border-radius:8px}.preprocess-file-indented{padding-left:28px!important}.preprocess-page-file-list .preprocess-dir-header{padding:8px 12px;font-size:.85rem}.preprocess-page-file-list .preprocess-file-indented{padding-left:36px!important}.preprocess-upload-panel{border:2px dashed var(--color-border);border-radius:8px;padding:12px;margin-bottom:16px}.preprocess-upload-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.preprocess-upload-overall{display:flex;align-items:center;gap:8px;margin-top:10px}.preprocess-upload-overall .plugin-progress-bar{flex:1}.preprocess-upload-overall-text{font-size:.75rem;font-weight:600;color:var(--color-text-secondary);min-width:36px;text-align:right}.preprocess-upload-file-list{max-height:240px;overflow-y:auto;margin-top:10px;border:1px solid var(--color-border);border-radius:6px}.preprocess-upload-group-header{padding:6px 8px;font-size:12px;font-weight:600;color:var(--color-text-secondary);background:#ffffff05;border-bottom:1px solid var(--color-border)}.preprocess-upload-file-item{display:flex;align-items:center;gap:6px;padding:5px 8px 5px 20px;font-size:12px;color:var(--color-text-secondary);border-bottom:1px solid var(--color-border)}.preprocess-upload-file-item:last-child{border-bottom:none}.preprocess-upload-file-progress{width:60px;flex-shrink:0}.preprocess-upload-file-progress .plugin-progress-bar{height:4px}.preprocess-status-badge.error{background:#ef444426;color:#ef4444}.annotation-toolbar{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:11;display:flex;gap:2px;background:var(--color-glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--color-glass-border);border-radius:10px;padding:4px;box-shadow:var(--shadow-card)}.annotation-tool-btn{padding:6px 12px;border:none;border-radius:7px;background:transparent;color:var(--color-text-secondary);font-family:inherit;font-size:.75rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.annotation-tool-btn:hover{background:#ffffff14;color:var(--color-text-primary)}.annotation-tool-btn.active{background:var(--color-accent-gradient);color:#fff}.annotation-tool-delete{color:var(--color-error)}.annotation-tool-delete:hover{background:#f8717126;color:var(--color-error)}.roi-overlay{position:absolute;top:0;right:0;bottom:0;left:0;cursor:crosshair;z-index:10;background:#0000000f}.annotation-memo{position:absolute;z-index:12;min-width:180px;max-width:260px;width:220px;background:var(--color-glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--color-glass-border);border-radius:10px;padding:8px;box-shadow:var(--shadow-card);pointer-events:auto}.annotation-memo-input{width:100%;background:transparent;border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-primary);font-family:inherit;font-size:.8rem;padding:6px 8px;resize:vertical;outline:none;transition:border-color .15s;box-sizing:border-box}.annotation-memo-input::placeholder{color:var(--color-text-muted)}.annotation-memo-input:focus{border-color:var(--color-border-active)}.cell-type-picker{position:absolute;z-index:12;min-width:160px;max-width:220px;background:var(--color-glass-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--color-glass-border);border-radius:10px;padding:4px;box-shadow:var(--shadow-card);pointer-events:auto;display:flex;flex-direction:column;gap:1px}.cell-type-option{display:flex;align-items:center;gap:8px;padding:5px 10px;border:none;background:transparent;color:var(--color-text-primary);font-size:.78rem;font-family:inherit;cursor:pointer;border-radius:7px;transition:background .12s;text-align:left;width:100%}.cell-type-option:hover{background:var(--color-hover)}.cell-type-option.active{background:var(--color-border-active);color:#fff}.cell-type-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.revised-section{margin-top:12px;padding-top:4px;border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:6px}
