:root{--bg: #0f1115;--panel: #161a21;--panel-2: #1d222b;--line: #2a313c;--text: #e6e9ef;--dim: #8b93a1;--accent: #4cc9f0;--accent-2: #39d98a;--warn: #ffad33;--err: #f72585;--btn-h: #2a313c}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%;overscroll-behavior:none}button{font-family:inherit}.app-root{display:flex;flex-direction:column;height:100%}.app-header{display:flex;align-items:baseline;gap:14px;padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--line)}.app-header h1{font-size:16px;margin:0;font-weight:600}.subtitle{color:var(--dim);font-size:12px}.viewer-shell{flex:1;display:grid;grid-template-columns:1fr 340px;grid-template-rows:auto 1fr;grid-template-areas:"toolbar toolbar" "stage  serialize";min-height:0}.toolbar{grid-area:toolbar;background:var(--panel);border-bottom:1px solid var(--line);padding:8px 12px;display:flex;flex-direction:column;gap:6px}.toolbar-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.file-picker{display:inline-flex;align-items:center;gap:6px;font-size:13px}.file-picker select{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:6px 8px;min-width:260px}.meta-readout{font-size:13px;color:var(--text)}.meta-readout .dim{color:var(--dim)}.tool-group{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.tool-group-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);margin-right:4px}.tool-btn{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12px;min-width:44px;cursor:pointer;touch-action:manipulation}.tool-btn:hover:not(:disabled){background:var(--btn-h)}.tool-btn.active{background:var(--accent);color:#05222b;border-color:var(--accent);font-weight:600}.tool-btn:disabled{opacity:.4;cursor:default}.viewer-stage{grid-area:stage;position:relative;background:#000;min-width:0;min-height:0;overflow:hidden}.cornerstone-host{position:absolute;inset:0}.overlay-host{position:absolute;inset:0;pointer-events:none}.overlay{position:absolute;inset:0}.status-bar{position:absolute;left:8px;bottom:8px;background:#0000008c;color:var(--text);padding:5px 9px;border-radius:6px;font-size:12px;pointer-events:none;max-width:70%}.serialize-panel{grid-area:serialize;background:var(--panel);border-left:1px solid var(--line);padding:12px;display:flex;flex-direction:column;gap:8px;min-height:0}.sp-buttons{display:flex;gap:8px;flex-wrap:wrap}.primary-btn{background:var(--accent-2);color:#062418;border:none;border-radius:8px;padding:10px 14px;font-size:14px;font-weight:600;cursor:pointer}.primary-btn:disabled{opacity:.4;cursor:default}.ghost-btn{background:transparent;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:13px;cursor:pointer}.json-area{flex:1;min-height:160px;background:#0c0e12;color:#d6f0e0;border:1px solid var(--line);border-radius:8px;padding:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.4;resize:none;white-space:pre;overflow:auto}.err{color:var(--err);font-size:12px;word-break:break-word}.info{color:var(--accent);font-size:12px}@media(max-width:900px){.viewer-shell{grid-template-columns:1fr;grid-template-areas:"toolbar" "stage" "serialize";grid-template-rows:auto 1fr 280px}.serialize-panel{border-left:none;border-top:1px solid var(--line)}}.small{font-size:12px}.spacer{flex:1 1 auto}.login-shell{height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:28px;width:100%;max-width:380px;display:flex;flex-direction:column;gap:14px}.login-card h1{margin:0 0 4px;font-size:22px}.login-card .field{display:flex;flex-direction:column;gap:6px;font-size:13px}.login-card input{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:14px 12px;font-size:16px}.login-btn{margin-top:6px;padding:14px;font-size:16px}.login-err{margin-top:-4px}.annotator-root{display:flex;flex-direction:column;height:100dvh;width:100%;min-height:0}.annotator-header{gap:14px}.annotator-header h1{font-size:15px}.draft-state{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);color:var(--dim);background:var(--panel-2);white-space:nowrap}.draft-state.ds-saved{color:var(--accent-2);border-color:#1f4d39}.draft-state.ds-saving{color:var(--accent);border-color:#1f4a5a}.draft-state.ds-unsaved{color:var(--warn);border-color:#5a4321}.draft-state.ds-error{color:var(--err);border-color:#5a1f3e}.finding-bar{display:flex;flex-direction:column;gap:5px;padding:5px 12px;background:var(--panel);border-bottom:1px solid var(--line)}.finding-title{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.finding-title h2{margin:0;font-size:17px}.meta-pill{font-size:12px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);padding:3px 8px;border-radius:999px}.status-buttons{display:flex;gap:8px;flex-wrap:wrap}.status-btn{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12px;cursor:pointer;touch-action:manipulation}.status-btn.tone-ok.active{background:var(--accent-2);color:#062418;border-color:var(--accent-2);font-weight:600}.status-btn.tone-warn.active{background:var(--warn);color:#2a1c06;border-color:var(--warn);font-weight:600}.status-btn.tone-bad.active{background:var(--err);color:#2b0a1c;border-color:var(--err);font-weight:600}.status-btn:hover:not(.active){background:var(--btn-h)}.finding-progress{display:flex;gap:6px;flex-wrap:wrap}.fp-chip{font-size:11px;padding:3px 8px;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--dim)}.fp-chip.done{color:var(--accent-2);border-color:#1f4d39}.fp-chip.current{color:var(--accent);border-color:#1f4a5a}.annotator-toolbar{padding:6px 12px}.annotator-body{flex:1 1 0;display:grid;grid-template-columns:1fr 320px;grid-template-rows:minmax(0,1fr);min-height:240px}.annotator-body .viewer-stage{grid-area:auto;border-right:1px solid var(--line);height:100%;min-height:240px;min-width:320px}.annotator-body.no-side{grid-template-columns:1fr}.annotator-body.no-side .viewer-stage{border-right:none}.annotator-toolbar{padding:3px 8px}.viewer-loading{position:absolute;top:8px;right:8px;background:#0009;color:var(--text);padding:5px 9px;border-radius:6px;font-size:12px;pointer-events:none}.other-view-panel{display:flex;flex-direction:column;gap:8px;background:var(--panel);padding:10px;min-height:0}.other-view-panel h3{margin:0;font-size:13px;color:var(--dim);text-transform:uppercase;letter-spacing:.06em}.ov-chips{display:flex;gap:6px;flex-wrap:wrap}.ov-chip{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:999px;padding:8px 12px;font-size:13px;cursor:pointer;touch-action:manipulation}.ov-chip.seen{border-color:var(--accent-2);color:var(--accent-2)}.ov-chip.active{background:var(--accent);color:#05222b;border-color:var(--accent);font-weight:600}.ov-stage{position:relative;flex:1 1 auto;background:#000;border-radius:8px;overflow:hidden;min-height:180px}.ov-canvas{position:absolute;inset:0}.ov-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:13px;pointer-events:none;text-align:center;padding:12px}.decision-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 14px;background:var(--panel);border-top:1px solid var(--line)}.selectors{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;flex:1 1 auto}.selector{display:flex;flex-direction:column;gap:4px}.sel-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim)}.selector select{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:12px 10px;font-size:14px;min-width:150px}.confidence{display:flex;gap:4px}.conf-btn{width:44px;height:44px;background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;font-size:15px;cursor:pointer;touch-action:manipulation}.conf-btn.active{background:var(--accent);color:#05222b;border-color:var(--accent);font-weight:600}.submit-area{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.save-next{padding:16px 24px;font-size:16px}.submit-err{max-width:260px}.active-time{font-size:12px;color:var(--dim)}.empty-state{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center}.empty-state h2{margin:0;font-size:20px}@media(max-width:900px){.annotator-body{grid-template-columns:1fr;grid-template-rows:1fr 240px}.annotator-body .viewer-stage{border-right:none;border-bottom:1px solid var(--line)}}.admin-root{display:flex;flex-direction:column;height:100dvh;width:100%;min-height:0}.admin-header{gap:14px}.admin-header h1{font-size:15px}.admin-body{flex:1 1 auto;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:14px}.admin-empty{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--dim)}.admin-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.metric-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.metric-tile{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px}.metric-value{font-size:22px;font-weight:600;color:var(--text)}.metric-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);margin-top:4px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px}.panel h2{margin:0;font-size:14px;font-weight:600}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}@media(max-width:900px){.admin-grid{grid-template-columns:1fr}}.table-wrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);padding:6px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.admin-table td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}.admin-table tr:last-child td{border-bottom:none}.cell-strong{font-weight:600}.ok-text{color:var(--accent-2)}.admin-pill{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);white-space:nowrap}.admin-table .fp-chip{margin:2px 4px 2px 0}.progress{height:8px;width:140px;background:var(--panel-2);border:1px solid var(--line);border-radius:999px;overflow:hidden;margin-bottom:4px}.progress-fill{height:100%;background:var(--accent-2);transition:width .2s ease}.bar-row{display:grid;grid-template-columns:150px 1fr 40px;align-items:center;gap:10px}.bar-label{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-label.flagged{color:var(--warn);font-weight:600}.bar-track{height:10px;background:var(--panel-2);border:1px solid var(--line);border-radius:999px;overflow:hidden}.bar-fill{height:100%;transition:width .2s ease}.bar-fill.accent{background:var(--accent)}.bar-fill.warn{background:var(--warn)}.bar-fill.muted{background:var(--dim)}.bar-count{font-size:12px;color:var(--dim);text-align:right}.histogram{display:flex;align-items:flex-end;gap:14px;height:130px;padding-top:6px}.hist-col{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%}.hist-bar-track{flex:1 1 auto;width:100%;max-width:46px;display:flex;align-items:flex-end}.hist-bar{width:100%;background:var(--accent);border-radius:6px 6px 0 0;min-height:2px;transition:height .2s ease}.hist-label{font-size:12px;color:var(--dim)}.hist-count{font-size:11px;color:var(--text)}.cb-panel{gap:14px}.cb-section-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);margin-bottom:4px}.cb-headrow{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}.cb-field{display:flex;flex-direction:column;gap:4px;font-size:13px}.cb-field .cb-input{min-width:240px}.cb-input,.cb-select{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:13px;font-family:inherit}.cb-num{width:90px}.cb-checklist{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow-y:auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px 2px}.cb-finding-block{display:flex;flex-direction:column;gap:6px;padding:2px 0}.cb-check-row{display:flex;align-items:center;gap:10px;font-size:13px;cursor:pointer}.cb-check-row input{width:16px;height:16px;accent-color:var(--accent)}.cb-config-row{display:flex;gap:10px;flex-wrap:wrap;padding:6px 4px 6px 26px;border-left:2px solid var(--line);margin-left:6px}.cb-mini{display:flex;flex-direction:column;gap:3px}.cb-mini-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim)}.cb-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.cb-existing{display:flex;flex-direction:column;gap:8px}.cb-camp-row{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2)}.cb-camp-row.frozen{opacity:.7;border-style:dashed}.cb-camp-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.cb-camp-main .fp-chip{margin:0}.cb-camp-actions{display:flex;gap:6px;flex-shrink:0}.admin-pill.locked{color:var(--warn);border-color:var(--warn)}.ghost-btn.danger{color:var(--err);border-color:var(--err)}.ghost-btn.danger:disabled{opacity:.35;color:var(--dim);border-color:var(--line)}.species-pill{color:var(--accent-2);border-color:#1f4d39;font-weight:600}.multi-pill{color:var(--warn);border-color:#5a4321;font-weight:600}.img-findings{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.img-finding-chip{font-size:11px;padding:3px 8px;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--dim)}.img-finding-chip.current{color:var(--accent);border-color:#41485a;font-weight:600}.img-finding-chip.not-in-campaign{border-style:dashed}.skip-btn{color:var(--dim)}.add-finding form{display:inline-flex;align-items:center;gap:6px}.task-flash{position:fixed;top:64px;left:50%;transform:translate(-50%);background:var(--accent);color:#05222b;font-weight:700;font-size:16px;padding:10px 22px;border-radius:999px;z-index:9500;box-shadow:0 4px 18px #4cc9f059;pointer-events:none}.viewer-blocked{position:absolute;inset:0;background:#0a0c108c;display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:14px;z-index:30;cursor:wait}.add-finding .warn{color:var(--warn);font-size:12px;margin-left:6px}.submit-area .current-finding{color:var(--accent);font-weight:700;font-size:13px}.img-finding-chip.adhoc{border-style:dashed;border-color:var(--accent-2);color:var(--accent-2)}button.img-finding-chip{font:inherit}button.img-finding-chip.other:hover{border-color:var(--accent);color:var(--accent)}.img-finding-chip.done{color:var(--accent-2);border-color:#1f4d39}.review-pill{color:var(--warn);border-color:#5a4321;font-weight:600}.annotator-root{display:grid;grid-template-columns:252px minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-areas:"header header" "fbar   fbar" "tools  body" "dbar   body"}.annotator-root .app-header{grid-area:header}.annotator-root .finding-bar{grid-area:fbar}.annotator-root .toolbar.annotator-toolbar{grid-area:tools;flex-direction:column;gap:10px;padding:8px;border-bottom:none;border-right:1px solid var(--line);overflow-y:auto;align-items:stretch}.annotator-root .toolbar-row{flex-direction:column;gap:10px;align-items:stretch}.annotator-root .tool-group{flex-wrap:wrap;gap:5px}.annotator-root .tool-group-label{margin-bottom:2px}.annotator-root .annotator-body{grid-area:body}.annotator-root .decision-bar{grid-area:dbar;flex-direction:column;align-items:stretch;gap:10px;padding:10px 8px;border-top:none;border-right:1px solid var(--line);overflow-y:auto}.annotator-root .decision-bar .selectors{flex-direction:column;gap:10px}.annotator-root .decision-bar .selector select{width:100%;min-width:0}.annotator-root .decision-bar .confidence{flex-wrap:wrap}.annotator-root .decision-bar .submit-area{flex-direction:column;align-items:stretch;gap:8px}.annotator-root .decision-bar .save-next{padding:14px 10px;font-size:15px}.annotator-root .decision-bar .skip-btn{padding:10px}@media(max-width:820px){.annotator-root{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto minmax(0,1fr) auto;grid-template-areas:"header" "fbar" "tools" "body" "dbar"}.annotator-root .toolbar.annotator-toolbar{border-right:none;border-bottom:1px solid var(--line)}.annotator-root .toolbar-row{flex-direction:row;flex-wrap:wrap}.annotator-root .decision-bar{border-right:none;border-top:1px solid var(--line)}.annotator-root .decision-bar .selectors,.annotator-root .decision-bar .submit-area{flex-direction:row;flex-wrap:wrap}}@media(max-height:920px){.annotator-root .app-header{padding:4px 12px}.annotator-root .app-header h1{font-size:13px}.annotator-root .finding-bar{gap:3px;padding:4px 10px}.annotator-root .finding-title{gap:8px}.annotator-root .finding-title h2{font-size:15px}.annotator-root .meta-pill{font-size:11px;padding:2px 7px}.annotator-root .status-buttons{gap:5px}.annotator-root .status-btn{padding:5px 8px;font-size:11px}.annotator-root .finding-progress{gap:4px}.annotator-root .fp-chip{font-size:10px;padding:2px 7px}.annotator-root .tool-btn{padding:5px 7px;font-size:11px;min-width:40px}.annotator-root .tool-group-label{font-size:10px}.annotator-root .decision-bar .selector select{padding:7px 8px;font-size:12px}.annotator-root .decision-bar .conf-btn{width:36px;height:36px;font-size:13px}.annotator-root .decision-bar .save-next{padding:11px 8px;font-size:13px}.annotator-root .decision-bar .skip-btn{padding:8px;font-size:12px}.annotator-root .decision-bar .active-time{font-size:10px}}
