:root,:root[data-theme=light]{--primary: #0891a5;--primary-dark: #076e7e;--accent: #e8890c;--green: #2e9e5b;--red: #d5473b;--yellow: #d99a12;--bg: #e3e8ec;--card: #ffffff;--panel: #eef2f5;--text: #1c2732;--muted: #64757f;--border: #ccd6dd;--thead-bg: #eef2f5;--hover: #f2f6f8;--input-bg: #ffffff;--topbar-bg: #ffffff;--readonly-bg: #eef2f5;--shadow: rgba(18, 33, 48, .1);--grid-line: rgba(28, 39, 50, .04);--sidebar-bg: #172029;--sidebar-2: #1d2833;--sidebar-text: #aeb9c4;--sidebar-hover: rgba(255, 255, 255, .05);--sidebar-head: #dbe4ec}:root[data-theme=dark]{--primary: #22b8cf;--primary-dark: #0e91a6;--accent: #f0a437;--green: #37a866;--red: #e2564a;--yellow: #e6ac25;--bg: #0a0e13;--card: #131b23;--panel: #171f28;--text: #d9e2ea;--muted: #8494a1;--border: #263139;--thead-bg: #151d25;--hover: #1b2530;--input-bg: #0d141b;--topbar-bg: #10171e;--readonly-bg: #151d25;--shadow: rgba(0, 0, 0, .6);--grid-line: rgba(140, 165, 190, .035);--sidebar-bg: #0d141b;--sidebar-2: #121b23;--sidebar-text: #93a3b1;--sidebar-hover: rgba(255, 255, 255, .045);--sidebar-head: #d9e2ea}:root{--font-sans: "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", "Cascadia Code", "Consolas", ui-monospace, monospace;--radius: 6px}*{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);background-color:var(--bg);background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:28px 28px;color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}a{color:var(--primary-dark);text-decoration:none}a:hover{text-decoration:underline}.eyebrow,.breadcrumbs,.field label,table.data thead th,.stat-card .t,.sidebar .role{text-transform:uppercase;letter-spacing:.08em}.ai-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:url(/img/ai-bg.svg) center center / cover no-repeat}.ai-bg:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,transparent 40%,var(--bg) 100%);opacity:.55}:root[data-theme=light] .ai-bg{opacity:.45}.public-wrap{max-width:560px;margin:24px auto;padding:0 16px;position:relative}.brand-img{display:block;width:45%;max-width:45%;height:auto;margin:0 auto 8px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 1px 3px var(--shadow);padding:22px;position:relative}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--primary),transparent 65%);border-radius:var(--radius) var(--radius) 0 0}.card h1,.card h2{color:var(--text);font-weight:700;letter-spacing:.01em}legend{display:block;width:100%;font-size:15px;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:.06em;padding:4px 0 12px;margin-bottom:12px;border-bottom:1px solid var(--border)}legend:before{content:"";display:inline-block;width:0;height:0;border-left:7px solid var(--primary);border-top:5px solid transparent;border-bottom:5px solid transparent;margin-right:9px;vertical-align:1px}.hint-list{color:var(--muted);font-size:13px;margin:4px 0 18px;padding-left:18px}.hint-list li{margin:3px 0}.nav-links{margin-bottom:16px;font-size:12px;text-transform:uppercase;letter-spacing:.05em}.nav-links a{margin-right:6px}.field{margin-bottom:15px}.field label{display:block;font-size:11px;color:var(--muted);margin-bottom:5px;font-weight:700}.field input,.field select,.field textarea{width:100%;padding:10px 11px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;font-family:inherit;background:var(--input-bg);color:var(--text);transition:border-color .15s,box-shadow .15s}.field textarea{min-height:92px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 22%,transparent)}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border:1px solid transparent;border-radius:var(--radius);background:var(--primary);color:#fff;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:background .15s,border-color .15s,transform .05s}.btn:hover{background:var(--primary-dark);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-block{width:100%;justify-content:center;padding:11px}.btn-green{background:var(--green)}.btn-green:hover{background:#23814a}.btn-red{background:var(--red)}.btn-red:hover{background:#b33a30}.btn-orange{background:var(--accent)}.btn-orange:hover{background:#c9760a}.btn-sm{padding:6px 11px;font-size:11px}.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-ghost:hover{background:var(--hover);border-color:var(--primary)}.footer-note{text-align:center;color:var(--muted);font-size:11px;margin:20px 0;letter-spacing:.04em}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 8px;border-radius:3px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border:1px solid transparent}.badge:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 6px currentColor}.badge-open{color:var(--green);background:color-mix(in srgb,var(--green) 14%,transparent);border-color:color-mix(in srgb,var(--green) 40%,transparent)}.badge-close{color:var(--red);background:color-mix(in srgb,var(--red) 14%,transparent);border-color:color-mix(in srgb,var(--red) 40%,transparent)}.badge-proses{color:var(--yellow);background:color-mix(in srgb,var(--yellow) 16%,transparent);border-color:color-mix(in srgb,var(--yellow) 42%,transparent)}.table-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}.search-input{padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius);min-width:220px;font-size:14px;background:var(--input-bg);color:var(--text)}.search-input:focus{outline:none;border-color:var(--primary)}.date-input{padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--input-bg);color:var(--text);font-family:inherit;font-size:14px}.date-input:focus{outline:none;border-color:var(--primary)}.table-scroll{overflow:auto;max-height:var(--table-max-h, calc(100vh - 300px) );min-height:200px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card)}table.data{width:100%;border-collapse:collapse;background:var(--card);color:var(--text);font-size:13px;min-width:640px;font-variant-numeric:tabular-nums}table.data th,table.data td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}table.data thead th{background:var(--thead-bg);color:var(--muted);font-weight:700;font-size:11px;white-space:nowrap;position:sticky;top:0;z-index:2;box-shadow:inset 0 -2px 0 var(--border)}table.data tbody tr{transition:background .1s}table.data tbody tr:hover{background:var(--hover)}table.data tbody tr:last-child td{border-bottom:none}.pagination{display:flex;align-items:center;gap:12px;justify-content:flex-end;margin-top:14px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.admin-shell{display:flex;min-height:100vh}.sidebar{width:236px;flex-shrink:0;display:flex;flex-direction:column;position:relative;z-index:20;color:var(--sidebar-text);background:linear-gradient(180deg,rgba(255,255,255,.05),transparent 120px),linear-gradient(90deg,rgba(0,0,0,.28),transparent 30%),linear-gradient(180deg,var(--sidebar-2),var(--sidebar-bg));border-right:1px solid rgba(0,0,0,.5);box-shadow:inset -1px 0 #ffffff0d,inset 0 1px #ffffff0f,7px 0 26px -8px #0009;transition:width .2s ease,transform .25s ease}@media (min-width: 781px){.admin-shell.collapsed .sidebar{width:0;min-width:0;overflow:hidden;border:none}}.sidebar .profile{padding:18px 16px;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(0,0,0,.4);background:linear-gradient(180deg,#ffffff0d,#00000038);box-shadow:inset 0 -1px #ffffff0d}.sidebar .profile img{width:44px;height:44px;border-radius:6px;object-fit:cover;background:#fff;border:1px solid rgba(255,255,255,.3);box-shadow:0 3px 8px #00000080,inset 0 1px #fff6}.sidebar .profile .name{font-weight:700;font-size:13px;color:var(--sidebar-head);display:flex;align-items:center;gap:6px}.sidebar .profile .name svg{flex-shrink:0;color:var(--primary)}.sidebar .profile .role{font-size:10px;color:var(--primary);font-weight:700}.sidebar nav{flex:1;padding:10px 0}.sidebar nav a{display:flex;align-items:center;gap:10px;padding:12px 20px;color:var(--sidebar-text);font-size:13px;font-weight:600;border-left:3px solid transparent;transition:background .15s,color .15s,box-shadow .15s,transform .08s}.sidebar nav a svg{flex-shrink:0;opacity:.85}.nav-badge{margin-left:auto;background:var(--red);color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}.sidebar nav a:hover svg,.sidebar nav a.active svg{opacity:1}.sidebar nav a:hover{background:linear-gradient(90deg,rgba(255,255,255,.07),transparent 75%);color:var(--sidebar-head);text-decoration:none;transform:translate(2px)}.sidebar nav a.active{color:#fff;border-left-color:var(--primary);background:linear-gradient(90deg,color-mix(in srgb,var(--primary) 30%,transparent),transparent 82%);box-shadow:inset 0 1px #ffffff1a,inset 0 -1px #00000059,inset 4px 0 10px -5px var(--primary)}.sidebar .logout{padding:14px 20px;border-top:1px solid rgba(0,0,0,.4);box-shadow:inset 0 1px #ffffff0d}.sidebar .logout a{display:flex;align-items:center;gap:10px;color:#e8776b;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.sidebar .logout a svg{flex-shrink:0}.sidebar .logout a:hover{color:#ff8a80;text-decoration:none}.admin-main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{color:var(--text);padding:14px 24px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;position:relative;background:repeating-linear-gradient(90deg,rgba(127,127,127,.035) 0 1px,transparent 1px 3px),linear-gradient(180deg,color-mix(in srgb,var(--topbar-bg) 92%,#fff 8%),var(--topbar-bg) 60%,color-mix(in srgb,var(--topbar-bg) 92%,#000 8%));box-shadow:inset 0 1px #ffffff14,0 3px 12px -3px var(--shadow)}.topbar:before{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:color-mix(in srgb,var(--primary) 30%,transparent)}.topbar:after{content:"";position:absolute;left:0;bottom:-1px;height:2px;width:160px;background:linear-gradient(90deg,var(--primary),transparent);box-shadow:0 0 10px var(--primary)}.topbar strong{text-transform:uppercase;letter-spacing:.08em;font-size:14px}.topbar-left strong:before{content:"";display:inline-block;width:3px;height:15px;margin-right:9px;vertical-align:-2px;border-radius:1px;background:var(--primary);box-shadow:0 0 8px var(--primary)}.topbar .clock{font-family:var(--font-mono);font-size:13px;color:var(--primary-dark)}.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}.topbar-left strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-right{display:flex;align-items:center;gap:12px}.plant-badge{padding:3px 10px;border-radius:20px;background:color-mix(in srgb,var(--primary) 16%,transparent);border:1px solid color-mix(in srgb,var(--primary) 40%,transparent);color:var(--primary-dark);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.hamburger{display:flex;flex-direction:column;justify-content:center;gap:4px;width:38px;height:38px;padding:8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);cursor:pointer}.hamburger span{display:block;height:2px;background:var(--text);border-radius:2px}.theme-toggle{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border);border-radius:20px;background:var(--card);color:var(--text);font-size:12px;cursor:pointer;white-space:nowrap}.theme-toggle:hover{background:var(--hover);border-color:var(--primary)}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:40}.content{padding:24px;flex:1}.breadcrumbs{color:var(--muted);font-size:11px;margin-bottom:18px;font-weight:700}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin-bottom:26px}.stat-card{position:relative;background:var(--card);border:1px solid var(--border);border-left:3px solid var(--accent-c);border-radius:var(--radius);padding:16px 18px;text-align:left;font-family:inherit;width:100%;cursor:pointer;display:block;box-shadow:0 1px 3px var(--shadow);transition:transform .1s ease,box-shadow .1s ease,border-color .1s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px var(--shadow)}.stat-card:active{transform:translateY(0)}.stat-card:after{content:"";position:absolute;top:14px;right:16px;width:8px;height:8px;border-radius:50%;background:var(--accent-c);box-shadow:0 0 8px var(--accent-c)}.stat-card .n{font-family:var(--font-mono);font-size:34px;font-weight:700;line-height:1.1;color:var(--text);font-variant-numeric:tabular-nums}.stat-card .t{font-size:10px;color:var(--muted);font-weight:700;margin-top:6px}.stat-green{--accent-c: var(--green)}.stat-purple{--accent-c: #8b5cf6}.stat-grey{--accent-c: #64748b}.stat-blue{--accent-c: var(--primary)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.list-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.list-panel h3{margin:0 0 12px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text);padding-bottom:8px;border-bottom:1px solid var(--border)}.list-item{padding:10px 0;border-bottom:1px solid var(--border);font-size:13px}.list-item:last-child{border-bottom:none}.list-item .prob{color:var(--muted);margin-top:3px}.toast-wrap{position:fixed;top:16px;right:16px;z-index:9999;display:flex;flex-direction:column;gap:8px}.toast{padding:12px 16px;border-radius:var(--radius);color:#fff;font-size:13px;box-shadow:0 4px 14px #0000004d;cursor:pointer;max-width:320px;border-left:3px solid rgba(255,255,255,.5)}.toast-success{background:var(--green)}.toast-error{background:var(--red)}.toast-info{background:var(--primary-dark)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:420px;max-height:90vh;overflow-y:auto;box-shadow:0 12px 40px #0006;animation:modal-in .15s ease}@keyframes modal-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border)}.modal-header h3{margin:0;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--text)}.modal-close{background:none;border:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;padding:0 4px}.modal-close:hover{color:var(--text)}.modal-body{padding:18px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding:14px 18px;border-top:1px solid var(--border)}.login-wrap{max-width:380px;margin:8vh auto;padding:0 16px}.center{text-align:center}.muted{color:var(--muted)}.mt{margin-top:16px}.spinner-page{text-align:center;padding:40px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:12px}.zbx-page{display:flex;flex-direction:column;height:100%}.zbx-page>.table-scroll{flex:1 1 auto;min-height:160px;max-height:none}.zbx-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}.zbx-h{margin:2px 0 6px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text)}.zbx-block{border:none;width:100%;text-align:left;font-family:inherit;cursor:pointer;border-radius:6px;padding:9px 13px;display:block;min-width:0;transition:transform .1s ease,filter .1s ease,box-shadow .1s ease}.zbx-block:hover{transform:translateY(-2px);filter:brightness(1.07);box-shadow:0 6px 16px var(--shadow)}.zbx-block:active{transform:translateY(0)}.zbx-block-n{font-size:22px;font-weight:700;font-family:var(--font-mono);line-height:1.1}.zbx-block-t{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;opacity:.95;margin-top:2px}.rfid-page{display:flex;flex-direction:column;height:100%}.rfid-card-log{flex:1 1 auto;min-height:200px;display:flex;flex-direction:column}.rfid-ok{color:var(--green)}.rfid-fail{color:var(--red)}.rfid-log{flex:1 1 auto;min-height:140px;overflow-y:auto;background:var(--input-bg);border:1px solid var(--border);border-radius:8px;padding:10px;font-family:var(--font-mono);font-size:12px;line-height:1.6}.rfid-log-item{border-bottom:1px solid var(--border);padding:3px 0;word-break:break-word}.rfid-gate{color:#a78bfa;font-weight:700}.rfid-epc{color:#eab308}.rfid-box{color:#38bdf8;font-weight:700}.chat-shell{display:flex;height:100%;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--card)}.chat-list{width:300px;flex-shrink:0;min-width:0;border-right:1px solid var(--border);display:flex;flex-direction:column}.chat-list-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}.chat-list-body{flex:1 1 auto;overflow-y:auto}.chat-conv{width:100%;text-align:left;border:none;background:transparent;display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--border);cursor:pointer;color:var(--text)}.chat-conv:hover{background:var(--hover)}.chat-conv.active{background:color-mix(in srgb,var(--primary) 14%,transparent)}.chat-conv-main{flex:1;min-width:0;display:flex;flex-direction:column}.chat-conv-title{font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-conv-last{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-unread{background:var(--primary);color:#fff;font-size:11px;font-weight:700;min-width:20px;height:20px;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 6px}.chat-avatar{width:38px;height:38px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}.chat-avatar.sm{width:30px;height:30px;font-size:11px}.chat-thread{flex:1;display:flex;flex-direction:column;min-width:0}.chat-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:24px}.chat-thread-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border);background:var(--panel)}.chat-thread-title{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-back{display:none}.chat-messages{flex:1 1 auto;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:8px;background:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:28px 28px}.chat-msg{max-width:74%;align-self:flex-start;display:flex;flex-direction:column}.chat-msg.mine{align-self:flex-end;align-items:flex-end}.chat-msg-sender{font-size:11px;color:var(--primary);font-weight:700;margin-bottom:2px}.chat-bubble{padding:8px 12px;border-radius:12px;font-size:14px;line-height:1.4;background:var(--panel);border:1px solid var(--border);color:var(--text);white-space:pre-wrap;word-break:break-word}.chat-msg.mine .chat-bubble{background:var(--primary);border-color:var(--primary);color:#fff}.chat-msg-time{font-size:10px;color:var(--muted);margin-top:2px}.chat-input{display:flex;gap:8px;padding:10px;border-top:1px solid var(--border);background:var(--card)}.chat-input textarea{flex:1;resize:none;min-height:40px;max-height:120px;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius);background:var(--input-bg);color:var(--text);font-family:inherit;font-size:14px}.chat-input textarea:focus{outline:none;border-color:var(--primary)}.chat-user-row{display:flex;align-items:center;gap:10px;padding:9px 6px;border-bottom:1px solid var(--border);cursor:pointer}.chat-user-row:hover{background:var(--hover)}.chat-user-main{display:flex;flex-direction:column;min-width:0}@media (max-width: 780px){.chat-list{width:100%}.chat-shell.has-active .chat-list{display:none}.chat-shell:not(.has-active) .chat-thread{display:none}.chat-back{display:inline-flex}}@media (max-width: 900px){.two-col{grid-template-columns:1fr}}@media (max-width: 780px){.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:50;width:260px;max-width:82vw;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.content{padding:16px}.topbar{padding:12px 16px}}@media (max-width: 480px){body{font-size:13px}.content{padding:12px}.stat-card .n{font-size:28px}.table-toolbar{flex-direction:column;align-items:stretch}.search-input{min-width:0;width:100%}.pagination{justify-content:space-between}.card{padding:16px}.topbar{padding:10px 12px;gap:8px}.topbar-left{gap:8px}.topbar-left strong{font-size:12px}.topbar-right{gap:8px}.topbar .clock{font-size:11px}.theme-toggle .tt-label{display:none}.theme-toggle{padding:6px 9px}.breadcrumbs{margin-bottom:12px}}body{overflow-x:hidden}
