:root{--navy:#00001b;--green:#1f6b3a;--plus-blue:#193d9a;--bg:#f6f7f4;--card:#ffffff;--line:#d7ddd6;--muted:#5b635e;--red:#c4453c;--yellow:#c9a227;--ok:#2f8f4e;--sidebar-bg:#00001b;--sidebar-fg:#ffffff;--sidebar-muted:#9aa3c2;--btn-bg:#ffffff;--btn-hover:#e8eee6;--scrollbar:#b7c0b6;--scrollbar-track:#eef1ec}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--scrollbar) var(--scrollbar-track)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}body,html{margin:0;padding:0;min-height:100%;background:var(--bg);color:var(--navy);font-family:Segoe UI,Noto Sans Thai,Noto Sans,Noto Sans Arabic,Noto Sans SC,sans-serif}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.lang-picker{display:flex;align-items:center;min-width:0}.lang-admin select,.lang-picker select{min-height:44px;min-width:44px;width:100%;max-width:220px;padding:0 10px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--navy);font-size:14px;font-weight:600}.lang-picker-header{margin-left:auto}.lang-picker-header select{max-width:160px}.lang-picker-sidebar select{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.3)}.lang-picker-sidebar select option{color:var(--navy);background:var(--card)}.sidebar-locale{padding:8px 0 4px}.lang-picker-login{justify-content:flex-end}.lang-admin select,.lang-picker-settings select{display:block;margin-top:8px}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto}.shell{min-height:100vh;display:flex;width:100%;overflow-x:hidden}.brand-sub{font-size:12px;color:var(--muted)}.sidebar{position:fixed;inset:0 auto 0 0;width:min(84vw,280px);background:var(--sidebar-bg);color:var(--sidebar-fg);display:flex;flex-direction:column;padding:16px 14px 20px;transform:translateX(-100%);transition:transform .25s ease;z-index:40;overflow-y:auto;scrollbar-color:rgba(255,255,255,.28) transparent}.sidebar::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22)}.sidebar.open{transform:translateX(0)}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:4px 44px 16px 4px;border-bottom:1px solid rgba(255,255,255,.14);margin-bottom:12px}.sidebar-brand img{height:40px;width:auto;background:#fff;border-radius:8px;padding:4px;flex-shrink:0}.sidebar-brand .brand-sub{color:#c7cbe0;line-height:1.3}.sidebar-close{position:absolute;top:14px;right:14px;min-width:44px;min-height:44px;border-radius:10px;border:1px solid rgba(255,255,255,.3);background:transparent;color:#fff;font-size:16px}.sidebar-nav{display:flex;flex-direction:column;gap:12px;flex:1 1}.nav-group{display:flex;flex-direction:column;gap:2px}.nav-group-label{margin:0;padding:8px 12px 4px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--sidebar-muted)}.sidebar-nav a{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 12px;border-radius:10px;font-weight:600;font-size:14px;color:#d7dbee}.sidebar-nav a.active{background:var(--plus-blue);color:#fff}.sidebar-nav a:hover{background:rgba(255,255,255,.1)}.nav-icon{font-size:1rem;line-height:1;width:1.15rem;display:inline-flex;justify-content:center;margin-right:.4rem;flex-shrink:0}.sidebar-nav .nav-icon i{color:var(--nav-ico)!important;filter:drop-shadow(0 1px 1px rgba(0,0,0,.45))}.nav-ico-dashboard{--nav-ico:#40c4ff}.nav-ico-tasks{--nav-ico:#26c6da}.nav-ico-records{--nav-ico:#ffab40}.nav-ico-weigh{--nav-ico:#c6ff00}.nav-ico-sop{--nav-ico:#b388ff}.nav-ico-biosecurity{--nav-ico:#ff9100}.nav-ico-biosecurity-report{--nav-ico:#00e5a8}.nav-ico-lockdown{--nav-ico:#ff1744}.nav-ico-maintenance{--nav-ico:#ffee58}.nav-ico-import{--nav-ico:#00e676}.nav-ico-cameras{--nav-ico:#ff4081}.nav-ico-track{--nav-ico:#ff6e40}.nav-ico-vision{--nav-ico:#e040fb}.nav-ico-label{--nav-ico:#f50057}.nav-ico-copilot{--nav-ico:#18ffff}.nav-ico-knowledge{--nav-ico:#ffcc80}.nav-ico-forecast{--nav-ico:#7c4dff}.nav-ico-plc{--nav-ico:#ffff00}.nav-ico-mqtt{--nav-ico:#00bfa5}.nav-ico-alerts{--nav-ico:#ff5252}.nav-ico-dld{--nav-ico:#448aff}.nav-ico-summary{--nav-ico:#82b1ff}.nav-ico-fcr{--nav-ico:#ff6d00}.nav-ico-accounting-costs{--nav-ico:#ffc107}.nav-ico-reports{--nav-ico:#69f0ae}.nav-ico-audit{--nav-ico:#ff8a80}.nav-ico-esg{--nav-ico:#76ff03}.nav-ico-acceptance{--nav-ico:#64ffda}.nav-ico-privacy{--nav-ico:#80d8ff}.nav-ico-settings{--nav-ico:#00e5ff}.nav-ico-data{--nav-ico:#2979ff}.nav-ico-settings-map{--nav-ico:#00c853}.nav-ico-vaccines{--nav-ico:#ff80ab}.nav-ico-admin{--nav-ico:#ff9800}.nav-ico-admin-users{--nav-ico:#536dfe}.admin-hub{display:grid;grid-gap:16px;gap:16px}.admin-hub-card h2{display:flex;align-items:center;gap:8px}.admin-demo-actions{display:flex;flex-wrap:wrap;gap:8px;margin:0}.admin-user-form{display:flex;flex-direction:column;gap:14px;align-items:stretch}.admin-form-row{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-start;justify-content:flex-start}.admin-form-row-pwd{align-items:flex-end}.admin-user-form label{display:flex;flex-direction:column;gap:6px;align-items:flex-start;flex:0 1 auto;max-width:100%}.admin-form-hint{margin:0;max-width:22rem;font-size:12px;line-height:1.35;color:var(--muted);font-weight:400}.admin-form-action{align-self:flex-end;min-height:44px}.admin-form-row-pwd .users-icon-btn{flex:0 0 auto;width:44px;height:44px;min-width:44px;min-height:44px}.users-create-pwd{min-width:0;max-width:100%}.users-create-pwd-row{display:flex;gap:6px;align-items:center}.users-create-pwd-row input{flex:1 1;min-width:0}.users-pwd-err{margin:4px 0 0;font-size:.85rem}.users-notice-back{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:rgba(8,16,28,.4);backdrop-filter:blur(14px) saturate(1.25);-webkit-backdrop-filter:blur(14px) saturate(1.25)}.users-notice{width:min(560px,100%);padding:20px 22px 16px;border-radius:16px;background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.5);box-shadow:0 18px 48px rgba(16,24,32,.2);backdrop-filter:blur(22px) saturate(1.4);-webkit-backdrop-filter:blur(22px) saturate(1.4);display:grid;grid-gap:12px;gap:12px;color:var(--navy,#0b1b33)}.users-notice h2{margin:0;font-size:1.05rem}.users-notice p{margin:0;color:var(--red,#b42318);font-weight:650;line-height:1.45;white-space:pre-wrap}.users-notice p.ok{color:var(--plus-blue,#1b6b4a)}.users-notice .primary{justify-self:end;min-width:96px}html.dark .users-notice,html[data-theme=dark] .users-notice{background:rgba(18,24,36,.72);color:var(--text,#eef2f8);border-color:rgba(255,255,255,.12)}@media (max-width:720px){.users-create-pwd{grid-column:1/-1}}.admin-actions{display:flex;flex-wrap:wrap;gap:6px;padding:4px}.perm-toolbar{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:flex-end;margin:0 0 12px}.perm-search{flex:1 1 220px;min-width:0}.perm-role-filter{border:1px solid var(--line);border-radius:10px;margin:0;padding:6px 10px 8px;display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}.perm-role-filter legend{padding:0 4px;font-size:12px;font-weight:700}.perm-role-filter label{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-size:13px;font-weight:600}.users-admin-wrap{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:8px;border:1px solid var(--line);border-radius:12px;background:var(--card)}.users-admin-table{width:100%;min-width:720px;table-layout:fixed;border-collapse:collapse;font-size:14px}.users-admin-table td,.users-admin-table th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle;overflow-wrap:anywhere}.users-admin-table thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;font-size:12px;color:var(--muted);font-weight:650;background:color-mix(in srgb,var(--navy) 4%,var(--card));white-space:nowrap}.users-admin-table tbody tr:last-child td{border-bottom:0}.users-admin-table tbody tr:hover td{background:color-mix(in srgb,var(--navy) 5%,transparent)}.users-admin-table tbody tr.is-disabled td{opacity:.7}.users-admin-table .users-col-level,.users-admin-table .users-col-status{white-space:nowrap}.users-admin-table td:last-child{overflow:visible}.users-house-line{margin-top:4px;font-size:12px;color:var(--muted)}.users-actions{display:flex;flex-wrap:wrap;gap:4px;align-items:center;justify-content:flex-start;max-width:100%}.users-icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;min-width:36px;min-height:36px;padding:0;border-radius:10px;border:1px solid transparent;background:transparent;cursor:pointer}.users-icon-btn .fa-solid{font-size:15px;line-height:1}.users-icon-tip{position:absolute;left:50%;top:calc(100% + 6px);bottom:auto;transform:translateX(-50%);z-index:8;padding:4px 8px;border-radius:6px;background:#111827;color:#fff;font-size:12px;font-weight:650;line-height:1.2;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden}.users-icon-btn:focus-visible .users-icon-tip,.users-icon-btn:hover .users-icon-tip{opacity:1;visibility:visible}.users-icon-edit{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.users-icon-lock{color:#6d28d9;background:#f5f3ff;border-color:#ddd6fe}.users-icon-reset{color:#b45309;background:#fffbeb;border-color:#fde68a}.users-icon-disable{color:#475569;background:#f1f5f9;border-color:#cbd5e1}.users-icon-enable{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.users-icon-delete{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.users-icon-btn:focus-visible,.users-icon-btn:hover:not(:disabled){filter:brightness(.96)}html.dark .users-icon-edit,html[data-theme=dark] .users-icon-edit{color:#93c5fd;background:#172554;border-color:#1e3a8a}html.dark .users-icon-lock,html[data-theme=dark] .users-icon-lock{color:#c4b5fd;background:#2e1065;border-color:#5b21b6}html.dark .users-icon-reset,html[data-theme=dark] .users-icon-reset{color:#fcd34d;background:#451a03;border-color:#92400e}html.dark .users-icon-disable,html[data-theme=dark] .users-icon-disable{color:#cbd5e1;background:#1e293b;border-color:#475569}html.dark .users-icon-enable,html[data-theme=dark] .users-icon-enable{color:#6ee7b7;background:#064e3b;border-color:#047857}html.dark .users-icon-delete,html[data-theme=dark] .users-icon-delete{color:#fca5a5;background:#450a0a;border-color:#7f1d1d}html.dark .users-icon-tip,html[data-theme=dark] .users-icon-tip{background:#f8fafc;color:#0f172a}.users-house-block{display:grid;grid-gap:8px;gap:8px;justify-items:start;text-align:start}.users-house-block h3{margin:0;font-size:.95rem}.smsel{position:relative;display:inline-block;width:max-content;max-width:min(100%,28rem);vertical-align:top}.smsel-sizer{position:absolute;left:0;top:0;visibility:hidden;pointer-events:none;white-space:nowrap;font:inherit;font-size:14px;padding:8px 12px 8px 34px;height:0;overflow:hidden}.smsel-box{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;width:max-content;max-width:min(100%,28rem);min-height:40px;padding:4px 8px;border:1px solid var(--line);border-radius:10px;background:var(--card,#fff);cursor:text}.smsel.open .smsel-box{border-color:var(--accent,#1b7a4b);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent,#1b7a4b) 18%,transparent)}.smsel-off .smsel-box{opacity:.7;cursor:default}.smsel-tag{gap:4px;max-width:100%;padding:2px 6px 2px 8px;border-radius:999px;border:1px solid var(--line);background:color-mix(in srgb,var(--accent,#1b7a4b) 12%,transparent);font-size:12px;line-height:1.3;white-space:nowrap}.smsel-tag,.smsel-x{display:inline-flex;align-items:center}.smsel-x{justify-content:center;width:22px;height:22px;padding:0;border:0;border-radius:999px;background:transparent;color:inherit;cursor:pointer}input.smsel-input{flex:0 1 auto;width:auto;min-width:8ch;min-height:32px;border:0;background:transparent;box-shadow:none;padding:4px 2px;font:inherit;field-sizing:content}.smsel-input:focus{outline:none;box-shadow:none}.smsel-list{position:absolute;z-index:30;left:0;right:auto;top:calc(100% + 4px);width:max-content;min-width:100%;max-width:min(28rem,calc(100vw - 24px));max-height:240px;overflow:auto;margin:0;padding:4px;list-style:none;border:1px solid var(--line);border-radius:10px;background:var(--card,#fff);box-shadow:0 10px 28px rgba(15,23,42,.16)}.smsel-empty{color:var(--muted);font-size:13px}.smsel-empty,.smsel-opt{padding:8px 10px;white-space:nowrap}.smsel-opt{display:flex;align-items:center;gap:8px;width:auto;min-width:100%;text-align:start;min-height:40px;border:0;border-radius:8px;background:transparent;color:inherit;font:inherit;cursor:pointer}.smsel-opt.active,.smsel-opt:hover{background:color-mix(in srgb,var(--accent,#1b7a4b) 12%,transparent)}.smsel-check{width:14px;height:14px;flex:0 0 14px;border-radius:4px;border:1px solid var(--line)}.smsel-check.on{background:var(--accent,#1b7a4b);border-color:var(--accent,#1b7a4b)}html.dark .smsel-box,html.dark .smsel-list,html[data-theme=dark] .smsel-box,html[data-theme=dark] .smsel-list{background:#10161f}.admin-user-form{justify-content:flex-start}.admin-users .admin-user-form label,.admin-users .users-house-block{justify-self:start}.admin-users select{width:max-content;min-width:8ch;max-width:min(100%,22rem);field-sizing:content}.admin-users .admin-user-form label>input[type=password],.admin-users .admin-user-form label>input[type=text]{width:16rem;max-width:100%}.admin-users .lang-admin select,.admin-users .lang-picker select{width:max-content;max-width:min(100%,16rem)}.users-admin-table.stock-table,.users-lot-table{min-width:640px}@media (max-width:720px){.users-admin-wrap{margin-left:-4px;margin-right:-4px}}html.dark .users-admin-table thead th,html[data-theme=dark] .users-admin-table thead th{background:#0a0e14}html.dark .users-admin-table tbody tr:hover td,html[data-theme=dark] .users-admin-table tbody tr:hover td{background:rgba(255,255,255,.03)}html[dir=rtl] .users-admin-table td,html[dir=rtl] .users-admin-table th{text-align:right}.perm-role-filter input[type=checkbox]{width:18px;height:18px;min-height:18px;min-width:18px;padding:0;accent-color:var(--ok)}.perm-matrix-wrap{overflow:auto;-webkit-overflow-scrolling:touch;max-width:100%;max-height:min(72vh,760px);border:1px solid var(--line);border-radius:8px}.perm-matrix{width:max-content;min-width:100%;border-collapse:collapse;table-layout:fixed;font-size:12px;background:var(--card)}.perm-matrix td,.perm-matrix th{border:1px solid var(--line);vertical-align:middle}.perm-matrix thead th{position:-webkit-sticky;position:sticky;top:0;z-index:4;background:var(--bg);font-size:11px;font-weight:700;text-align:center;padding:8px 6px;line-height:1.25;white-space:normal;min-width:72px;max-width:96px}.perm-matrix tbody th,.perm-matrix thead th.perm-user-h{position:-webkit-sticky;position:sticky;left:0;z-index:5;text-align:left;min-width:148px;max-width:180px;width:168px;background:var(--card);box-shadow:4px 0 0 var(--line);padding:6px 10px}.perm-matrix thead th.perm-user-h{z-index:6;background:var(--bg)}.perm-sort{all:unset;cursor:pointer;font:inherit;font-weight:700;display:inline;min-height:0;padding:0;border:0;background:none;color:inherit;white-space:normal}.perm-sort:hover{text-decoration:underline;background:none;box-shadow:none}.perm-user-name{font-weight:700}.perm-user-meta{font-size:11px;color:var(--muted);margin:2px 0 0}.perm-matrix tbody tr.on td,.perm-matrix tbody tr.on th{background:color-mix(in srgb,var(--plus-blue) 12%,var(--card))}.perm-matrix tbody tr.is-disabled td,.perm-matrix tbody tr.is-disabled th{opacity:.72}.perm-select-cell{padding:4px;min-width:120px;max-width:160px}.perm-select-cell select{min-height:36px;padding:4px 8px;font-size:12px;width:100%}.perm-check-cell{text-align:center;cursor:pointer;min-width:44px;width:52px;height:44px;padding:0;background:var(--card)}.perm-check-cell.on{background:color-mix(in srgb,var(--ok) 28%,var(--card))}.perm-check-cell.danger.on{background:color-mix(in srgb,var(--red) 28%,var(--card))}.perm-check-cell.locked{cursor:not-allowed;opacity:.5}.perm-check-cell input{width:18px;height:18px;min-height:18px;margin:0;accent-color:var(--ok);cursor:inherit}.perm-check-cell.danger input{accent-color:var(--red)}.perm-empty{text-align:center;padding:20px 12px;color:var(--muted)}.perm-matrix .admin-actions{min-width:108px;padding:4px}.perm-matrix .admin-actions .ghost-btn{min-height:36px;font-size:12px;padding:0 8px;width:100%}button.linkish{cursor:pointer}.sidebar-footer{border-top:1px solid rgba(255,255,255,.14);padding-top:12px;margin-top:12px;display:grid;grid-gap:8px;gap:8px}.user-chip{display:flex;flex-direction:column;font-size:12px;color:#c7cbe0}.user-chip strong{color:#fff;font-size:14px}.logout-btn{min-height:44px;border:1px solid rgba(255,255,255,.3);border-radius:10px;background:transparent;color:#fff;font-weight:650}.backdrop{position:fixed;inset:0;background:rgba(0,0,27,.5);z-index:30}.shell-content{flex:1 1;min-width:0;display:flex;flex-direction:column}.mobile-top{display:flex;align-items:center;gap:12px;padding:10px 16px;background:#fff;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:10}.hamburger{min-width:44px;min-height:44px;border-radius:10px;border:1px solid var(--line);background:#fff;font-size:20px;line-height:1}.mobile-top .logo-sm{height:32px;width:auto}.main{flex:1 1;width:100%;max-width:1200px;margin:0 auto;padding:16px}@media (min-width:768px){.sidebar{position:fixed;transform:none;width:250px}.sidebar-close{display:none}.shell-content{margin-left:250px}.backdrop,.mobile-top{display:none}.main{padding:28px 32px}html[dir=rtl] .shell-content{margin-left:0;margin-right:250px}}html[dir=rtl] .sidebar{inset:0 0 0 auto;transform:translateX(100%)}html[dir=rtl] .sidebar.open{transform:translateX(0)}@media (min-width:768px){html[dir=rtl] .sidebar{transform:none}}html[dir=rtl] .lang-picker-header{margin-left:0;margin-right:auto}.login-page{min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:linear-gradient(160deg,#00001b,#0c1c52 55%,#193d9a)}.login-card{width:min(380px,100%);background:#fff;color:#00001b;border-radius:16px;padding:28px 22px;box-shadow:0 20px 45px rgba(0,0,27,.35);display:grid;grid-gap:14px;gap:14px}.login-card input,.login-card select{background:#fff;color:#00001b;border-color:#d7ddd6}.login-card img{height:56px;width:auto;margin:0 auto;display:block}.login-title{text-align:center}.login-title h1{margin:0;font-size:1.3rem}.login-title p{margin:4px 0 0;font-size:13px;color:var(--muted)}.login-error{background:#fdeceb;color:var(--red);border:1px solid #f3c8c4;border-radius:10px;padding:8px 12px;font-size:13px;margin:6px 0 0}.login-hint{background:#eef4ec;border:1px solid #cfe3cc;border-radius:10px;padding:10px 12px;font-size:12px;color:var(--green);line-height:1.6}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}h1{font-size:1.25rem;margin:0 0 8px}h2{font-size:1rem;margin:0 0 10px}.bars{display:grid;grid-gap:6px;gap:6px}.bar-row{display:grid;grid-template-columns:52px 1fr 52px;grid-gap:8px;gap:8px;align-items:center;font-size:12px}.track{height:10px;background:#e8ece7;border-radius:99px;overflow:hidden}.bar-row .fill{height:100%;border-radius:99px}.hourly{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));grid-gap:2px;gap:2px;align-items:end;height:88px;width:100%}.hourly span{display:block;width:100%;background:var(--plus-blue);border-radius:2px 2px 0 0;min-height:2px}.hourly-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:6px}.alert-list{margin:0;padding-left:1.1rem}.alert-list li{margin:6px 0}.records-toolbar,.toggle{display:flex;gap:8px;margin:10px 0 14px}.records-toolbar{flex-wrap:nowrap;align-items:center}.records-toolbar .toggle{margin:0;flex:1 1 auto}.records-toolbar .export-menu{margin-left:auto;flex:0 0 auto}.export-menu{position:relative}.export-menu-list{position:absolute;right:0;top:calc(100% + 4px);z-index:20;min-width:220px;display:grid;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:0 8px 24px rgba(0,0,0,.12)}.export-menu-item{min-height:40px;width:100%;justify-content:flex-start;border:0;background:transparent;color:var(--navy);font:inherit;font-weight:600;border-radius:8px;padding:0 10px;text-align:left}.export-menu-item:hover{background:color-mix(in srgb,var(--plus-blue) 12%,var(--card))}@media (max-width:639px){.records-toolbar{flex-wrap:wrap}.records-toolbar .export-menu{margin-left:0}}a.chip,button.chip{min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--navy);font-weight:650}button.chip.on{background:var(--plus-blue);color:#fff;border-color:var(--plus-blue)}.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px}.facts div{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px}.facts strong{display:block;font-size:1.2rem}.cite{display:inline-block;margin:4px 6px 0 0;padding:4px 8px;border-radius:8px;background:#e8eefc;color:var(--plus-blue);font-size:12px}form{grid-gap:10px;gap:10px}form,label{display:grid}label{grid-gap:6px;gap:6px;font-size:14px}input,select,textarea{min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;width:100%}input[type=checkbox],input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;min-width:18px;min-height:18px;max-width:18px;max-height:18px;padding:0;margin:0;flex:0 0 18px;border:2px solid color-mix(in srgb,var(--navy) 40%,var(--line));border-radius:4px;background:var(--card);color:var(--navy);display:inline-grid;place-content:center;cursor:pointer;vertical-align:middle;box-shadow:none}input[type=radio]{border-radius:50%}input[type=checkbox]:after,input[type=radio]:after{content:"";width:10px;height:6px;margin-top:-2px;border:solid transparent;border-width:0 0 2.5px 2.5px;transform:rotate(-45deg) scale(0);transform-origin:center}input[type=radio]:after{width:8px;height:8px;margin-top:0;border:0;border-radius:50%;background:transparent;transform:scale(0)}input[type=checkbox]:checked,input[type=radio]:checked{background:var(--plus-blue);border-color:var(--plus-blue)}input[type=checkbox]:checked:after{border-color:#fff;transform:rotate(-45deg) scale(1)}input[type=radio]:checked:after{background:#fff;transform:scale(1)}input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:2px solid var(--plus-blue);outline-offset:2px}.check-label,label:has(>input[type=checkbox]),label:has(>input[type=radio]){display:inline-flex;flex-direction:row;align-items:center;gap:8px;white-space:nowrap}textarea{min-height:88px}.btn,a.btn,button{font:inherit;cursor:pointer;min-height:44px;padding:0 14px;border-radius:10px;border:1px solid var(--line);background:var(--btn-bg);color:var(--navy);font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.btn:hover:not(:disabled),a.btn:hover,button:hover:not(:disabled):not(.locked){box-shadow:inset 0 0 0 999px rgba(0,0,0,.06)}.btn:focus-visible,a.btn:focus-visible,button:focus-visible{outline:2px solid var(--plus-blue);outline-offset:2px}.btn:disabled,button:disabled{opacity:.45;cursor:not-allowed}.btn.primary,a.btn.primary,a.primary,button.primary{border:0;background:var(--green);color:#fff;font-weight:700}.btn.primary:hover:not(:disabled),a.btn.primary:hover,a.primary:hover,button.primary:hover:not(:disabled){background:#185830;color:#fff;box-shadow:none}.ghost-btn{min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--btn-bg);color:var(--navy);font-weight:650;padding:0 12px}.ghost-btn:hover:not(:disabled){background:var(--btn-hover);box-shadow:none}.ghost-btn.danger{color:var(--red);border-color:#f3c8c4;background:#fff8f7}.ghost-btn.danger:hover:not(:disabled){background:#fdeceb}.btn.sm{padding:0 10px;font-size:13px}button.linkish{min-height:0;padding:0;border:0;border-radius:0;color:inherit;font-weight:700;display:inline;text-decoration:underline}button.linkish,button.linkish:hover:not(:disabled){background:none}.admin-actions button{white-space:nowrap;font-size:13px;padding:0 10px}.sidebar .logout-btn:hover,.sidebar .theme-toggle:hover,.sidebar-close:hover{background:rgba(255,255,255,.14);color:#fff}.lead,.muted{color:var(--muted);margin-top:0}.ok{color:var(--green)}.err{color:var(--red)}.toggle.wrap{flex-wrap:wrap}.toggle.seg{display:inline-flex;flex-wrap:nowrap;align-items:stretch;gap:2px;margin:0;padding:2px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--muted) 12%,var(--card))}.toggle.seg a.chip,.toggle.seg button.chip{min-height:28px;height:28px;padding:0 8px;font-size:12px;font-weight:600;line-height:1;border:0;border-radius:6px;background:transparent;color:var(--navy);box-shadow:none}.toggle.seg a.chip:focus-visible,.toggle.seg a.chip:hover,.toggle.seg button.chip:focus-visible,.toggle.seg button.chip:hover{background:color-mix(in srgb,var(--plus-blue) 14%,transparent)}.toggle.seg a.chip.on,.toggle.seg button.chip.on{background:var(--plus-blue);color:#fff;border:0}.settings-grid{display:grid;grid-gap:12px;gap:12px}.place-tree{list-style:none;margin:0;padding:0 0 0 4px}.place-tree ul{padding-left:12px}.place-tree-row{display:flex;align-items:center;gap:2px}.place-tree-spacer,.place-tree-toggle{flex:0 0 40px;width:40px;height:40px;min-width:40px;min-height:40px}.place-tree-toggle{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer}.place-tree-toggle:focus-visible,.place-tree-toggle:hover{background:color-mix(in srgb,var(--plus-blue,#1b4fd8) 12%,transparent);color:var(--navy)}.place-tree-spacer{display:inline-block}.place-node{flex:1 1 auto;width:auto;min-width:0;text-align:left;min-height:44px;border:1px solid transparent;border-radius:10px;background:transparent;display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px}.place-node.on{background:#e8eefc;border-color:var(--plus-blue)}html.dark .place-node.on,html[data-theme=dark] .place-node.on{background:color-mix(in srgb,var(--plus-blue) 22%,#10161f)}html.dark .place-tree-toggle:focus-visible,html.dark .place-tree-toggle:hover,html[data-theme=dark] .place-tree-toggle:focus-visible,html[data-theme=dark] .place-tree-toggle:hover{color:var(--navy)}.place-kind{font-size:11px;color:var(--muted)}.place-node em{font-style:normal;font-size:11px;color:var(--plus-blue)}.tg-primary-row{display:grid;grid-template-columns:1fr;grid-gap:10px 14px;gap:10px 14px;align-items:end;margin:8px 0}.tg-group-heading{margin:12px 0 4px;font-size:15px}.tg-group-row{display:grid;grid-template-columns:minmax(8rem,.8fr) minmax(12rem,1.2fr) minmax(8rem,.8fr);grid-gap:10px 14px;gap:10px 14px;align-items:end;margin:8px 0}.tg-channels .tg-group-row label,.tg-channels .tg-primary-row label{display:flex;flex-direction:column;align-items:stretch;gap:6px;min-height:0}@media (max-width:720px){.tg-group-row,.tg-primary-row{grid-template-columns:1fr}}.tg-channel-list{list-style:none;margin:8px 0;padding:0;display:grid;grid-gap:10px;gap:10px}.tg-channel-card{display:grid;grid-gap:8px;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--card,#fff) 92%,var(--line))}html.dark .tg-channel-card,html[data-theme=dark] .tg-channel-card{background:#161c26}.tg-channel-card label{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.tg-check-row{display:flex;flex-wrap:wrap;gap:8px 12px}.tg-check-row label{flex-direction:row;align-items:center;gap:6px;width:auto}.tg-channel-card .tg-times{width:100%}.secret-field{display:flex;align-items:stretch;width:100%;min-width:12rem;flex:1 1 auto;border:1px solid var(--line);border-radius:10px;background:var(--card,#fff);overflow:hidden}.secret-field input,.secret-field input[type=password],.secret-field input[type=text]{flex:1 1 auto;width:auto;min-width:0;border:0;border-radius:0;background:transparent;padding-right:8px}.secret-toggle{position:static;transform:none;top:auto;right:auto;flex:0 0 44px;width:44px;min-width:44px;max-width:44px;height:auto;min-height:44px;padding:0;border:0;border-left:1px solid var(--line);border-radius:0;background:transparent;color:var(--navy,#1e3a5f);box-shadow:none}.secret-toggle:focus-visible,.secret-toggle:hover{color:var(--navy,#1e3a5f);box-shadow:inset 0 0 0 999px rgba(0,0,0,.06)}html.dark .secret-field,html[data-theme=dark] .secret-field{background:#161c26}html.dark .secret-toggle,html[data-theme=dark] .secret-toggle{color:var(--text,#e8eef6)}.crumbs{font-size:13px;color:var(--muted)}.endpoint-row,.extra-list,.extra-row,.source-head{display:grid;grid-gap:8px;gap:8px;margin-bottom:8px}.source-card{border:1px solid var(--line);border-radius:12px;padding:12px;margin:12px 0;display:grid;grid-gap:8px;gap:8px}.source-card h3{margin:8px 0 0;font-size:14px}.save-bar{position:-webkit-sticky;position:sticky;bottom:0;background:var(--bg);padding:12px 0 8px;display:grid;grid-gap:8px;gap:8px}.section-save{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:12px}.section-save .primary{min-height:44px}.section-save .err,.section-save .ok{margin:0;flex:1 1 12rem}@media (min-width:768px){.settings-grid{grid-template-columns:minmax(220px,280px) 1fr;align-items:start}.tree-card{position:-webkit-sticky;position:sticky;top:16px}.endpoint-row,.extra-row{grid-template-columns:1fr 1fr minmax(0,1fr) auto}.source-head{grid-template-columns:1fr 1fr auto;align-items:end}}@media (max-width:767px){.endpoint-row,.extra-row,.source-head{grid-template-columns:1fr}}@media (min-width:768px){.nav{position:static;grid-template-columns:repeat(4,max-content);gap:8px;padding:0 16px 12px;border:0;background:transparent}.main{padding-bottom:32px}}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700}.badge-manual{background:#fdf3e0;color:#8a6a11}.badge-auto{background:#e6f4ea;color:var(--green)}.record-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:10px;gap:10px}.record-list li{border:1px solid var(--line);border-radius:10px;padding:10px}.list-thumb-row{display:flex;gap:10px;align-items:flex-start}.list-thumb-row .list-thumb-body{min-width:0;flex:1 1}.list-thumb{flex:0 0 56px;width:56px;height:42px;border-radius:8px;overflow:hidden;background:#e8eef4;border:1px solid var(--line);display:flex;align-items:center;justify-content:center}.list-thumb-fallback{color:var(--muted,#6b7c8d);font-size:16px}.expandable-row{flex-wrap:wrap}.expand-row-head{display:flex;gap:10px;align-items:flex-start;width:100%;margin:0;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.expand-row-chevron{flex:0 0 auto;margin-left:auto;padding-top:10px;color:var(--muted,#6b7c8d)}.expand-row-details{flex:1 0 100%;margin-top:8px;padding-top:8px;border-top:1px solid var(--line);display:grid;grid-gap:4px;gap:4px}.chip i,.logout-btn i,.theme-toggle i,.weigh-cam-open i,.worker-nav a i{margin-right:.35rem}.list-thumb img{width:56px;height:42px;object-fit:cover;display:block}.audit-report-list li,.sop-steps li,.sop-wf,.summary-list li{list-style:none}.sop-steps{padding-left:0}.audit-report-list,.report-sched-list{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-gap:8px;gap:8px}.audit-report-list a,.report-sched-list .list-thumb-row{display:flex;gap:10px;align-items:center;text-decoration:none;color:inherit;border:1px solid var(--line);border-radius:10px;padding:8px}.bilingual-note{display:grid;grid-gap:4px;gap:4px;margin:8px 0 0;font-size:.95rem;word-break:break-word}.bilingual-note p{margin:0}.bilingual-k{display:inline-block;min-width:4.5rem;font-weight:600;color:var(--muted)}@media (max-width:480px){.bilingual-k{display:block;min-width:0;margin-bottom:2px}}.record-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}.privacy-note{border-color:#cfe3cc;background:#f4f9f2}.perm-node{display:flex;align-items:center;gap:8px;min-height:44px;font-size:14px}.perm-node input[type=checkbox]{flex-shrink:0}.camera-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:10px 0 14px}.camera-mode-label,.camera-protocol-label{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:14px;font-weight:650}.camera-protocol-label select{min-height:44px;min-width:0;max-width:100%}.camera-privacy{margin:0 0 8px}.camera-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding:0 10px 8px;background:#fff;font-size:12px;color:var(--muted)}.camera-delay{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.camera-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(1,minmax(0,1fr))}.camera-grid.grid-16,.camera-grid.grid-4,.camera-grid.grid-9{grid-template-columns:repeat(2,minmax(0,1fr))}@media (min-width:700px){.camera-grid.grid-9{grid-template-columns:repeat(3,minmax(0,1fr))}.camera-grid.grid-16{grid-template-columns:repeat(4,minmax(0,1fr))}}.camera-tile{background:#000;border-radius:10px;overflow:hidden;border:1px solid var(--line)}.camera-frame{aspect-ratio:16/9;width:100%;background:#10131a;display:flex;align-items:center;justify-content:center;overflow:hidden}.camera-video{width:100%;height:100%;object-fit:cover;display:block}.camera-fallback{color:#c7cbe0;font-size:12px;text-align:center;padding:10px}.camera-caption{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:6px 10px;background:#fff;font-size:12px;flex-wrap:wrap}.label-frame{position:relative;width:100%;aspect-ratio:16/9;background:#10131a;border-radius:10px;overflow:hidden;touch-action:none;cursor:crosshair;margin:8px 0}.label-image{width:100%;height:100%;object-fit:cover;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.label-box{position:absolute;border:2px solid #ff5050;background:rgba(255,80,80,.15);pointer-events:none}.label-box.is-selected{outline:2px solid #fff;outline-offset:1px}.label-box-tag{position:absolute;top:0;left:0;transform:translateY(-100%);background:inherit;color:#fff;font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px 4px 0 0;filter:brightness(.85)}.label-studio .label-frame{aspect-ratio:auto;height:auto}.label-studio .label-image{width:100%;height:auto;object-fit:contain;background:#10131a}.label-class-add,.label-ingest,.label-lib-actions,.label-review-bar,.label-toolbar{display:grid;grid-gap:10px;gap:10px}.label-class-add,.label-lib-actions,.label-review-bar,.label-toolbar{align-items:end}.label-class-add,.label-lib-actions,.label-review-bar{grid-template-columns:1fr;margin:10px 0}@media (min-width:700px){.label-toolbar{grid-template-columns:repeat(2,minmax(0,1fr)) auto}.label-review-bar{grid-template-columns:repeat(4,minmax(0,1fr))}.label-class-add,.label-lib-actions{grid-template-columns:minmax(0,1fr) auto}}.label-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px}@media (min-width:700px){.label-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.label-tile{min-height:44px;padding:0;border:2px solid var(--line);border-radius:10px;background:#fff;overflow:hidden;text-align:left;display:grid}.label-tile img,.label-tile-ph{width:100%;aspect-ratio:1;object-fit:cover;background:#e8ece6;display:block}.label-tile-cap{display:block;padding:8px;font-size:12px;font-weight:650;color:var(--navy)}.label-tile.on{border-color:var(--plus-blue);box-shadow:0 0 0 2px rgba(25,61,154,.25)}.label-manage{display:grid;grid-gap:10px;gap:10px;margin-bottom:12px}.label-manage-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}@media (min-width:700px){.label-manage-actions{grid-template-columns:repeat(4,minmax(0,1fr))}}.label-manage-actions button{min-height:44px;min-width:44px}.label-train-now{min-height:48px;min-width:44px;width:100%;border:0;border-radius:10px;background:var(--plus-blue);color:#fff;font-weight:800;font-size:16px}.label-train-now:disabled{opacity:.55}.label-train-status{display:grid;grid-gap:6px;gap:6px;padding:12px;border-radius:10px;border:1px solid var(--line);background:#fff}.label-train-status.is-checking,.label-train-status.is-copying,.label-train-status.is-exporting,.label-train-status.is-preparing,.label-train-status.is-queued,.label-train-status.is-running,.label-train-status.is-training{border-color:var(--plus-blue)}.label-train-status.is-done{border-color:var(--green)}.label-train-status.is-error{border-color:var(--red)}.label-train-status.is-cancelled{border-color:var(--yellow)}.label-train-live{font-weight:800}.label-train-steps-title{margin:4px 0 0;font-weight:700}.label-train-steps{list-style:none;margin:0;padding:0;display:grid;grid-gap:4px;gap:4px}.label-train-steps li{min-height:36px;padding:8px 10px;border-radius:8px;color:var(--muted);background:#f6f7f4}.label-train-steps li.is-done{color:var(--green)}.label-train-steps li.is-current{background:#e8eefc;color:var(--navy);font-weight:800}.label-train-status .ghost-btn,.label-train-stop{min-height:44px;min-width:44px;width:100%}.label-train-stop{border:0;border-radius:10px;background:var(--red);color:#fff;font-weight:800}@media (max-width:720px){.label-train-now,.label-train-status .ghost-btn,.label-train-stop{width:100%}}.label-card{position:relative;display:grid}.label-card.is-checked .label-tile,.label-card.is-current .label-tile{border-color:var(--plus-blue)}.label-card-check{position:absolute;top:4px;left:4px;z-index:2;min-width:44px;min-height:44px;display:grid;place-items:center;background:rgba(255,255,255,.92);border-radius:8px}.label-card-check input{width:22px;height:22px}.label-card-more{position:absolute;top:4px;right:4px;z-index:3}.label-card-more summary{list-style:none;min-width:44px;min-height:44px;display:grid;place-items:center;border-radius:8px;background:rgba(255,255,255,.92);border:1px solid var(--line);font-weight:800;cursor:pointer}.label-card-more summary::-webkit-details-marker{display:none}.label-card-menu{position:absolute;right:0;top:calc(100% + 4px);min-width:168px;display:grid;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,27,.12)}.label-card-menu button{min-height:44px;border:0;background:transparent;text-align:left;padding:0 12px;font-weight:650}.label-card-menu button.danger{color:var(--red)}.label-dialog-backdrop{position:fixed;inset:0;z-index:40;background:rgba(0,0,27,.45);display:grid;place-items:end center;padding:12px}.label-dialog{width:min(100%,420px);background:#fff;border-radius:12px;padding:16px;display:grid;grid-gap:10px;gap:10px}.label-dialog-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.label-dialog-actions button{min-height:44px}@media (min-width:700px){.label-dialog-backdrop{place-items:center}}.gis-layer-legend{margin:8px 0 4px;font-size:13px;font-weight:600}.gis-map-container{width:100%;height:min(68vh,560px);border-radius:12px;overflow:hidden;border:1px solid var(--line);margin-bottom:12px}@media (min-width:768px){.gis-map-container{height:min(70vh,620px)}}.maplibregl-ctrl-group button{width:44px;height:44px;min-height:44px;padding:0;border-radius:0;display:block}.maplibregl-popup-content{font-size:13px;line-height:1.5;padding:10px 12px}html[data-theme=dark] .maplibregl-popup-content{background:var(--card);color:var(--navy)}html[data-theme=dark] .maplibregl-popup-tip{border-top-color:var(--card)}html[data-theme=dark] .maplibregl-ctrl-group{background:var(--card)}html[data-theme=dark] .maplibregl-ctrl-group button{background:var(--card);filter:invert(1)}.dld-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px;margin:12px 0}.dld-kpis div{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px}.dld-kpis span{display:block;font-size:12px;color:var(--muted)}.dld-kpis strong{display:block;font-size:1.25rem;margin-top:4px}.dld-topics{display:grid;grid-template-columns:1fr;grid-gap:8px;gap:8px}a.dld-topic-card{display:block;margin-bottom:0}a.dld-topic-card p{margin:0;color:var(--muted);font-size:13px}.dld-recent{list-style:none;margin:0;padding:0;display:grid;grid-gap:10px;gap:10px}.dld-recent li{display:grid;grid-gap:2px;gap:2px}.dld-recent span{font-size:12px;color:var(--muted)}.bar-row.dld-bar{grid-template-columns:minmax(0,1.4fr) 1fr 36px}.bar-row.dld-bar>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:10px}.preview-table{width:100%;border-collapse:collapse;font-size:13px;min-width:480px}.preview-table td,.preview-table th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}.btn-row{display:flex;flex-wrap:wrap;gap:8px}.split-2{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px}@media (min-width:640px){.split-2{grid-template-columns:1fr 1fr}}.plain-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.plain-list li{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:44px}.knowledge-list-filter{display:grid;grid-gap:6px;gap:6px;max-width:420px;margin:10px 0 4px}.knowledge-table-wrap{margin-top:8px;border:1px solid var(--line);border-radius:12px;background:var(--card)}.knowledge-table{width:100%;border-collapse:collapse;font-size:14px;min-width:560px}.knowledge-table td,.knowledge-table th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.knowledge-table thead th{font-size:12px;color:var(--muted);font-weight:650;background:color-mix(in srgb,var(--navy) 4%,var(--card));white-space:nowrap}.knowledge-table tbody tr:last-child td{border-bottom:0}.knowledge-table tbody tr:hover td{background:color-mix(in srgb,var(--navy) 5%,transparent)}.knowledge-sort{display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 4px;margin:0;border:0;background:transparent;color:inherit;font:inherit;font-weight:650;cursor:pointer}.knowledge-cell-title{font-weight:650;color:var(--navy);overflow-wrap:anywhere}.knowledge-cell-file{font-family:ui-monospace,Consolas,monospace;font-size:13px;color:var(--muted);overflow-wrap:anywhere}.knowledge-cell-date{white-space:nowrap;color:var(--muted);font-size:13px}.knowledge-col-num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;width:5rem}.knowledge-col-actions{width:1%;white-space:nowrap;text-align:right}.knowledge-col-actions .ghost-btn{min-width:72px;display:inline-flex;align-items:center;justify-content:center}.manage-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.manage-actions .ghost-btn{min-width:0}.manage-cap-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:8px 12px;gap:8px 12px}.manage-table{min-width:720px}@media (max-width:720px){.knowledge-table{min-width:0}.knowledge-table thead{display:none}.knowledge-table,.knowledge-table tbody,.knowledge-table td,.knowledge-table tr{display:block;width:100%}.knowledge-table tr{padding:10px 12px 12px;border-bottom:1px solid var(--line)}.knowledge-table tr:last-child{border-bottom:0}.knowledge-table td{display:grid;grid-template-columns:7.5rem minmax(0,1fr);grid-gap:8px;gap:8px;align-items:center;padding:6px 0;border-bottom:0}.knowledge-table td:before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:650}.knowledge-cell-date{white-space:normal}.knowledge-col-num{text-align:left;width:auto}.knowledge-col-actions{width:auto;text-align:inherit;padding-top:8px}.knowledge-col-actions:before{display:none}.knowledge-col-actions .ghost-btn{width:100%}.manage-table{min-width:0}.manage-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}}.dld-table{width:100%;border-collapse:collapse;font-size:13px;min-width:520px}.dld-table td,.dld-table th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}.dld-table th{font-size:12px;color:var(--muted);font-weight:650}.dash-toolbar{display:grid;grid-gap:10px;gap:10px;margin:12px 0}.dash-obs-note{margin:0 0 6px;font-size:12px}.dash-empty{margin:4px 0 0;font-size:13px}.dash-kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px;margin:12px 0}.dash-kpis div{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px}.dash-kpis span{display:block;font-size:12px;color:var(--muted)}.dash-kpis strong{display:block;font-size:1.25rem;margin-top:4px}.dash-charts,.dash-donuts{display:grid;grid-template-columns:1fr;grid-gap:8px;gap:8px}.dash-chart-wrap{min-height:0}.dash-chart{width:100%;height:auto;max-height:240px;display:block}.dash-chart-compact .dash-chart{max-height:128px}.dash-chart-legend{display:flex;flex-wrap:wrap;gap:8px 12px;list-style:none;margin:2px 0 0;padding:0;font-size:11px;color:var(--muted)}.dash-chart-legend li{display:flex;align-items:center;gap:5px}.dash-chart-legend i{width:8px;height:8px;border-radius:99px;flex:0 0 8px}.dash-grid{stroke:var(--line);stroke-width:1}.dash-axis{fill:var(--muted);font-size:10px}.dash-donut{display:grid;grid-template-columns:72px 1fr;grid-gap:8px;gap:8px;align-items:center}.dash-donut svg{width:72px;height:72px}.dash-donut-track{stroke:var(--line)}.dash-donut-total{fill:var(--navy);font-size:12px;font-weight:700}.dash-donut ul{list-style:none;margin:0;padding:0;display:grid;grid-gap:3px;gap:3px}.dash-donut li{display:flex;gap:6px;align-items:center;font-size:12px}.dash-donut li i{width:8px;height:8px;border-radius:99px;flex:0 0 8px}@media (min-width:768px){.dash-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}.dash-charts,.dash-donuts{grid-template-columns:repeat(2,minmax(0,1fr))}.dld-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.dld-topics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1100px){.main:has(.dash-board){max-width:none;padding:8px 12px 10px;overflow:hidden}.dash-board{height:calc(100dvh - 16px);min-height:0;min-width:0;display:grid;grid-template-areas:"head" "kpis" "note" "mqtt" "charts" "donuts";grid-template-rows:auto auto auto auto minmax(0,1fr) auto;grid-gap:6px;gap:6px}.dash-head{grid-area:head;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:0}.dash-head h1{font-size:1.05rem;margin:0;flex:0 0 auto}.dash-toolbar{flex-wrap:wrap;gap:10px;flex:1 1 auto;justify-content:flex-end}.dash-toolbar,.dash-toolbar label{display:flex;align-items:center;margin:0}.dash-toolbar label{gap:6px;font-size:12px;color:var(--muted)}.dash-toolbar select{min-height:32px;font-size:12px}.dash-strip{grid-area:kpis;grid-template-columns:repeat(10,minmax(0,1fr));gap:4px;margin:0}.dash-kpis div{padding:4px 7px;border-radius:8px}.dash-kpis span{font-size:11px;line-height:1.2}.dash-kpis strong{font-size:1rem;margin-top:1px}.dash-obs-note{grid-area:note;margin:0}#dash-mqtt{grid-area:mqtt;margin:0;padding:6px 8px;min-height:0;overflow:visible}#dash-mqtt h2{font-size:12px;margin:0 0 4px;padding-right:36px;line-height:1.25}.dash-board>.dash-aux{display:none}.dash-charts{grid-area:charts;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;min-height:0;overflow:hidden}.dash-charts .card,.dash-donuts .card{margin:0;padding:6px 8px;border-radius:8px;min-height:0;display:flex;flex-direction:column}.dash-charts h2,.dash-donuts h2{font-size:12px;margin:0 0 2px;line-height:1.25}.dash-chart{max-height:132px}.dash-donuts{grid-area:donuts;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.dash-donut{grid-template-columns:56px 1fr;gap:6px}.dash-donut svg{width:56px;height:56px}.dash-donut li{font-size:11px}.dash-empty{margin:0}}@media (min-width:1100px) and (max-height:820px){.dash-chart{max-height:118px}.dash-donut svg{width:48px;height:48px}}.telegram-test{margin-top:10px}.report-agent{margin:12px 0 16px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}.report-agent h2{margin:0 0 6px}.report-actions,.report-checks,.report-fields{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.report-agent label{display:flex;align-items:center;gap:8px;min-height:44px}.report-fields label{flex-direction:column;align-items:stretch;min-width:min(100%,140px);flex:1 1}.report-agent input[type=number],.report-agent input[type=time]{min-height:44px}.report-actions .telegram-test{margin:0}.report-actions .chip,.report-actions button{min-height:44px}@media (max-width:639px){.report-actions,.report-checks,.report-fields{flex-direction:column}.report-actions .chip,.report-actions button,.report-fields label{width:100%;min-width:0}}.telegram-test code{font-size:12px;word-break:break-all}.pen-dims{margin:8px 0 14px}.pen-dims-row{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px}@media (min-width:640px){.pen-dims-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.pen-dot{width:28px;height:28px;margin:-14px 0 0 -14px;border-radius:50%;background:#1f6b3a;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid #fff}.pen-dot,.pen-quad{position:absolute;pointer-events:none}.pen-quad{inset:0;width:100%;height:100%}.vision-frame{min-height:200px}.check-row{display:flex;align-items:center;gap:10px;min-height:44px}.check-row input[type=checkbox]{flex-shrink:0}.low-move-list{list-style:none;padding:0;margin:8px 0 0}.low-move-list li{display:flex;flex-direction:column;gap:2px;padding:10px 0;border-bottom:1px solid var(--line);min-height:44px}.vision-compact .chip,.vision-compact .primary{min-height:44px}.my-label{color:var(--muted);font-weight:500;font-size:12px}.tap-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px}.tap-grid.two{grid-template-columns:1fr 1fr}.tap{min-height:52px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--navy);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px;font:inherit}.tap.on{background:var(--plus-blue);color:#fff;border-color:var(--plus-blue)}.tap small{font-size:11px;opacity:.85}.easy-form .two-col{display:grid;grid-gap:10px;gap:10px}.event-topics{display:flex;flex-direction:column;gap:8px}.event-topic{border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--navy)}.event-topic.on{border-color:color-mix(in srgb,var(--plus-blue) 50%,var(--line))}.event-topic-head{display:flex;align-items:center;gap:10px;min-height:48px;padding:8px 12px;cursor:pointer;color:var(--navy)}.event-topic-head strong{font-size:1rem}.event-topic-head input[type=checkbox]{flex-shrink:0}.event-topic-body{display:grid;grid-gap:10px;gap:10px;padding:10px 12px 12px;border-top:1px solid var(--line)}.event-topic-body select{position:relative;z-index:2;pointer-events:auto}.topic-photos{position:relative}.topic-photo-actions{display:grid;grid-template-columns:1fr;grid-gap:8px;gap:8px}.topic-file-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;opacity:0;pointer-events:none}.topic-photo-btn{min-height:44px;width:100%;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--navy);font-weight:700;font-size:1rem;padding:10px 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px}.topic-photo-btn-cam{background:var(--plus-blue);color:#fff;border-color:var(--plus-blue)}.topic-cam-preview{display:grid;grid-gap:8px;gap:8px}.topic-cam-preview video{width:100%;max-width:100%;max-height:min(50vh,360px);object-fit:cover;border-radius:12px;background:#10131a;border:1px solid var(--line)}.topic-cam-canvas{display:none}.photo-previews{display:flex;flex-wrap:wrap;gap:8px}.photo-previews img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.vaccine-select{pointer-events:auto;position:relative;z-index:3}.grade-box{border:1px solid var(--line);border-radius:12px;padding:10px}.sop{background:color-mix(in srgb,var(--ok) 12%,var(--card));border-radius:10px;padding:10px 12px;margin:0}.flow-list{padding-left:1.2rem;display:grid;grid-gap:8px;gap:8px}.record-list a.chip{display:inline-flex;align-items:center;margin-top:8px;width:-moz-fit-content;width:fit-content}.track-actions{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}.track-actions button{flex:1 1 148px;min-height:44px}.track-stage{overflow:hidden;border-radius:12px;background:#111;line-height:0}.track-media,.track-stage{position:relative;width:100%;max-width:100%}.track-media{display:block;z-index:0;height:auto;object-fit:contain;background:#000;vertical-align:middle}.track-dewarp{z-index:1}.track-dewarp,.track-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.track-overlay{z-index:2}.track-stage.is-paused .track-overlay{pointer-events:auto}.track-workspace{display:flex;flex-direction:column;gap:12px}.track-stage.is-paused{cursor:crosshair}.track-pig-sidebar{min-width:0}.track-pig-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.track-pig-card{display:grid;grid-template-columns:72px minmax(0,1fr);grid-gap:8px;gap:8px;width:100%;min-height:44px;text-align:left;padding:8px;border:1px solid var(--line);border-radius:10px;background:#fff;color:inherit}.track-pig-card.is-selected{border-color:var(--plus-blue);box-shadow:0 0 0 2px rgba(25,61,154,.25)}.track-pig-thumb{width:72px;height:72px;object-fit:cover;border-radius:8px;background:#eee}.track-pig-thumb.is-empty{display:block}.track-pig-meta{display:grid;grid-gap:2px;gap:2px;min-width:0}.track-label-panel{margin-top:12px;display:grid;grid-gap:8px;gap:8px}.track-label-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;text-decoration:none}@media (min-width:768px){.track-workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,320px);align-items:start}}.track-dewarp.is-off{display:none}.track-transport{display:flex;align-items:center;gap:8px;margin-top:8px}.track-transport button{flex:0 0 auto;min-height:44px;min-width:72px}.track-transport input[type=range]{flex:1 1 auto;min-width:0;min-height:44px}.res-custom{display:flex;flex-wrap:wrap;align-items:end;gap:10px}.res-custom label{flex:1 1 120px;min-width:0}.res-x{display:inline-flex;align-items:center;min-height:44px;font-weight:700;padding-bottom:10px}.track-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px}.track-strip img{width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}input[type=range]{min-height:44px;padding:0;border:0;background:transparent}@media (min-width:640px){.tap-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.easy-form .two-col,.topic-photo-actions{grid-template-columns:1fr 1fr}.track-strip{grid-template-columns:repeat(4,minmax(0,1fr))}}.weigh-ocr-backdrop{position:fixed;inset:0;z-index:80;background:rgba(0,0,27,.55);display:grid;place-items:center;padding:16px}.weigh-ocr-modal{width:min(100%,440px);max-height:min(85vh,640px);overflow:auto;background:var(--card);color:inherit;border:1px solid var(--line);border-radius:14px;padding:16px;display:grid;grid-gap:10px;gap:10px}.weigh-ocr-modal h2{margin:0;font-size:1.1rem}.weigh-ocr-status{margin:0;font-weight:700}.weigh-ocr-live{display:grid;justify-items:center;grid-gap:12px;gap:12px;padding:8px 0 4px;text-align:center}.weigh-ocr-spinner{width:44px;height:44px;border:3px solid var(--line);border-top-color:var(--plus-blue);border-radius:50%;animation:weigh-ocr-spin .75s linear infinite}.weigh-ocr-pulse{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:6px;gap:6px;width:min(100%,200px);height:8px}.weigh-ocr-pulse span{display:block;border-radius:99px;background:var(--plus-blue);animation:weigh-ocr-bar 1.1s ease-in-out infinite}.weigh-ocr-pulse span:nth-child(2){animation-delay:.18s}.weigh-ocr-pulse span:nth-child(3){animation-delay:.36s}@keyframes weigh-ocr-spin{to{transform:rotate(1turn)}}@keyframes weigh-ocr-bar{0%,to{opacity:.28;transform:scaleY(.55)}50%{opacity:1;transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){.weigh-ocr-spinner{animation-duration:1.6s}.weigh-ocr-pulse span{animation-duration:2s}}.weigh-ocr-lines{list-style:none;margin:0;padding:0;display:grid;grid-gap:6px;gap:6px}.weigh-ocr-lines li{display:grid;grid-template-columns:minmax(7rem,40%) 1fr;grid-gap:8px;gap:8px;font-size:.95rem}.weigh-ocr-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.weigh-ocr-actions button{min-height:44px}.weigh-io{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px;margin:4px 0 8px}.weigh-io-leg{margin:0;min-width:0;border:1px solid var(--line);border-radius:12px;padding:8px 10px 10px;background:color-mix(in srgb,var(--navy) 3%,var(--card))}.weigh-io-leg legend{font-weight:700;font-size:.92rem;padding:0 6px}@media (min-width:640px){.weigh-io{grid-template-columns:1fr 1fr;align-items:start}}.weigh-cam-open{min-height:52px;width:100%;border:0;border-radius:12px;background:var(--plus-blue);color:#fff;font-weight:700;font-size:1rem;padding:12px 16px}.weigh-preview{position:relative;width:100%;max-width:100%;aspect-ratio:3/4;max-height:min(70vh,560px);background:#10131a;border-radius:12px;overflow:hidden;border:1px solid var(--line)}.weigh-preview video{width:100%;height:100%;object-fit:cover;display:block}.weigh-preview-hint{position:absolute;left:8px;right:8px;bottom:8px;min-height:44px;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;font-size:13px;background:rgba(0,0,27,.55);border-radius:10px;padding:8px 10px;pointer-events:none}.weigh-canvas-hidden{display:none}@media (min-width:640px){.weigh-cam-actions{grid-template-columns:1fr 1fr}.weigh-preview{aspect-ratio:4/3}}.error{color:var(--red);margin:0 0 10px}.summary-send{margin:16px 0 8px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}.summary-send h2{margin:0 0 6px;font-size:1.05rem}.summary-send-fields{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.summary-send-fields label{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:min(100%,160px);flex:1 1;min-height:44px}.summary-send-fields select{min-height:44px;width:100%}.summary-send-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.summary-send-actions .chip,.summary-send-actions a.chip,.summary-send-actions button{min-height:44px}@media (max-width:639px){.summary-send-actions,.summary-send-fields{flex-direction:column}.summary-send-actions .chip,.summary-send-actions a.chip,.summary-send-actions button,.summary-send-fields label{width:100%;min-width:0}}.summary-kpi{display:grid;grid-template-columns:1fr;grid-gap:8px;gap:8px;margin:12px 0}.summary-kpi-card{display:grid;grid-gap:4px;gap:4px;min-height:88px;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:12px}.summary-kpi-card strong{font-size:1.25rem}.summary-kpi-card small{color:var(--muted)}.summary-subnav{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 20px}.summary-list{margin:0;padding-left:1.1rem}.summary-list li{margin:8px 0}.calendar-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:4px;gap:4px;margin-bottom:12px}.calendar-dow{text-align:center;font-size:12px;color:var(--muted);padding:4px 0}.calendar-day{min-height:44px;min-width:0;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--navy);font-weight:650}.calendar-day.has{background:#157a3c;color:#fff;border-color:#0f5c2e}.calendar-day.empty-due{background:#b42318;color:#fff;border-color:#8a1c14}.calendar-day.empty-due.on{background:#8a1c14;color:#fff;box-shadow:inset 0 0 0 2px #fff}.calendar-day.on{background:var(--plus-blue);color:#fff;border-color:var(--plus-blue)}.calendar-day.has.on{background:#0f5c2e;color:#fff;border-color:#0a3f1f;box-shadow:inset 0 0 0 2px #fff}.calendar-day .cal-flags{display:block;font-size:.7rem;line-height:1;min-height:.7rem}.calendar-day.tg-ok{box-shadow:inset 0 -3px 0 #16a34a}.calendar-day.tg-fail{box-shadow:inset 0 -3px 0 #dc2626}.calendar-day.outage{outline:1px dashed #ca8a04}.tg-day-log{margin-top:.6rem}.tg-log-pre{white-space:pre-wrap;font-size:.85rem;background:var(--card-muted,#eef2f7);padding:.6rem;border-radius:8px}@media (min-width:640px){.summary-kpi{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.summary-kpi{grid-template-columns:repeat(3,minmax(0,1fr))}}.theme-toggle{width:100%;margin-top:8px;min-height:44px;border-radius:10px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.08);color:#fff;font-weight:600;cursor:pointer}html.dark,html[data-theme=dark]{--bg:#06080c;--card:#10161f;--line:#2a3340;--muted:#9aa7b6;--navy:#e8eef6;--green:#3d9a58;--plus-blue:#3a5fd4;--ok:#3d9a58;--red:#e05a50;--sidebar-bg:#05070a;--sidebar-fg:#eef3f8;--sidebar-muted:#7b8896;--btn-bg:#161c26;--btn-hover:#222a36;--scrollbar:#3a4556;--scrollbar-track:#0a0d12}html.dark .main,html.dark .shell,html.dark body,html[data-theme=dark] .main,html[data-theme=dark] .shell,html[data-theme=dark] body{background:var(--bg);color:var(--navy)}html[data-theme=dark] .dash-kpis div{background:var(--card);border-color:var(--line)}html.dark .card,html.dark input,html.dark select,html.dark textarea,html[data-theme=dark] .card,html[data-theme=dark] input,html[data-theme=dark] select,html[data-theme=dark] textarea{background:var(--card);color:var(--navy);border-color:var(--line)}html.dark input[type=checkbox],html.dark input[type=radio],html[data-theme=dark] input[type=checkbox],html[data-theme=dark] input[type=radio]{background:var(--card);border-color:color-mix(in srgb,var(--navy) 35%,var(--line))}html.dark input[type=checkbox]:checked,html.dark input[type=radio]:checked,html[data-theme=dark] input[type=checkbox]:checked,html[data-theme=dark] input[type=radio]:checked{background:var(--plus-blue);border-color:var(--plus-blue)}html.dark input[type=checkbox]:checked:after,html[data-theme=dark] input[type=checkbox]:checked:after{border-color:#fff}html.dark .facts div,html[data-theme=dark] .facts div{background:var(--card);color:var(--navy);border-color:var(--line)}html.dark .btn,html.dark .ghost-btn,html.dark a.btn,html.dark button,html[data-theme=dark] .btn,html[data-theme=dark] .ghost-btn,html[data-theme=dark] a.btn,html[data-theme=dark] button{background:var(--btn-bg);color:var(--navy);border-color:var(--line)}html.dark .ghost-btn:hover:not(:disabled),html.dark a.btn:hover,html.dark button:hover:not(:disabled):not(.locked),html[data-theme=dark] .ghost-btn:hover:not(:disabled),html[data-theme=dark] a.btn:hover,html[data-theme=dark] button:hover:not(:disabled):not(.locked){box-shadow:inset 0 0 0 999px rgba(255,255,255,.06)}html.dark .btn.primary,html.dark a.btn.primary,html.dark a.primary,html.dark button.primary,html[data-theme=dark] .btn.primary,html[data-theme=dark] a.btn.primary,html[data-theme=dark] a.primary,html[data-theme=dark] button.primary{background:var(--green);color:#fff;border-color:transparent}html.dark a.primary:hover,html.dark button.primary:hover:not(:disabled),html[data-theme=dark] a.primary:hover,html[data-theme=dark] button.primary:hover:not(:disabled){background:#2f7a46;color:#fff}html.dark .ghost-btn.danger,html[data-theme=dark] .ghost-btn.danger{color:#f97066;border-color:#7a3a36;background:#1a1010}html.dark .ghost-btn.danger:hover:not(:disabled),html[data-theme=dark] .ghost-btn.danger:hover:not(:disabled){background:#2a1616}html.dark .perm-matrix thead th,html[data-theme=dark] .perm-matrix thead th{background:#0a0e14}html.dark .perm-matrix tbody th,html[data-theme=dark] .perm-matrix tbody th{background:var(--card)}html.dark .login-page,html[data-theme=dark] .login-page{background:linear-gradient(160deg,#05070a,#0a1020 60%,#152040)}html.dark .login-card,html[data-theme=dark] .login-card{background:var(--card);color:var(--navy);border:1px solid var(--line);box-shadow:0 20px 45px rgba(0,0,0,.55)}html.dark .login-card input,html.dark .login-card select,html[data-theme=dark] .login-card input,html[data-theme=dark] .login-card select{background:var(--btn-bg);color:var(--navy);border-color:var(--line)}html.dark .login-hint,html[data-theme=dark] .login-hint{background:#142018;border-color:#2a4a32;color:#6ece86}html.dark .login-error,html[data-theme=dark] .login-error{background:#1a1010;border-color:#7a3a36}html.dark .sign-canvas,html[data-theme=dark] .sign-canvas{background:#fff}html[data-theme=dark] .lang-admin select,html[data-theme=dark] .lang-picker select{background:var(--card);color:var(--navy)}html[data-theme=dark] .calendar-day,html[data-theme=dark] .tap,html[data-theme=dark] a.chip,html[data-theme=dark] button.chip{background:var(--card);color:var(--navy);border-color:var(--line)}html[data-theme=dark] .calendar-day.on,html[data-theme=dark] .tap.on,html[data-theme=dark] button.chip.on{background:var(--plus-blue);color:#fff;border-color:var(--plus-blue)}html.dark .toggle.seg,html[data-theme=dark] .toggle.seg{background:color-mix(in srgb,#fff 8%,var(--card));border-color:var(--line)}html.dark .toggle.seg a.chip,html.dark .toggle.seg button.chip,html[data-theme=dark] .toggle.seg a.chip,html[data-theme=dark] .toggle.seg button.chip{background:transparent;color:var(--navy);border:0}html.dark .toggle.seg button.chip:focus-visible,html.dark .toggle.seg button.chip:hover,html[data-theme=dark] .toggle.seg button.chip:focus-visible,html[data-theme=dark] .toggle.seg button.chip:hover{background:color-mix(in srgb,var(--plus-blue) 22%,transparent);box-shadow:none}html.dark .toggle.seg a.chip.on,html.dark .toggle.seg button.chip.on,html[data-theme=dark] .toggle.seg a.chip.on,html[data-theme=dark] .toggle.seg button.chip.on{background:var(--plus-blue);color:#fff;border:0}html[data-theme=dark] .calendar-day.has{background:#32d583;color:#052e16;border-color:#6ce9a6}html[data-theme=dark] .calendar-day.has.on{background:#12b76a;color:#052e16;border-color:#a6f4c5;box-shadow:inset 0 0 0 2px #ecfdf3}html[data-theme=dark] .calendar-day.empty-due{background:#f97066;color:#1a0a08;border-color:#fda29b}html[data-theme=dark] .calendar-day.empty-due.on{background:#f04438;color:#fff;border-color:#fda29b}html[data-theme=dark] .event-topic,html[data-theme=dark] .event-topic-body input,html[data-theme=dark] .event-topic-body select,html[data-theme=dark] .event-topic-body textarea{background:var(--card);color:var(--navy);border-color:var(--line)}html.dark .event-topic-head,html[data-theme=dark] .event-topic-head{color:var(--navy)}html.dark .sidebar,html[data-theme=dark] .sidebar{background:var(--sidebar-bg);color:var(--sidebar-fg)}html.dark .sidebar-brand,html.dark .sidebar-footer,html[data-theme=dark] .sidebar-brand,html[data-theme=dark] .sidebar-footer{border-color:rgba(255,255,255,.12)}html.dark .sidebar-brand .brand-sub,html.dark .user-chip,html[data-theme=dark] .sidebar-brand .brand-sub,html[data-theme=dark] .user-chip{color:var(--sidebar-muted)}html.dark .user-chip strong,html[data-theme=dark] .user-chip strong{color:var(--sidebar-fg)}html.dark .sidebar-nav a,html[data-theme=dark] .sidebar-nav a{color:#d5dee8}html.dark .sidebar-nav a.active,html[data-theme=dark] .sidebar-nav a.active{background:var(--plus-blue);color:#fff}html.dark .sidebar-nav a:hover,html[data-theme=dark] .sidebar-nav a:hover{background:rgba(255,255,255,.08)}html.dark .sidebar .lang-picker-sidebar select,html.dark .sidebar .logout-btn,html.dark .sidebar .theme-toggle,html.dark .sidebar-close,html[data-theme=dark] .sidebar .lang-picker-sidebar select,html[data-theme=dark] .sidebar .logout-btn,html[data-theme=dark] .sidebar .theme-toggle,html[data-theme=dark] .sidebar-close{background:var(--btn-bg);color:var(--sidebar-fg);border-color:var(--line)}html.dark .sidebar .lang-picker-sidebar select option,html[data-theme=dark] .sidebar .lang-picker-sidebar select option{background:var(--card);color:var(--sidebar-fg)}html.dark .mobile-top,html[data-theme=dark] .mobile-top{background:var(--sidebar-bg);color:var(--sidebar-fg);border-bottom-color:var(--line)}html.dark .hamburger,html[data-theme=dark] .hamburger{background:var(--btn-bg);color:var(--sidebar-fg);border-color:var(--line)}html.dark .worker-shell .worker-top,html[data-theme=dark] .worker-shell .worker-top{background:var(--sidebar-bg);color:var(--sidebar-fg);border-bottom:1px solid var(--line)}html.dark .worker-nav a,html[data-theme=dark] .worker-nav a{color:var(--sidebar-fg)}html.dark .worker-shell .lang-picker-header select,html.dark .worker-shell .logout-btn,html.dark .worker-shell .theme-toggle,html[data-theme=dark] .worker-shell .lang-picker-header select,html[data-theme=dark] .worker-shell .logout-btn,html[data-theme=dark] .worker-shell .theme-toggle{background:var(--btn-bg);color:var(--sidebar-fg);border-color:var(--line)}.worker-theme{width:auto;min-width:44px;margin-top:0;padding:0 12px}.admin-hub-links{display:flex;flex-wrap:wrap;gap:8px}.worker-shell .worker-top{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--plus-blue);color:#fff}.worker-nav{display:flex;gap:12px;flex:1 1}.worker-nav a{color:#fff;font-weight:600;text-decoration:none}.worker-main{padding:16px}.worker-actions{display:flex;gap:12px;margin:16px 0}.btn.big{min-height:52px;padding:12px 20px;font-size:16px}.sign-canvas{display:block;border:1px dashed var(--line);border-radius:8px;margin:12px 0;touch-action:none;background:#fff}.forecast-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:12px;gap:12px;margin-bottom:16px}.forecast-score{font-size:2rem;font-weight:700}.forecast-formula{margin-top:10px;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--muted) 28%,transparent)}.forecast-formula label{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:8px;font-size:.85rem;line-height:1.2;cursor:pointer;color:var(--muted);white-space:nowrap;max-width:100%}.forecast-formula-block{margin:8px 0 0;font-size:.75rem;line-height:1.45}.forecast-formula-block dt{font-weight:600;margin-top:6px}.forecast-formula-block dd{margin:2px 0 0;white-space:pre-wrap}.risk-high{border-left:4px solid var(--red)}.risk-medium{border-left:4px solid var(--yellow)}.risk-low{border-left:4px solid var(--ok)}.chip.warn{background:#fff3cd;color:#856404}.shell:has(.copilot-page){height:100dvh;max-height:100dvh;overflow:hidden}.shell-content:has(.copilot-page){height:100%;max-height:100%;min-height:0;overflow:hidden}.main:has(.copilot-page){max-width:none;padding:0;display:flex;flex-direction:column;flex:1 1;min-height:0;height:calc(100dvh - 56px);max-height:calc(100dvh - 56px);overflow:hidden}@media (min-width:768px){body:has(.copilot-page),html:has(.copilot-page){height:100%;overflow:hidden}.main:has(.copilot-page){height:100dvh;max-height:100dvh}}.copilot-page{position:relative;display:flex;flex-direction:column;flex:1 1;min-height:0;height:100%;max-height:100%;overflow:hidden;width:100%;max-width:820px;margin:0 auto;padding:12px 16px}.copilot-ambient{pointer-events:none;position:absolute;inset:0;z-index:0;background:radial-gradient(1200px 420px at 12% -10%,rgba(31,107,58,.18),transparent 55%),radial-gradient(900px 380px at 110% 8%,rgba(25,61,154,.16),transparent 50%),radial-gradient(700px 500px at 50% 110%,rgba(255,255,255,.55),transparent 60%)}.copilot-composer,.copilot-head,.copilot-thread{position:relative;z-index:1}.copilot-head{flex:0 0 auto;padding:4px 4px 12px}.copilot-head h1{margin:0;font-size:1.1rem;font-weight:700}.copilot-thread{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px;padding:4px 2px 12px}.copilot-empty{margin:auto;max-width:36rem;text-align:center;color:var(--muted);line-height:1.55;font-size:.95rem}.copilot-row{display:flex;width:100%}.copilot-row-user{justify-content:flex-end}.copilot-row-bot{justify-content:flex-start}.copilot-row-bot:has(.copilot-answer){flex:1 1 auto;min-height:0;overflow:hidden;align-items:stretch}.copilot-bubble{max-width:min(100%,640px);padding:12px 16px;border-radius:22px;border:1px solid rgba(255,255,255,.45);background:rgba(255,255,255,.42);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);box-shadow:0 10px 32px rgba(16,24,32,.08);line-height:1.55;color:var(--navy)}.copilot-bubble-user{border-radius:22px 22px 8px 22px;background:rgba(25,61,154,.18);border-color:rgba(25,61,154,.22)}.copilot-bubble-bot{border-radius:22px 22px 22px 8px;width:100%}.copilot-answer{min-height:0;max-height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.copilot-bubble-bot p{margin:0 0 10px}.copilot-bubble-bot p:last-of-type{margin-bottom:0}.copilot-bubble-error,.copilot-bubble-wait{width:auto}.copilot-bubble-error{color:var(--red);background:rgba(253,236,235,.7)}.copilot-cites{margin-top:10px;font-size:.85rem;opacity:.85}.copilot-cites summary{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--muted,#5b6670)}.copilot-cite-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.copilot-cites .cite{background:rgba(232,238,252,.72);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.copilot-attach{flex:0 0 auto;width:44px;height:44px;border-radius:999px;border:0;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.72);color:#2f3a44;cursor:pointer}.copilot-attach:disabled{opacity:.45;cursor:not-allowed}.copilot-composer-main{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:6px}.copilot-preview{position:relative;width:-moz-fit-content;width:fit-content;max-width:100%}.copilot-preview img,.copilot-sent-image{display:block;max-width:min(180px,50vw);max-height:120px;border-radius:12px;object-fit:cover}.copilot-sent-image{margin-bottom:8px}.copilot-preview-clear{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:999px;border:0;background:#1f2933;color:#fff;font-size:14px;line-height:1;cursor:pointer}.copilot-composer{flex:0 0 auto;position:-webkit-sticky;position:sticky;bottom:0;z-index:2;display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-radius:28px;border:1px solid rgba(255,255,255,.5);background:rgba(255,255,255,.5);backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);box-shadow:0 12px 40px rgba(16,24,32,.12)}.copilot-composer textarea{flex:1 1;width:100%;min-height:44px;max-height:140px;resize:none;border:0;background:transparent;padding:10px 8px;border-radius:16px;box-shadow:none}.copilot-composer textarea:focus{outline:2px solid var(--plus-blue);outline-offset:2px}.copilot-send{flex:0 0 auto;min-width:72px;border-radius:999px}.copilot-send:disabled{opacity:.45}@media (max-width:767px){.main:has(.copilot-page){height:calc(100dvh - 56px);max-height:calc(100dvh - 56px)}.copilot-bubble{max-width:92%}.copilot-composer{bottom:0}}html.dark .copilot-ambient,html[data-theme=dark] .copilot-ambient{background:radial-gradient(1200px 420px at 12% -10%,rgba(50,213,131,.12),transparent 55%),radial-gradient(900px 380px at 110% 8%,rgba(96,140,255,.14),transparent 50%),radial-gradient(700px 500px at 50% 110%,rgba(16,20,28,.4),transparent 60%)}html.dark .copilot-bubble,html[data-theme=dark] .copilot-bubble{background:rgba(26,33,48,.55);border-color:rgba(255,255,255,.12);color:var(--navy)}html.dark .copilot-bubble-user,html[data-theme=dark] .copilot-bubble-user{background:rgba(96,140,255,.22);border-color:rgba(96,140,255,.28)}html.dark .copilot-bubble-error,html[data-theme=dark] .copilot-bubble-error{background:rgba(80,24,24,.55);color:#fda29b}html.dark .copilot-composer,html[data-theme=dark] .copilot-composer{background:rgba(26,33,48,.58);border-color:rgba(255,255,255,.14)}html.dark .copilot-composer textarea,html[data-theme=dark] .copilot-composer textarea{background:transparent;color:var(--navy)}html.dark .copilot-cites .cite,html[data-theme=dark] .copilot-cites .cite{background:rgba(58,68,86,.72);color:#c5d4ff}@media (prefers-reduced-motion:reduce){.copilot-bubble,.copilot-composer{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}}html.dark .knowledge-table thead th,html[data-theme=dark] .knowledge-table thead th{background:#0a0e14}html.dark .knowledge-table tbody tr:hover td,html[data-theme=dark] .knowledge-table tbody tr:hover td{background:rgba(255,255,255,.03)}html.dark button.knowledge-sort,html[data-theme=dark] button.knowledge-sort{background:transparent;color:var(--muted);border:0;box-shadow:none}html[dir=rtl] .knowledge-table td,html[dir=rtl] .knowledge-table th{text-align:right}html[dir=rtl] .knowledge-col-actions,html[dir=rtl] .knowledge-col-num{text-align:left}.mqtt-status-row{display:flex;align-items:center;gap:10px}.mqtt-dot{width:10px;height:10px;border-radius:50%;background:var(--muted);flex-shrink:0}.mqtt-dot.ok{background:var(--ok)}.mqtt-dot.wait{background:var(--yellow)}.mqtt-dot.idle{background:var(--muted)}.mqtt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:12px;gap:12px}.mqtt-topic-card{border:1px solid var(--line);border-radius:10px;padding:12px}.mqtt-topic-card h3{margin:0 0 8px;font-size:15px}.mqtt-preview{margin:8px 0 0;max-height:10rem;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:12px;background:var(--bg);border-radius:8px;padding:8px}.mqtt-recent{list-style:none;margin:0;padding:0;display:grid;grid-gap:12px;gap:12px}.mqtt-table{width:100%;border-collapse:collapse;font-size:13px;margin:10px 0}.mqtt-table td,.mqtt-table th{border:1px solid var(--line);padding:6px 8px;text-align:left}.mqtt-head h1{margin:0 0 6px}.mqtt-status-meta{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:4px 16px;font-size:13px}.mqtt-last{margin:0 0 6px;font-size:12px}.mqtt-cmd{display:flex;flex-wrap:wrap;align-items:end;gap:8px;margin-top:8px}.mqtt-cmd label{margin:0;font-size:12px}.mqtt-cmd input,.mqtt-cmd select{min-height:36px;max-width:7rem}.mqtt-scroll{min-height:0;overflow:auto}.mqtt-avgs{margin:4px 0 8px}@media (min-width:1100px){body:has(.mqtt-board),html:has(.mqtt-board){height:100dvh;overflow:hidden}.shell:has(.mqtt-board){height:100dvh;overflow:hidden}.main:has(.mqtt-board){max-width:none;padding:8px 12px 10px;overflow:hidden}.mqtt-board{height:calc(100dvh - 16px);min-height:0;min-width:0;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;grid-gap:6px;gap:6px}.mqtt-board>.card,.mqtt-body .card{margin:0;padding:6px 8px;border-radius:8px;min-height:0;display:flex;flex-direction:column}.mqtt-board h1{font-size:1.05rem}.mqtt-board h2{font-size:12px;margin:0 0 4px}.mqtt-status{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px}.mqtt-status-meta,.mqtt-status-row{margin:0}.mqtt-body{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.9fr) minmax(0,1fr);grid-gap:6px;gap:6px;min-height:0;overflow:visible}.mqtt-avgs{grid-area:auto;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}.mqtt-table{margin:0;font-size:12px}.mqtt-table td,.mqtt-table th{padding:3px 6px}.mqtt-topics .mqtt-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.mqtt-topic-card{padding:6px 8px;border-radius:8px}.mqtt-topic-card h3{font-size:11px;margin:0 0 2px}.mqtt-preview{margin:4px 0 0;max-height:2.6rem;overflow:hidden;font-size:11px;padding:4px 6px}.mqtt-cmd button,.mqtt-cmd input,.mqtt-cmd select{min-height:36px}.main:has(.plc-page) .plc-mqtt .card,.plc-page .plc-mqtt,.plc-page .plc-sim{margin-bottom:8px;padding:8px 10px}.plc-page .plc-mqtt h2,.plc-page .plc-sim h2{font-size:13px;margin:0 0 4px}.plc-page .plc-mqtt p,.plc-page .plc-sim p{margin:0 0 6px;font-size:12px}.plc-page .dash-strip{grid-area:auto;grid-template-columns:repeat(5,minmax(0,1fr));margin:0;gap:4px}}.loc-track{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(0,auto);grid-gap:6px;gap:6px;min-width:0;width:100%;max-width:100%;overflow:hidden}.loc-wrap{position:static}#dash-mqtt,#mqtt-sensors,.plc-mqtt{position:relative;overflow:visible;z-index:2;min-width:0;max-width:100%}#dash-mqtt h2,#mqtt-sensors h2,.plc-mqtt h2{padding-right:36px}.loc-gear{position:absolute;top:6px;right:8px;z-index:8}.loc-gear-btn{width:28px;height:28px;min-height:28px;padding:0;border-radius:8px;border:1px solid var(--line);background:var(--card);color:#00bfa5}.loc-gear-btn:focus-visible,.loc-gear-btn:hover{border-color:#00bfa5}.loc-gear-pop{position:absolute;top:calc(100% + 4px);right:0;left:auto;width:min(260px,78vw);max-width:calc(100vw - 24px);transform:translateX(0);max-height:min(360px,70dvh);overflow:auto;padding:8px;border-radius:10px;border:1px solid var(--line);background:var(--card,#fff);box-shadow:0 10px 28px rgba(0,0,0,.28);z-index:9}.loc-gear-pop .house-chips{flex-direction:column;align-items:stretch}.loc-gear-slice{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}.loc-slice-btns{display:flex;flex-wrap:wrap;gap:4px}.loc-slice-btn{min-height:36px;min-width:36px;padding:4px 8px;font-size:12px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:inherit}.loc-slice-btn.on{border-color:#00bfa5;background:color-mix(in srgb,#00bfa5 18%,transparent)}.loc-card{display:grid;grid-gap:6px;gap:6px;text-align:left;padding:8px 10px;min-height:44px;min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:var(--card);color:inherit;cursor:pointer}.loc-card:focus-visible,.loc-card:hover{border-color:var(--accent,#3d8bfd)}.loc-title{font-size:13px;display:flex;align-items:center;gap:6px}.loc-metrics{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:4px 6px;gap:4px 6px;font-size:12px}.loc-metrics li{display:flex;align-items:center;gap:4px;min-width:0}.loc-metrics i,.loc-modal .metric-list i.loc-ico,.loc-modal-head i.loc-ico,.loc-title i.loc-ico{width:1em;font-size:14px;flex:0 0 auto;filter:none;-webkit-text-fill-color:currentColor}.loc-modal i.loc-ico-house,.loc-wrap i.loc-ico-house{color:#00c853!important}.loc-modal i.loc-ico-temp,.loc-wrap i.loc-ico-temp{color:#ff3d00!important}.loc-modal i.loc-ico-hum,.loc-wrap i.loc-ico-hum{color:#00b0ff!important}.loc-modal i.loc-ico-co2,.loc-wrap i.loc-ico-co2{color:#aa00ff!important}.loc-modal i.loc-ico-nh3,.loc-wrap i.loc-ico-nh3{color:#ff9100!important}.loc-modal i.loc-ico-wind,.loc-wrap i.loc-ico-wind{color:#2962ff!important}.loc-modal i.loc-ico-cough,.loc-wrap i.loc-ico-cough{color:#ff1744!important}.loc-modal i.loc-ico-fan,.loc-wrap i.loc-ico-fan{color:#00bfa5!important}html.dark .loc-modal i.loc-ico-house,html.dark .loc-wrap i.loc-ico-house{color:#69f0ae!important}html.dark .loc-modal i.loc-ico-temp,html.dark .loc-wrap i.loc-ico-temp{color:#ff6e40!important}html.dark .loc-modal i.loc-ico-hum,html.dark .loc-wrap i.loc-ico-hum{color:#40c4ff!important}html.dark .loc-modal i.loc-ico-co2,html.dark .loc-wrap i.loc-ico-co2{color:#e040fb!important}html.dark .loc-modal i.loc-ico-nh3,html.dark .loc-wrap i.loc-ico-nh3{color:#ffff00!important}html.dark .loc-modal i.loc-ico-wind,html.dark .loc-wrap i.loc-ico-wind{color:#82b1ff!important}html.dark .loc-modal i.loc-ico-cough,html.dark .loc-wrap i.loc-ico-cough{color:#ff5252!important}html.dark .loc-modal i.loc-ico-fan,html.dark .loc-wrap i.loc-ico-fan{color:#64ffda!important}.loc-dots{display:flex;align-items:center;gap:6px;margin-top:6px}.loc-dot{width:8px;height:8px;padding:0;min-height:8px;border-radius:99px;border:0;background:#22d3ee;opacity:.45}.loc-dot.on{background:#22c55e;opacity:1}html.dark .loc-dot{background:#67e8f9;opacity:.5}html.dark .loc-dot.on{background:#4ade80;opacity:1}.house-pref{margin:0 0 6px}.house-chips{display:flex;flex-wrap:wrap;gap:4px}.house-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);cursor:pointer}.house-chip.on{border-color:#00bfa5;background:color-mix(in srgb,#00bfa5 18%,transparent)}.house-chip.off{opacity:.65;cursor:default}.house-chip input{margin:0}.loc-hint{margin:6px 0 0;font-size:11px}.loc-modal-back{position:fixed;inset:0;z-index:50;background:rgba(0,0,27,.5);display:grid;place-items:center;padding:12px}.loc-modal{width:min(720px,100%);max-height:min(86dvh,720px);overflow:auto;background:var(--card,#fff);color:inherit;border-radius:12px;padding:14px 16px;display:grid;grid-gap:8px;gap:8px}.loc-modal-head{justify-content:space-between}.loc-modal-head,.loc-modal-head h2{display:flex;align-items:center;gap:8px}.loc-modal-head h2{margin:0;font-size:1.05rem}.loc-metrics-lg{grid-template-columns:repeat(2,minmax(0,1fr))}.loc-metrics-lg .loc-ico,.loc-modal-head .loc-ico{width:16px;font-size:16px}.plc-devices{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 12px;font-size:13px}@media (min-width:1100px){body:has(.plc-board),html:has(.plc-board){height:100dvh;overflow:hidden}.shell:has(.plc-board){height:100dvh;overflow:hidden}.main:has(.plc-board){max-width:none;padding:8px 12px 10px;overflow:hidden}.plc-board{height:calc(100dvh - 16px);min-height:0;min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-gap:6px;gap:6px}.plc-head h1{font-size:1.05rem;margin:0}.plc-board>.card{margin:0;padding:6px 8px;min-height:0}.plc-board h2{font-size:12px;margin:0 0 4px}.plc-mqtt{overflow:visible;display:flex;flex-direction:column}.plc-sim .dash-strip{grid-area:auto;grid-template-columns:repeat(5,minmax(0,1fr));margin:0;gap:4px}.loc-hint{margin:4px 0 0}}@media (max-width:899px){.loc-track{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:559px){.loc-track{grid-template-columns:1fr}.loc-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}.bio-desk,.bio-left{display:flex;flex-direction:column;gap:12px}.bio-causes,.bio-filters,.bio-people,.lock-step-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.bio-causes .chip,.bio-filters label{min-height:44px}.bio-thumb{max-width:160px;max-height:100px;display:block;border-radius:8px}.bio-contact-cell{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.bio-contact-cell .chip,.bio-contact-cell .ghost-btn{min-height:36px;padding:4px 10px}.bio-cam video{width:100%;max-height:220px;background:#111}.bio-report tr,.bio-table tr{cursor:pointer}.bio-report tr.is-on,.bio-table tr.is-on{background:color-mix(in srgb,var(--accent,#1b7a4a) 16%,transparent)}.bio-check-inline{display:flex;gap:8px;align-items:center;min-height:44px}.bio-slip{display:none}.lock-step-row input{flex:1 1;min-width:160px}@media (min-width:960px){.bio-desk{display:grid;grid-template-columns:7fr 3fr;align-items:start;grid-gap:14px;gap:14px}.bio-left{display:grid;grid-template-rows:1fr 1fr;min-height:min(78vh,920px)}.bio-left>.card{min-height:0;overflow:auto}}@media print{@page{size:80mm auto;margin:4mm}body *{visibility:hidden}.bio-slip,.bio-slip *{visibility:visible}.bio-slip{display:block;position:absolute;left:0;top:0;width:80mm;font-size:12px}}