:root,:root[data-theme=dark]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;font-synthesis:none;line-height:1.5;text-rendering:optimizeLegibility;color-scheme:dark;--bg: #040617;--bg-alt: #0b1130;--surface: rgba(12, 17, 44, .82);--surface-strong: rgba(18, 25, 58, .94);--surface-soft: rgba(28, 36, 75, .7);--surface-accent: rgba(28, 49, 104, .68);--input-bg: rgba(7, 11, 31, .92);--viewer-bg: #050919;--overlay: rgba(3, 5, 18, .72);--text: #f6f7ff;--text-muted: #a4add3;--text-soft: #c9cef0;--border: rgba(111, 127, 214, .22);--border-strong: rgba(145, 165, 255, .34);--accent: #30d6ff;--accent-strong: #5f6bff;--accent-secondary: #cc4dff;--success: #4ce0c3;--warning: #ffbe4d;--danger: #ff6f8d;--shadow: 0 20px 48px rgba(0, 0, 0, .34);--shadow-soft: 0 10px 28px rgba(0, 0, 0, .22);--glow: 0 0 0 1px rgba(48, 214, 255, .12), 0 0 32px rgba(204, 77, 255, .14)}:root[data-theme=light]{color-scheme:light;--bg: #f4f7ff;--bg-alt: #e8edff;--surface: rgba(255, 255, 255, .86);--surface-strong: rgba(255, 255, 255, .98);--surface-soft: rgba(233, 239, 255, .88);--surface-accent: rgba(224, 232, 255, .98);--input-bg: rgba(248, 250, 255, .98);--viewer-bg: #edf2ff;--overlay: rgba(13, 17, 41, .3);--text: #131938;--text-muted: #616a92;--text-soft: #3c456b;--border: rgba(77, 92, 174, .14);--border-strong: rgba(95, 107, 255, .28);--accent: #07c8f9;--accent-strong: #5f6bff;--accent-secondary: #d24bff;--success: #0ea982;--warning: #d68a00;--danger: #d53b68;--shadow: 0 20px 48px rgba(25, 35, 78, .12);--shadow-soft: 0 10px 28px rgba(25, 35, 78, .08);--glow: 0 0 0 1px rgba(95, 107, 255, .1), 0 16px 36px rgba(95, 107, 255, .12)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:radial-gradient(circle at top,rgba(95,107,255,.14),transparent 28%),radial-gradient(circle at 75% 20%,rgba(204,77,255,.1),transparent 22%),var(--bg);color:var(--text);margin:0}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.62}h1,h2,h3,p{margin:0}.app-shell{background:radial-gradient(circle at top,rgba(48,214,255,.08),transparent 20%),radial-gradient(circle at 78% 18%,rgba(204,77,255,.12),transparent 24%),var(--bg);color:var(--text);min-height:100vh}.auth-page{align-items:stretch;background:#030515;display:flex;justify-content:stretch;min-height:100vh;position:relative}.loading-page{align-items:center;justify-content:center}.auth-layout{align-items:stretch;display:grid;gap:0;grid-template-columns:minmax(0,1.08fr) minmax(420px,.92fr);min-height:100vh;width:100%}.auth-showcase,.auth-panel{min-height:0}.auth-showcase{align-items:center;background:#030515;display:flex;justify-content:center;overflow:hidden;padding:48px}.auth-panel{align-items:center;background:#f7f8fc;display:flex;flex-direction:column;gap:24px;justify-content:center;padding:72px 64px;text-align:left}.auth-hero{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.auth-hero img{display:block;height:auto;max-height:78vh;max-width:min(78%,720px);object-fit:contain;width:100%}.auth-brand{align-items:center;display:flex;gap:12px}.auth-brand .brand-text{border-left:1px solid rgba(95,107,255,.24);padding-left:12px}.auth-panel .brand-name{color:#131938}.auth-panel .app-kicker{color:#5f6bff}.auth-logo{height:30px}.auth-copy{display:flex;flex-direction:column;gap:8px;max-width:380px;width:100%}.auth-copy h2{color:#131938;font-size:36px;font-weight:800;line-height:1.08}.auth-copy p{color:#616a92;font-size:16px;line-height:1.5}.auth-button{min-height:50px;width:min(100%,340px)}.auth-error{background:#d53b6824;border:1px solid rgba(213,59,104,.28);border-radius:8px;color:#5f2640;font-size:13px;padding:12px 14px;text-align:center;width:100%}.auth-panel>*{width:min(100%,380px)}.loading-panel{align-items:center;background:var(--surface);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;min-width:220px;padding:24px;text-align:center}.loading-panel strong{color:var(--text)}.page-banner,.search-box,.projects-panel,.database-nav,.dataset-panel,.sidebar,.main-panel,.inspector,.tool-context-bar,.stat-card,.modal,.profile-dropdown,.loading-panel{box-shadow:var(--shadow-soft)}.page-banner{align-items:flex-start;background:#d53b681a;border:1px solid rgba(213,59,104,.24);border-radius:8px;color:var(--text-soft);display:flex;gap:10px;margin:18px 24px 0;padding:12px 14px}.page-banner strong{color:var(--text);font-size:13px}.page-banner span{font-size:13px}.spin{animation:spin .9s linear infinite}.app-header{align-items:center;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#070a1bb8;border-bottom:1px solid var(--border);display:grid;gap:18px;grid-template-columns:minmax(280px,.95fr) minmax(320px,1fr);min-height:88px;padding:18px 24px;position:sticky;top:0;z-index:10}:root[data-theme=light] .app-header{background:#f4f7ffc7}.header-left,.header-right,.dashboard-actions,.section-heading,.tool-context-bar,.tool-group,.toolbar-actions,.search-box{align-items:center;display:flex}.header-left{gap:14px;min-width:0}.header-right{gap:12px;justify-content:flex-end;min-width:0}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.brand-lockup{align-items:center;display:flex;flex:0 0 auto;justify-content:center}.brand-logo{display:block;height:28px;width:auto}.brand-text{display:flex;flex-direction:column;gap:2px;min-width:0}.brand-name{color:var(--text);display:block;font-size:19px;font-weight:800;line-height:1.1}.app-kicker{color:var(--accent);font-size:11px;font-weight:800;line-height:1.1;text-transform:uppercase}.dashboard-heading h2,.project-topbar h2,.tool-context-bar h2{color:var(--text);font-size:22px;font-weight:700;letter-spacing:0}.search-box{background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text-muted);gap:8px;max-width:320px;min-width:180px;padding:9px 12px;width:100%}.search-box input{background:transparent;border:0;color:var(--text);min-width:0;outline:none;width:100%}.search-box input::placeholder{color:var(--text-muted)}.theme-toggle,.profile-button{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:999px;color:var(--text);display:inline-flex;height:40px;justify-content:center;padding:0;position:relative;width:40px}.theme-toggle:hover,.profile-button:hover,.icon-button:hover,.tool-button:hover,.secondary-button:hover:not(:disabled),.table-action:hover{border-color:var(--border-strong);box-shadow:var(--glow)}.theme-toggle:focus-visible,.profile-button:focus-visible,.primary-button:focus-visible,.secondary-button:focus-visible,.icon-button:focus-visible,.tool-button:focus-visible,.image-title-button:focus-visible,.nav-record:focus-visible,.image-row:focus-visible,.project-card:focus-visible,.table-action:focus-visible,.field input:focus,.field textarea:focus,.search-box:focus-within{outline:none;border-color:var(--accent-strong);box-shadow:0 0 0 3px #5f6bff2e}.profile-menu{position:relative}.profile-button.active:after{border:1px solid var(--accent-strong);border-radius:999px;content:"";inset:-5px;position:absolute}.profile-avatar{align-items:center;background:linear-gradient(135deg,var(--accent),var(--accent-secondary));border-radius:999px;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:800;height:30px;justify-content:center;width:30px}.profile-dropdown{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:var(--surface-strong);border:1px solid var(--border);border-radius:8px;min-width:240px;padding:8px;position:absolute;right:0;top:calc(100% + 10px);z-index:30}.profile-dropdown-header{border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:2px;margin-bottom:6px;padding:8px 8px 10px}.profile-dropdown-header strong{color:var(--text);font-size:13px}.profile-dropdown-header span,.profile-dropdown-header small{color:var(--text-muted);font-size:12px}.profile-dropdown-header small{text-transform:capitalize}.profile-dropdown-item{align-items:center;background:transparent;border:0;border-radius:8px;color:var(--text);display:flex;font-size:13px;font-weight:700;gap:10px;min-height:38px;padding:0 8px;width:100%}.profile-dropdown-item:hover{background:var(--surface-soft)}.dashboard-page,.project-page{display:flex;flex-direction:column;gap:20px;padding:24px}.dashboard-heading{align-items:flex-end;display:flex;gap:18px;justify-content:space-between}.dashboard-subtitle{color:var(--text-muted);font-size:13px;margin-top:6px;max-width:560px}.dashboard-actions,.project-actions{gap:10px}.project-topbar{align-items:flex-start;display:flex;gap:16px}.project-actions{display:flex;margin-left:auto}.stat-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.stat-card{align-items:center;background:var(--surface);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--border);border-radius:8px;display:flex;gap:14px;min-height:92px;padding:18px}.stat-card span,.dataset-metrics span{color:var(--text-muted);display:block;font-size:12px;font-weight:700}.stat-card strong{color:var(--text);display:block;font-size:26px;line-height:1.1;margin-top:4px}.stat-icon{align-items:center;border-radius:8px;display:flex;height:42px;justify-content:center;width:42px}.stat-card.blue .stat-icon{background:#30d6ff24;color:var(--accent)}.stat-card.green .stat-icon{background:#4ce0c324;color:var(--success)}.stat-card.amber .stat-icon{background:#ffbe4d29;color:var(--warning)}.stat-card.gray .stat-icon{background:#5f6bff1f;color:var(--accent-strong)}.project-workspace,.workspace-grid{align-items:start;display:grid;gap:18px}.project-workspace{grid-template-columns:minmax(250px,300px) minmax(0,1fr)}.workspace-grid{grid-template-columns:260px minmax(0,1fr) 310px;min-height:0}.projects-panel,.database-nav,.dataset-panel,.sidebar,.main-panel,.inspector{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:var(--surface);border:1px solid var(--border);border-radius:8px}.projects-panel,.database-nav,.dataset-panel{padding:18px}.project-list{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.project-card{background:linear-gradient(135deg,var(--surface-strong),var(--surface-soft));border:1px solid var(--border);border-radius:8px;color:var(--text);display:flex;flex-direction:column;gap:10px;min-height:188px;padding:18px;position:relative;text-align:left;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.project-card:before{background:linear-gradient(90deg,var(--accent),var(--accent-secondary));border-radius:999px;content:"";height:3px;left:18px;position:absolute;right:18px;top:0}.project-card:hover{border-color:var(--border-strong);box-shadow:var(--glow);transform:translateY(-1px)}.project-card-header{align-items:center;color:var(--accent);display:flex;justify-content:space-between}.project-card-icon{align-items:center;background:#30d6ff1f;border:1px solid rgba(48,214,255,.2);border-radius:8px;display:flex;height:40px;justify-content:center;width:40px}.project-card strong{color:var(--text);font-size:16px}.project-card p{color:var(--text-muted);font-size:13px;line-height:1.5}.project-card-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}.project-card-meta span{background:var(--surface-strong);border:1px solid var(--border);border-radius:999px;color:var(--text-soft);font-size:11px;font-weight:800;padding:6px 9px;text-transform:uppercase}.section-heading{color:var(--text);gap:8px;margin-bottom:12px}.section-heading h3{font-size:15px;font-weight:700}.section-heading.split{align-items:flex-start;justify-content:space-between}.nav-group,.image-list,.annotation-list{display:flex;flex-direction:column;gap:8px}.nav-group+.nav-group{margin-top:18px}.nav-label{color:var(--text-muted);display:block;font-size:11px;font-weight:800;margin-bottom:8px;text-transform:uppercase}.nav-record,.image-row{align-items:center;background:var(--surface-soft);border:1px solid transparent;border-radius:8px;color:var(--text);display:grid;gap:10px;min-height:58px;padding:11px;text-align:left;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease;width:100%}.nav-record{grid-template-columns:auto minmax(0,1fr)}.image-row{grid-template-columns:minmax(0,1fr)}.nav-record.active,.image-row.active{background:var(--surface-accent);border-color:var(--accent-strong);box-shadow:inset 3px 0 0 var(--accent)}.record-main{min-width:0}.record-main strong,.nav-record strong,.image-row span{color:var(--text);display:block;font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-main small,.nav-record small,.image-row small,.algorithm-panel small{color:var(--text-muted);display:block;font-size:12px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-pill{border:1px solid transparent;border-radius:999px;display:inline-flex;font-size:11px;font-weight:800;line-height:1;padding:6px 8px;text-transform:uppercase;white-space:nowrap}.status-pill.review,.status-pill.processing{background:#ffbe4d29;border-color:#ffbe4d52;color:var(--warning)}.status-pill.draft,.status-pill.uploaded{background:#30d6ff24;border-color:#30d6ff3d;color:var(--accent)}.status-pill.locked,.status-pill.reviewed{background:#4ce0c329;border-color:#4ce0c34d;color:var(--success)}.database-path{align-items:center;background:#5f6bff1f;border:1px solid rgba(95,107,255,.2);border-radius:8px;color:var(--text-soft);display:flex;flex-wrap:wrap;font-size:12px;font-weight:700;gap:6px;margin-bottom:16px;padding:9px 11px}.database-path strong{color:var(--text)}.dataset-panel-header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:14px}.dataset-panel-header h3{color:var(--text);font-size:18px}.image-table{border:1px solid var(--border);border-radius:8px;overflow:hidden}.image-table-header,.image-table-row{align-items:center;display:grid;gap:12px;grid-template-columns:minmax(180px,1fr) minmax(110px,.6fr) auto auto}.image-table-header{background:var(--surface-soft);border-bottom:1px solid var(--border);color:var(--text-muted);font-size:11px;font-weight:800;padding:10px 12px;text-transform:uppercase}.image-table-row{background:transparent;border-bottom:1px solid var(--border);color:var(--text-soft);min-height:58px;padding:8px 12px}.image-table-row:last-child{border-bottom:0}.image-table-row.active{background:#5f6bff1a;box-shadow:inset 3px 0 0 var(--accent)}.image-title-button{align-items:center;background:transparent;border:0;color:var(--text);display:inline-flex;font-weight:700;gap:9px;justify-content:flex-start;min-width:0;padding:0;text-align:left}.image-title-button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-action{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;color:var(--accent);font-size:12px;font-weight:800;min-height:32px;padding:0 11px}.empty-state,.image-table-empty{background:var(--surface-soft);border:1px dashed var(--border);border-radius:8px;color:var(--text-muted);display:flex;flex-direction:column;gap:4px}.empty-state{padding:13px}.image-table-empty{padding:18px}.empty-state strong,.image-table-empty strong{color:var(--text);font-size:13px}.empty-state span,.image-table-empty span{font-size:12px}.modal-backdrop{align-items:center;background:var(--overlay);display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:20}.modal{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:var(--surface-strong);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:16px;max-width:520px;padding:20px;width:min(100%,520px)}.modal-header,.modal-actions{align-items:center;display:flex;gap:12px;justify-content:space-between}.modal-header h2{color:var(--text);font-size:19px}.field{display:flex;flex-direction:column;gap:6px}.field span{color:var(--text);font-size:13px;font-weight:800}.field input,.field textarea{background:var(--input-bg);border:1px solid var(--border);border-radius:8px;color:var(--text);outline:none;padding:10px 11px;width:100%}.field input[type=file]{padding:10px}.field textarea{resize:vertical}.modal-note{background:#5f6bff1a;border:1px solid rgba(95,107,255,.2);border-radius:8px;color:var(--text-soft);display:flex;flex-direction:column;gap:4px;padding:11px}.modal-note strong{color:var(--text);font-size:13px}.modal-note span{font-size:12px}.modal-actions{justify-content:flex-end}.upload-list{display:flex;flex-direction:column;gap:8px}.upload-item{align-items:center;background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;display:flex;justify-content:space-between;padding:10px 12px}.upload-item strong{color:var(--text);font-size:13px}.upload-item span{color:var(--text-muted);font-size:12px;font-weight:700}.image-record-icon{align-items:center;background:var(--surface-strong);border:1px solid var(--border);border-radius:8px;color:var(--accent);display:flex;height:38px;justify-content:center;width:38px}.dataset-metrics{display:grid;gap:10px;grid-template-columns:repeat(3,1fr);margin-bottom:14px}.dataset-metrics div{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;padding:12px}.dataset-metrics strong{color:var(--text);display:block;font-size:24px;line-height:1.1;margin-top:4px}.primary-button,.secondary-button,.icon-button,.tool-button{align-items:center;border-radius:8px;display:inline-flex;justify-content:center;transition:border-color .14s ease,background .14s ease,box-shadow .14s ease,transform .14s ease}.primary-button,.secondary-button{border:1px solid transparent;font-size:13px;font-weight:800;gap:8px;min-height:38px;padding:0 13px}.primary-button{background:linear-gradient(135deg,var(--accent-strong),var(--accent-secondary));color:#fff}.primary-button:hover:not(:disabled){box-shadow:0 16px 32px #5f6bff47;transform:translateY(-1px)}.secondary-button,.icon-button,.tool-button,.theme-toggle{background:var(--surface);border:1px solid var(--border);color:var(--text-soft)}.secondary-button:hover:not(:disabled){color:var(--text)}.tool-page{display:grid;gap:14px;grid-template-rows:auto minmax(0,1fr);height:calc(100vh - 88px);padding:14px}.tool-context-bar{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:var(--surface);border:1px solid var(--border);border-radius:8px;gap:14px;min-height:64px;padding:10px 14px}.sidebar,.inspector{display:flex;flex-direction:column;gap:14px;min-height:0;overflow:auto;padding:14px}.main-panel{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;overflow:hidden}.toolbar{align-items:center;border-bottom:1px solid var(--border);display:flex;gap:10px;justify-content:space-between;padding:10px}.tool-group,.toolbar-actions{gap:6px}.segmented{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;padding:3px}.icon-button,.tool-button{aspect-ratio:1;height:36px}.tool-button{border-color:transparent}.tool-button.active{background:var(--surface-strong);border-color:var(--accent-strong);box-shadow:var(--glow);color:var(--accent)}.viewer-shell{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0}.viewer-status{align-items:center;background:linear-gradient(90deg,#30d6ff2e,#cc4dff2e);border-bottom:1px solid var(--border);color:var(--text);display:flex;font-size:12px;font-weight:800;justify-content:space-between;min-height:36px;padding:0 12px;text-transform:uppercase}.viewer-frame{background:radial-gradient(circle at top,rgba(48,214,255,.08),transparent 22%),radial-gradient(circle at 78% 18%,rgba(204,77,255,.12),transparent 24%),var(--viewer-bg);min-height:0;overflow:hidden;position:relative}.osd-viewer{height:100%;min-height:360px;width:100%}.annotation-overlay{background:transparent;border:0;inset:0;padding:0;position:absolute;width:100%}.annotation-overlay.passive{pointer-events:none}.annotation-marker{align-items:center;border:2px solid var(--warning);border-radius:8px;color:var(--text);display:flex;font-size:11px;font-weight:800;justify-content:center;min-height:22px;min-width:22px;position:absolute;transform:translate(-50%,-50%)}.annotation-marker.point{background:var(--warning);border-radius:999px}.annotation-marker.note{background:#ffbe4d2e}.annotation-marker.region,.annotation-marker.highlight{background:#ffbe4d1f}.annotation-marker span{background:var(--surface-strong);border:1px solid rgba(255,190,77,.4);border-radius:6px;max-width:100%;overflow:hidden;padding:2px 5px;text-overflow:ellipsis;white-space:nowrap}.inspector-section{border-bottom:1px solid var(--border);padding-bottom:16px}.inspector-section:last-child{border-bottom:0;padding-bottom:0}.metadata-grid{display:grid;gap:8px;grid-template-columns:1fr 1fr;margin:12px 0 0}.metadata-grid div,.algorithm-panel,.annotation-item{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;padding:10px}dt{color:var(--text-muted);font-size:11px;font-weight:800;text-transform:uppercase}dd{color:var(--text);font-size:13px;font-weight:800;margin:3px 0 0}.algorithm-panel{display:flex;flex-direction:column;gap:10px}.algorithm-panel strong,.annotation-item strong{color:var(--text)}.score-line{align-items:center;background:var(--surface-strong);border:1px solid var(--border);border-radius:8px;display:flex;justify-content:space-between;padding:8px}.score-line span,.annotation-item span{color:var(--text-muted);font-size:12px}.annotation-item{display:flex;flex-direction:column;gap:4px}.annotation-item strong{font-size:13px;text-transform:capitalize}.empty-page{padding:24px}@media(max-width:1180px){.app-header{grid-template-columns:1fr}.header-right{justify-content:flex-start}.workspace-grid{grid-template-columns:220px minmax(0,1fr)}.inspector{display:none}}@media(max-width:820px){.auth-layout{grid-template-columns:1fr;min-height:0}.auth-showcase{min-height:46vh;padding:24px}.auth-panel{padding:36px 24px 40px}.auth-copy h2{font-size:30px}.auth-copy p{font-size:15px}.dashboard-heading,.project-topbar,.toolbar,.tool-context-bar,.header-right{align-items:flex-start;flex-direction:column}.project-actions{margin-left:0}.project-workspace,.dataset-metrics,.workspace-grid{grid-template-columns:1fr}.image-table-header{display:none}.image-table-row{align-items:flex-start;grid-template-columns:1fr}.tool-page{height:auto}.toolbar-actions,.dashboard-actions,.project-actions{flex-wrap:wrap}.search-box{max-width:none}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
