:root{font-family:"Microsoft JhengHei","Noto Sans TC",sans-serif;color:#183c3d;background:#f4f7f6;font-size:15px;--green:#187266;--line:#d9e4df}*{box-sizing:border-box}body{margin:0;display:grid;grid-template-columns:230px 1fr;min-height:100vh}aside{background:white;border-right:1px solid var(--line);padding:32px 20px;position:sticky;top:0;height:100vh}.brand{font-weight:800;letter-spacing:2px;text-decoration:none;color:var(--green);font-size:18px}.brand span{display:block;letter-spacing:0;font-weight:400;font-size:12px;margin-top:9px;color:#6a7e77}nav{display:grid;gap:8px;margin-top:44px}nav a{padding:12px 15px;border-radius:8px;text-decoration:none;color:#385951}nav a:hover,nav a.active{background:#e7f2ed;color:#08664c;font-weight:700}#identity{border-top:1px solid var(--line);padding-top:20px;margin-top:40px;font-size:12px;color:#5e776d}main{padding:24px 3vw;min-width:0}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}small{color:#6c837a}h1{font-size:26px;margin:4px 0}h2{font-size:19px;margin:0 0 12px}h3{font-size:16px}p{line-height:1.5;margin:8px 0}button,.button{border:1px solid var(--line);background:white;border-radius:7px;padding:10px 16px;color:#1d4f43;cursor:pointer;text-decoration:none;display:inline-block;font:inherit}button.primary,.button.primary{background:var(--green);border-color:var(--green);color:white}button.danger{color:#a23e31;border-color:#e8b5ac}button:disabled{opacity:.45;cursor:wait}.card{padding:18px;background:white;border:1px solid var(--line);border-radius:14px;margin-bottom:16px;box-shadow:0 3px 10px #234b3210}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.split{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}.metric{font-size:34px;font-weight:700;margin:12px 0}.muted{color:#687f76;font-size:13px}.badge{font-size:12px;background:#e9f1ed;padding:5px 9px;border-radius:20px;display:inline-block}.warning{background:#fff5df;color:#806128;border:1px solid #f0d99f;padding:14px;border-radius:8px;margin-bottom:18px}.error{background:#fbece8;color:#a1382d;padding:14px;border-radius:8px}.success{background:#e7f3ec;padding:14px;border-radius:8px}#notice:empty{display:none}#notice{margin-bottom:20px;white-space:pre-wrap}label{display:block;font-size:13px;margin:10px 0 6px;font-weight:600}input,select,textarea{border:1px solid #b8cdc2;border-radius:6px;padding:10px;width:100%;font:inherit;background:white;color:#193d31}input[type=checkbox]{width:auto;margin-right:8px}input[type=file]{padding:8px}textarea{min-height:90px}form>.row{margin-top:16px}form.narrow{max-width:500px}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}th,td{padding:9px 10px;border-bottom:1px solid #e6ece9;vertical-align:top}th{color:#6b8076;font-weight:500;background:#f9fbfa}.table-wrap{overflow:auto}pre{white-space:pre-wrap;word-break:break-word;background:#f4f7f5;border-radius:7px;padding:16px;font-size:13px;max-height:450px;overflow:auto}video{width:100%;max-height:440px;background:#e1eae5;border-radius:10px}img{max-width:100%;border-radius:8px}canvas{width:100%;border-radius:8px}.thumb{width:160px}.timeline{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.timeline button{font-size:12px;padding:7px}.checklist{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:3px}.checklist label{font-size:12px}dialog{max-width:680px;width:90%;max-height:90vh;border:0;border-radius:16px;padding:28px;box-shadow:0 20px 100px #103e3b50}dialog::backdrop{background:#203b3355}.close{float:right;border:0}footer{margin-top:40px;font-size:12px;color:#799087}progress{width:100%;accent-color:var(--green);height:14px}a{color:var(--green)}:focus-visible{outline:3px solid #61b89b;outline-offset:2px}@media(max-width:820px){body{display:block}aside{position:static;height:auto;padding:20px}nav{display:flex;flex-wrap:wrap;margin-top:20px;gap:4px}nav a{padding:8px}#identity{margin-top:15px;padding-top:10px}main{padding:18px 14px}.split{grid-template-columns:1fr}h1{font-size:24px}}@media print{aside,header button,footer,.row button{display:none}body{display:block}main{padding:0}.card{break-inside:avoid;box-shadow:none}video{display:none}}

.mfa-setup{max-width:500px;margin-top:20px}.mfa-qr{display:block;width:264px;height:auto;border-radius:0;image-rendering:pixelated}.mfa-actions{flex-wrap:nowrap}.mfa-actions button{white-space:nowrap}@media(max-width:400px){.mfa-actions{gap:8px}.mfa-actions button{padding:10px 12px}}

.field{min-width:0}.field>label{margin:0 0 6px;line-height:1.4}.field+ .field{margin-top:12px}.grid>.field+.field,.form-grid>.field+.field{margin-top:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.table-caption{display:flex;align-items:baseline;justify-content:space-between;gap:8px 16px;flex-wrap:wrap;padding:0 0 12px;text-align:left}.table-caption h2{margin:0}.capacity-status{font-size:13px;color:#526e63;font-weight:400;line-height:1.5}.video-upload-form{display:grid;gap:16px}.video-upload-form>.row{margin-top:0}.upload-file{background:#f5faf7;border:1px dashed #8cb6a4;border-radius:10px;padding:14px}.upload-file>.muted{margin:0 0 10px}.upload-file input{background:white}.advanced-settings{border-top:1px solid var(--line);padding-top:12px}.advanced-settings summary{cursor:pointer;color:#315c4d;font-weight:600}.advanced-settings[open] summary{margin-bottom:12px}@media(max-width:820px){.form-grid,.form-grid.three{grid-template-columns:1fr}}
/* One application shell. The sidebar expands over content rather than resizing charts. */
body{grid-template-columns:72px minmax(0,1fr)}aside#sidebar{position:fixed;inset:0 auto 0 0;width:72px;height:100dvh;padding:24px 12px;background:#fff;z-index:40;overflow-x:hidden;overflow-y:auto;transition:width .16s ease;box-shadow:none}main{grid-column:2;outline:none}aside#sidebar.expanded{width:198px;box-shadow:8px 0 24px #183c3d12}#sidebar .brand{display:flex;flex-direction:column;align-items:center;white-space:nowrap}#sidebar .brand-mark{display:block;width:42px;height:42px;line-height:42px;text-align:center;font-size:24px;background:#e7f2ed;border-radius:10px}#sidebar .brand-full{font-size:18px;font-weight:800;letter-spacing:2px;margin:0;color:var(--green)}#sidebar .brand-detail{font-size:12px;margin-top:6px}#sidebar:not(.expanded) .brand-full,#sidebar:not(.expanded) .brand-detail,#sidebar:not(.expanded) .nav-label,#sidebar:not(.expanded) #identity p{display:none}#sidebar.expanded .brand-mark{display:none}#sidebar.expanded .brand{align-items:flex-start;padding:8px 10px}#sidebar nav{display:flex;flex-direction:column;gap:6px;margin-top:28px}#sidebar nav a,#sidebar #identity button{display:flex;align-items:center;gap:12px;padding:12px;min-height:44px;white-space:nowrap}#sidebar nav a.active{background:#e7f2ed}#sidebar .nav-icon{flex:0 0 22px}#sidebar #identity{margin-top:24px;padding-top:16px}#sidebar #identity p{overflow:hidden;text-overflow:ellipsis}#sidebar #identity button{border:0;width:100%}.page-heading{display:flex;gap:12px;align-items:center}#menu-toggle{display:flex;padding:9px;align-items:center;justify-content:center}#nav-backdrop{position:fixed;inset:0;background:#173e3a55;z-index:35;border:0;border-radius:0}#nav-backdrop[hidden]{display:none}.nav-label{overflow:hidden;text-overflow:ellipsis}
.monitor-view{min-width:0}.monitor-filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.monitor-filters>.field{flex:0 1 160px;margin:0}.monitor-filter-actions{margin-left:auto}.monitor-status{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.monitor-status:empty{display:none}.monitor-split{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(320px,1fr);gap:16px;align-items:start}.monitor-split>.card{min-width:0}.monitor-view .table-wrap{max-width:100%;overflow:auto}.monitor-event-table table{min-width:690px}.monitor-event-table td:first-child{white-space:nowrap}.monitor-event-table td:last-child{min-width:180px;max-width:320px;overflow-wrap:anywhere}.monitor-event-table .selected{background:#e7f2ed}.monitor-event-link{border:0;background:transparent;padding:4px 0;text-decoration:underline;text-underline-offset:3px}.monitor-thumb{width:70px;height:44px;object-fit:cover;max-width:none;display:block}.monitor-detail p{overflow-wrap:anywhere}.monitor-image{display:block;width:100%;height:auto;max-height:65vh;object-fit:contain;background:#eff4f1;border-radius:8px;margin:8px 0 12px}.monitor-strip{display:flex;gap:8px;overflow:auto;padding:3px}.monitor-strip button{flex:0 0 100px;padding:5px;font-size:12px}.monitor-strip img{width:88px;height:56px;object-fit:cover;display:block}.monitor-detail .row{margin:10px 0}.monitor-plot{overflow:auto;max-height:340px;margin-top:12px}.monitor-plot svg{display:block;min-width:680px;width:100%;height:auto}.monitor-plot text{fill:#62786f;font:12px "Microsoft JhengHei",sans-serif}.monitor-gridline{stroke:#dfe9e4;stroke-width:1}.monitor-state-band{fill:#c43c32;opacity:.3}.monitor-dot{fill:#667f77;stroke:white;stroke-width:1.5;cursor:pointer}.monitor-dot.monitor-high,.monitor-dot.monitor-err{fill:#bf3b32}.monitor-dot.monitor-warn{fill:#c08212}.monitor-dot.monitor-ok{fill:#368863}.monitor-dot:focus{stroke:#173d36;stroke-width:3;outline:none}.monitor-state-band:focus{opacity:.65}.badge.monitor-high,.badge.monitor-err{background:#fbe9e6;color:#a32a24}.badge.monitor-warn{background:#fff0d6;color:#8a5d13}.badge.monitor-ok{background:#e0f1e6;color:#20673b}.monitor-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.monitor-value{display:block;font-size:24px;margin-top:6px;font-variant-numeric:tabular-nums}.monitor-metrics .card{padding:14px}.monitor-items{max-height:50vh;overflow:auto}.monitor-items .card{box-shadow:none}dialog:has(.monitor-image){max-width:1100px}dialog:has(.monitor-items){max-width:880px}
@media(max-width:1150px){.monitor-split{grid-template-columns:minmax(0,1fr)}.monitor-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.monitor-filter-actions{margin-left:0}}
@media(max-width:820px){body{display:block}aside#sidebar{width:0;padding:0;border:0;visibility:hidden}aside#sidebar.expanded{width:198px;padding:24px 12px;border-right:1px solid var(--line);visibility:visible}main{padding:16px 12px}.page-heading{gap:8px}header{gap:8px}header h1{font-size:22px}header small{display:none}#refresh{padding:9px 10px;white-space:nowrap}.monitor-filters>.field{flex:1 1 135px;min-width:0}.monitor-split{gap:0}.monitor-view .card{padding:14px}.monitor-metrics{gap:8px}.monitor-value{font-size:20px}.monitor-metrics .card{padding:10px}.monitor-detail .row{gap:8px}.monitor-detail .row button{padding:8px 10px}.table-caption{gap:8px}}
@media(prefers-reduced-motion:reduce){aside#sidebar{transition:none}}
@media print{aside#sidebar,#menu-toggle,#nav-backdrop{display:none}main{margin:0}.monitor-plot svg{min-width:0}.monitor-split{display:block}.monitor-event-table table{min-width:0}}

[hidden]{display:none!important}

/* Dense recognition settings: one row per item, shared by page and dialog. */
dialog:has(.recognition-form){width:calc(100vw - 32px);max-width:1280px;max-height:calc(100dvh - 32px);padding:20px}
.recognition-form{font-size:13px}.recognition-form h3{font-size:14px;margin:14px 0 8px}.recognition-form input,.recognition-form select,.recognition-form textarea{font-size:13px;padding:5px 7px;border-radius:4px;line-height:1.35}.recognition-form input:not([type=checkbox]),.recognition-form select{min-height:31px}.recognition-form label{font-size:12px;margin:0 0 4px}.recognition-form textarea{min-height:42px;height:42px;resize:vertical}.recognition-form button{padding:6px 10px;font-size:13px;min-height:32px}.recognition-form>.row{margin-top:12px}.recognition-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.recognition-toolbar .muted{font-size:12px}
.recognition-form .monitor-items{max-height:clamp(220px,42vh,480px);overflow:auto;border:1px solid var(--line);border-radius:6px;scrollbar-gutter:stable}.recognition-table{table-layout:fixed;min-width:960px;width:100%;font-size:12px}.recognition-table th{position:sticky;top:0;z-index:1;background:#edf3f0;font-size:12px;font-weight:600;white-space:nowrap}.recognition-table th,.recognition-table td{padding:5px 6px;vertical-align:middle}.recognition-table tbody tr:nth-child(even){background:#fafcfb}.recognition-table tbody tr:focus-within{background:#f0f8f4}.recognition-table th:nth-child(1){width:138px}.recognition-table th:nth-child(2){width:130px}.recognition-table th:nth-child(3){width:105px}.recognition-table th:nth-child(4){width:105px}.recognition-table th:nth-child(5){width:48px}.recognition-table th:nth-child(7){width:48px}.recognition-table td:nth-child(5),.recognition-table td:nth-child(7){text-align:center}.recognition-table .recognition-key{font-family:Consolas,monospace;font-size:11px;overflow-wrap:anywhere;color:#60766e}.recognition-table .field{margin:0;position:relative}.recognition-table label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.recognition-table input[type=checkbox]{margin:0;width:16px;height:16px;accent-color:var(--green)}.recognition-table textarea{display:block}.recognition-table textarea:focus{height:96px}.recognition-table button{padding:0;width:28px;min-height:28px;font-size:18px;border-color:transparent;background:transparent}.recognition-table button:hover{background:#fbece8;border-color:#e8b5ac}
.recognition-thresholds{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:10px}.recognition-thresholds>.field+.field{margin-top:0}
@media(max-width:820px){dialog:has(.recognition-form){width:calc(100vw - 16px);max-height:calc(100dvh - 16px);padding:14px}.recognition-thresholds{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.recognition-form .monitor-items{max-height:42vh}.recognition-form .monitor-items:focus-visible{outline-offset:-3px}}

/* Readable foregrounds on the existing light surfaces. */
:root{color:#172e2b}small,.muted,th,footer,#identity,#sidebar .brand-detail,.recognition-table .recognition-key{color:#455d55}label,h1,h2,h3{color:#142c27}input,select,textarea{color:#172e2b}input::placeholder,textarea::placeholder{color:#596c65;opacity:1}.monitor-plot text{fill:#455d55}

/* Compact live filters and timeline leave more room for event records. */
.monitor-view[data-view=live] .monitor-toolbar-card,.monitor-view[data-view=live] .monitor-timeline-card{padding:10px 14px;margin-bottom:10px;border-radius:10px}
.monitor-toolbar-card .monitor-filters{gap:8px}.monitor-toolbar-card .monitor-filters>.field{flex:0 0 130px}.monitor-toolbar-card .monitor-filters>.field:nth-child(1){flex-basis:138px}.monitor-toolbar-card .monitor-filters>.field:nth-child(2){flex-basis:152px}.monitor-toolbar-card .monitor-filters>.field:nth-child(4){flex-basis:104px}.monitor-toolbar-card .monitor-filters>.field:nth-child(5){flex-basis:116px}
.monitor-toolbar-card label{font-size:12px;margin:0 0 3px}.monitor-toolbar-card input,.monitor-toolbar-card select{font-size:13px;line-height:20px;height:32px;padding:4px 7px;border-radius:5px}.monitor-toolbar-card .monitor-filter-actions{gap:6px}.monitor-toolbar-card button,.monitor-timeline-toolbar button{font-size:13px;line-height:20px;min-height:32px;padding:5px 9px;border-radius:5px}.monitor-toolbar-card .monitor-status{gap:6px;margin-top:6px}.monitor-toolbar-card .badge{font-size:12px;line-height:18px;padding:2px 8px}
.monitor-timeline-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px}.monitor-timeline-toolbar h2{font-size:16px;margin:0}.monitor-timeline-toolbar .row{gap:10px}.monitor-timeline-toolbar .muted{font-size:12px}.monitor-timeline-card .monitor-plot{margin-top:4px;max-height:220px}
@media(max-width:820px){.monitor-view[data-view=live] .monitor-toolbar-card,.monitor-view[data-view=live] .monitor-timeline-card{padding:10px}.monitor-toolbar-card .monitor-filters>.field:nth-child(n){flex:1 1 calc(50% - 8px);min-width:0}.monitor-toolbar-card input,.monitor-toolbar-card select{height:36px}.monitor-toolbar-card .monitor-filter-actions{flex:1 1 100%;margin-left:0}.monitor-timeline-toolbar{gap:6px}.monitor-timeline-toolbar .row{gap:6px}.monitor-timeline-toolbar .muted{flex-basis:100%}}

.recognition-scope{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:10px}.recognition-scope>.field:first-child{display:flex;align-items:center;gap:8px;flex:0 1 360px;min-width:0}.recognition-scope>.field:first-child label{white-space:nowrap;margin:0}.recognition-scope>.field:nth-child(2){display:flex;flex-direction:row-reverse;align-items:center;gap:6px;margin:0}.recognition-scope>.field:nth-child(2) label{margin:0}.recognition-scope input[type=checkbox]{margin:0}.recognition-scope .muted{font-size:12px}.recognition-table th:nth-child(7){width:74px}.recognition-table .recognition-confirm{color:#087452;font-weight:700}.recognition-table .recognition-draft{background:#edf8f3}.recognition-table .recognition-draft input[name=new_key]{font:12px Consolas,monospace}.recognition-table .recognition-draft button{width:28px}

.recognition-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:8px}.recognition-preset{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:end;gap:4px 6px;padding:8px;background:#f4f8f6;border:1px solid var(--line);border-radius:6px}.recognition-preset .field{min-width:0}.recognition-preset>.muted{grid-column:1/-1;font-size:11px}.recognition-transfer{gap:6px;margin:0 0 10px!important}.recognition-transfer>.muted{margin-right:auto}.recognition-form .recognition-transfer button{padding:3px 8px;min-height:28px;font-size:12px}
@media(max-width:820px){.recognition-presets{grid-template-columns:1fr;gap:6px}.recognition-preset{padding:6px 8px}.recognition-preset .field{display:flex;align-items:center;gap:6px}.recognition-preset label{white-space:nowrap;margin:0}.recognition-preset>.muted{grid-column:1/-1}.recognition-scope>.field:first-child{flex-basis:100%}}

.image-expandable{cursor:zoom-in}.image-expandable:focus-visible{outline:3px solid #168b74;outline-offset:2px}
dialog:has(.image-viewer){width:calc(100vw - 32px);max-width:1440px;max-height:calc(100dvh - 32px)}.image-viewer>.row{margin-bottom:8px}.image-viewport{overflow:auto;max-height:75dvh}.image-viewport img,.image-viewport canvas{display:block;width:auto;height:auto;max-width:100%;max-height:75dvh;object-fit:contain;margin:0 auto;border-radius:0}.image-viewport.actual-size img,.image-viewport.actual-size canvas{max-width:none;width:auto;max-height:none;margin:0}

.upload-progress{padding:12px;background:#f4f8f6;border:1px solid var(--line);border-radius:8px;margin-top:12px}.upload-progress .upload-controls{display:flex;align-items:end;flex-wrap:wrap;gap:8px}.upload-progress p{margin:6px 0;font-size:13px}.upload-progress .upload-filename{font-weight:600;overflow-wrap:anywhere}

/* Constrain native Safari date controls to their field instead of intrinsic content width. */
.monitor-filters input[type=date]{appearance:none;-webkit-appearance:none;display:block;min-width:0;max-width:100%;min-height:0;width:100%}
.monitor-filters input[type=date]::-webkit-date-and-time-value{min-width:0;text-align:left;margin:0}
.monitor-filters input[type=date]::-webkit-datetime-edit{padding:0}
@media(max-width:820px){
 .monitor-toolbar-card .monitor-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
 .monitor-toolbar-card .monitor-filters>.field:nth-child(n){width:100%;min-width:0;margin:0}
 .monitor-toolbar-card .monitor-filters>.field:nth-child(5),.monitor-toolbar-card .monitor-filter-actions{grid-column:1 / -1}
 .monitor-toolbar-card input,.monitor-toolbar-card select{width:100%;min-width:0;max-width:100%;height:36px;min-height:0;font-size:16px;line-height:normal}
}

/* Native remote controls share the platform shell, typography and session. */
.remote-view{min-width:0}.remote-view .hidden{display:none!important}.remote-view .top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.remote-view .grid{grid-template-columns:repeat(4,minmax(0,1fr));margin:12px 0;gap:10px}.remote-view .grid>.card{padding:12px;margin:0}.remote-view .grid strong{display:block;font-size:18px;margin-top:5px}.remote-view nav{display:flex;flex-direction:row;gap:6px;margin:12px 0;flex-wrap:wrap}.remote-view nav .active{background:#187266;color:white}.remote-view .panel{border:1px solid var(--line);background:white;padding:16px;border-radius:10px}.remote-view .form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}.remote-view .form>.field{margin:0}.remote-view .field.wide{grid-column:1/-1}.remote-view .notice{padding:10px;background:#fff3df;border:1px solid #efd7ad;border-radius:8px;margin:12px 0;line-height:1.5}.remote-view .notice.ok{background:#e7f3ec;border-color:var(--line)}.remote-view .notice.error{background:#fbece8;border-color:#e8b5ac}.remote-view .tag{font-size:12px;padding:4px 8px;border-radius:20px;background:#e7f3ec}.remote-view .tag.off{background:#fff3df}.remote-view select{width:auto;max-width:100%;min-width:0}.remote-view .field select{width:100%}.remote-view input[type=checkbox]{width:auto}.remote-view .row>label{margin:0}.remote-view button{padding:7px 10px}.remote-view .tablewrap{overflow:auto}.remote-view .spaced{justify-content:space-between}.remote-view .file,.remote-view .roi{padding:10px 0;border-bottom:1px solid var(--line)}.remote-view .roi .form{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.remote-view .empty{padding:20px}.remote-view .mono{font-family:monospace}
@media(max-width:820px){.remote-view .grid{grid-template-columns:repeat(2,minmax(0,1fr))}.remote-view .form{grid-template-columns:minmax(0,1fr)}.remote-view .roi .form{grid-template-columns:repeat(2,minmax(0,1fr))}.remote-view table{min-width:560px}.remote-view .top{align-items:flex-start}.remote-view .panel{padding:12px}}

/* Full-resolution picture and matching analysis in one compact viewer. */
dialog:has(.event-image-layout){max-width:1680px;padding:18px;width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}
dialog:has(.event-image-layout) #dialog-body>h2{margin:0 32px 12px 0;font-size:19px}
.event-image-layout{display:grid;grid-template-columns:minmax(0,2.3fr) minmax(280px,1fr);gap:16px;align-items:start}
.event-image-viewer{min-width:0}.event-image-viewer>.row{gap:8px;margin-bottom:8px}.event-image-viewer button{padding:7px 10px;font-size:13px}
.event-image-viewer .image-viewport{background:#edf2ef;border-radius:6px;min-height:120px;max-height:calc(100dvh - 148px)}
.event-image-viewer .image-viewport canvas{max-height:calc(100dvh - 148px)}
.event-image-viewer .image-viewport.actual-size canvas{max-width:none;max-height:none}
.event-image-results{min-width:0;max-height:calc(100dvh - 110px);overflow:auto;padding:0 4px 0 0;font-size:14px}
.event-image-results h3{margin:0;font-size:16px}.event-image-results p{margin:8px 0;overflow-wrap:anywhere}
.event-image-results th,.event-image-results td{padding:7px 6px}.event-image-results .warning{padding:10px;margin:10px 0}
@media(max-width:820px){.event-image-layout{grid-template-columns:minmax(0,1fr);gap:12px}.event-image-results{max-height:none;overflow:visible}.event-image-viewer .image-viewport,.event-image-viewer .image-viewport canvas{max-height:48dvh}.event-image-viewer .image-viewport.actual-size canvas{max-height:none}dialog:has(.event-image-layout){padding:14px;width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}}


/* Compact video records and candidate events; other pages keep their layout. */
.video-records-card,.video-detail-card{padding:12px 14px;margin-bottom:12px;border-radius:9px}
.video-records-card p,.video-detail-card>p{font-size:12px;line-height:1.45;margin:6px 0}
.video-detail-card>h2,.video-detail-card>h3{font-size:17px;margin:0 0 8px}
.video-records-table th,.video-records-table td,.video-detail-card th,.video-detail-card td{padding:5px 7px;font-size:12px;line-height:1.4;vertical-align:middle}
.video-records-card .row,.video-detail-card .row{gap:5px 8px}
.video-records-card button,.video-records-card a.button,.video-detail-card button,.video-detail-card a.button{min-height:28px;padding:4px 7px;font-size:12px;line-height:18px;border-radius:4px}
.video-records-table table{min-width:780px}
.video-records-table td:first-child{max-width:220px;overflow-wrap:anywhere}
.video-records-table td:last-child .row{flex-wrap:nowrap;white-space:nowrap}
.video-records-card .badge,.video-detail-card .badge{padding:3px 8px;font-size:12px}
.video-detail-card progress{height:7px}
.video-detail-card .split{gap:12px;align-items:start;margin:8px 0}
.video-detail-card .split img,.video-detail-card .split canvas{max-height:280px;width:auto;max-width:100%;object-fit:contain}
.video-detail-card .timeline{gap:4px;margin:7px 0}
.video-detail-card table{min-width:590px}
.video-detail-card th:nth-child(-n+4),.video-detail-card td:nth-child(-n+4){width:1%;white-space:nowrap}
.video-records-table tbody tr:nth-child(even),.video-detail-card tbody tr:nth-child(even){background:#f6f9f8}
@media(max-width:680px){
 .video-records-card,.video-detail-card{padding:10px}
 .video-records-card button,.video-detail-card button{min-height:34px}
 .video-detail-card .split img,.video-detail-card .split canvas{max-height:230px}
}

.video-detail-card .split{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}
.video-detail-card .split>div{min-width:0}
.video-detail-card .split>div:last-child{position:sticky;top:12px}
.video-detail-card .split>div>p{font-size:12px;margin:5px 0 8px}
.video-detail-card table{min-width:530px}
@media(max-width:1000px){.video-detail-card .split{grid-template-columns:1fr}.video-detail-card .split>div:last-child{position:static}}

/* Weight scatter: dense samples must not paint white holes over adjacent points. */
.monitor-plot[data-chart="weight"] .monitor-dot{stroke:none;stroke-width:0;r:2.5px}
.monitor-plot[data-chart="weight"] .monitor-dot.monitor-ok{r:2px}
.monitor-plot[data-chart="weight"] .monitor-dot.monitor-err,.monitor-plot[data-chart="weight"] .monitor-dot.monitor-warn{r:3px}

/* Weight scatter presentation: actual grams, no tolerance background. */
.monitor-plot[data-chart="weight"]{background:#fff}
.monitor-plot[data-chart="weight"] .monitor-dot{stroke:none;stroke-width:0}
.monitor-plot[data-chart="weight"] .monitor-dot.monitor-ok{fill:#287cce;fill-opacity:.58;r:2px}
.monitor-plot[data-chart="weight"] .monitor-dot.monitor-warn{fill:#cc8a00;fill-opacity:1;r:3px}
.monitor-plot[data-chart="weight"] .monitor-dot.monitor-err{fill:#ce3b34;fill-opacity:1;r:3px}
.monitor-plot[data-chart="weight"] .monitor-dot:focus{stroke:#263f4a;stroke-width:1;outline:none}
.weight-scatter-key{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;font-size:12px;line-height:1.4;color:#405854;margin-top:4px}
.weight-scatter-key .weight-ok{color:#287cce}.weight-scatter-key .weight-warn{color:#a66e00}.weight-scatter-key .weight-err{color:#ce3b34}
.weight-scatter-detail{font-size:12px;line-height:1.5;color:#294743;margin-top:4px;min-height:18px}

.monitor-plot[data-chart="weight"]{max-height:none;overflow:visible}
.monitor-plot[data-chart="weight"] .weight-panel svg{min-width:0;width:100%;height:auto;display:block}
.weight-panel{padding:8px 0 4px;border-bottom:1px solid #e6edeb}
.weight-panel:first-child{padding-top:0}.weight-panel:last-child{border-bottom:0}
.weight-panel-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px;font-size:12px;line-height:1.5;margin-bottom:3px}
.weight-panel-heading strong{font-size:13px;color:#173d38}.weight-panel-empty{padding:8px 0}
.weight-panel-hint{font-size:12px;color:#405854;line-height:1.5;margin-top:5px}
@media(max-width:640px){.weight-panel-heading{gap:2px 8px}.weight-panel-heading .muted{font-size:11px}.weight-panel-hint{font-size:11px}}

.weight-range-tools{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px}.weight-range-tools button{padding:4px 9px;min-height:30px;font-size:12px;line-height:1.4}.weight-range-tools button[aria-pressed="true"]{background:#e6f2ef;border-color:#5e9e90;color:#164c40}.weight-range-label{font-size:12px;color:#405854;margin-left:auto}.weight-range-tools button:disabled{opacity:.45}@media(max-width:640px){.weight-range-label{flex-basis:100%;margin-left:0;font-size:11px}}

/* Recognition workspace: compact module cards and per-camera context. */
.recognition-form .recognition-modules{margin:0 0 14px}
.recognition-modules>h3,.recognition-scene h3,.recognition-module-editor h3{font-size:15px;margin:0 0 8px}
.recognition-modules>p{font-size:13px;margin:0 0 12px}
.recognition-module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:10px}
.recognition-module{min-width:0;border:1px solid #d8e4e1;border-radius:9px;padding:12px;display:flex;flex-direction:column;gap:8px;background:#fff}
.recognition-module.is-active{background:#f2f8f6;border-color:#559d94}
.recognition-module-heading,.recognition-module-actions,.recognition-scene-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.recognition-module-heading h4{font-size:14px;margin:0;flex:1}
.recognition-module-heading .badge{font-size:11px;padding:3px 7px;white-space:nowrap}
.recognition-module>p{font-size:13px;line-height:1.5;margin:0;min-height:39px;color:#425f63}
.recognition-module-actions{margin-top:auto;gap:6px}
.recognition-module-actions>span{flex:1;font-size:12px}
.recognition-form .recognition-module-actions button,.recognition-modules>button{padding:6px 10px;min-height:32px;font-size:13px}
.recognition-module>small{font-size:11px}
.recognition-form .recognition-transfer{margin:8px 0 12px;gap:8px}
.recognition-transfer>span{margin-right:auto}
.recognition-module-editor{background:#f5f8f7;border:1px solid #cbded9;border-radius:8px;padding:12px;margin:0 0 12px}
.recognition-module-editor[hidden]{display:none}
.recognition-module-fields{display:grid;grid-template-columns:1fr 2fr;gap:10px;margin-bottom:10px}
.recognition-form .recognition-scene{border:1px solid #d8e4e1;background:#fafcfb;border-radius:8px;padding:12px;margin:8px 0 14px}
.recognition-scene .field{margin:0}.recognition-scene p,.recognition-module-editor p{font-size:12px;line-height:1.5;margin:7px 0 0}
.recognition-form .recognition-scene textarea{min-height:76px;font-size:14px;padding:8px 10px;resize:vertical}
.recognition-form .recognition-scope{margin-bottom:8px}
.recognition-form .recognition-scope .field:first-child{max-width:350px;min-width:200px}
.recognition-form .recognition-scope .field[hidden]{display:none}
@media(min-width:1700px){.recognition-module-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(max-width:800px){.recognition-module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.recognition-module-fields{grid-template-columns:1fr}}
@media(max-width:480px){.recognition-module-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px}.recognition-module{flex:0 0 88%;scroll-snap-align:start}.recognition-module>p{min-height:0}.recognition-form .recognition-scope .field:first-child{max-width:none;width:100%}.recognition-transfer>span{flex-basis:100%}}
.recognition-scene-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
.recognition-scene-image,.recognition-scene-writing{min-width:0}
.recognition-scene-image .table-caption{padding-bottom:6px}
.recognition-camera-preview{display:flex;align-items:center;justify-content:center;aspect-ratio:16/9;background:#edf2f0;border:1px solid #d8e4e1;border-radius:6px;overflow:hidden;color:#455d55;font-size:13px;text-align:center}
.recognition-camera-preview img{display:block;width:100%;height:100%;object-fit:contain;border-radius:0}
.recognition-form .recognition-scene textarea{min-height:180px;height:180px;font-size:14px;padding:8px 10px;resize:vertical}
.recognition-scene-writing>.row{margin-top:8px;gap:8px}
.recognition-scene-proposal:not(:empty){margin-top:12px;padding:10px;border:1px solid #9cc8bc;border-radius:6px;background:#fff}
.recognition-scene-proposal .row{margin-top:8px}
@media(max-width:800px){.recognition-scene-layout{grid-template-columns:1fr}.recognition-form .recognition-scene textarea{min-height:140px;height:140px}}
.recognition-camera-preview{aspect-ratio:auto;height:clamp(180px,18vw,300px)}
@media(max-width:800px){.recognition-camera-preview{height:auto;aspect-ratio:16/9}}

/* Compact recognition workspace without reducing the editable text size. */
.card:has(>.recognition-form){padding:14px}
.recognition-form .recognition-modules{margin-bottom:10px}
.recognition-form .recognition-modules>h3{margin:0 0 5px}
.recognition-form .recognition-modules>p{margin:0 0 8px;line-height:1.4}
.recognition-module-grid{gap:8px;margin-bottom:10px}
.recognition-form .recognition-module{padding:9px 10px;gap:6px;border-radius:7px}
.recognition-form .recognition-module>p{min-height:0;line-height:1.4;font-size:13px}
.recognition-module-heading{gap:5px}
.recognition-module-heading h4{font-size:13px;line-height:1.4}
.recognition-module-heading .badge{font-size:11px;padding:2px 6px}
.recognition-form .recognition-module-actions{gap:5px}
.recognition-module-actions small{display:block;font-size:11px;line-height:1.35}
.recognition-form .recognition-module-actions button{padding:4px 8px;min-height:28px}
.recognition-modules>.table-caption{padding:0;margin:8px 0 7px;align-items:center}
.recognition-modules>.table-caption h3{margin:0}
.recognition-form .recognition-transfer{margin:4px 0 8px!important}
.recognition-form .recognition-scene{padding:10px;margin:6px 0 10px}
.recognition-scene-layout{gap:12px}
.recognition-camera-preview{height:clamp(170px,16vw,250px)}
.recognition-form .recognition-scene textarea{min-height:150px;height:150px}
.recognition-form .recognition-toolbar{margin-bottom:6px}
.recognition-form h3{margin:10px 0 6px}
.recognition-form>.row{margin-top:10px}
@media(max-width:800px){.recognition-camera-preview{height:auto;aspect-ratio:16/9}.recognition-form .recognition-module-actions button{min-height:34px}.recognition-form .recognition-scene textarea{height:140px;min-height:140px}}

.recognition-form .monitor-items{overflow:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable}
.recognition-table{min-width:1000px}
.recognition-table th:nth-child(1){width:40px;text-align:center}
.recognition-table th:nth-child(2){width:138px}
.recognition-table th:nth-child(3){width:130px}
.recognition-table th:nth-child(4),.recognition-table th:nth-child(5){width:105px}
.recognition-table th:nth-child(6){width:48px}
.recognition-table th:nth-child(7){width:auto}
.recognition-table th:nth-child(8){width:74px}
.recognition-table td:nth-child(5),.recognition-table td:nth-child(7){text-align:left}
.recognition-table td:nth-child(1),.recognition-table td:nth-child(6),.recognition-table td:nth-child(8){text-align:center}
.recognition-number{font-variant-numeric:tabular-nums;color:#455d55;font-size:12px}

.scene-coordinates{min-width:0}
.scene-coordinates-stage{height:clamp(170px,16vw,250px);position:relative;overflow:hidden;background:#edf2f0;border:1px solid #d8e4e1;border-radius:6px;display:flex;align-items:center;justify-content:center}
.scene-coordinates-stage img{display:block;width:100%;height:100%;object-fit:contain;border-radius:0;user-select:none;pointer-events:none}
.scene-coordinates-overlay{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none;user-select:none}
.scene-coordinates-overlay>*{pointer-events:none;vector-effect:non-scaling-stroke}
.sc-grid{stroke:#fff;stroke-width:1;stroke-dasharray:5 4;filter:drop-shadow(0 0 1px #152d31)}
.sc-crosshair{stroke:#ffe168;stroke-width:1;stroke-dasharray:4 3;filter:drop-shadow(0 0 1px #152d31)}
.sc-selection{stroke:#ffc400;stroke-width:2;fill:#ffc40022}
.sc-point{stroke:#fff;stroke-width:2;fill:#be3e20}
.scene-coordinates-readout{display:block;font-size:12px;line-height:1.5;min-height:20px;margin-top:5px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;color:#183c3d}
.scene-coordinates .scene-coordinates-tools{gap:6px;margin:5px 0}
.scene-coordinates-tools button{padding:4px 8px;min-height:28px;font-size:12px}
.scene-coordinates-feedback{display:block;font-size:12px;color:#176957}
.scene-coordinates p{font-size:12px;margin:4px 0}
dialog:has(.scene-coordinates.expanded){width:calc(100vw - 32px);max-width:1400px;padding:18px}
.scene-coordinates.expanded .scene-coordinates-stage{height:min(65vh,720px)}
@media(max-width:800px){.scene-coordinates-stage{height:200px}.scene-coordinates-tools button{min-height:34px}.scene-coordinates.expanded .scene-coordinates-stage{height:60vh}}
