:root{font-family:Segoe UI,Arial,sans-serif;color:#e9eef4;background:#0c1017;font-synthesis:none;--muted:#929ead;--line:#28313e;--green:#a5edb3}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:0;border-radius:7px;background:var(--green);color:#15251a;padding:13px 19px;font-weight:600}button:hover{filter:brightness(1.09)}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #a5edb3;outline-offset:4px}input,select{display:block;width:100%;background:#101620;border:1px solid #35404f;border-radius:6px;color:#eef3f8;padding:13px;margin-top:8px}input:focus,select:focus{outline:2px solid #8ecf9c}label{display:block;font-size:14px;margin:23px 0}small{display:block;color:var(--muted);font-size:12px;line-height:1.7}.muted{color:var(--muted);line-height:1.6}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:600;color:var(--green)}h1,h2,p{margin-top:0}h1{font-size:36px;font-weight:500;letter-spacing:-1.4px}h2{font-size:28px;font-weight:500;letter-spacing:-.8px}.brand{font-size:23px;font-weight:600;letter-spacing:2px}.brand span{display:block;font-size:9px;color:var(--muted);letter-spacing:2.4px;margin:8px 0 0 31px}#login-screen{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login-art{padding:52px 65px;display:flex;flex-direction:column;justify-content:space-between;background:radial-gradient(ellipse at 10% 60%,#203f36 0,transparent 60%),repeating-linear-gradient(0deg,transparent 0,transparent 69px,#ffffff05 70px),repeating-linear-gradient(90deg,transparent 0,transparent 69px,#ffffff05 70px),#111d21}.login-art h1{font-size:64px;line-height:1.13;margin:28px 0}.login-art p:not(.eyebrow){color:#a8bbb8;line-height:1.8}.login-panel{display:grid;place-items:center;padding:40px}.login-panel form{width:100%;max-width:370px}.login-panel button{width:100%;display:flex;justify-content:space-between;margin:26px 0}.login-panel small{text-align:center}#workspace{display:flex;min-height:100vh}#workspace[hidden],#login-screen[hidden],[hidden]{display:none!important}aside{width:248px;flex-shrink:0;border-right:1px solid var(--line);padding:35px 24px;display:flex;flex-direction:column;background:#10151d}.nav-caption{font-size:9px;letter-spacing:1.4px;color:#788598;margin:64px 0 18px}nav button{display:flex;gap:15px;width:100%;text-align:left;background:transparent;color:var(--muted);margin-bottom:8px;padding:14px}nav button.selected{background:#a5edb312;color:var(--green);border:1px solid #a5edb32b}.side-bottom{margin-top:auto;padding-top:35px}.connection{color:var(--green);font-size:11px;margin-bottom:27px}.side-bottom strong{font-size:14px}.side-bottom small{margin-top:6px}.quiet{background:transparent;color:var(--muted);padding:10px 0}main{min-width:0;flex:1;display:flex;flex-direction:column}header{height:80px;padding:0 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}header b{color:#dbe2ec;font-weight:400}.private{font-size:11px}.content{padding:44px 40px;flex:1}.page-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:33px}.page-title h1{margin:14px 0 12px}.page-title p:last-child{font-size:14px;margin:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:10px;margin-bottom:30px;background:#111720}.stat{padding:22px 25px;border-right:1px solid var(--line)}.stat:last-child{border:0}.stat small{font-size:11px}.stat strong{display:block;font-size:30px;font-weight:400;margin-top:8px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.toolbar input{max-width:320px;margin:0}.toolbar small{white-space:nowrap}.camera-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:20px}.camera-card{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#111720}.camera-preview{aspect-ratio:16/10;background:repeating-linear-gradient(0deg,transparent,transparent 39px,#ffffff03 40px),repeating-linear-gradient(90deg,transparent,transparent 39px,#ffffff03 40px),#151d27;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;color:#748396}.camera-preview .lens{width:48px;height:48px;border:1px solid #3c4b5b;border-radius:50%;display:grid;place-items:center;font-size:23px;margin-bottom:13px}.camera-preview small{font-size:11px}.camera-info{padding:18px}.camera-info h3{margin:0 0 7px;font-size:15px;font-weight:500}.camera-info button{margin-top:15px;background:#202b36;color:#dde7f1;width:100%;font-size:12px;padding:10px}.camera-actions{display:flex;gap:10px}.camera-actions button:last-child{width:auto}.empty{border:1px dashed #354151;border-radius:10px;text-align:center;padding:70px 25px;color:var(--muted)}.empty h2{color:#e0e7ef;font-size:23px;margin:20px 0 12px}.empty .symbol{font-size:40px;color:var(--green)}footer{display:flex;justify-content:space-between;padding:24px 40px;border-top:1px solid var(--line);font-size:10px;letter-spacing:1px;color:#758191}footer span{letter-spacing:0}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:9px}table{width:100%;border-collapse:collapse;font-size:13px;text-align:left}th{font-weight:400;color:var(--muted);font-size:11px;background:#141b25}td,th{padding:18px;border-bottom:1px solid var(--line)}tr:last-child td{border:0}td button{padding:8px 12px;background:#24312d;color:var(--green);font-size:12px}.badge{font-size:11px;padding:5px 8px;border-radius:5px;background:#24312d;color:var(--green)}.integration-card{padding:30px;border:1px solid var(--line);border-radius:10px;max-width:740px;background:#111720}.integration-card h2{margin-top:22px}.integration-card p,.integration-card li{color:var(--muted);font-size:14px;line-height:1.9}.integration-card code{color:var(--green)}#notice{padding:15px 20px;border:1px solid #6b5730;border-radius:7px;background:#312918;color:#f0d699;font-size:14px}dialog{background:#151c26;color:#e9eef4;border:1px solid #3b4758;border-radius:12px;padding:28px;width:min(520px,94vw);max-height:90vh}dialog::backdrop{background:#000a;backdrop-filter:blur(5px)}.dialog-head{display:flex;justify-content:space-between;align-items:start}.dialog-head h2{font-size:24px}.dialog-head button{padding-top:0}#save-button{width:100%}.check{display:flex;gap:10px;align-items:center;margin:12px 0}.check input{width:17px;height:17px;margin:0;accent-color:var(--green)}fieldset{border:1px solid var(--line);border-radius:6px;padding:15px}legend{font-size:12px;color:var(--muted)}#form-error,#login-error{color:#f0a5a5;font-size:13px;line-height:1.5}@media(min-width:1500px){.content{max-width:1450px;width:100%;margin:auto}}@media(max-width:900px){aside{width:200px;padding:28px 16px}.content{padding:30px 24px}header{padding:0 24px}.login-art{padding:40px}.login-art h1{font-size:48px}.page-title{align-items:start}.page-title button{font-size:12px}}@media(max-width:650px){#login-screen{grid-template-columns:1fr}.login-art{padding:25px;min-height:240px;gap:30px}.login-art h1{font-size:36px;margin:12px 0}.login-art>small,.login-art p:not(.eyebrow){display:none}.login-panel{padding:35px 25px}#workspace{display:block}aside{width:100%;padding:20px;border-right:0;border-bottom:1px solid var(--line)}aside .brand{font-size:18px}.nav-caption,.side-bottom .connection,.side-bottom strong,.side-bottom small{display:none}nav{display:flex;gap:6px;margin-top:22px}nav button{margin:0;padding:11px;font-size:12px;gap:5px}.side-bottom{position:absolute;right:20px;top:17px;margin:0;padding:0}header{height:58px;padding:0 20px}.private{display:none}.content{padding:28px 20px}.page-title{flex-direction:column;gap:18px}.page-title h1{font-size:30px}.stats .stat{padding:16px 12px}.stat strong{font-size:25px}.toolbar{align-items:start;flex-direction:column;gap:12px}.toolbar input{max-width:none}.camera-grid{grid-template-columns:1fr}footer{padding:22px 20px}footer span{max-width:190px;text-align:right}}

/* FIX: responsive camera wall and controls share the existing portal theme. */
.video-toolbar{flex-wrap:wrap;gap:16px}
.video-toolbar input{max-width:380px;flex:1;min-width:220px}
.layout-options{display:flex;gap:5px;background:#111720;padding:5px;border:1px solid var(--line);border-radius:8px}
.layout-options button{background:transparent;color:var(--muted);min-width:48px;padding:9px 12px;font-size:12px}
.layout-options button[aria-pressed="true"]{background:#a5edb31c;color:var(--green);box-shadow:inset 0 0 0 1px #a5edb345}
.grid-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.grid-controls button,.grid-pagination button{font-size:12px;padding:11px 15px}
.secondary{background:#1c2734;color:#d8e1eb;border:1px solid #334151}
.grid-hint{font-size:12px;color:var(--muted);line-height:1.7;margin:15px 0 25px}
.video-grid{gap:16px;align-items:start}
.video-grid[data-layout="1"]{grid-template-columns:minmax(0,1fr)}
.video-grid[data-layout="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.video-grid[data-layout="9"]{grid-template-columns:repeat(3,minmax(0,1fr))}
.video-grid[data-layout="16"]{grid-template-columns:repeat(4,minmax(0,1fr))}
.video-grid .empty{grid-column:1/-1;width:100%}
.live-card{min-width:0;transition:border-color .15s ease}
.live-card[data-state="playing"]{border-color:#52735c}
.live-card[data-state="error"]{border-color:#69533d}
.live-card .camera-preview{aspect-ratio:16/9;background:#0b1017;overflow:hidden;isolation:isolate}
.live-card video{display:block;width:100%;height:100%;object-fit:contain;background:#080d13}
.video-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:22px;text-align:center;background:radial-gradient(ellipse at center,#21302f75,transparent 80%),#101720dc;pointer-events:none}
.video-overlay .lens{width:40px;height:40px;font-size:20px;margin:0;flex-shrink:0}
.video-message{font-size:12px;line-height:1.55;color:#a9b7c7;max-width:360px}
.live-card[data-state="error"] .video-message{color:#e2bf92}
.live-card[data-state="loading"] .lens{animation:camera-pulse 1.2s ease-in-out infinite}
.live-badge{position:absolute;left:12px;top:12px;padding:4px 7px;border-radius:4px;background:#1e3729df;color:#c1f5ce;font-size:9px;letter-spacing:1px;pointer-events:none}
.video-expand{position:absolute;right:10px;top:10px;z-index:1;width:30px;height:30px;padding:0;background:#101720c9;color:#dce6ef;border:1px solid #526171;font-size:20px;line-height:1}
.live-card .camera-info{padding:15px}
.camera-heading{display:flex;align-items:start;gap:8px;justify-content:space-between}
.camera-heading h3{overflow-wrap:anywhere}
.camera-offline{font-size:9px;color:#e0ac9b;white-space:nowrap;border:1px solid #744d40;border-radius:4px;padding:3px 5px}
.live-card .camera-actions{margin-top:15px;gap:6px;flex-wrap:wrap}
.live-card .camera-actions button{padding:9px 7px;width:auto;flex:1;min-width:66px;margin:0;font-size:11px}
.live-card .camera-actions button:first-child{color:var(--green);background:#22352c}
.live-card .camera-actions button[aria-pressed="true"]{box-shadow:inset 0 0 0 1px #a5edb37a;color:var(--green)}
.live-card .camera-remove{padding:4px 0;margin:13px 0 0;width:auto;font-size:10px;background:transparent;color:#788798}
.live-card .camera-remove:hover{color:#e1a999}
.grid-pagination{display:flex;justify-content:center;align-items:center;gap:20px;margin:28px 0 5px}
.grid-pagination span{font-size:12px;color:var(--muted);text-align:center}
.live-card:fullscreen{display:flex;flex-direction:column;border:0;border-radius:0;background:#080d13;width:100vw;height:100vh}
.live-card:fullscreen .camera-preview{flex:1;aspect-ratio:auto;min-height:0}
.live-card:fullscreen .camera-info{display:flex;align-items:center;gap:24px;padding:16px 24px;background:#111720}
.live-card:fullscreen .camera-heading h3{margin:0}
.live-card:fullscreen .camera-actions{margin:0 0 0 auto}
.live-card:fullscreen .camera-remove{display:none}
.live-card:fullscreen .video-expand{width:40px;height:40px;right:20px;top:20px}
@keyframes camera-pulse{50%{opacity:.4;transform:scale(.92)}}
@media(prefers-reduced-motion:reduce){.live-card[data-state="loading"] .lens{animation:none}.live-card{transition:none}}
@media(max-width:1200px){.video-grid[data-layout="16"]{grid-template-columns:repeat(3,minmax(0,1fr))}.video-grid[data-layout="9"]{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.video-grid[data-layout="16"]{grid-template-columns:repeat(2,minmax(0,1fr))}.video-overlay{padding:15px}.video-overlay .lens{width:30px;height:30px;font-size:16px}.video-message{font-size:11px}.live-card:fullscreen .camera-info{flex-wrap:wrap;gap:10px}.live-card:fullscreen .camera-actions{margin-left:auto}}
@media(max-width:650px){.video-toolbar{align-items:stretch;gap:14px}.video-toolbar input{max-width:none;min-width:0}.layout-options{align-self:start}.video-grid[data-layout="4"],.video-grid[data-layout="9"],.video-grid[data-layout="16"]{grid-template-columns:1fr}.grid-controls{gap:8px}.grid-controls button{padding:10px 12px}.grid-hint{font-size:11px}.grid-pagination{gap:12px}.grid-pagination button{padding:10px}.live-card:fullscreen .camera-info{padding:12px}.live-card:fullscreen .camera-info>small{display:none}}
/* FIX: archive playback and saved scan labels remain readable at every camera size. */
.live-card[data-state="reconnecting"]{border-color:#766334}
.live-card[data-state="reconnecting"] .lens{animation:camera-pulse 1.2s ease-in-out infinite}
.scan-overlay{position:absolute;left:8px;right:8px;bottom:8px;z-index:2;padding:5px 8px;background:#03080dc9;border-left:2px solid var(--green);border-radius:4px;color:#fff;display:flex;flex-direction:column;gap:2px;pointer-events:none;line-height:1.25;font-size:clamp(9px,.8vw,12px);text-shadow:0 1px 2px #000}
/* FIX: workflow and KIZ are always visible; normal marking codes wrap without enlarging the whole caption. */
.scan-line{display:flex;align-items:center;gap:10px;min-width:0}.scan-line>span,.scan-line>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scan-title>strong{flex:1;color:#c6f5cf;font-size:1em}.scan-order-type{flex:none;align-self:start;display:inline-block;padding:1px 4px;border-radius:3px;background:#a5edb326;color:#c6f5cf;font-size:.9em;font-weight:600;white-space:nowrap}.scan-title>.scan-order-ref{flex:0 1 26%;font-size:.9em;color:#bdc8d1}.scan-identity>span:first-child{flex:0 1 48%}.scan-identity>span:last-child{flex:1}.scan-packing>span{flex:1}.scan-packing>span:last-child{flex:0 1 auto}.scan-marking .scan-kiz{flex:1;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;font-family:Consolas,monospace;font-size:clamp(10px,.75vw,11px);line-height:1.2;max-height:4.8em;overflow:auto;text-overflow:clip;pointer-events:auto;user-select:text;color:#e1e9ef}
/* FIX: readable marking text on narrow fullscreen windows wraps instead of shrinking. */
.live-card:fullscreen .scan-kiz{font-size:12px}
/* FIX: ordinary cargo codes and checked timestamps remain visible without expansion. */
.scan-shipping .scan-shipment{flex:1;white-space:normal;overflow-wrap:anywhere;word-break:break-word;font-size:10px;line-height:1.2;max-height:4.8em;overflow:auto;text-overflow:clip;pointer-events:auto;user-select:text;color:#d2e7e2}.live-card:fullscreen .scan-shipment{font-size:12px}.scan-event .scan-shipment{color:#b8cfc7}
.video-grid[data-layout="9"] .scan-overlay,.video-grid[data-layout="16"] .scan-overlay{left:4px;right:4px;bottom:4px;padding:4px 6px;font-size:9px}.video-grid[data-layout="9"] .scan-line,.video-grid[data-layout="16"] .scan-line{gap:6px}
.camera-grant-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:10px 0}
.camera-grant-row:last-child{border:0}.camera-grant-row strong{font-size:12px;font-weight:500}.camera-grant-row .check{font-size:11px;white-space:nowrap}
.archive-controls{display:flex;gap:14px;align-items:end;flex-wrap:wrap;margin:20px 0 0}.archive-controls label{flex:1;min-width:150px;margin:0}.archive-controls button{height:46px;font-size:12px}.archive-controls input,.archive-controls select{margin-top:7px}
.archive-intervals{display:flex;gap:8px;flex-wrap:wrap;max-height:160px;overflow:auto;margin-bottom:22px;padding:2px}.archive-intervals button{font-size:11px;padding:8px 10px}
.archive-stage{display:grid;grid-template-columns:minmax(0,2fr) minmax(250px,1fr);gap:20px;align-items:start}
.archive-card .camera-preview{aspect-ratio:16/9}.archive-card .camera-info{display:flex;gap:16px;align-items:center;justify-content:space-between;font-size:12px}.archive-card .camera-info button{width:auto;margin:0}.archive-card .scan-overlay{bottom:44px;font-size:clamp(10px,.85vw,12px)}
.archive-card:fullscreen .scan-overlay{bottom:50px;font-size:13px}.archive-card:fullscreen .camera-info{flex:none}
.archive-export{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:12px 14px;margin:0 0 18px;border:1px solid var(--line);border-radius:7px;background:#111720;font-size:12px}.archive-export-range{flex:1;min-width:220px;line-height:1.5;color:#d8e2eb}.archive-export-button,.archive-download{padding:10px 14px;font-size:12px;white-space:nowrap}.archive-download{border-radius:6px;background:var(--green);color:#15251a;text-decoration:none;font-weight:600}.archive-export-status{flex-basis:100%;color:var(--muted);line-height:1.4}.archive-export-status:empty{display:none}.archive-export[data-status="error"] .archive-export-status,.archive-export[data-status="failed"] .archive-export-status{color:#f0a5a5}
.scan-history{border:1px solid var(--line);border-radius:9px;padding:18px;background:#111720;min-width:0}.scan-history h2{font-size:19px;margin:0 0 14px}.scan-history input{font-size:12px}.scan-history>p{font-size:12px;margin:12px 0}.scan-history>button{width:100%;font-size:12px;margin-top:12px}
.scan-events{display:flex;flex-direction:column;gap:8px;max-height:65vh;overflow:auto}.scan-event{display:flex;flex-direction:column;gap:4px;width:100%;padding:12px;background:#1a252e;color:#cdd8e3;text-align:left;font-size:11px;font-weight:400;overflow-wrap:anywhere}.scan-event strong{font-size:12px;color:#dcf5e1}.scan-event small{font-size:10px}
.settings-form{max-width:1000px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:start}.settings-form fieldset{min-width:0;padding:20px;background:#111720}.settings-form legend{font-size:15px;color:#dcf5e1;padding:0 5px}.settings-form fieldset>p{font-size:12px;line-height:1.65}.settings-form label{font-size:12px;margin:16px 0}.settings-form .check{margin:18px 0;line-height:1.6}.settings-form input,.settings-form select{font-size:13px}.settings-form [role="alert"]{grid-column:1/-1;color:#f0a5a5;margin:0}.settings-form>button{justify-self:start}
@media(max-width:1100px){.archive-stage{grid-template-columns:minmax(0,1fr)}.scan-events{max-height:380px}.settings-form{grid-template-columns:1fr}}
@media(max-width:650px){.archive-controls{display:grid;grid-template-columns:1fr 1fr}.archive-controls label{min-width:0}.archive-controls button[type="submit"]{grid-column:1/-1}.camera-grant-row{grid-template-columns:1fr 1fr;gap:0 12px}.camera-grant-row strong{grid-column:1/-1}.archive-card .scan-overlay{font-size:10px;padding:4px 6px}.archive-card .camera-info{flex-wrap:wrap}.settings-form fieldset{padding:15px}.archive-export-range{flex-basis:100%}.scan-line{gap:6px}}
@media(prefers-reduced-motion:reduce){.live-card[data-state="reconnecting"] .lens{animation:none}}
