:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#eaf2ed;background:#0d1517;font-synthesis:none;--bg:#101a1b;--panel:#182426;--panel2:#1e2d2c;--panel3:#283a37;--border:#2b403d;--border2:#3a514b;--text:#eaf2ed;--sub:#9ab0a8;--muted:#728e85;--jade:#8ee4c3;--lime:#cbfa86;--error:#f6a29a;--blue:#82bff5;--orange:#ecc38d}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.46;cursor:not-allowed}a{color:inherit;text-decoration:none}svg{flex-shrink:0}h1,h2,h3,p{margin:0}h1{font-size:28px;letter-spacing:-.95px;font-weight:650}h2{font-size:19px;letter-spacing:-.35px}h3{font-size:15px}small{color:var(--muted)}.text-sub{color:var(--sub)}.text-muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.boot{height:100%;display:flex;align-items:center;justify-content:center;gap:14px;color:var(--jade);font-weight:730;letter-spacing:3px}.spinner{width:20px;height:20px;border-radius:50%;border:2px solid #34594f;border-top-color:var(--jade);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.btn{background:var(--panel2);border:1px solid var(--border2);color:var(--text);padding:9px 13px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:9px;font-size:13px;font-weight:560;white-space:nowrap;transition:background .15s,border-color .15s,transform .12s}.btn:hover:not(:disabled){background:#2c4440;border-color:#5c8175}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--lime);border-color:var(--lime);color:#172922}.btn-primary:hover:not(:disabled){background:#deffaa;border-color:#deffaa}.btn-teal{background:#21463b;border-color:#386b5c;color:#bff9e2}.btn-danger{background:#3e2928;border-color:#674141;color:#ffc0b6}.btn-ghost{background:transparent;border:1px solid transparent;color:var(--sub)}.btn-ghost:hover:not(:disabled){background:var(--panel2);color:var(--text)}.btn-icon{padding:7px;width:34px;height:34px}.btn-sm{padding:6px 9px;font-size:12px;border-radius:7px}.btn-lg{padding:12px 17px}.btn-block{width:100%}.button-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.eyebrow{text-transform:uppercase;letter-spacing:1.7px;font-size:10px;font-weight:720;color:var(--jade)}.field{display:flex;flex-direction:column;gap:8px}.field>label{font-size:12px;color:#b7c9c1;font-weight:550}.input,.select,.textarea{width:100%;padding:11px 12px;border-radius:9px;color:var(--text);background:#101b1c;border:1px solid #39504b;outline:0;min-width:0;accent-color:var(--jade)}.textarea{resize:vertical;min-height:82px}.input:focus,.select:focus,.textarea:focus{border-color:var(--jade);box-shadow:0 0 0 3px #8ee4c317}.input::placeholder,.textarea::placeholder{color:#71867f}.select{cursor:pointer}.input[type="color"]{padding:3px;height:37px;max-width:64px}.hint{font-size:12px;color:var(--muted);line-height:1.5}.kbd{font-size:10px;border:1px solid #4b625c;background:#213330;padding:3px 6px;border-radius:4px;font-family:ui-monospace,monospace;color:#a9c2b9}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:5px 8px;border:1px solid var(--border2);background:#2d413d;color:#b8cfc5;border-radius:100px}.pill-dot{width:6px;height:6px;border-radius:50%;background:currentColor}
/* Login */
.login-screen{display:grid;grid-template-columns:minmax(420px,1fr) minmax(420px,.85fr);min-height:100%;background:#0d1718}.login-art{min-height:520px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden;padding:40px 54px;background:radial-gradient(ellipse at 52% 44%,#173f3a 0,#122a29 39%,#0e1c1f 75%)}.login-art:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0,transparent 58px,#afeedb06 59px,#afeedb06 60px);pointer-events:none}.login-brand{display:flex;align-items:center;gap:13px;font-size:18px;font-weight:730;letter-spacing:1px;z-index:1}.brand-mark{width:37px;height:37px;display:flex;align-items:center;justify-content:center;border-radius:11px;background:#24433c;color:var(--jade);border:1px solid #38695a}.optics{height:440px;display:flex;align-items:center;justify-content:center;position:relative}.optics:before{content:"";width:min(60vw,390px);height:min(60vw,390px);max-width:390px;max-height:390px;position:absolute;border-radius:100%;background:radial-gradient(circle,#bbffe633 0, #70e1be0b 36%,transparent 70%);filter:blur(10px)}.optical-circle{position:absolute;border:1px solid #8ee4c330;border-radius:50%;animation:breathe 7s ease-in-out infinite}.optical-circle.c1{width:310px;height:310px}.optical-circle.c2{width:228px;height:228px;border-color:#8ee4c378;animation-delay:-2s}.optical-circle.c3{width:142px;height:142px;border:2px solid #bcffdf;box-shadow:0 0 32px #8ee4c322;animation-delay:-3s}.optical-center{width:20px;height:20px;border-radius:50%;background:var(--lime);box-shadow:0 0 45px #cbfa8699;z-index:1}.optic-corner{position:absolute;width:32px;height:32px;border-color:#ccffe4;border-style:solid}.optic-corner.tl{top:75px;left:calc(50% - 160px);border-width:2px 0 0 2px}.optic-corner.tr{top:75px;right:calc(50% - 160px);border-width:2px 2px 0 0}.optic-corner.bl{bottom:75px;left:calc(50% - 160px);border-width:0 0 2px 2px}.optic-corner.br{bottom:75px;right:calc(50% - 160px);border-width:0 2px 2px 0}@keyframes breathe{50%{transform:scale(1.035);opacity:.65}}.art-footer{color:#94b4a7;z-index:1}.art-footer h2{color:#f0f4eb;font-size:32px;line-height:1.2;max-width:500px;margin-bottom:12px}.art-footer p{font-size:13px;max-width:410px;line-height:1.7}.login-pane{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px}.login-form{width:min(100%,390px);display:flex;flex-direction:column;gap:23px}.login-form h1{font-size:34px}.login-form .field{gap:9px}.login-kicker{color:var(--jade);font-size:11px;letter-spacing:2px;font-weight:700}.login-copy{font-size:14px;color:var(--sub);line-height:1.7;margin-top:-11px}.login-note{margin-top:20px;color:#647f75;font-size:11px}
/* App shell */
.shell{height:100%;display:flex;min-width:0;overflow:hidden}.sidebar{width:225px;flex:0 0 225px;background:#111e20;border-right:1px solid var(--border);padding:24px 13px 16px;display:flex;flex-direction:column;gap:16px}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:0 10px 21px;border-bottom:1px solid #293e3a}.sidebar-brand strong{font-size:16px;letter-spacing:1.1px;font-weight:760}.sidebar-brand small{font-size:9px;letter-spacing:1.3px;display:block;margin-top:2px;color:#82a99b}.nav-group-title{font-size:10px;font-weight:700;letter-spacing:1.4px;color:#658277;text-transform:uppercase;padding:12px 12px 7px}.nav-link{display:flex;align-items:center;gap:11px;width:100%;border:0;color:#93b1a4;background:transparent;border-radius:9px;padding:11px 12px;text-align:left;font-size:13px;margin:2px 0}.nav-link:hover,.nav-link.active{background:#223b34;color:#dcf9eb}.nav-link.active:before{content:"";width:3px;background:var(--lime);border-radius:2px;align-self:stretch;margin-left:-12px}.nav-link.sub{padding-left:24px}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--border);padding-top:14px;display:flex;flex-direction:column;gap:9px}.account{display:flex;align-items:center;gap:9px;padding:10px;border-radius:10px;background:#1b2d2b}.avatar{background:#2d5749;color:var(--jade);width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.account strong{font-size:12px;display:block}.account small{font-size:10px}.app-main{min-width:0;flex:1;display:flex;flex-direction:column;overflow:auto}.topbar{height:65px;flex:0 0 65px;padding:0 32px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:#121d1f;gap:18px}.breadcrumb{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--muted);min-width:0}.breadcrumb strong{color:#dcebe2;font-weight:560;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;align-items:center;gap:8px}.workspace{padding:30px 36px 48px;width:100%;max-width:1600px;margin:0 auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:28px}.page-title{display:flex;flex-direction:column;gap:11px}.page-title p{font-size:13px;color:var(--sub);line-height:1.65}.page-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.section-title h2{font-size:17px}.section-title small{font-size:12px}.empty{border:1px dashed #446057;background:#172625;border-radius:15px;padding:58px 30px;display:flex;flex-direction:column;align-items:center;gap:13px;text-align:center}.empty .empty-symbol{display:flex;align-items:center;justify-content:center;width:58px;height:58px;border:1px solid #3f7160;background:#24483e;color:var(--jade);border-radius:17px}.empty h2{font-size:19px}.empty p{max-width:420px;font-size:13px;line-height:1.7;color:var(--sub)}
/* Dashboard / projects */
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:23px 0 30px}.metric{background:#182726;border:1px solid #2d4740;padding:18px 20px;border-radius:13px;display:flex;flex-direction:column;gap:11px;min-height:114px}.metric-head{color:#9cb6a9;display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:550}.metric-head svg{color:#76ad95}.metric-number{font-size:29px;letter-spacing:-1.2px;font-weight:620;line-height:1}.metric-note{font-size:11px;color:#6d9282}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.project-card{background:#1b2b29;border:1px solid #344a43;border-radius:14px;padding:21px;transition:transform .15s,border-color .15s;cursor:pointer;min-height:208px;display:flex;flex-direction:column;gap:17px}.project-card:hover{transform:translateY(-2px);border-color:#5a9b7e}.project-card .card-mark{width:36px;height:36px;border-radius:10px;background:#2f584c;color:var(--jade);display:flex;align-items:center;justify-content:center}.project-card h3{font-size:19px;margin-bottom:5px}.project-card p{color:var(--sub);font-size:12px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.project-card .card-footer{display:flex;align-items:center;gap:12px;padding-top:13px;border-top:1px solid #31483e;margin-top:auto;color:var(--sub);font-size:11px}
/* Project */
.tabbar{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:23px}.tab{padding:11px 17px;border:0;background:none;border-bottom:2px solid transparent;color:var(--sub);font-size:13px;font-weight:600}.tab:hover{color:var(--text)}.tab.active{color:var(--jade);border-bottom-color:var(--lime)}.board-scroll{overflow-x:auto;padding-bottom:16px}.board{display:grid;grid-template-columns:repeat(5,minmax(215px,1fr));min-width:1120px;gap:12px;align-items:start}.board-column{border:1px solid #2d433e;border-radius:12px;background:#162425;padding:11px;min-height:380px}.board-column.drop-target{border-color:var(--lime);box-shadow:inset 0 0 0 1px #cbfa86aa;background:#213a33}.board-col-head{display:flex;justify-content:space-between;align-items:center;gap:4px;padding:7px 5px 15px}.board-col-title{font-size:10px;text-transform:uppercase;letter-spacing:1.1px;font-weight:730;color:#b5cfc2}.board-count{background:#2c4840;border-radius:100px;min-width:22px;text-align:center;padding:4px 7px;font-size:10px;color:var(--jade)}.batch-card{border:1px solid #334943;background:#20302f;border-radius:10px;margin-bottom:10px;overflow:hidden;transition:border .15s,background .15s;cursor:grab}.batch-card:hover{border-color:#5a8e7a;background:#253936}.batch-card.dragging{opacity:.5}.batch-card.dragging .thumb{opacity:.6}.batch-thumb{height:90px;background:#263936;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.batch-thumb img{width:100%;height:100%;object-fit:cover;opacity:.78}.batch-thumb .corner-l{position:absolute;left:10px;top:10px;width:16px;height:16px;border-top:2px solid #c7ffde;border-left:2px solid #c7ffde;opacity:.8}.batch-thumb .corner-r{position:absolute;right:10px;bottom:10px;width:16px;height:16px;border-bottom:2px solid #c7ffde;border-right:2px solid #c7ffde;opacity:.8}.batch-info{padding:12px}.batch-info strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.batch-meta{display:flex;align-items:center;gap:9px;color:#8caa9e;font-size:10px;margin:8px 0 11px}.batch-foot{display:flex;align-items:center;justify-content:space-between;gap:4px}.card-open{color:var(--jade);border:0;background:#2d4941;border-radius:6px;padding:6px 9px;font-size:11px;font-weight:600}.card-open:hover{background:#386859}.card-more{width:28px;height:27px;border:0;border-radius:5px;background:transparent;color:var(--sub);display:flex;justify-content:center;align-items:center}.card-more:hover{background:#38564b}.board-col-empty{padding:16px 6px 28px;color:#557469;font-size:11px;text-align:center;line-height:1.55}.status-unassigned{color:#a6b3ad}.status-preannotated{color:#7ac4f1}.status-annotating{color:#a8edc8}.status-review{color:#edc789}.status-dataset{color:#c9f68f}.status-dot{width:7px;height:7px;display:inline-block;background:currentColor;border-radius:50%}.table-panel{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#192827}.data-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.data-table th{background:#1b302b;color:#819e91;font-size:10px;letter-spacing:1px;text-transform:uppercase;padding:14px 16px}.data-table td{padding:13px 16px;border-top:1px solid #2c423c}.data-table tr:hover td{background:#1e302c}.color-dot{width:12px;height:12px;display:inline-block;border-radius:4px;border:1px solid #ffffff36;vertical-align:middle;margin-right:8px}.bar-track{width:100%;height:8px;background:#2e413c;border-radius:10px;overflow:hidden}.bar-fill{height:100%;border-radius:10px}.analytics-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.7fr);gap:18px}.analytics-panel{border:1px solid var(--border);background:#192827;border-radius:12px;padding:20px}.analytics-row{display:grid;grid-template-columns:135px 1fr 62px;align-items:center;gap:13px;margin-top:20px}.analytics-label{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.analytics-count{text-align:right;color:#a5bcb1;font-size:12px}.donut{width:158px;height:158px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:25px auto;background:conic-gradient(var(--lime) 0 70%,var(--jade) 70% 90%,#77bff3 90%)}.donut-inner{width:114px;height:114px;background:#192827;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center}.donut-inner strong{font-size:29px}.legend{display:flex;justify-content:center;gap:15px;flex-wrap:wrap;color:var(--sub);font-size:11px}.legend b{width:7px;height:7px;display:inline-block;border-radius:50%;margin-right:4px}
/* Modals */
.modal-backdrop{position:fixed;inset:0;background:#050c0dbd;backdrop-filter:blur(7px);z-index:80;display:flex;align-items:center;justify-content:center;padding:24px}.modal{width:min(100%,540px);max-height:min(90vh,900px);overflow:auto;background:#182827;border:1px solid #456457;border-radius:17px;box-shadow:0 25px 110px #0009}.modal.wide{width:min(100%,770px)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:22px 25px 18px;border-bottom:1px solid #30473e}.modal-header h2{font-size:18px}.modal-body{padding:22px 25px;display:flex;flex-direction:column;gap:17px}.modal-footer{padding:18px 25px;border-top:1px solid #30473e;display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.modal-stack{display:flex;flex-direction:column;gap:14px}.notice{border:1px solid #48664e;background:#213a30;border-radius:9px;color:#b4dec6;padding:12px 14px;font-size:12px;line-height:1.6}.notice.warning{border-color:#6e5841;background:#382e22;color:#e7cba5}.file-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:1px dashed #4b7f6c;background:#20392f;padding:28px 16px;border-radius:12px;text-align:center;position:relative}.file-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.file-drop small{font-size:11px}.mapping-row{display:grid;grid-template-columns:60px minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:center}.mapping-list{background:#13221f;border:1px solid #2e4a3e;border-radius:9px;padding:12px;display:flex;flex-direction:column;gap:9px;max-height:300px;overflow:auto}.mapping-row select,.mapping-row input{padding:8px;font-size:12px}.image-select-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:9px;max-height:320px;overflow:auto}.select-tile{border:1px solid #375049;border-radius:8px;padding:6px;background:#20342f;cursor:pointer;display:flex;flex-direction:column;gap:6px;font-size:11px}.select-tile:has(input:checked){border-color:var(--lime);background:#2b4534}.select-tile img{width:100%;height:72px;object-fit:cover;border-radius:5px}.select-tile input{accent-color:var(--jade)}
/* Annotation editor */
.editor-root{height:100%;display:flex;flex-direction:column;background:#101718;overflow:hidden}.editor-top{height:59px;flex:0 0 59px;border-bottom:1px solid #2d413e;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 15px;background:#172322}.editor-top-left,.editor-top-right{display:flex;align-items:center;gap:10px;min-width:0}.editor-top strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.editor-top .text-sub{font-size:11px;white-space:nowrap}.editor-body{flex:1;min-height:0;display:flex}.editor-rail{width:59px;flex:0 0 59px;border-right:1px solid #2e403d;background:#162221;display:flex;flex-direction:column;align-items:center;padding:14px 8px;gap:6px}.tool-btn{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border:1px solid transparent;background:transparent;color:#91aba0;border-radius:10px}.tool-btn:hover{background:#283d35;color:#ecfff2}.tool-btn.active{color:var(--lime);background:#2b463a;border-color:#466b51}.editor-center{min-width:0;flex:1;display:flex;flex-direction:column}.canvas-wrap{flex:1;min-height:0;position:relative;overflow:hidden;background:#222a2b;background-image:radial-gradient(#34433f 0.8px,transparent 0.8px);background-size:19px 19px}.canvas-wrap canvas{width:100%;height:100%;display:block;touch-action:none;outline:none}.canvas-overlay{position:absolute;top:15px;left:16px;display:flex;gap:8px;pointer-events:none}.canvas-tag{padding:7px 9px;border:1px solid #5b7562;background:#11221fcc;backdrop-filter:blur(8px);border-radius:7px;font-size:10px;color:#caecd8}.canvas-controls{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);background:#142320ee;border:1px solid #3a5147;border-radius:10px;display:flex;align-items:center;gap:4px;padding:5px}.canvas-controls .btn{padding:7px;min-width:32px}.editor-bottom{min-height:68px;flex:0 0 68px;border-top:1px solid #2d413e;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 18px;background:#162322}.editor-bottom .progress{width:min(28vw,280px);height:5px;border-radius:10px;background:#355046;overflow:hidden}.editor-bottom .progress>div{height:100%;background:var(--lime);transition:width .2s}.editor-right{width:265px;flex:0 0 265px;border-left:1px solid #2d413e;background:#172322;display:flex;flex-direction:column;min-height:0}.editor-panel-head{padding:20px 17px 13px;display:flex;align-items:center;justify-content:space-between;gap:8px}.editor-panel-head h3{font-size:11px;letter-spacing:1.2px;text-transform:uppercase;color:#91b4a5}.editor-panel-head small{font-size:10px}.editor-panel-body{padding:0 12px 15px;overflow:auto;flex:1;min-height:0}.editor-class{width:100%;display:flex;align-items:center;gap:9px;border:1px solid transparent;border-radius:8px;padding:10px 9px;text-align:left;background:transparent;color:#b3c9bf;margin-bottom:3px;font-size:12px}.editor-class:hover{background:#243731}.editor-class.active{background:#2a453b;border-color:#4b8068;color:#ebfff1}.editor-class .class-count{margin-left:auto;color:#819f91;font-size:11px}.editor-class .color-dot{width:11px;height:11px;margin:0;flex:0 0 11px}.editor-class .class-index{color:#769086;font-family:ui-monospace,monospace;font-size:10px}.editor-right-bottom{padding:16px;border-top:1px solid #2d413e;display:flex;flex-direction:column;gap:13px}.editor-image-info{font-size:11px;color:#8ea69e;line-height:1.7;word-break:break-word}.mode-switch{display:flex;background:#101c1b;border-radius:9px;padding:4px;gap:3px;border:1px solid #2e4b41}.mode-switch button{flex:1;padding:8px 5px;background:transparent;border:0;border-radius:6px;color:#92ada0;font-size:11px}.mode-switch button.active{background:#305547;color:#ecfff3}.saved-indicator{display:flex;align-items:center;gap:5px;color:#9ec4af;font-size:11px}.saved-indicator.unsaved{color:var(--orange)}.saved-indicator.saving{color:var(--blue)}.shortcut-grid{display:grid;grid-template-columns:1fr auto;gap:9px;font-size:11px;color:#94aa9f}.shortcut-grid b{color:#c2ddcb;font-weight:500}
#toast-region{position:fixed;bottom:22px;right:22px;display:flex;flex-direction:column;gap:9px;z-index:120;pointer-events:none;max-width:min(420px,calc(100vw - 35px))}.toast{border:1px solid #3d6d59;background:#1f352d;box-shadow:0 10px 35px #000a;color:#dcf6e7;padding:13px 16px;border-radius:10px;display:flex;align-items:flex-start;gap:10px;font-size:12px;line-height:1.55;pointer-events:auto;animation:toast-in .18s ease-out}.toast.error{background:#392522;border-color:#7f4d48;color:#ffd1c8}@keyframes toast-in{from{transform:translateY(9px);opacity:0}}
@media(max-width:1000px){.sidebar{width:68px;flex-basis:68px;padding-inline:9px}.sidebar-brand{padding:0 7px 20px}.sidebar-brand .brand-label,.sidebar .nav-link span,.sidebar .nav-group-title,.sidebar-bottom .account .user-label,.sidebar-bottom .btn span{display:none}.sidebar .nav-link{justify-content:center;padding:12px}.sidebar-bottom .account{justify-content:center;padding:7px}.sidebar-bottom .btn{justify-content:center}.topbar{padding:0 20px}.workspace{padding:24px 22px}.metric-grid{grid-template-columns:repeat(2,1fr)}.editor-right{width:215px;flex-basis:215px}.analytics-layout{grid-template-columns:1fr}}
@media(max-width:690px){.login-screen{grid-template-columns:1fr}.login-art{display:none}.login-pane{padding:30px;min-height:100vh}.sidebar{display:none}.workspace{padding:22px 14px}.topbar{height:54px;flex-basis:54px;padding:0 13px}.page-head{flex-direction:column}.page-actions{width:100%}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.metric{padding:14px;min-height:92px}.editor-top{padding:0 9px}.editor-top .text-sub,.editor-top-right .btn-label{display:none}.editor-right{width:150px;flex-basis:150px}.editor-rail{width:45px;flex-basis:45px}.tool-btn{width:35px;height:35px}.editor-right-bottom{padding:10px}.editor-bottom{padding:6px}.editor-bottom .text-sub{display:none}.analytics-row{grid-template-columns:95px 1fr 35px}.modal-backdrop{padding:10px}.modal-header,.modal-body,.modal-footer{padding:16px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.selection-inspector{padding:16px 13px;border-top:1px solid #2d413e;background:#1c2d2a;display:flex;flex-direction:column;gap:11px}.selection-inspector .select{padding:8px;font-size:11px}.inspector-coordinates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.inspector-coordinates label{display:flex;align-items:center;gap:6px;color:#96b0a3;font-size:10px}.inspector-coordinates .input{padding:7px 5px;text-align:right;font-size:11px;min-width:0}.selection-inspector .button-row{flex-wrap:nowrap}.selection-inspector .button-row .btn{flex:1;padding-inline:5px;font-size:11px}

/* SANANHO 1.0.1: Focus, previews and dedicated review */
.tool-btn.temporary{outline:2px solid var(--jade);outline-offset:-3px;color:var(--lime);}
.zoom-lock{position:absolute;right:15px;bottom:20px;z-index:1;background:#142320e8;border:1px solid #3a5147;border-radius:8px;padding:9px 11px;color:#b1ccbe;font-size:11px;}
.zoom-lock label{display:flex;align-items:center;gap:7px;cursor:pointer;user-select:none;}
.zoom-lock input{accent-color:var(--jade);}
.editor-class-filter{padding:0 12px 9px;display:flex;gap:7px;align-items:center;}
.editor-class-filter .input{min-width:0;flex:1;padding:8px 10px;font-size:11px;}
.editor-class-filter small{color:var(--sub);white-space:nowrap;font-size:10px;}
.batch-resume{margin:3px 0 10px;color:#b6ddbd;background:#2a453a;padding:6px 7px;border-radius:5px;font-size:10px;display:flex;align-items:center;gap:5px;line-height:1.4;}
.board-search{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap;}
.board-search .search-field{position:relative;flex:1;min-width:min(100%,300px);max-width:750px;}
.board-search .search-field svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--sub);}
.board-search .search-field input{padding-left:37px;}
.board-search small{font-size:10px;color:var(--sub);}
.class-table-search{margin-bottom:14px;max-width:380px;}
.quick-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
.quick-summary>div{background:#243b33;border:1px solid #416353;border-radius:9px;padding:12px;display:flex;flex-direction:column;gap:5px;}
.quick-summary b{font-size:16px;color:#e9f7eb;}.quick-summary span{font-size:10px;color:#b3c6b9;}
.quick-image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;max-height:44vh;overflow:auto;}
.quick-tile{background:#203831;border:1px solid #335348;border-radius:9px;padding:5px;display:flex;flex-direction:column;text-align:left;gap:5px;color:var(--text);min-width:0;}
.quick-tile:hover,.quick-tile.current{border-color:var(--lime);}.quick-tile img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:5px;}
.quick-tile span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;}.quick-tile small{color:var(--sub);font-size:10px;}
.quick-image-large{display:flex;justify-content:center;align-items:center;background:#0f1717;border-radius:10px;padding:10px;min-height:150px;}
.quick-image-large>div{position:relative;width:auto;max-width:100%;max-height:55vh;height:auto;}
.quick-image-large img{display:block;max-width:100%;max-height:55vh;width:100%;height:100%;object-fit:contain;}
.quick-image-large svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.quick-image-data{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:11px;color:var(--sub);}
.quick-image-data b{color:var(--text);}.quick-class-tags{display:flex;gap:5px;flex-wrap:wrap;}
.quick-class-tags span{display:flex;align-items:center;gap:4px;padding:4px 7px;background:#2a4035;border-radius:4px;font-size:10px;}
.review-notes{white-space:pre-wrap;margin-top:6px;}
.smart-result-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;}
.smart-result{display:flex;align-items:center;gap:11px;text-align:left;border:1px solid var(--border);background:#1b2f2a;border-radius:9px;padding:8px;color:var(--text);min-width:0;}
.smart-result:hover{border-color:var(--lime);background:#253c33;}.smart-result img{width:75px;height:65px;object-fit:cover;border-radius:6px;flex:none;}
.smart-result span{display:flex;flex-direction:column;gap:5px;min-width:0;}.smart-result b{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.smart-result small{font-size:10px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.review-root{height:100%;display:flex;flex-direction:column;background:#101718;color:var(--text);}
.review-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(160px,230px) minmax(0,1fr) minmax(210px,270px);}
.review-sidebar,.review-inspector{padding:17px 12px;background:#172322;overflow:auto;min-height:0;display:flex;flex-direction:column;gap:11px;}
.review-sidebar{border-right:1px solid #2d413e;}.review-inspector{border-left:1px solid #2d413e;padding:18px;}
.review-sidebar h3,.review-inspector h3{font-size:11px;color:#9bb4a7;text-transform:uppercase;letter-spacing:.08em;margin:0 0 8px;}
.review-image-list{display:flex;flex-direction:column;gap:4px;}.review-image-item{display:flex;gap:7px;align-items:center;text-align:left;background:#20322d;color:var(--text);padding:6px;border-radius:7px;border:1px solid transparent;min-width:0;}
.review-image-item.active,.review-image-item:hover{border-color:var(--jade);background:#2b493b;}
.review-image-item img{width:53px;height:42px;object-fit:cover;border-radius:3px;}.review-image-item span{display:flex;flex-direction:column;gap:4px;min-width:0;}
.review-image-item strong{font-size:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.review-image-item small{font-size:9px;color:var(--sub);}
.review-main{min-height:0;min-width:0;display:flex;flex-direction:column;background:#242d2d;}
.review-image-stage{min-height:0;flex:1;display:flex;justify-content:center;align-items:center;padding:22px;}
.review-image-frame{position:relative;max-width:100%;max-height:100%;box-shadow:0 8px 30px #0007;}
.review-image-frame img{max-width:100%;max-height:calc(100vh - 190px);width:100%;height:100%;object-fit:contain;display:block;}
.review-image-frame svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.review-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 18px;background:#182622;border-top:1px solid var(--border);font-size:11px;}
.review-inspector .field{display:flex;flex-direction:column;gap:9px;}.review-inspector .textarea{min-height:100px;}
.review-status{border:1px solid #45634f;border-radius:8px;padding:10px;color:#c4e3c7;background:#24392d;font-size:12px;}
.review-class-list{display:flex;flex-direction:column;gap:9px;}.review-class{display:flex;align-items:center;gap:6px;font-size:11px;}.review-class small{margin-left:auto;color:var(--sub);}
.review-inspector .btn-block{width:100%;}.modal-body .hint button{margin:2px;}
@media(max-width:900px){.review-body{grid-template-columns:145px minmax(0,1fr) 190px;}.review-inspector{padding:10px;}.zoom-lock{right:8px;bottom:65px;}}
@media(max-width:680px){.review-body{grid-template-columns:1fr;overflow:auto;}.review-sidebar{max-height:130px;}.review-image-list{flex-direction:row;overflow:auto;}.review-image-item{flex:0 0 150px;}.review-inspector{border-left:0;}.review-main{min-height:340px;}.review-image-stage{min-height:260px;}.zoom-lock{font-size:9px;}.quick-summary{grid-template-columns:repeat(2,1fr);}}

/* SANANHO 1.0.2: context menus, assignments, and role management */
.sananho-context-menu{position:fixed;z-index:190;min-width:205px;max-width:280px;background:#172622;border:1px solid #527164;box-shadow:0 14px 45px #000b;border-radius:10px;padding:5px;display:flex;flex-direction:column;gap:2px}
.sananho-context-menu button{display:flex;align-items:center;gap:9px;padding:10px 11px;text-align:left;color:#e6f4e9;background:transparent;border:0;border-radius:7px;font-size:12px;width:100%}
.sananho-context-menu button:hover:not(:disabled){background:#2b4c3d;color:#cbfa86}
.sananho-context-menu button:disabled{opacity:.36;cursor:not-allowed}

/* Version SANANHO : visible dans les pieds de page de tous les espaces. */
.shell-footer{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:9px 34px;min-height:34px;border-top:1px solid #293e3a;background:#111d1e;color:#708e83;font-size:10px;letter-spacing:.045em}
.workspace{flex:1 0 auto}
.app-version{font-size:10px;font-weight:650;white-space:nowrap;color:#a1c7b8;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.02em}
.editor-version{margin-left:auto;opacity:.8}
.review-version{opacity:.85}
@media(max-width:690px){.shell-footer{padding-inline:14px}.editor-version{display:none}.review-version{display:none}}

/* SANANHO v1.0.3: modular classification editor and dedicated analytics scopes. */
.project-mode-tag{display:inline-flex;align-items:center;font-size:10px;font-weight:700;padding:3px 7px;border-radius:5px;background:#254d40;color:#b5f6d8;margin-right:7px;letter-spacing:.025em}
.classification-root{height:100%;display:flex;flex-direction:column;background:#111c1d;color:var(--text)}
.classification-body{flex:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,290px);min-height:0}
.classification-stage{min-width:0;min-height:0;display:flex;flex-direction:column;background:#242f2f}
.classification-image-shell{min-height:0;position:relative;flex:1;display:flex;justify-content:center;align-items:center;padding:24px}
.classification-image-shell>img{display:block;max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 15px 50px #0008}
.classification-panel{min-height:0;overflow:auto;border-left:1px solid #344a40;background:#1a2b28;display:flex;flex-direction:column}
.classification-labels{overflow:auto;flex:1;padding:8px 11px;display:flex;flex-direction:column;gap:6px}
.classification-label{display:flex;align-items:center;text-align:left;gap:10px;padding:12px;background:#223832;border:1px solid #34564a;border-radius:8px;color:#ebf2ed;cursor:pointer;font-size:12px}
.classification-label:hover{background:#305247;border-color:#7fbaa3}
.classification-label.checked{background:#325c48;border-color:#cbfa86;color:#efffe7}
.classification-label>span:nth-child(3){flex:1}.classification-number{font-family:monospace;font-size:10px;color:#a8c7b5;width:16px}
.classification-hint{font-size:11px;color:#94b3a4;padding:14px;border-top:1px solid #324d43;line-height:1.5}
.analytics-scope-switch{max-width:260px}.analytics-scope-switch button{min-width:90px}.analytics-split-table{overflow:auto;margin-top:17px}
.analytics-states{display:flex;flex-direction:column;gap:9px;margin:18px 0}
.analytics-state{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #355044;padding:10px;font-size:12px}
.analytics-state b{color:#cbfa86}
@media(max-width:700px){.classification-body{grid-template-columns:1fr;overflow:auto}.classification-image-shell{min-height:360px}.classification-panel{max-height:360px;border-left:0;border-top:1px solid #344a40}.classification-labels{max-height:250px}}


/* SANANHO 1.0.4 — direct class picker, no native select dropdown. */
.class-picker-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selection-class-picker{display:flex;flex-direction:column;gap:7px}
.selection-class-picker .input{width:100%;min-width:0;font-size:11px;padding:9px 10px}
.class-picker-list{display:flex;flex-direction:column;max-height:175px;overflow:auto;gap:2px;background:#11211e;border:1px solid #345147;border-radius:8px;padding:5px}
.class-picker-dialog{max-height:300px}
.class-picker-row{display:flex;align-items:center;gap:8px;text-align:left;min-height:32px;padding:7px 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:#d3e7db;font-size:11px;width:100%}
.class-picker-row:hover,.class-picker-row:focus-visible{background:#304b40;outline:none}
.class-picker-row.active{border-color:#4a8469;background:#284b3d;color:#f2fff5}
.class-picker-row .color-dot{width:10px;height:10px;flex:0 0 10px;border-radius:4px}
.class-picker-row .class-index{min-width:17px;color:#9ab5a8;font-size:10px}
.class-picker-row svg{color:#cbfa86}
.class-picker-create{width:100%;display:flex;align-items:center;gap:7px;text-align:left;border:1px dashed #5e936f;border-radius:7px;background:#254134;color:#cbfa86;padding:10px;font-size:11px;line-height:1.5;margin-top:4px;overflow-wrap:anywhere}
.class-picker-create:hover,.class-picker-create:focus-visible{background:#325940;border-style:solid;outline:none}
.class-picker-create strong{font-weight:650}
.class-picker-empty{padding:10px;font-size:11px}

/* SANANHO 1.0.5: workspace left, precision inspector right. */
.editor-work-panel{width:250px;flex:0 0 250px;background:#172322;border-right:1px solid #2d413e;display:flex;flex-direction:column;min-height:0}
.editor-work-panel .editor-panel-body{overflow-y:auto;padding-bottom:12px}
.editor-work-panel .editor-class.group-selected{outline:1px solid #bdf58d;background:#34523f}
.editor-work-panel .editor-class:hover{background:#37584a;color:#edffec}
.editor-right{width:255px;flex:0 0 255px}
.editor-right .selection-inspector{padding:17px 12px 14px;overflow:auto;max-height:calc(100vh - 320px)}
.editor-right #editor-selection-inspector{flex:1;min-height:0;overflow:auto}
.editor-right .inspector-empty{padding:20px 15px;font-size:12px;color:#91aba0;line-height:1.6}
.review-correction{color:#ffbb8e}.review-ok{color:#bdfa9c}
.review-note{color:#ffcfa8;white-space:pre-wrap;font-size:11px;line-height:1.5;margin:8px 0}
.batch-filmstrip{display:flex;justify-content:center;align-items:center;gap:10px;padding:6px 12px;background:#142322;border-top:1px solid #34443e;min-height:71px;flex:0 0 71px;overflow-x:auto}
.filmstrip-item{border:1px solid #3a5d51;border-radius:7px;background:#162e29;position:relative;flex:0 0 79px;width:79px;height:55px;display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer}
.filmstrip-item.active{border:2px solid #cafa8c;box-shadow:0 0 0 1px #95d8a23d}
.filmstrip-item:hover{border-color:#cafa8c}
.filmstrip-item img{width:100%;height:100%;object-fit:cover;opacity:.85}
.filmstrip-item.active img{opacity:1}
.filmstrip-item span{position:absolute;bottom:2px;left:4px;color:#f1fff1;font-size:10px;font-family:monospace;text-shadow:0 1px 3px #000;background:#152c27bd;padding:2px 4px;border-radius:3px}
.filmstrip-dot{position:absolute;right:5px;top:4px;width:9px;height:9px;border-radius:50%;background:#718880;box-shadow:0 0 0 1px #091513}
.filmstrip-dot.approved{background:#bdff83}.filmstrip-dot.rework{background:#ff9478}.filmstrip-dot.pending{background:#778a86}
.filmstrip-rework{position:absolute;right:4px;bottom:3px;color:#ff9e7e;background:#25352c;padding:1px 4px;border-radius:3px}
.classification-progress{padding:7px 18px 0;background:#182725}
.classification-bar{height:5px;border-radius:5px;background:#3b514a;overflow:hidden}
.classification-bar>div{height:100%;background:linear-gradient(90deg,#6bc9ad,#cafa8c);transition:width .16s}
.classification-progress-label{color:#a3bead;font-size:11px;white-space:nowrap}
.classification-status{position:absolute;bottom:20px;left:24px;right:24px;text-align:center;font-size:12px;font-weight:650;pointer-events:none;padding:9px 11px;border:1px solid #587967;border-radius:8px;background:#142b25e8;color:#c9f3d8}
.classification-status.pending{border-color:#73857c;color:#c1c9c3}
.classification-status.none{border-color:#5ca6a6;color:#bdf8ff}
.classification-label.last-used:not(.checked){border-color:#71947e;background:#2a493e}
.classification-explicit{display:flex;flex-direction:column;gap:7px;padding:12px;border-top:1px solid #345147;background:#1c2c27}
.classification-explicit button{width:100%;justify-content:center}
.classification-none{background:#254541;color:#adf7ec;border-color:#528b81}
.classification-none.selected{outline:2px solid #8bdfd0;background:#34645b}
.classification-explicit .selected{color:#caf9a8}
.classification-decision{font-size:11px;color:#a5cdb2;line-height:1.5}
@media(max-width:1180px){.editor-work-panel{width:210px;flex-basis:210px}.editor-right{width:230px;flex-basis:230px}}
@media(max-width:810px){.editor-work-panel{width:160px;flex-basis:160px}.editor-right{width:175px;flex-basis:175px}.editor-class{font-size:11px;padding:8px 4px}.editor-panel-head{padding-left:9px;padding-right:9px}.editor-work-panel .mode-switch button{font-size:9px}}
@media(max-width:700px){.classification-status{font-size:10px}.classification-progress-label{display:none}.filmstrip-item{flex-basis:57px;width:57px;height:45px}.batch-filmstrip{min-height:60px;flex-basis:60px}.editor-work-panel{width:120px;flex-basis:120px}.editor-right{width:135px;flex-basis:135px}}

/* SANANHO 1.0.6: compact empty-class state, multi-label toggling, review status signals. */
.filmstrip-dot.no-class{width:15px;height:15px;display:flex;align-items:center;justify-content:center;right:3px;top:3px;font-style:normal;border-radius:5px;background:#1e4440;color:#c8f6eb;border:1px solid #72ab9a;box-shadow:0 0 0 1px #091513;font-size:13px;line-height:1;padding:0}
.filmstrip-dot.no-class::after{content:'∅'}
/* Avoid the shared .empty layout utility on inline status icons. */
.review-image-legend{display:flex;flex-wrap:wrap;gap:5px;margin:-5px 0 7px}
.review-image-legend .review-status-chip{font-size:9px;min-width:0;padding:3px 5px;white-space:nowrap}
.review-image-item{border-left:3px solid #596a65;position:relative;gap:7px}
.review-image-item.review-approved{border-left-color:#bdfa97}
.review-image-item.review-rework{border-left-color:#fc947f}
.review-image-item.review-pending{border-left-color:#728b85}
.review-image-item .review-image-info{display:flex;flex:1;flex-direction:column;gap:4px;min-width:0}
.review-image-item .review-status-chip{flex:0 0 auto;margin-left:auto}
.review-status-chip{display:inline-flex;align-items:center;justify-content:center;gap:4px;border:1px solid transparent;border-radius:5px;min-width:23px;height:22px;padding:3px 5px;font-size:10px;font-weight:650}
.review-status-chip.approved{background:#294834;color:#c3f6a2;border-color:#47714d}
.review-status-chip.rework{background:#492d2a;color:#ffa390;border-color:#905248}
.review-status-chip.pending{background:#2b3c39;color:#b5c8c1;border-color:#4e615b}
.classification-label.checked{box-shadow:inset 3px 0 0 #cbfa86}
.classification-decision{padding:6px 0 4px;overflow-wrap:anywhere}

/* SANANHO v1.0.7 shared grid / class-pass / user administration */
.filmstrip-tools{display:flex;justify-content:flex-end;padding:5px 14px 2px;background:#14211f;border-top:1px solid #31463e}
.filmstrip-tools .btn{font-size:10px;padding:5px 11px}
.image-grid-dialog{width:min(1120px,96vw);max-height:90vh;display:flex;flex-direction:column}
.image-grid-dialog .modal-body{overflow:auto;min-height:0;display:flex;flex-direction:column;gap:14px}
.image-grid-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;overflow:auto;padding:4px}
.image-grid-item{position:relative;min-width:0;text-align:left;background:#1d302b;color:#e2ede6;border:1px solid #375649;border-radius:10px;padding:6px;display:flex;flex-direction:column;gap:5px}
.image-grid-item.active,.image-grid-item:hover{border-color:var(--lime);background:#284338}
.image-grid-item img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px}
.image-grid-item small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}
.image-grid-number{position:absolute;top:10px;left:10px;background:#14251de0;border-radius:4px;padding:2px 5px;font-size:10px}
.class-pass-done{color:var(--lime);font-weight:bold;margin-left:4px}
.classification-footer-progress{display:flex;gap:12px;align-items:center;min-width:0;flex:1}
.classification-footer-progress .classification-progress{flex:1;max-width:280px;min-width:60px;margin:0}
.classification-footer-progress .classification-progress-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;color:#a4bbb0}
.team-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:10px;margin-bottom:20px}
.team-card{border:1px solid #375549;background:#1b302a;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px}
.team-card strong{font-size:25px;color:#e9f4df}.team-card small{font-size:11px;color:#a0b5a9}
.team-list{display:flex;flex-direction:column;gap:10px}
.team-person{display:grid;grid-template-columns:50px minmax(150px,1fr) minmax(180px,2fr);gap:13px;align-items:center;background:#1a2d28;border:1px solid #3a534a;border-radius:12px;padding:13px}
.team-metrics{display:flex;flex-wrap:wrap;gap:7px}.team-metrics span{background:#2a4438;padding:6px 9px;border-radius:6px;font-size:10px}
.team-associated{font-size:11px;color:#b8cbbd;margin-top:5px}
.team-person .avatar{overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.profile-fields{display:grid;grid-template-columns:120px 1fr;gap:22px;align-items:start}
.profile-avatar{width:100px;height:100px;background:#2a4d3e;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:28px;overflow:hidden}
.profile-avatar img{width:100%;height:100%;object-fit:cover}
.profile-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
@media(max-width:750px){.team-person{grid-template-columns:40px 1fr}.team-metrics{grid-column:1/-1}.profile-fields{grid-template-columns:1fr}.classification-footer-progress .classification-progress-label{display:none}}
/* V1.0.8: full-width, scrollable navigation; 7+ previews instead of a fixed five. */
.batch-filmstrip{justify-content:flex-start;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;scrollbar-color:#638b78 #142322;scroll-snap-type:x proximity;max-width:100%;min-width:0;padding-inline:max(10px,calc((100% - 640px)/2));}
.filmstrip-item{scroll-snap-align:center;}
.filmstrip-dot.state-approved,.filmstrip-dot.state-annotated,.filmstrip-dot.state-classified{background:#c6fa83;}
.filmstrip-dot.state-annotating{background:#71cbeb;}
.filmstrip-dot.state-rework{background:#fb9077;}
.filmstrip-dot.state-pending{background:#7d8b88;}
.filmstrip-dot.state-none{width:15px;height:15px;display:grid;place-items:center;border-radius:4px;background:#274943;color:#d9f5eb;}
.filmstrip-dot.state-none::after{content:'∅';font:12px/1 monospace;}
.image-grid-state{display:block;border-radius:4px;font-size:10px;padding:3px 6px;background:#34443f;color:#dceae1;align-self:start;}
.image-grid-state.state-approved,.image-grid-state.state-annotated,.image-grid-state.state-classified{color:#c6fa83;background:#293f2c;}
.image-grid-state.state-annotating{color:#81d4ef;background:#203c43;}
.image-grid-state.state-rework{color:#ffa186;background:#482e2b;}
.image-grid-state.state-none{color:#c7e5df;}
/* V1.0.8: cosmetic achievements and selectable profile avatar borders. */
.avatar{flex-shrink:0;position:relative;overflow:visible;border:2px solid transparent;box-sizing:border-box;isolation:isolate;}
.avatar img{border-radius:inherit;display:block;width:100%;height:100%;object-fit:cover;}
.avatar-small{width:25px;height:25px;font-size:9px;border-radius:50%;}
.assignee-resume{gap:7px}.assignee-resume strong{color:#e3f1e6;font-weight:600}
.profile-avatar{border:3px solid transparent;box-sizing:border-box;overflow:visible;}
.profile-avatar img{border-radius:50%;}
.avatar-frame-jade{border:3px solid #65d4a8!important;box-shadow:0 0 0 2px #1a3029,0 0 12px #65d4a855;}
.avatar-frame-focus{border:3px double #ccfa85!important;box-shadow:0 0 0 2px #425e46,0 0 12px #cbfa8577;}
.avatar-frame-iris{border:3px solid #8bbcff!important;box-shadow:0 0 0 2px #213d62,0 0 14px #6bb9ff77;}
.avatar-frame-prism{border:3px solid #c99aff!important;box-shadow:0 0 0 2px #344568,0 0 12px #c99affaa;}
.avatar-frame-ember{border:3px solid #ffc28c!important;box-shadow:0 0 0 2px #63432e,0 0 14px #ffae7770;}
.avatar-frame-review{border:3px dashed #e9df9f!important;box-shadow:0 0 0 2px #435849;}
.avatar-frame-aurora{border:3px solid #89eedc!important;box-shadow:0 0 0 2px #928ce7,0 0 16px #62dfceaa;}
.achievement-summary{display:flex;justify-content:space-between;align-items:center;gap:18px;background:#172a26;border-radius:12px;padding:17px;margin-bottom:16px}
.achievement-summary h2{font-size:24px;margin:7px 0 4px}.avatar-achievement{width:72px;height:72px;font-size:24px;border-radius:50%}
.achievement-progress{height:6px;background:#314942;border-radius:8px;overflow:hidden;margin-top:8px;min-width:160px}.achievement-progress i{height:100%;background:#cbfa86;display:block;border-radius:8px}
.achievement-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:22px}.achievement-metrics>div{background:#20332e;border:1px solid #314940;border-radius:9px;padding:12px;display:grid;gap:4px}.achievement-metrics strong{font-size:23px;color:#c9fa98}.achievement-metrics small{font-size:10px;color:#a3bdae}
.achievement-frames{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:9px;margin:14px 0 23px}
.frame-choice{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;background:#1e322c;border:1px solid #345247;border-radius:10px;padding:12px 8px;color:#dfece2;min-height:142px;position:relative}
.frame-choice.selected{border-color:#cbfa86;background:#2a4132}.frame-choice.locked{opacity:.48;cursor:not-allowed}.frame-choice:not(:disabled):hover{border-color:#90dcb4}
.avatar-preview{width:47px;height:47px;border-radius:50%;font-size:17px;display:grid;place-items:center}.frame-choice small{font-size:10px;color:#a4b9ad;line-height:1.4}.frame-choice strong{font-size:12px}.frame-equipped{font-size:10px;color:#cbfa86;font-weight:650}
.achievement-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;max-height:290px;overflow-y:auto;padding:2px;margin-top:10px}
.achievement-row{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid #345047;border-radius:9px;background:#1c302c;min-width:0}.achievement-row.locked{opacity:.5}.achievement-symbol{background:#314d3b;color:#cefb99;border-radius:8px;padding:9px;display:flex}.achievement-row span:nth-child(2){display:flex;flex-direction:column;min-width:0;flex:1;gap:4px}.achievement-row strong{font-size:11px}.achievement-row small{font-size:10px;color:#9aada5}.achievement-row em{font-style:normal;font-size:10px;color:#c2dfc9;white-space:nowrap}
@media(max-width:700px){.achievement-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* SANANHO 1.0.10: physical storage analytics */
.storage-projects{display:flex;flex-direction:column;gap:10px}.storage-project{border:1px solid var(--border2);background:#1b2c28;border-radius:11px;overflow:hidden}
.storage-project summary{padding:15px 18px;cursor:pointer;display:flex;justify-content:space-between;gap:20px;align-items:center;list-style:none}
.storage-project summary::-webkit-details-marker{display:none}.storage-project summary:hover{background:#243830}
.storage-project-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.storage-project-title b{font-size:14px}.storage-project-title small,.storage-version small{font-size:11px;color:var(--sub)}
.storage-project-total{display:flex;align-items:center;gap:12px;min-width:210px}.storage-project-total>.storage-bar{width:110px}.storage-project-content{border-top:1px solid var(--border2);padding:18px}
.storage-project-content h4{font-size:12px;color:var(--jade);text-transform:uppercase;letter-spacing:.1em;margin:20px 0 10px}
.storage-kpis{display:flex;gap:10px;flex-wrap:wrap}.storage-kpis>span{background:#253b33;padding:9px 11px;border-radius:7px;font-size:11px;color:var(--sub);display:flex;gap:10px}.storage-kpis strong{color:var(--text)}
.storage-bar{height:7px;min-width:55px;flex:1;border-radius:999px;background:#34504a;overflow:hidden}.storage-bar span{height:100%;display:block;background:var(--jade);border-radius:999px}
.storage-capacity{display:grid;gap:12px;margin:16px 0}.storage-capacity>.storage-bar{height:13px}
.storage-rows{display:grid;gap:5px}.storage-line{display:grid;grid-template-columns:minmax(180px,1fr) minmax(90px,2fr) 90px;gap:18px;align-items:center;padding:9px 8px;border-bottom:1px solid #31433c;font-size:12px}
.storage-line>span{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.storage-line small{color:var(--sub);font-size:10px}.storage-line>strong{text-align:right;font-variant-numeric:tabular-nums}
.storage-version{display:grid;grid-template-columns:minmax(130px,2fr) 1fr 1fr auto;gap:16px;align-items:center;font-size:11px;padding:10px;border-bottom:1px solid #31433c}
.storage-version>div{display:flex;flex-direction:column;gap:4px;color:var(--sub)}.storage-version b,.storage-version>strong{color:var(--text)}
@media(max-width:800px){.storage-project summary{align-items:flex-start;flex-direction:column}.storage-project-total{width:100%}.storage-line{grid-template-columns:1fr 75px;gap:8px}.storage-line>.storage-bar{grid-row:2;grid-column:1/-1}.storage-version{grid-template-columns:1fr 1fr}}
/* SANANHO 1.0.10: dataset preprocessing and immutable snapshot preview */
.version-resize-options{padding:12px;border:1px solid var(--border2);border-radius:10px;background:#19302b;display:grid;gap:11px}.version-resize-options[hidden]{display:none}
.version-dimensions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.checkline{display:flex;gap:9px;align-items:center;margin:9px 0;font-size:12px;color:var(--text)}.checkline input{accent-color:var(--jade)}
.dataset-preview-controls{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin:15px 0}.dataset-preview-controls label{display:flex;align-items:center;gap:8px;font-size:12px}.dataset-preview-controls .select{width:150px}
.dataset-preview-stage{background:#0a1212;border:1px solid #34433b;border-radius:10px;padding:14px;display:flex;justify-content:center;align-items:center;min-height:180px;max-height:58vh}
.dataset-preview-image{position:relative;max-width:100%;max-height:53vh}.dataset-preview-image img{display:block;max-width:100%;max-height:53vh;object-fit:contain}.dataset-preview-image svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.dataset-preview-footer{display:flex;gap:10px;align-items:center;margin:13px 0}.dataset-preview-footer input[type=range]{flex:1;accent-color:var(--jade);min-width:60px}
