:root{--bg: #f6f7fb;--card: #fff;--text: #1f2328;--muted: #667085;--line: #e6e8ef;--blue: #1677ff;--blue2: #0b5ed7;--danger: #d92d20;--ok: #12b76a;--warn: #e6a23c;--shadow: 0 8px 24px rgba(20, 26, 38, .08);--radius: 12px;--shadow2: 0 16px 48px rgba(20, 26, 38, .1);--focus: 0 0 0 4px rgba(22, 119, 255, .16)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}a{color:inherit;text-decoration:none}.hidden,.pre{display:none!important}code{font-family:inherit;background:transparent;padding:0}.layout{display:grid;grid-template-columns:220px 1fr;min-height:100vh;width:100%;max-width:100%;margin:0 auto}.sidebar{background:var(--card);border-right:1px solid var(--line);padding:14px 12px;position:sticky;top:0;align-self:start;max-height:100vh;overflow:auto;z-index:20}.sidebar-backdrop{display:none}.brand{display:flex;align-items:center;gap:10px;padding:10px 10px 14px}.logo{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#1677ff,#0ea5e9);display:flex;align-items:center;justify-content:center;flex-shrink:0}.logo-icon{font-size:20px;line-height:1}.brand h1{font-size:15px;margin:0;line-height:1.2}.profile{display:flex;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:var(--radius);background:#fcfcfd}.avatar{width:36px;height:36px;border-radius:999px;background:#e9efff;border:1px solid #d6e4ff;display:flex;align-items:center;justify-content:center;color:#1d4ed8;font-weight:700;font-size:14px;flex-shrink:0}.pmeta{line-height:1.1}.pmeta .name{font-size:13px;font-weight:700}.pmeta .role{font-size:12px;color:var(--muted);margin-top:2px}.menu{margin-top:12px;padding:2px 6px 10px}.menu-group{margin-bottom:4px}.menu-group-title{font-size:12px;color:var(--muted);font-weight:900;margin:14px 6px 8px;letter-spacing:.2px;display:flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.menu-group-title:after{content:"";flex:1;height:1px;background:var(--line)}.menu-group-body{overflow:hidden}.menu-group-body.collapsed{display:none}.item{position:relative;display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;cursor:pointer;border:1px solid transparent;-webkit-user-select:none;user-select:none;transition:background .12s ease,border-color .12s ease,color .12s ease;font-size:13px}.item:hover{background:#f3f6ff;border-color:#e3edff}.item.active{background:#eaf2ff;border-color:#d6e4ff;color:#0b5ed7}.item.active:before{content:"";position:absolute;left:6px;top:10px;bottom:10px;width:3px;border-radius:999px;background:var(--blue)}.dot{width:8px;height:8px;border-radius:999px;background:#98a2b3;flex:0 0 auto}.item.active .dot{background:var(--blue)}.main{display:flex;flex-direction:column;min-width:0}.topbar{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:#ffffffeb;-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.badge{font-size:12px;color:var(--muted);padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:#fcfcfd}.badge.ok{color:var(--ok);border-color:#b7ebd0;background:#f0fdf6}.badge.bad{color:var(--danger);border-color:#fecaca;background:#fef2f2}.top-right{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px}#clock{white-space:nowrap}.content{padding:16px 20px;max-width:1400px;width:100%;margin:0 auto}.page-title{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:6px 0 14px;flex-wrap:wrap}.page-title h2{margin:0;font-size:18px;letter-spacing:.2px}.page-title .desc{margin:6px 0 0;color:var(--muted);font-size:13px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;margin-bottom:12px}.card:hover{box-shadow:var(--shadow2)}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px}.section-title h3{margin:0;font-size:14px}.divider{height:1px;background:var(--line);margin:12px 0}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.row.items-center{align-items:center}.field{display:flex;flex-direction:column;gap:6px;min-width:200px;flex:1}.field label{font-size:12px;color:var(--muted);font-weight:700}.field input,.field select,.field textarea{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;outline:none;min-height:36px;font-family:inherit;font-size:13px;color:var(--text);width:100%}.field input:focus,.field select:focus,.field textarea:focus{border-color:#b6d4fe;box-shadow:var(--focus)}.field input:disabled,.field select:disabled{background:#f9fafb;color:var(--muted)}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}.btn{border:1px solid transparent;border-radius:10px;padding:8px 14px;font-weight:700;cursor:pointer;display:inline-flex;gap:6px;align-items:center;min-height:38px;font-size:13px;font-family:inherit;transition:background .12s ease,filter .12s ease;white-space:nowrap}.btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.btn.primary:hover{background:var(--blue2)}.btn.light{background:#fff;border-color:var(--line);color:var(--text)}.btn.light:hover{background:#f9fafb}.btn.danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn.danger:hover{filter:brightness(.95)}.btn.warn{background:var(--warn);color:#fff;border-color:var(--warn)}.btn.warn:hover{filter:brightness(.95)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.small{padding:6px 10px;min-height:32px;border-radius:8px;font-weight:800;font-size:12px}.btn-xs{padding:4px 8px;min-height:26px;border-radius:6px;font-weight:700;font-size:11px}.hint{color:var(--muted);font-size:12px;margin-top:6px;line-height:1.5}.pill{font-size:12px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 10px;color:var(--muted);white-space:nowrap}.tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;line-height:1.6}.tag-normal{background:#e8f5e9;color:#2e7d32}.tag-empty{background:#f5f5f5;color:#999}.tag-pending{background:#fff3e0;color:#e65100}.tag-locked{background:#ffebee;color:#c62828}.tag-departed{background:#e3f2fd;color:#1565c0}.status-ok{color:var(--ok);font-weight:800}.status-bad{color:var(--danger);font-weight:800}.table-wrap{width:100%;overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff;position:relative}.table-wrap.has-overflow:after{content:"";position:absolute;top:0;right:0;width:18px;height:100%;pointer-events:none;background:linear-gradient(to left,#fff,#fff0)}.table-wrap.has-overflow:before{content:"";position:absolute;top:0;left:0;width:18px;height:100%;pointer-events:none;background:linear-gradient(to right,#fff,#fff0)}table{width:100%;border-collapse:collapse;margin-top:0;min-width:600px}th,td{border-bottom:1px solid var(--line);padding:8px 10px;font-size:13px;vertical-align:top}th{color:var(--muted);text-align:left;font-weight:800;background:#fcfcfd;position:sticky;top:0;z-index:1}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--text)}tr:hover td{background:#fafcff}input[type=checkbox]{accent-color:var(--blue);width:16px;height:16px;cursor:pointer}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9997;background:#0f172a59;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:14px}.modal-card{width:100%;max-width:720px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow2);padding:16px;max-height:86vh;overflow:auto}.modal-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.modal-title h3{margin:0;font-size:14px}.modal-title .desc{margin:6px 0 0;color:var(--muted);font-size:12px}.toast-area{position:fixed;right:16px;bottom:16px;z-index:9999;display:flex;flex-direction:column;gap:10px;max-width:360px}.toast-item{display:flex;gap:10px;align-items:flex-start;background:#fffffffa;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow2);padding:10px 12px;animation:slideInRight .25s ease}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-dot{width:10px;height:10px;border-radius:999px;margin-top:4px;background:#98a2b3;flex-shrink:0}.toast-dot.ok{background:var(--ok)}.toast-dot.bad{background:var(--danger)}.toast-dot.info{background:var(--blue)}.toast-title{font-size:13px;font-weight:800;margin:0}.toast-msg{font-size:12px;color:var(--muted);margin:2px 0 0;line-height:1.35;word-break:break-word}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a2e;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:9998}.loading-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow2);padding:14px 16px;display:flex;gap:12px;align-items:center}.spinner{width:18px;height:18px;border-radius:999px;border:2px solid #dbe4ff;border-top-color:var(--blue);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#1e3c72,#2a5298)}.login-card{width:400px;padding:36px;background:#fff;border-radius:16px;box-shadow:0 20px 60px #00000040}.login-card h1{text-align:center;font-size:20px;color:#1e3c72;margin-bottom:6px}.login-card .subtitle{text-align:center;color:var(--muted);font-size:13px;margin-bottom:28px}.stat-grid{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}.stat-card{flex:1;min-width:150px;display:flex;align-items:center;gap:14px;padding:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;color:#fff}.stat-label{font-size:12px;color:var(--muted)}.stat-value{font-size:22px;font-weight:700}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}.segment-row{display:flex;gap:8px;align-items:center;margin-bottom:6px;flex-wrap:wrap}.segment-row input[type=text]{width:100px}.segment-row input[type=number]{width:120px}.container-item{display:flex;align-items:center;background:#fff;margin:0 0 6px;border-radius:8px;padding:10px 12px;border-left:4px solid #1989fa;gap:10px}.container-item.outermost{border-left-color:#ff976a;background:#fff7f0}.container-item.is-empty{border-left-style:dashed;border-left-color:#c8c9cc;background:#fafafa}.container-item.is-pending{border-left-color:#ffc53d;background:#fffbe8}.container-item.is-locked{border-left-color:#ee0a24;background:#fff0f0}.container-item .ci-seq{display:flex;flex-direction:column;align-items:center;min-width:36px}.container-item .ci-seq-num{font-size:18px;font-weight:700;color:#1989fa}.container-item .ci-seq-label{font-size:10px;color:#999}.container-item .ci-body{flex:1;min-width:0}.container-item .ci-no{font-size:15px;font-weight:600}.container-item .ci-meta{display:flex;gap:8px;align-items:center;margin-top:2px}.container-item .ci-time{font-size:11px;color:#999}.ci-actions{display:flex;flex-direction:column;gap:4px;align-items:center}.empty-state{padding:40px 0;text-align:center;color:var(--muted)}.plate-dropdown{position:absolute;top:100%;left:0;right:auto;min-width:180px;background:#fff;border:1px solid #d0d5dd;border-radius:10px;box-shadow:0 12px 32px #141a2626;max-height:220px;overflow:auto;z-index:200;margin-top:4px}.plate-item{padding:10px 14px;font-size:14px;cursor:pointer;border-bottom:1px solid #f0f1f3;line-height:1.4;transition:background .12s;display:flex;align-items:center;gap:8px}.plate-item:last-child{border-bottom:none}.plate-item:hover{background:#eef3ff}.plate-item:active{background:#dde8ff}.menu-btn{display:none}@media (max-width: 960px){.layout{grid-template-columns:1fr}.sidebar{position:fixed;left:-260px;top:0;bottom:0;width:260px;z-index:100;transition:left .25s ease;box-shadow:none}.sidebar.open{left:0;box-shadow:4px 0 20px #00000026}.sidebar-backdrop.show{display:block}.main{width:100%}.menu-btn{display:flex;flex-direction:column;gap:4px;width:28px;height:24px;background:none;border:none;cursor:pointer;padding:2px;justify-content:center}.menu-btn span{display:block;width:100%;height:2px;background:var(--text);border-radius:1px;transition:all .2s}.topbar{padding:8px 12px}.topbar .top-right span{display:none}.top-right{gap:6px}.page-title{flex-direction:column;align-items:flex-start;gap:8px}.page-title h2{font-size:16px}.card{padding:12px}.row{flex-direction:column;gap:6px}.field{max-width:100%!important}.field label{font-size:11px}.field input,.field select{font-size:16px;padding:8px 10px}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.stat-card{padding:12px;min-width:auto}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{min-width:600px;font-size:12px}table th,table td{padding:6px 8px;white-space:nowrap}td .btn{font-size:11px;padding:3px 8px}.actions{flex-direction:column;align-items:stretch;gap:8px}.actions>div{justify-content:center;flex-wrap:wrap}.modal-card{width:94vw;max-width:94vw!important;margin:10px;padding:14px}.modal-title h3{font-size:15px}.btn{font-size:13px;padding:6px 14px}.btn.xs{font-size:11px;padding:3px 8px}.btn.small{font-size:12px;padding:4px 10px}.brand h1{font-size:14px}.profile{padding:8px}.item{font-size:13px;padding:8px 10px}.hint{font-size:11px}}
