/* Live app, Conalog common 101da65; no fixture data or simulated success. */
.ops-hash{overflow-wrap:anywhere;word-break:break-word;white-space:normal!important;font-size:.75rem}.ops-source{max-width:100%;max-height:25rem;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.75rem;line-height:1.5}#ops-import-preview .field input[type=file]{max-width:100%;min-width:0}#ops-import-result:empty{display:none}
.tabs{overflow-y:hidden}
/* Critical confirmation uses darker same-source red tokens to avoid the default red.500/white contrast debt. */
button.critical{background:var(--ds-color-scale-red-600);color:var(--ds-color-semantic-fg-neutral-inverted-value);border-color:var(--ds-color-scale-red-700)}button.critical:hover:not(:disabled){background:var(--ds-color-scale-red-700)}button.critical:focus-visible{outline-offset:.125rem}
.retention-executions .component-list dd{white-space:normal;overflow-wrap:anywhere}.retention-executions button{white-space:normal;height:auto;min-height:2rem;text-align:left}
@media(max-width:48rem){.retention-executions .mobile-friendly-table{min-width:0;display:block}.retention-executions .mobile-friendly-table thead{display:none}.retention-executions .mobile-friendly-table tbody,.retention-executions .mobile-friendly-table tr,.retention-executions .mobile-friendly-table td{display:block}.retention-executions .mobile-friendly-table tr{padding:.75rem 0;border-bottom:1px solid var(--line)}.retention-executions .mobile-friendly-table td{border:0;padding:.25rem 0;overflow-wrap:anywhere}.retention-executions .mobile-friendly-table td:before{content:attr(data-label);display:block;color:var(--muted);font-size:.75rem}.retention-executions button{min-height:2.5rem}.retention-executions .component-list{grid-template-columns:minmax(0,1fr)}}
.campaign-summary{display:flex;gap:.5rem;flex-wrap:wrap;margin:.75rem 0;line-height:1.5}.campaign-summary>div{min-width:5rem;padding:.5rem;background:var(--surface);border:1px solid var(--line);border-radius:.5rem}.campaign-summary dt{font-size:.75rem;color:var(--muted)}.campaign-summary dd{margin:0;font-weight:700}.campaign-summary dd,.campaign-summary dt{overflow-wrap:anywhere}
.campaign-candidates{max-height:24rem;overflow:auto;min-width:0;border:1px solid var(--line);border-radius:.5rem;margin:.5rem 0;padding:.75rem}.campaign-candidates .checkbox-field{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;padding:.5rem 0;border-bottom:1px solid var(--line);line-height:1.5;overflow-wrap:anywhere}.campaign-candidates .checkbox-field[hidden]{display:none}.campaign-candidates input[type=checkbox],#workflow-form input[name=campaign_asset_ids]{width:1.125rem;height:1.125rem;min-height:1.125rem;flex:none;margin:0}.campaign-candidates small{color:var(--muted)}#campaign-preview-result:empty{display:none}#workflow-form fieldset{min-width:0}#workflow-form fieldset .checkbox-field{display:flex;gap:.5rem;align-items:center;margin:.75rem 0;overflow-wrap:anywhere}#campaign-preview-error{line-height:1.5}#campaign-preview-result .asset-toolbar{margin-top:.75rem}
.pack-event .audit-json{overflow:auto;max-width:100%;max-height:28rem}
.pack-items{list-style:none;margin:0 0 1rem;padding:0}.pack-items li{display:grid;grid-template-columns:minmax(0,1fr) minmax(6rem,auto);gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--line)}.pack-items p,.pack-items small,.pack-items span{font-size:.75rem;line-height:1.5;overflow-wrap:anywhere}.pack-items p{margin:.25rem 0}.pack-items small{display:block;color:var(--muted)}.pack-version{padding:1rem 0;border-bottom:1px solid var(--line)}.pack-template-item,.pack-response-item{border:1px solid var(--line);border-radius:.5rem;padding:1rem;margin:0 0 1rem;min-width:0}.pack-template-item legend,.pack-response-item legend{font-size:.8125rem;font-weight:600;line-height:1.5;overflow-wrap:anywhere;max-width:100%}.pack-template-item .asset-toolbar{margin-top:.75rem}.pack-event{margin:.75rem 0;padding-bottom:.75rem;border-bottom:1px solid var(--line)}.pack-event p{font-size:.75rem;line-height:1.5;overflow-wrap:anywhere}dialog:has(#pack-template-items),dialog:has(.pack-response-editor){width:min(56rem,calc(100% - 2rem))}.pack-response-item input[type=checkbox]{accent-color:var(--brand-ink)}
@media(max-width:48rem){.pack-items li{grid-template-columns:minmax(0,1fr);gap:.5rem}.pack-template-item,.pack-response-item{padding:.75rem}.pack-template-item .asset-toolbar button{min-height:2.5rem}}
.label-procedure ol{margin:.5rem 0;padding-left:1.25rem;font-size:.8125rem;line-height:1.5}.label-procedure li{padding:.25rem 0}.label-procedure strong{overflow-wrap:anywhere}
.field.checkbox-field{display:flex;flex-direction:row;align-items:center;gap:.5rem;grid-column:1/-1;line-height:1.5}.field.checkbox-field input{width:1.125rem;height:1.125rem;min-height:1.125rem;margin:0;flex:none}
.lookup-value{flex:1;min-width:12rem}.label-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.5rem;align-items:start}.label-layout>div{min-width:0;overflow-x:auto}.label-layout .asset-toolbar{margin-top:1rem}.physical-label{width:var(--label-width);background:white;color:#101828;padding:4mm;border:1px solid #364153;box-sizing:border-box;break-inside:avoid;font-family:inherit}.physical-label h2{font-size:16pt;line-height:1.5;margin:0}.label-asset-id{font-size:14pt;line-height:1.5;font-weight:700;overflow-wrap:anywhere;word-break:break-all;margin:0 0 3mm}.label-caption{font-size:8pt;line-height:1.5;margin:1mm 0}.label-qr{width:var(--qr-width);height:var(--qr-width);max-width:none}.label-qr svg{display:block;width:100%;height:100%}.label-payload{display:block;overflow-wrap:anywhere;line-height:1.5}.label-layout details{margin-top:1rem}
@media(max-width:48rem){.label-layout{grid-template-columns:minmax(0,1fr)}.lookup-value{min-width:0;width:100%}}
@media print{body.label-printing>:not(#label-print-root){display:none!important}body.label-printing #label-print-root{display:block!important;margin:0;padding:0}body.label-printing{margin:0!important;padding:0!important;background:white}#label-print-root .physical-label{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:1.5rem;background:var(--bg)}.login-card{width:min(100%,25rem);padding:2rem;background:var(--surface);outline:1px solid var(--line);outline-offset:-1px;border-radius:.75rem}.login-brand{padding:1rem 0 2rem}.login-brand img{display:block;width:7.5rem;height:auto;margin:auto}.login-card h1{font-size:1.125rem;line-height:1.5rem;margin-bottom:.5rem}.login-card p{font-size:.75rem;line-height:1.5;color:var(--muted);margin:0 0 1.5rem}.login-card input{width:100%}.login-card button{width:100%;height:2rem}.error-message{border:1px solid var(--ds-color-scale-red-200);background:var(--ds-color-scale-red-50);color:var(--ds-color-scale-red-800);padding:.75rem;border-radius:.5rem;font-size:.75rem;line-height:1.5;margin:.75rem 0}.empty-panel{padding:2rem;text-align:left}.empty-panel h2{margin-bottom:.5rem}.empty-panel p{color:var(--muted);font-size:.8125rem;line-height:1.5;max-width:40rem}.scope-copy{font-size:.75rem;color:var(--muted);line-height:1.5}.live-notice{padding:.5rem 1.75rem;font-size:.75rem;line-height:1.5;color:var(--muted)}.scope-values{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.side-footer{font-size:.75rem}.sidebar a[aria-disabled=true]{cursor:default;color:var(--muted)}.sidebar a[aria-disabled=true]:hover .nav-icon-box{background:transparent}.sidebar a[aria-disabled=true] .nav-icon-box{opacity:.65}.live-count{font-size:1.125rem;font-weight:700;color:var(--strong)}.live-list{padding-top:1rem}.live-list .toolbar,.live-list .list-heading{padding:0 1rem}.component-list{display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:.5rem;row-gap:.5rem;margin:0}.component-list dt{color:var(--muted)}.component-list dd{margin:0;overflow-x:auto;white-space:nowrap}.detail-section{margin-bottom:.75rem}.audit-wrap{max-width:100%;overflow:auto}.audit-json{display:block;white-space:pre;max-width:28rem;font-size:.75rem;line-height:1.5;margin:0}.audit-message{line-height:1.5;font-size:.75rem;color:var(--muted)}.asset-toolbar{display:flex;gap:.5rem;flex-wrap:wrap}.form-error{color:var(--ds-color-scale-red-800);font-size:.75rem;line-height:1.5;min-height:1.125rem}.field-help{font-size:.75rem;color:var(--muted);line-height:1.5}.field input,.field select{width:100%}.editor-form{min-width:0}.editor-form h2{line-height:1.5}.editor-form .sub{margin-bottom:1rem;line-height:1.5}.pending-copy{font-size:.75rem;line-height:1.5;color:var(--muted);margin-top:.75rem}.shipments-empty{font-size:.75rem;line-height:1.5;color:var(--muted)}#feedback{position:fixed;right:1rem;bottom:1rem;max-width:30rem;background:var(--ds-color-scale-green-50);color:var(--ds-color-scale-green-800);border:1px solid var(--ds-color-scale-green-200);border-radius:.75rem;padding:.75rem 1rem;box-shadow:var(--ds-elevation-shadow-s3-value);font-size:.8125rem;line-height:1.5;display:none;z-index:25}button[aria-busy=true]{cursor:wait}.session-meta{font-size:.75rem;line-height:1.5;color:var(--muted)}.site-select{min-width:8rem;max-width:100%}.readonly-boundary{font-size:.75rem;line-height:1.5;margin:0;color:var(--muted)}.mobile-friendly-table{min-width:36rem}.field-wide{grid-column:1/-1}.route-state{padding:2rem 1rem;color:var(--muted);font-size:.8125rem;line-height:1.5}.field input[readonly]{background:var(--bg);color:var(--muted)}
@media(max-width:48rem){.login-card{padding:1.5rem}.login-card button{height:2.5rem}.live-notice{padding:.5rem .75rem}.scope-values{gap:.25rem}.session-meta{max-width:13rem}.detail-grid{grid-template-columns:minmax(0,1fr)}.component-list{grid-template-columns:minmax(0,6rem) minmax(0,1fr)}.form-actions{flex-wrap:wrap}.form-actions button{height:2.5rem;min-height:2.5rem}.form-grid input,.form-grid select{min-width:0}.component-list dd{font-size:.8125rem}#feedback{left:4.75rem;right:.75rem;max-width:none}.asset-toolbar button{height:2.5rem;min-height:2.5rem}}
.production-jobs .component-list dd{overflow-wrap:anywhere}.production-pairing{padding:.75rem 0;border-bottom:1px solid var(--line)}.production-pairing:last-child{border-bottom:0}

/* Application surfaces share the workspace's quiet, bounded layout. */
.login-card{border:1px solid var(--line);outline:0;border-radius:.375rem}
.login-card h1{font-size:1.5rem;line-height:2rem}
.login-card button{height:auto;min-height:2.5rem}
.login-card .pending-copy{margin-top:1rem;margin-bottom:0}
.error-message{background:var(--surface);color:var(--ds-color-scale-red-800);border-color:var(--line);border-radius:.25rem}
.component-list{font-size:.8125rem;line-height:1.6}
.component-list dt,.component-list dd{min-width:0;overflow-wrap:anywhere}
.component-list dd{white-space:normal}
.campaign-summary{gap:1.5rem}
.campaign-summary>div{border:0;border-radius:0;background:transparent;padding:.5rem 0}
.campaign-summary dd{font-size:1.25rem}
.campaign-candidates,.pack-template-item,.pack-response-item{border-radius:.25rem}
.pack-template-item,.pack-response-item{border:0;border-top:1px solid var(--line);padding:1rem 0}
#feedback{background:var(--floating);color:var(--ink);border-color:var(--line);border-radius:.25rem;box-shadow:var(--ds-elevation-shadow-s1-value);max-width:min(30rem,calc(100vw - 6rem))}
.station-status{min-width:0;line-height:1.5}.station-status .component-list{grid-template-columns:minmax(0,12rem) minmax(0,1fr)}.station-status .component-list dd{white-space:normal;overflow-wrap:anywhere;overflow-x:visible}.station-status details,.station-host,.station-selection{margin-top:.75rem}.station-host{padding:.75rem 0;border-top:1px solid var(--line)}.station-status summary,.station-host>summary{cursor:pointer}.station-status h3{margin-top:1rem}.station-selection{border-top:1px solid var(--line);padding-top:.75rem}
@media(max-width:48rem){.station-status .component-list{grid-template-columns:minmax(0,1fr)}.station-status .component-list dd{margin-bottom:.5rem}}
@media(max-width:48rem){.production-jobs .mobile-friendly-table{min-width:0;display:block}.production-jobs .mobile-friendly-table thead{display:none}.production-jobs .mobile-friendly-table tbody,.production-jobs .mobile-friendly-table tr,.production-jobs .mobile-friendly-table td{display:block}.production-jobs .mobile-friendly-table tr{padding:.75rem 0;border-bottom:1px solid var(--line)}.production-jobs .mobile-friendly-table td{border:0;padding:.25rem 0;overflow-wrap:anywhere}.production-jobs .mobile-friendly-table td:before{content:attr(data-label);display:block;font-size:.75rem;color:var(--muted);margin-bottom:.25rem}.production-jobs .toolbar button,.production-pairing button{min-height:2.5rem;height:auto;white-space:normal;text-align:left}.production-jobs .component-list{grid-template-columns:minmax(0,1fr)}.production-jobs .component-list dt{padding-bottom:0}.production-jobs .component-list dd{padding-top:.25rem}}

/* Refs #70. Operating status: one flat chip per asset (no gradients, glow or pills), colour from the Conalog scales. */
:root{--status-alarm-bg:var(--ds-color-scale-red-700);--status-alarm-fg:var(--ds-color-scale-gray-00);--status-alarm-line:var(--ds-color-scale-red-700);--status-disconnected-bg:var(--ds-color-scale-red-50);--status-disconnected-fg:var(--ds-color-scale-red-800);--status-disconnected-line:var(--ds-color-scale-red-600);--status-late-bg:var(--ds-color-scale-yellow-50);--status-late-fg:var(--ds-color-scale-yellow-900);--status-late-line:var(--ds-color-scale-yellow-600);--status-clock-bg:var(--ds-color-scale-yellow-50);--status-clock-fg:var(--ds-color-scale-yellow-900);--status-clock-line:var(--ds-color-scale-yellow-600);--status-off-bg:var(--ds-color-scale-gray-100);--status-off-fg:var(--ds-color-scale-gray-700);--status-off-line:var(--ds-color-scale-gray-300);--status-normal-bg:transparent;--status-normal-fg:var(--ds-color-scale-gray-800);--status-normal-line:var(--ds-color-scale-gray-300);--status-pending-bg:transparent;--status-pending-fg:var(--ds-color-scale-gray-600);--status-pending-line:var(--ds-color-scale-gray-400);--focus-ring:var(--ds-color-scale-primary-600)}
.status-chip{display:inline-flex;align-items:center;height:1.5rem;padding:0 .5rem;border:1px solid var(--chip-line);background:var(--chip-bg);color:var(--chip-fg);border-radius:.25rem;font-size:.8125rem;line-height:1;font-weight:600;white-space:nowrap}
.status-chip.status-alarm{--chip-bg:var(--status-alarm-bg);--chip-fg:var(--status-alarm-fg);--chip-line:var(--status-alarm-line)}
.status-chip.status-disconnected{--chip-bg:var(--status-disconnected-bg);--chip-fg:var(--status-disconnected-fg);--chip-line:var(--status-disconnected-line)}
.status-chip.status-late{--chip-bg:var(--status-late-bg);--chip-fg:var(--status-late-fg);--chip-line:var(--status-late-line)}
.status-chip.status-clock_error{--chip-bg:var(--status-clock-bg);--chip-fg:var(--status-clock-fg);--chip-line:var(--status-clock-line)}
.status-chip.status-scheduled_off{--chip-bg:var(--status-off-bg);--chip-fg:var(--status-off-fg);--chip-line:var(--status-off-line)}
.status-chip.status-normal{--chip-bg:var(--status-normal-bg);--chip-fg:var(--status-normal-fg);--chip-line:var(--status-normal-line)}
.status-chip.status-not_connected{--chip-bg:var(--status-pending-bg);--chip-fg:var(--status-pending-fg);--chip-line:var(--status-pending-line);border-style:dashed}
.status-detail{display:block;margin-top:.25rem;font-size:.8125rem;line-height:1.25rem;color:var(--muted);white-space:nowrap}
.status-summary{display:flex;flex-wrap:wrap;gap:.5rem;padding:0 1rem .75rem}
.status-summary button{height:2rem;min-height:2rem;padding:0 .75rem;background:var(--surface);border:1px solid var(--line);font-size:.875rem}
.status-summary button b{margin-left:.25rem;font-variant-numeric:tabular-nums;font-weight:700}
.status-summary button[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.status-summary .summary-alarm:not(.summary-zero) b,.status-summary .summary-disconnected:not(.summary-zero) b{color:var(--ds-color-scale-red-700)}
.status-summary .summary-late:not(.summary-zero) b,.status-summary .summary-clock_error:not(.summary-zero) b{color:var(--ds-color-scale-yellow-900)}
.status-summary .summary-zero{color:var(--muted)}
.stale-values,.stale-values small,.stale-values strong{color:var(--ds-color-scale-gray-500)}
.value-age{display:block;margin-top:.25rem;font-size:.75rem;line-height:1rem;color:var(--ds-color-scale-yellow-900)!important}
.no-report,.value-missing{color:var(--muted)}
.fleet-table td:first-child{min-width:8.5rem}
.title-line{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.status-strip .strip-head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:1rem}.status-strip .strip-head .status-detail{display:inline;margin:0}
.strip-received{font-size:.875rem;color:var(--ink)}.status-strip .value-age{display:inline;margin:0}
.key-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin:0}
.key-metric dt{font-size:.8125rem;line-height:1.25rem;color:var(--muted)}.key-metric dd{margin:.25rem 0 0}
.key-metric strong{display:block;font-size:1.5rem;line-height:2rem;font-weight:600;color:var(--strong);font-variant-numeric:tabular-nums}
.key-metric small{display:block;font-size:.8125rem;line-height:1.25rem;color:var(--muted)}
.power-risk p{margin:.25rem 0;font-size:.875rem;line-height:1.5}
.timeline li[aria-current=step] b{color:var(--strong)}
/* Accessibility quick fixes: visible focus ring, 14px table values and buttons, labelled unknown toggles. */
button:focus-visible,.button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
table{font-size:.875rem;line-height:1.25rem}td small{font-size:.8125rem;line-height:1.25rem}th{font-size:.75rem}
button,.button{font-size:.875rem}
.pairs,.component-list{font-size:.875rem;line-height:1.5}
.unknown-toggle{display:flex;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;color:var(--muted);cursor:pointer}.unknown-toggle input{width:1.125rem;height:1.125rem;min-height:1.125rem;margin:0;flex:none}
.field input:disabled{background:var(--bg);color:var(--muted)}
[hidden]{display:none!important}
#feedback[data-tone=error]{color:var(--ds-color-scale-red-800);border-color:var(--ds-color-scale-red-200)}
.form-error[data-tone=info]{color:var(--ink)}.form-error[data-tone=ok]{color:var(--ds-color-scale-green-800)}
@media(max-width:48rem){.key-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.status-summary{padding:0 .75rem .75rem}.status-summary button{min-height:2.5rem}.key-metric strong{font-size:1.25rem}}
tbody th[scope=row]{vertical-align:middle;height:auto;font-size:.875rem;line-height:1.25rem;font-weight:600;color:var(--ink);white-space:normal;background:transparent}
@media(max-width:48rem){.status-summary .summary-zero{display:none}}
.key-metric.stale-values strong,.key-metric.stale-values small,.key-metric.stale-values dt{color:var(--ds-color-scale-gray-500)}
.status-chip.status-not_started{--chip-bg:var(--status-disconnected-bg);--chip-fg:var(--status-disconnected-fg);--chip-line:var(--status-disconnected-line)}.status-chip.status-late_start{--chip-bg:var(--status-late-bg);--chip-fg:var(--status-late-fg);--chip-line:var(--status-late-line)}.status-summary .summary-not_started:not(.summary-zero) b{color:var(--ds-color-scale-red-700)}.status-summary .summary-late_start:not(.summary-zero) b{color:var(--ds-color-scale-yellow-900)}

/* Long text (design/wording.md §3). Never wrap: device number, status chip, numbers with units,
   times, button labels. Names: one line, ellipsis, full text in title. Description text: one
   flexible column, two lines, full text in title. Server errors wrap anywhere. Button groups wrap
   as whole buttons. Phones: the fleet table becomes cards (number + chip, site, text, values). */
.nowrap,.status-chip,.asset-link,time,.key-metric strong,.value-age,.status-summary button,.status-summary b,button,.button,.tabs a{white-space:nowrap}
button,.button{flex:none}
.asset-toolbar,.form-actions,.status-summary,.strip-head,.title-line{flex-wrap:wrap}
.one-line{display:block;max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.clamp-2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}
.status-detail{white-space:normal;max-width:100%}
.error-message,.form-error,#feedback,.notice,.power-risk p,.component-list dd,.pairs dd,.station-status p,.page-head .sub:not(.one-line),.empty-panel p{overflow-wrap:anywhere;white-space:normal}
.page-head>.page-title{flex:1 1 18rem;min-width:0}
.page-head .page-title h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
.page-head .asset-toolbar{flex:0 1 auto;max-width:100%}
.fleet-table,#asset-results .fleet-table{min-width:0;width:100%;table-layout:auto}
.fleet-table td:first-child,#asset-results .fleet-table td:first-child,#asset-results .fleet-table td:nth-child(2),#asset-results .fleet-table td:last-child{min-width:0}
.fleet-table th:not(.c-status),.fleet-table td:not(.c-status):not(.c-none){width:1%;white-space:nowrap}
.fleet-table .c-status,#asset-results .fleet-table td.c-status{min-width:9rem;white-space:normal}
.fleet-table .asset-site{max-width:12rem}
.fleet-table .c-more details:not([open])>dl{display:none}
.fleet-table .c-more details[open]{white-space:normal;min-width:16rem}
.fleet-table .c-more details[open] .component-list{grid-template-columns:minmax(0,7rem) minmax(0,1fr)}
.key-metrics{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))}
.key-metric dt{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.status-strip>.status-detail{margin:-.5rem 0 1rem;font-size:.875rem;line-height:1.25rem}
.connect-host{font-size:.875rem;color:var(--ink)}
@media(max-width:72rem){.fleet-table .c-ver{display:none}}
@media(max-width:48rem){
 .fleet-table,.fleet-table tbody{display:block}
 .fleet-table thead{display:none}
 .fleet-table tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"num num chip" "site site site" "detail detail detail" "soc power work" "more more more";gap:.25rem .75rem;padding:.75rem 1rem;border-bottom:1px solid var(--line)}
 .fleet-table td{display:block;width:auto!important;padding:0;border:0;min-width:0}
 .fleet-table td.c-status,.fleet-table td.c-asset{display:contents}
 .fleet-table .asset-link{grid-area:num;align-self:center;font-size:1rem}
 .fleet-table .status-chip{grid-area:chip;justify-self:end;align-self:center}
 .fleet-table .asset-site{grid-area:site;max-width:100%;margin:0}
 .fleet-table .status-detail{grid-area:detail;margin:0}
 .fleet-table .c-soc{grid-area:soc}.fleet-table .c-power{grid-area:power}.fleet-table .c-work{grid-area:work}.fleet-table .c-ver{display:none}.fleet-table .c-more{grid-area:more}
 .fleet-table .c-none{grid-column:1/3;grid-row:4}
 .fleet-table td[data-label]:before{content:attr(data-label);display:block;font-size:.75rem;line-height:1rem;color:var(--muted)}
 .page-head .page-title h1{white-space:normal}
 .page-head>.page-title{flex:none;width:100%}
}
@media(min-width:80rem){.fleet-table .asset-site{max-width:20rem}}

/* Refs #70 stage 2. Device 현재 상태 / 변경·사건 이력 / 데이터 누락 and 전체 장비 → 운영 설정.
   Same long-text rules: values, times, counts and tags stay on one line; labels are one line with an
   ellipsis; the history text is the one flexible column (two lines). Differing cells use the yellow
   scale, received data green, missing data grey hatch (design/wording.md, uiux-insight-design 3절). */
.section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;margin-bottom:.75rem}
.section-head h2{margin:0}
.state-age{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;font-size:.875rem;color:var(--ink)}
.state-age.stale-age{color:var(--ds-color-scale-gray-500)}
.differs-count{display:inline-flex;align-items:center;height:1.5rem;padding:0 .5rem;border:1px solid var(--ds-color-scale-yellow-200);border-radius:.25rem;background:var(--ds-color-scale-yellow-50);color:var(--ds-color-scale-yellow-900);font-size:.75rem;line-height:1;font-weight:600}
.register-groups{columns:3 20rem;column-gap:2rem}
.register-group{min-width:0;margin:0 0 1rem}
.register-group h3{break-after:avoid}
.register-group h3,.register-other>summary{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin:0 0 .25rem;font-size:.875rem;line-height:1.5rem}
.register-other{column-span:all;border-top:1px solid var(--line);padding-top:.75rem}
.register-other>summary{cursor:pointer;font-weight:700;color:var(--strong);list-style:none}
.register-other>summary::-webkit-details-marker{display:none}
.register-other>summary::before{content:"";width:.4rem;height:.4rem;margin:0 .25rem 0 .125rem;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(-45deg)}
.register-other[open]>summary::before{transform:rotate(45deg)}
.register-other[open]>summary{margin-bottom:.5rem}
.register-other .register-list{columns:2 22rem;column-gap:2rem}
.register-count{font-size:.75rem;font-weight:500;color:var(--muted)}
.register-list{margin:0}
.register-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center;min-height:2.25rem;padding:.25rem 0;border-bottom:1px solid var(--line);break-inside:avoid}
.register-row dt{min-width:0;font-size:.875rem;line-height:1.25rem;color:var(--ink)}
.register-row dd{margin:0;text-align:right}
.register-value{font-size:.875rem;font-weight:600;color:var(--strong);font-variant-numeric:tabular-nums}
.register-row.differs dd{padding:.125rem .5rem;border-radius:.25rem;background:var(--ds-color-scale-yellow-50)}
.register-row.differs .register-value{color:var(--ds-color-scale-yellow-900)}
.register-standard{display:block;font-size:.75rem;line-height:1rem;font-weight:500;color:var(--ds-color-scale-yellow-900)}
.stale-values .register-value,.stale-values .register-row.differs .register-value{color:var(--ds-color-scale-gray-500)}
.category-filter{display:flex;flex-wrap:wrap;gap:.25rem}
.category-filter button,.settings-actions button:not(.primary){background:var(--surface);border:1px solid var(--line)}
.category-filter button[aria-pressed=true],.settings-actions button[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);color:var(--strong)}
.history-day+.history-day{margin-top:.75rem}
.day-heading{margin:0;padding:.5rem 0 .25rem;font-size:.75rem;line-height:1rem;font-weight:700;color:var(--muted)}
.history-list{list-style:none;margin:0;padding:0}
.history-item{display:grid;grid-template-columns:3.25rem minmax(0,1fr) minmax(0,18rem);gap:.25rem 1rem;align-items:baseline;padding:.5rem 0;border-bottom:1px solid var(--line)}
.history-time{font-size:.875rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.history-text{margin:0;font-size:.875rem;line-height:1.25rem;color:var(--ink)}
.history-label{font-weight:600;color:var(--strong)}
.history-item.sev-warn .history-time{color:var(--ds-color-scale-red-800)}
.history-meta{display:flex;gap:.5rem;align-items:baseline;min-width:0;margin:0;font-size:.8125rem;line-height:1.25rem;color:var(--muted)}
.history-meta .one-line{flex:0 1 auto}
.history-tag{display:inline-flex;align-items:center;height:1.25rem;padding:0 .375rem;border-radius:.25rem;background:var(--ds-color-scale-gray-100);color:var(--ds-color-scale-gray-700);font-size:.75rem;line-height:1;font-weight:600;vertical-align:1px}
.history-tag.tag-protection{background:var(--ds-color-scale-red-50);color:var(--ds-color-scale-red-800)}
.history-tag.tag-power{background:var(--ds-color-scale-yellow-50);color:var(--ds-color-scale-yellow-900)}
.history-more{padding-top:.75rem}
.heartbeat{display:grid;gap:.25rem;margin:0 0 .75rem}
.heartbeat-head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;font-size:.875rem}
.heartbeat-detail{margin:0;font-size:.875rem;line-height:1.25rem;color:var(--ink)}
.status-chip.status-upload_blocked{--chip-bg:var(--status-late-bg);--chip-fg:var(--status-late-fg);--chip-line:var(--status-late-line)}
.status-summary .summary-upload_blocked:not(.summary-zero) b{color:var(--ds-color-scale-yellow-900)}
.delivery-summary{margin:0 0 .75rem;font-size:.875rem;font-weight:600;color:var(--strong)}
.delivery-row,.delivery-axis{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:.75rem;align-items:center}
.delivery-row{margin:.375rem 0}
.delivery-kind{font-size:.8125rem;color:var(--muted)}
.delivery-track{position:relative;height:1rem;border-radius:.125rem;background:var(--ds-color-scale-gray-100);overflow:hidden}
.seg{position:absolute;top:0;bottom:0}
.seg.received{background:var(--ds-color-scale-green-500)}
.seg.gap{background:repeating-linear-gradient(135deg,var(--ds-color-scale-gray-600) 0 2px,var(--ds-color-scale-gray-200) 2px 5px)}
.seg.gap.gap-found{background:repeating-linear-gradient(135deg,var(--ds-color-scale-yellow-700) 0 2px,var(--ds-color-scale-yellow-100) 2px 5px)}
.delivery-axis>div{display:flex;justify-content:space-between;gap:.5rem;font-size:.75rem;line-height:1rem;color:var(--muted)}
.delivery-legend{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin:.5rem 0 0;font-size:.75rem;line-height:1rem;color:var(--muted)}
.delivery-legend .seg{position:static;display:inline-block;width:.75rem;height:.75rem;margin-right:.25rem;vertical-align:-1px}
.delivery h3{margin:1rem 0 .25rem;font-size:.875rem}
.gap-list{list-style:none;margin:0;padding:0}
.gap-item{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;gap:.25rem 1rem;align-items:baseline;padding:.5rem 0;border-bottom:1px solid var(--line);font-size:.875rem;line-height:1.25rem}
.gap-time{font-variant-numeric:tabular-nums;color:var(--strong)}
.gap-kind,.gap-seq{color:var(--muted);font-size:.8125rem}
.gap-reason{margin:0;color:var(--ink)}
.settings-head{align-items:flex-end}
.settings-title{flex:1 1 12rem;min-width:0}
.settings-site{display:flex;flex-direction:column;gap:.25rem;font-size:.75rem;color:var(--muted);min-width:0;max-width:100%}
.settings-site select{min-width:12rem;max-width:min(24rem,100%)}
.settings-actions{margin-bottom:.75rem}
.settings-count{margin:0 0 .5rem;font-size:.8125rem;color:var(--muted)}
.settings-table{width:100%;min-width:0}
.settings-table th{white-space:normal;vertical-align:bottom;min-width:4.5rem;max-width:8rem}
.settings-table .c-device{position:sticky;left:0;z-index:1;min-width:7.5rem;max-width:11rem;background:var(--floating);text-align:left}
.settings-table tbody th.c-device{font-weight:600}
.settings-table th.c-device small{display:block;margin-top:.25rem;font-size:.75rem;line-height:1rem;font-weight:500;color:var(--muted)}
.settings-table td.c-setting{font-variant-numeric:tabular-nums}
.settings-table td.differs{background:var(--ds-color-scale-yellow-50);color:var(--ds-color-scale-yellow-900);font-weight:600}
.settings-table td.differs small{color:var(--ds-color-scale-yellow-900)}
.settings-table td.stale-values,.settings-table td.stale-values small{color:var(--ds-color-scale-gray-500)}
.settings-table .standard-row th,.settings-table .standard-row td{background:var(--surface);color:var(--strong);font-weight:700}
.settings-table .c-change{min-width:9rem;max-width:16rem}
.settings-table .c-change small.one-line{max-width:15rem}
.settings-table .differs-count{margin-top:.25rem;height:1.25rem}
@media(max-width:72rem){.history-item{grid-template-columns:3.25rem minmax(0,1fr)}.history-meta{grid-column:2}.gap-item{grid-template-columns:auto minmax(0,1fr) auto}.gap-reason{grid-column:1/-1;grid-row:2}}
@media(max-width:48rem){
 .register-other .register-list{columns:1}
 .history-item{grid-template-columns:2.75rem minmax(0,1fr)}
 .delivery-row,.delivery-axis{grid-template-columns:4.5rem minmax(0,1fr);gap:.5rem}
 .delivery-axis time:nth-child(2),.delivery-axis time:nth-child(4){display:none}
 .gap-item{grid-template-columns:auto minmax(0,1fr)}
 .gap-seq{grid-column:1/-1}
 .settings-site,.settings-site select{width:100%;min-width:0}
 .category-filter button,.settings-actions button{min-height:2.5rem}
}
