html{font-size:var(--reading-font-size,1.125rem)}:root{--ink:#183c30;--ink-soft:#355447;--muted:#52675d;--brand-strong:#23724e;--line:#cbd9d0;--chart-text:#52675d;--chart-label:#183c30;--read-stripe:#f3f7f4;--read-hover:#e5f1e9;--text-display:clamp(1.5rem, 2vw, 1.75rem);--text-h1:clamp(1.35rem, 1.8vw, 1.55rem);--text-h2:1.2rem;--text-h3:1.1rem;--text-base:1rem;--text-secondary:.875rem;--text-caption:.8125rem;--text-micro:.75rem}html[data-theme=dark]{--muted:#b4c7bc;--ink-soft:#c7d9ce;--chart-text:#c0d2c7;--chart-label:#eef6f1;--read-stripe:#1b2b22;--read-hover:#294336}html,body{width:100%;min-height:100dvh}body{font-size:var(--text-base);line-height:1.55}body .page span{font-size:inherit;line-height:inherit}body :is(.page,.login) :is(p,small){font-weight:400}body .page span{font-weight:500}body :is(.page,.login) :is(h1,h2,h3),body .side :is(b,strong),body :is(.side,.page,.topbar) :is(button,label,th),body :is(.page,.side) :is(b,strong){font-weight:600}body .side nav button.active .nav-badge{color:#163e2c;background:#d5eddf}body :is(.page,.login,.topbar,.app-footer,.modal,.access-editor,.side,.detail) :is(p,label,input,select,textarea,button,td,dt,dd){font-size:var(--text-base);line-height:1.5}body :is(.page,.login,.topbar,.app-footer,.modal,.access-editor) :is(th){font-size:var(--text-secondary);font-weight:650;line-height:1.45}body :is(.page,.login,.topbar,.app-footer,.modal,.access-editor,.side,.detail) :is(small,.chip,.pill,.badge,.status,.error,.hint,.subtext,figcaption,sub,sup){font-size:var(--text-caption);line-height:1.4}body :is(.page-head,.dash-page-heading) h1{font-size:var(--text-h1);line-height:1.25}body :is(.dash-panel h2,.panel h3,.panel-head h3,.station-card h3,.monitor-card-title h3){font-size:var(--text-h2);line-height:1.4}body :is(.page-head,.dash-page-heading,.dash-panel>header,.panel-head) p{color:var(--muted);font-size:var(--text-secondary)}body :is(button,input,select,textarea,summary,a,[tabindex]):focus-visible{outline-offset:3px;outline:3px solid #247cd4}body :is(.page,.login,.topbar,.modal,.access-editor) :is(button,select,input:not([type=checkbox]):not([type=radio])){min-height:48px}body :is(.page,.login) :is(input,select,textarea){color:var(--ink)}body :is(.page,.login) input::placeholder{color:var(--muted);opacity:1}body :is(.icon-btn,.password-toggle,.login-theme-toggle){min-width:48px;min-height:48px}body :is(.page,.login) input[type=checkbox]{width:22px;height:22px;accent-color:var(--brand-strong)}.reading-size{border:1px solid var(--line);background:var(--surface);min-height:48px;color:var(--ink);white-space:nowrap;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:8px 12px;font-size:.875rem;font-weight:700;list-style:none;display:inline-flex}.reading-size::-webkit-details-marker{display:none}.reading-size-control{position:relative}.reading-size-panel{z-index:40;border:1px solid var(--line);background:var(--surface);width:min(320px,100vw - 28px);color:var(--ink);white-space:normal;border-radius:12px;padding:20px;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 12px 36px #0000002e}body .reading-size-panel label{color:var(--ink);margin:0 0 12px;font-size:1rem;display:block}.reading-size-stepper{grid-template-columns:48px minmax(0,1fr) 48px;gap:10px;display:grid}body .reading-size-panel :is(input,button){border:1px solid var(--line);background:var(--surface);width:100%;min-width:0;min-height:48px;color:var(--ink);text-align:center;border-radius:8px;padding:8px;font-size:1rem}.reading-size-stepper input{appearance:textfield}.reading-size-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.reading-size-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.reading-size-stepper button{place-items:center;display:grid}.reading-size-stepper button:disabled{opacity:.45;cursor:default}body .reading-size-panel p{color:var(--muted);margin:14px 0;font-size:.85rem}.reading-size-control[open]>summary>svg:last-child{transform:rotate(180deg)}.mobile-nav-toggle{display:none}body .map-controls{grid-template-columns:repeat(2,48px)}body .map-controls button{width:48px;height:48px}.reading-size-control[open]>.reading-size{border-color:var(--brand-strong);background:var(--brand-soft);color:var(--brand-deep);box-shadow:inset 0 0 0 1px var(--brand-strong)}.login-reading-size{z-index:5;position:absolute;top:22px;right:82px}body .login-card{width:min(490px,100% - 36px);padding:32px}@media (max-width:1024px){body .login{grid-template-columns:minmax(0,1fr)}body .login-visual{display:none}body .login-card{margin:90px auto 32px}}body .login-card input{height:54px}body .login-card h2{font-size:1.8rem}body .login-card .primary{min-height:54px;margin-top:20px}body .login-card label{color:var(--ink)}body .login-card .error{color:#ac3333;margin:12px 0 0}body .login-card .error+.primary{margin-top:14px}body .side nav :is(button,.plant-subnav button,.plant-report-types button),body .side .logout{color:#ecf5ef;height:auto;min-height:48px;font-size:.95rem;line-height:1.45}body .side nav .plant-menu-trigger{min-height:64px;padding:8px 10px}body .plant-menu-trigger b{font-size:1rem;line-height:1.4}body .plant-menu-trigger small{font-size:var(--text-caption);color:#d0e3d7;white-space:normal;line-height:1.5}body .side nav>.nav-label{font-size:var(--text-caption);color:#c4dacf;letter-spacing:.05em;font-weight:700;line-height:1.5}body .side nav button.active{color:#163e2c;background:#f1faf4;box-shadow:inset 4px 0 #8dd5aa}body .side nav button svg,body .side nav>*{flex-shrink:0}body .side nav{scrollbar-gutter:stable;overscroll-behavior:contain;scroll-padding-block:8px}body .side-header{border-bottom:1px solid #ffffff1a;flex-shrink:0;align-items:center;gap:10px;margin-bottom:12px;padding-bottom:12px;display:flex}body .side-header .brand{border:0;flex-wrap:wrap;flex:1;gap:6px 10px;min-width:0;margin:0;padding:0}body .side-health :is(b,span,strong),body .side .nav-badge{font-size:.8rem}body .side-health span{color:#c4dacf}body .topbar{flex-wrap:wrap;gap:16px;height:auto;min-height:78px;padding-block:12px}.desktop-sidebar-toggle{display:none}body .topbar-start{flex:300px;align-items:center;gap:12px;min-width:0;display:flex}body .topbar-start .top-status{overflow-wrap:anywhere;min-width:0}body .top-actions{flex-wrap:wrap;min-width:0;max-width:100%;margin-left:auto}body .top-actions>*{flex-shrink:0;max-width:100%}body .top-actions .account-menu{flex-shrink:1;min-width:0}body .user-chip>div{overflow-wrap:anywhere;min-width:0}body .user-chip>:is(b,svg){flex-shrink:0}.topbar .reading-size-panel{left:0;right:auto}body .top-status{white-space:normal;font-size:var(--text-secondary);flex-direction:column;display:flex;overflow:visible}body .top-status-text{color:var(--ink);align-items:center;gap:8px;font-weight:700;display:inline-flex}body .top-status>i,body .top-status-text>i{vertical-align:middle;background:var(--brand-strong);border-radius:50%;flex-shrink:0;width:9px;height:9px;margin-bottom:0;margin-right:0;animation:2.4s ease-in-out infinite pulse-live;display:inline-block;box-shadow:0 0 0 3px #23724e38}@keyframes pulse-live{0%,to{transform:scale(1);box-shadow:0 0 0 3px #23724e40}50%{transform:scale(1.18);box-shadow:0 0 0 6px #23724e14}}html[data-theme=dark] body .top-status>i,html[data-theme=dark] body .top-status-text>i{background:#4ade80;animation-name:pulse-live-dark;box-shadow:0 0 0 3px #4ade8040}@keyframes pulse-live-dark{0%,to{transform:scale(1);box-shadow:0 0 0 3px #4ade8047}50%{transform:scale(1.18);box-shadow:0 0 0 6px #4ade801a}}body .top-status small{font-size:var(--text-caption);color:var(--muted);margin:2px 0 0;display:block}body .user-chip strong{font-size:var(--text-secondary)}body .user-chip small{font-size:var(--text-caption);color:var(--muted)}body .app-shell>main{flex-direction:column;min-height:100dvh;display:flex}body .page{flex:1 0 auto;width:100%;max-width:none;margin:0;padding:28px}body .page-head{flex-wrap:wrap;gap:12px}body .page-head>div{overflow-wrap:anywhere;min-width:0}body .page.map-page{box-sizing:border-box;flex-direction:column;flex:1 0 auto;width:100%;padding:14px 28px 24px;display:flex}body .page.map-page .page-head{flex-shrink:0;margin-bottom:8px}body .page.map-page .station-head{flex-shrink:0;margin-bottom:6px}body .page.map-page .map-overview{flex-shrink:0;margin-bottom:12px}body .page.map-page .map-layout{flex:1 1 0;grid-template-rows:1fr;grid-template-columns:minmax(0,1.4fr) minmax(340px,420px);align-items:stretch;gap:14px;width:100%;min-width:0;min-height:460px;display:grid}body .page.map-page .map-layout>.map-panel{border-radius:10px;flex-direction:column;min-width:0;height:100%;min-height:460px;max-height:none;display:flex;overflow:hidden}body .page.map-page .map-panel>.map-panel-head{flex-shrink:0}body .page.map-page .map-panel-body{flex-direction:column;flex:1 1 0;min-height:280px;display:flex;position:relative;overflow:hidden}body .page.map-page .map-panel-body>.map-viewport{width:100%;height:100%;min-height:280px}body .page.map-page .map-panel>.map-panel-footer{flex-shrink:0;margin-top:auto}body .page.map-page .map-layout>.detail{scrollbar-gutter:stable;border-radius:10px;flex-direction:column;min-width:0;height:100%;min-height:460px;max-height:none;display:flex;overflow-y:auto}@media (min-width:1400px){body .page.map-page .map-layout{grid-template-columns:minmax(0,1.65fr) minmax(400px,480px);gap:18px;min-height:480px}}@media (min-width:1150px) and (max-width:1399px){body .page.map-page .map-layout{grid-template-columns:minmax(0,1.38fr) minmax(350px,420px);gap:14px;min-height:460px}}@media (min-width:860px) and (max-width:1149px){body .page.map-page .map-layout{grid-template-columns:minmax(0,1.18fr) minmax(310px,360px);gap:12px;min-height:430px}}@media (max-width:859px){body .page.map-page .map-layout{flex:none;grid-template-rows:auto auto;grid-template-columns:1fr;gap:14px;min-height:0}body .page.map-page .map-layout>.map-panel{height:auto;min-height:0;max-height:none}body .page.map-page .map-panel-body{flex:none;min-height:0}body .page.map-page .map-panel-body>.map-viewport{height:clamp(360px,50vh,520px);min-height:360px}body .page.map-page .map-layout>.detail{height:auto;min-height:0;max-height:none;overflow-y:visible}}@media (min-width:860px){body .page.map-page .map-layout{min-height:660px}body .page.map-page .map-panel>.map-panel-head{flex-wrap:nowrap;align-items:flex-start}body .page.map-page .map-panel-head>div:first-child{flex:auto;min-width:0}body .page.map-page .map-head-actions{flex-wrap:nowrap;flex:none}}body .detail>.plant-photo{object-fit:cover;border-radius:8px;width:calc(100% - 28px);max-height:160px;margin:0 14px 12px}body .detail .detail-head{padding:14px 16px 10px}body .detail .verified{margin:0 14px 10px;padding:8px 12px}body .detail .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 14px 10px}body .detail .kpi{min-height:72px;padding:8px 12px}body .detail .balance{margin:0 14px 10px;padding:10px 14px}body .station-row{border-radius:6px;margin:0 14px 6px;padding:8px 10px;transition:background-color .15s}body .station-row:hover{background:var(--read-hover)}html[data-theme=dark] body .station-row:hover{background:#ffffff0d}body .detail-actions{grid-template-columns:repeat(auto-fit,minmax(min(100%,10rem),1fr));gap:8px;margin:12px 14px 0;display:grid}body .detail-actions>button:first-child{text-align:center;grid-column:1/-1;justify-content:center;width:100%}body .detail-actions>button{white-space:normal;text-align:center;justify-content:center;min-width:0;height:auto;padding:9px 10px}body .detail-head small{font-size:var(--text-caption);letter-spacing:.05em;color:var(--muted);font-weight:750}body .detail-head h2{color:var(--brand-deep,var(--ink));font-size:clamp(1.35rem,1.8vw,1.6rem);font-weight:750;line-height:1.25}body .detail-head p{font-size:var(--text-secondary);color:var(--muted)}body .verified small{font-size:var(--text-caption);letter-spacing:.04em;font-weight:700}body .verified b{font-size:var(--text-base);font-weight:700;line-height:1.4}body .verified p{font-size:var(--text-secondary);line-height:1.45}body .map-panel-footer{font-size:var(--text-caption);gap:10px 16px}body .map-panel-footer>small{font-size:var(--text-caption);color:var(--muted)}body .map-current,body .map-status-legend{font-size:var(--text-caption)}body .map-overview{flex-wrap:wrap;display:flex}body .map-overview>div{overflow-wrap:anywhere;flex:min(100%,10rem);min-width:0}body .map-overview>p{white-space:normal;flex-wrap:wrap;flex:100%;padding-block:10px}@media (min-width:860px){body .map-overview{border:1px solid var(--line);background:var(--surface);border-radius:12px;grid-template-columns:repeat(4,minmax(0,1fr)) auto;align-items:stretch;min-height:76px;display:grid;overflow:hidden}body .map-overview>div{border-right:1px solid var(--line);flex-direction:column;flex:none;justify-content:center;padding:12px 14px;display:flex}body .map-overview>div span{font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700}body .map-overview>div b{font-size:clamp(1.1rem, 1.4vw, var(--text-display));color:var(--ink);font-variant-numeric:tabular-nums;margin-top:4px;font-weight:750;line-height:1.2}body .map-overview>div b small{font-size:var(--text-caption);color:var(--muted);margin-left:4px;font-weight:600}body .map-overview>p{font-size:var(--text-caption);color:var(--muted);background:var(--bg);white-space:nowrap;border-left:1px solid var(--line);flex:none;justify-content:center;align-items:center;margin:0;padding:0 18px;display:flex}html[data-theme=dark] body .map-overview>p{background:#111a15;border-left-color:#24342a}body .map-overview{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(max-content,2fr) minmax(0,1fr) auto}}body .map-overview>div:has(.map-overview-flows){flex:2 16rem}body .map-overview .map-overview-flows{grid-template-columns:auto auto;justify-content:space-between;gap:3px 16px;margin-top:6px;font-size:13px;line-height:1.35;display:grid}body .map-overview .map-overview-flows .flow-split-row{display:contents}body .map-overview .map-overview-flows .flow-split-row em,body .map-overview .map-overview-flows .flow-split-row strong{white-space:nowrap;overflow-wrap:normal}body .map-overview .map-overview-flows .flow-split-row strong{text-align:right;font-variant-numeric:tabular-nums}@media (min-width:1200px){body .map-overview{min-height:84px}body .map-overview>div{padding:16px 20px}body .map-overview>p{padding:0 24px}}body .map-panel>.map-panel-head,body .map-head-actions,body .map-panel-footer,body .map-status-legend{flex-wrap:wrap}body .map-panel>.map-panel-head>div,body .map-head-actions>*,body .map-panel-footer>*{min-width:0;max-width:100%}body .map-head-actions .map-network-summary{flex-wrap:wrap}body .dash-toolbar{gap:10px;padding:12px;display:grid}.dash-period-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}body .dash-toolbar-actions{border-top:1px solid var(--line);flex-wrap:wrap;gap:8px;margin-left:0;padding-top:10px}body .dash-toolbar-actions .refresh-switch{margin-left:auto}body .dash-page-heading{margin-bottom:16px;padding-bottom:12px}body .dashboard-v2 .dash-page-heading h1{font-size:var(--text-h1);line-height:1.25}body .dashboard-v2 .dash-page-heading p{font-size:var(--text-secondary)}body .dashboard-photo-summary{grid-template-columns:minmax(0,1fr) minmax(15rem,30%);gap:16px;margin-bottom:20px}body .page .dashboard-photo-summary .executive-kpis{grid-template-columns:repeat(2,minmax(0,1fr));height:100%;margin:0}body .dashboard-summary-data{container-type:inline-size}@container (max-width:34rem){body .page .dashboard-summary-data .executive-kpis{grid-template-columns:minmax(0,1fr)}}@media (max-width:600px){body .page .dashboard-photo-summary .executive-kpis{grid-template-columns:minmax(0,1fr)}}body .dashboard-summary-photo{aspect-ratio:auto;border-radius:12px;width:100%;max-width:none;min-height:260px;margin:0;overflow:hidden}.dashboard-summary-photo figcaption{z-index:1;color:#fff;font-size:var(--text-base);background:linear-gradient(#0000,#000000bf);padding:28px 16px 14px;font-weight:600;position:absolute;inset:auto 0 0}.dashboard-section-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin:20px 0 12px;display:flex}body .dashboard-section-heading h2{color:var(--ink);font-size:var(--text-h2);margin:0}body .dashboard-section-heading span{color:var(--muted);font-size:var(--text-caption)}body :is(.dash-range,.refresh-switch,.dash-field,.filter-toggle,.period-toggle button){font-size:var(--text-secondary)}body :is(.dash-panel,.panel,.kpi,.executive-kpi){border-radius:12px}body .dash-panel{margin-bottom:22px}body .dash-panel>header{flex-wrap:wrap;gap:14px;padding:18px 22px}body .dash-panel>header>span{font-size:var(--text-secondary);white-space:normal}body .executive-kpis{gap:12px;margin-bottom:16px}body .executive-kpi{border-top:4px solid var(--brand-strong);min-height:124px;padding:16px}body .executive-kpi.blue{border-top-color:#3578b0}body .executive-kpi.amber{border-top-color:#af731b}body .executive-kpi>div{min-width:0}body .executive-kpi>svg{width:36px;height:36px;padding:7px}body .executive-kpi span{color:var(--ink-soft);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.04em;font-weight:700}body .executive-kpi b{font-size:var(--text-display);font-variant-numeric:tabular-nums;margin:6px 0 4px;line-height:1.2}body .executive-kpi small{color:var(--muted);font-size:var(--text-caption)}body .dashboard-detail-kpis{grid-template-columns:repeat(auto-fit,minmax(min(100%,13.5rem),1fr));gap:14px;margin-bottom:24px}body .dashboard-detail-kpis .dash-metric{min-height:94px;padding:14px 16px}body :is(.dashboard-detail-kpis .dash-metric,.kpi) span{font-size:var(--text-caption);text-transform:none;letter-spacing:0;color:var(--muted)}body :is(.dashboard-detail-kpis .dash-metric,.kpi) b{font-size:var(--text-h2);font-variant-numeric:tabular-nums;line-height:1.35}.dashboard-more-metrics{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin-bottom:22px}.dashboard-more-metrics>summary{cursor:pointer;color:var(--ink);padding:16px 20px;font-size:1rem;font-weight:700}body .page .dash-toolbar .period-toggle button{padding:10px 14px;font-size:1rem}body .page .dash-freshness strong{color:var(--ink);font-size:.9rem}body .side nav .plant-subnav button.active{color:#163e2c;background:#f1faf4}body .page .report-period-filter{grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:16px}body .page .report-period-filter .period-toggle{grid-column:1/-1;width:fit-content;max-width:100%}body .page .report-period-filter .period-toggle button{white-space:nowrap;padding:10px 18px}body .page :is(.report-period-filter,.tickets-filter) label>span{color:var(--ink-soft)}html[data-theme=dark] .reading-size-control[open]>.reading-size{color:#f1fff6;background:#24553d;border-color:#8dd5aa}html[data-theme=dark] body :is(.dash-page-heading,.page-head)>div>small{color:#a4dfbc}html[data-theme=dark] body .page .dash-freshness strong{color:#e8f3ec}body .dashboard-more-metrics .dashboard-detail-kpis{margin:0;padding:0 16px 16px}body .page :is(table,.table){font-variant-numeric:tabular-nums}body .page :is(th,td){height:auto;padding:16px 18px}body .page th{color:var(--ink);background:var(--read-stripe);font-weight:700}body .page thead th{z-index:2;box-shadow:0 1px 0 var(--line);position:sticky;top:0}body :is(.tickets-page,.camera-ticket-list) .ticket-data-table :is(th,td){vertical-align:middle;padding:10px 8px;font-size:clamp(11px,.72rem,14px);line-height:1.45}body :is(.tickets-page,.camera-ticket-list) .ticket-data-table th{white-space:nowrap}body :is(.tickets-page,.camera-ticket-list) .ticket-data-table td{overflow-wrap:normal}body :is(.tickets-page,.camera-ticket-list) .ticket-data-table td :is(span,b,strong,a){font-size:inherit;line-height:inherit}body :is(.tickets-page,.camera-ticket-list) .ticket-data-table td.text-right,body :is(.tickets-page,.camera-ticket-list) .ticket-data-table :is(th,td):first-child{white-space:nowrap}body :is(.tickets-page,.camera-ticket-list) .ticket-data-table .ticket-time-part{white-space:nowrap;display:block}body .page :is(th,td).text-right,.text-right{text-align:right;justify-content:flex-end}.sortable-th{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s,color .15s}.sortable-th:hover{background-color:var(--read-hover)!important}.sortable-th .th-content{align-items:center;gap:6px;display:inline-flex}.sortable-th.text-right .th-content,.sortable-th .th-content.justify-end{justify-content:flex-end;width:100%}.sort-icon{flex-shrink:0}.sort-icon.active{color:var(--brand-strong)}.sort-icon.hint{opacity:.35;transition:opacity .15s}.sortable-th:hover .sort-icon.hint{opacity:.8}.table-empty-cell{color:var(--muted);font-size:.95rem;font-style:italic;text-align:center!important;padding:36px 20px!important}body .password-modal .password-field,body .access-editor .password-field{width:100%;position:relative}body .password-modal .password-field input,body .access-editor .password-field input{padding-right:48px}body .password-modal .password-toggle,body .access-editor .password-toggle{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;display:grid;position:absolute;top:50%;right:4px;transform:translateY(-50%)}body .password-modal .password-toggle:hover,body .access-editor .password-toggle:hover{color:var(--ink);background:var(--read-hover)}body .password-status{border-radius:8px;margin-top:10px;padding:10px 14px;font-size:.875rem;line-height:1.4}body .password-status.error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}body .password-status.success{color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0}html[data-theme=dark] body .password-status.error{color:#fca5a5;background:#451a1a;border-color:#7f1d1d}html[data-theme=dark] body .password-status.success{color:#86efac;background:#143823;border-color:#166534}body .page tbody tr:nth-child(2n) td{background:var(--read-stripe)}body .page tbody tr:hover td{background:var(--read-hover)}body .page td :is(span,b,strong,a),body .page :is(.plant-overview-head,.plant-overview-row,.ranking-list,.station-connection-list,.monitor-metrics,.station-data,.ticket-pagination,.map-plant-copy,.map-plant-metric) :is(span,b,strong){font-size:.95rem}body .page :is(.pill,.status,.status-pill,.map-plant-status){min-height:30px;padding:4px 10px;font-size:.85rem;font-weight:700}body .page :is(.filter-search,.dash-table-tools>label){min-height:50px}body .page :is(.filter-search input,.dash-table-tools input,.dash-filter-grid input){font-size:1rem}body .dash-two-col{gap:22px}body .dash-activity-analysis{flex-wrap:wrap;display:flex}body .dash-heatmap-panel{flex:3 40rem;min-width:0;max-width:100%}body .dash-alerts-panel{flex:2 28rem;min-width:0;max-width:100%}body .dash-alerts-panel .alert-center{gap:1rem;margin:1rem}body .dash-alerts-panel .alert-counts{grid-template-columns:repeat(auto-fit,minmax(min(100%,8rem),1fr));gap:.75rem}body .dash-alerts-panel .dash-metric{overflow-wrap:anywhere;min-width:0;min-height:6rem;padding:1rem}body .dash-alerts-panel .dash-metric span{font-size:var(--text-caption);line-height:1.45}body .dash-alerts-panel .dash-metric b{font-size:var(--text-display);margin-top:.5rem;line-height:1.2}body .dash-alerts-panel .alert-empty{overflow-wrap:anywhere;gap:.75rem;min-height:6rem;padding:1.25rem;font-size:1rem;line-height:1.5}body .dash-alerts-panel :is(.alert-empty,.alert-ticket)>svg{flex-shrink:0;width:1.3rem;height:1.3rem}body .dash-alerts-panel .alert-ticket{overflow-wrap:anywhere;grid-template-columns:1.3rem minmax(0,1fr);gap:.75rem;padding:1rem}body .dash-alerts-panel .alert-ticket :is(b,p){font-size:1rem;line-height:1.5}body .dash-alerts-panel .alert-ticket>span{grid-column:2;justify-self:start;font-size:.875rem;line-height:1.4}body .heatmap-wrap{--heatmap-label-width:3rem;container:heatmap/inline-size}body .heatmap-grid{grid-template-columns:calc((100% + var(--heatmap-label-width)) / 2) minmax(0, 1fr);min-width:0;overflow:visible}.heatmap-hours{grid-template-columns:var(--heatmap-label-width) repeat(12, minmax(0, 1fr));align-items:stretch;min-width:0;display:grid}.heatmap-hours+.heatmap-hours{grid-template-columns:repeat(12,minmax(0,1fr))}.heatmap-hours+.heatmap-hours .heatmap-day{display:none}body .heatmap-grid :is(button,b,em){min-width:0;font-size:var(--text-micro);margin:0}body .heatmap-grid .heatmap-day{white-space:nowrap;align-self:center;padding-right:.5rem}body .heatmap-grid button{width:100%;padding:0;line-height:1}body .page .heatmap-cell-value{font-size:max(var(--text-micro), min(.8rem, 1.5cqi));line-height:1}body .heatmap-grid button:is(:hover,:focus-visible,.preview-hit){box-shadow:inset 0 0 0 2px var(--brand-strong);transform:none}body .heatmap-inspector{min-width:0;margin-top:.75rem;position:static}body .heatmap-scale{grid-template-columns:auto minmax(0,1fr) auto;width:100%}body .heatmap-scale small{white-space:normal;grid-column:1/-1;justify-self:center;max-width:100%}@container heatmap (max-width:38rem){body .heatmap-grid{grid-template-columns:minmax(0,1fr);gap:1rem}.heatmap-hours+.heatmap-hours{grid-template-columns:var(--heatmap-label-width) repeat(12, minmax(0, 1fr))}.heatmap-hours+.heatmap-hours .heatmap-day{display:block}body .page .heatmap-cell-value{font-size:max(var(--text-micro), min(.8rem, 2.4cqi))}}@container heatmap (max-width:24rem){body .heatmap-insights{grid-template-columns:minmax(0,1fr)}body .heatmap-grid{--heatmap-label-width:2.5rem}body .heatmap-grid :is(b,em){font-size:var(--text-micro)}body .heatmap-grid em{font-size:min(var(--text-micro), 5cqi)}body .page .heatmap-cell-value{display:none}}body .page :is(.station-grid,.monitor-grid){grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr));align-items:stretch;gap:20px}body .page :is(.ticket-summary,.report-kpis,.monitor-kpis,.kpis){grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:16px}@media (min-width:1024px){body .page :is(.monitor-kpis,.executive-kpis){grid-template-columns:repeat(4,minmax(0,1fr))}body .page .report-kpis-wide{grid-template-columns:repeat(5,minmax(0,1fr))}body .page.camera-ai-page .ticket-summary,body .camera-ai-page .ticket-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}body .page .log-kpis{flex-wrap:wrap;gap:16px;display:flex}body .page .log-kpis>article{flex:min(100%,12rem)}body .page :is(.tickets-filter,.report-filter){grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:14px}body .page :is(.tickets-filter,.report-filter)>label.ticket-datetime-field{flex:1 0 215px;min-width:215px}body .page :is(.tickets-filter,.report-filter)>label:has(input[type=datetime-local]){flex:1 0 215px;min-width:215px}body .page :is(.tickets-filter,.report-filter)>label:has(.date-time-input){flex:1 0 215px;min-width:215px}body .page .filter-panel{flex-wrap:wrap}body .page .station-card{background:var(--surface);overflow-wrap:anywhere;border-radius:12px;flex-direction:column;gap:18px;min-width:0;padding:22px;display:flex;box-shadow:0 3px 12px #183c300a}.station-card-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}body .page .station-card .station-card-status{color:#206443;background:#e8f4ec;border-radius:7px;align-items:center;gap:8px;max-width:100%;margin:0;padding:6px 12px;font-size:.9rem;font-weight:600;line-height:1.4;display:inline-flex}body .page .station-card-status.offline{color:#9c3333;background:#fcecec}body .page .station-card-status.maintenance{color:#805410;background:#fff3d6}body .page .station-configure{border:1px solid var(--line);background:var(--surface);width:auto;height:auto;color:var(--ink-soft);border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:8px 12px;font-size:.9rem;font-weight:600;display:inline-flex;position:static}body .page .station-configure:hover{background:var(--read-hover);color:var(--ink)}body .page .station-card-head{grid-template-columns:42px minmax(0,1fr);align-items:start;gap:14px;display:grid}body .page .station-card-head>.station-identity{min-width:0;display:block}body .page .station-card h3{color:var(--ink);font-size:1.25rem;font-weight:600;line-height:1.3}body .page .station-card :is(.station-description,.station-meta){color:var(--ink-soft);margin:6px 0 0;font-size:.95rem;font-weight:400;line-height:1.45}body .page .station-card .station-meta{color:var(--muted);font-size:.85rem}body .page .station-data{background:var(--read-stripe);grid-template-columns:repeat(auto-fit,minmax(min(100%,7rem),1fr));gap:16px;margin:auto 0 0;padding:16px}body .page .station-data>div{min-width:0}body .page .station-data dt{color:var(--muted);font-size:.9rem;font-weight:400;line-height:1.4}body .page .station-data dd{font-variant-numeric:tabular-nums lining-nums;color:var(--ink);margin:6px 0 0;font-size:1.6rem;font-weight:600;line-height:1.2}body .page .station-data dd span{color:var(--muted);font-size:.9rem;font-weight:400;display:inline}body .page .station-foot{border-top:1px solid var(--line-soft);gap:4px;padding-top:14px;display:grid}body .page .station-foot :is(span,small){color:var(--muted);margin:0;font-size:.85rem;font-weight:400;line-height:1.45}body .page .monitor-card>header{grid-template-columns:42px minmax(0,1fr);padding:20px;display:grid}body .page .monitor-badges{grid-column:1/-1;justify-content:flex-start;max-width:none}body .page .monitor-card-description{color:var(--ink-soft);font-size:.95rem;font-weight:400}body .page :is(.monitor-network,.monitor-scale-dots,.monitor-legend,.log-toolbar,.period-toggle){flex-wrap:wrap;max-width:100%}body .page .monitor-network>div:first-child{flex:18rem;min-width:0}body .page .monitor-scale-dots{flex:18rem}body .page .monitor-scale-dots span{flex:none}body .page .log-toolbar .filter-search{flex:14rem;max-width:none;margin-left:0}body .page .log-kpis>small{flex:100%;justify-content:flex-start}body .page :is(.monitor-kpis,.log-kpis) b{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:600;line-height:1.3}body .page :is(.monitor-kpis,.log-kpis) span{text-transform:none;letter-spacing:0;color:var(--ink-soft);font-size:.95rem;font-weight:500}body .page :is(.station-head,.scale-group-heading,.scale-history-head){flex-wrap:wrap;gap:14px}body .page .scale-group-heading h2{color:var(--ink);font-size:1.15rem;font-weight:600;line-height:1.4}body .page .station-editor-modal header small{font-size:.85rem}body .page .station-editor-modal h2{color:var(--ink);font-size:1.3rem}body .page .station-editor-modal>footer{flex-wrap:wrap}html[data-theme=dark] body .page .station-card-status{color:#b1e7c4;background:#203f2f}html[data-theme=dark] body .page .station-card-status.offline{color:#ffc4c4;background:#492626}html[data-theme=dark] body .page .station-card-status.maintenance{color:#ffe0a0;background:#45371c}@media (min-width:1121px){body .desktop-sidebar-toggle{border:1px solid var(--line);background:var(--surface);width:48px;min-height:48px;color:var(--ink);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:10px;display:inline-flex}body .desktop-sidebar-toggle>span{display:none}body .desktop-sidebar-toggle:hover{background:var(--read-hover)}body .side{width:292px}body .app-shell>main{flex-direction:column;flex:auto;width:auto;min-height:100vh;margin-left:292px;display:flex}body .app-shell.sidebar-collapsed>.side{display:none}body .app-shell.sidebar-collapsed>main{margin-left:0}}@media screen and (min-width:1121px){body .app-shell>main>:is(.topbar,.page){zoom:1}body .app-shell>main>.page{flex:1 0 auto;width:100%;max-width:none;margin:0}}body .app-footer{box-sizing:border-box;zoom:1;flex-wrap:nowrap;align-items:center;gap:12px;max-width:100%;margin-top:auto;padding:5px 20px;display:flex;overflow:hidden}body .app-footer-logo{flex:none;width:auto;height:22px}body .app-footer-info{z-index:5;background:var(--bg);flex-wrap:wrap;flex:auto;align-items:center;gap:3px 12px;min-width:0;max-width:100%;margin-top:auto;display:flex;position:relative}body .app-footer-info b{letter-spacing:.15px;color:var(--brand-deep);white-space:nowrap;flex-shrink:0;font-size:.8125rem;font-weight:750;line-height:1.3}body .app-footer-info span{color:var(--muted);font-size:.75rem;line-height:1.35}html[data-theme=dark] body .app-footer-info b{color:#7bd3a2}html[data-theme=dark] body .app-footer-info span{color:#9cb5a8}@media (max-width:1200px){body .app-footer-info b{white-space:normal}}@media (max-width:768px){body .app-footer{flex-wrap:nowrap;align-items:center;gap:10px;padding:6px 14px}body .app-footer-logo{height:20px}body .app-footer-info{flex-direction:column;align-items:flex-start;gap:2px}body .app-footer-info b{white-space:normal;font-size:.78rem}body .app-footer-info span{font-size:.72rem}}@media (max-width:1400px){body .executive-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1120px){body .dashboard-photo-summary{grid-template-columns:minmax(0,1fr)}body .dashboard-summary-photo{height:clamp(180px,30vw,280px);min-height:0}body .side .mobile-nav-toggle{color:#fff;background:#28553f;border:1px solid #adc8b8;border-radius:8px;align-items:center;gap:10px;width:100%;min-height:50px;padding:10px 14px;font-size:1rem;display:flex}body .side:not(.menu-open) :is(nav,.side-footer){display:none}body .dash-two-col{grid-template-columns:minmax(0,1fr)}body .plant-menu-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));overflow:visible}body .plant-menu{min-width:0}}@media (max-width:760px){.reading-size-panel{left:0;right:auto}.login-reading-size .reading-size-panel{left:auto;right:-60px}body .page .report-period-filter{grid-template-columns:minmax(0,1fr)}body .page .report-period-filter .period-toggle{scrollbar-width:none;flex-wrap:nowrap;gap:3px;width:100%;max-width:100%;display:flex;overflow-x:auto}body .page .report-period-filter .period-toggle button{white-space:nowrap;flex:1 0 auto;padding:8px 10px}body .page{padding:20px 14px}body .plant-menu-list,body .executive-kpis,body .dashboard-photo-summary .executive-kpis,body .dashboard-detail-kpis{grid-template-columns:minmax(0,1fr)}body .topbar{flex-wrap:wrap;padding:14px;position:relative}body .top-actions{flex-wrap:wrap;gap:8px;width:100%}body .top-actions .account-menu{margin-left:auto}body .top-status{flex-basis:100%}body .dash-page-heading,body .page-head{flex-wrap:wrap;gap:16px}body .period-toggle{flex-wrap:wrap}body .dash-range{white-space:normal}body .login-card{margin-top:90px;padding:24px}body .login-reading-size{right:78px}body .executive-kpi{min-height:144px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media print{.reading-size-control{display:none}body main,body .app-shell>main,body .app-shell.sidebar-collapsed>main{margin:0}body .page{padding:0}body .page :is(th,td){padding:5px;font-size:8pt}}body .marker-card text,body .province-labels text{text-rendering:geometricprecision;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body .marker-card-name{letter-spacing:.1px;font-weight:800}
body :is(.ticket-data-table,.bagging-data-table,.belt-data-table,.conveyor-data-table){-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}body :is(.page,.camera-ticket-list) .ticket-data-table table{width:100%;min-width:1750px}body :is(.page,.camera-ticket-list) .ticket-data-table.has-cameras table{min-width:1980px}body :is(.page,.camera-ticket-list) .bagging-data-table table{width:100%;min-width:960px}body :is(.page,.camera-ticket-list) :is(.belt-data-table,.conveyor-data-table) table{width:100%;min-width:1100px}body :is(.page,.camera-ticket-list) :is(.ticket-data-table,.bagging-data-table,.belt-data-table,.conveyor-data-table) table th{white-space:nowrap;vertical-align:middle;letter-spacing:0;text-transform:none;padding:11px 8px;font-size:clamp(12px,.75rem,14px);font-weight:700}body :is(.page,.camera-ticket-list) :is(.ticket-data-table,.bagging-data-table,.belt-data-table,.conveyor-data-table) table td{vertical-align:middle;padding:10px 8px;font-size:clamp(12px,.75rem,14px);line-height:1.45}body :is(.page,.camera-ticket-list) :is(.ticket-data-table,.bagging-data-table,.belt-data-table,.conveyor-data-table) table td :is(span,b,strong,a){font-size:inherit;line-height:inherit}body :is(.page,.camera-ticket-list) :is(.ticket-data-table,.bagging-data-table,.belt-data-table,.conveyor-data-table) table :is(th,td).text-right{text-align:right}body :is(.page,.camera-ticket-list) .ticket-data-table table td.text-right,body :is(.page,.camera-ticket-list) .ticket-data-table table :is(th,td):first-child,body :is(.page,.camera-ticket-list) .ticket-data-table table .ticket-time-part{white-space:nowrap}body :is(.page,.camera-ticket-list) .ticket-data-table table td.ticket-cell-invalid{font-weight:600;color:#ef4444!important;background-color:#ef444429!important}@media print{body :is(.page,.camera-ticket-list) :is(.ticket-data-table,.bagging-data-table,.belt-data-table,.conveyor-data-table) table{min-width:100%}body :is(.page,.camera-ticket-list) :is(.ticket-data-table,.bagging-data-table,.belt-data-table,.conveyor-data-table) table :is(th,td){padding:5px;font-size:8pt}}
