:root{--bg:#f0f3f7;--surface:#fff;--border:#e1e6ee;--border-strong:#c4cdd9;--ink:#19212f;--ink-2:#47536a;--ink-3:#7a8599;--brand:#2250a0;--brand-hover:#1b3f82;--brand-soft:#e8eef9;--ok:#1a7a4a;--ok-soft:#e2f4ea;--warn:#9b5500;--warn-soft:#fdf0dd;--danger:#b03025;--danger-soft:#fdecea;--radius:12px;--radius-sm:8px;--shadow:0 1px 3px #1018280f, 0 1px 2px #1018280a;--shadow-lg:0 8px 24px #1018281f;--font:"Barlow", system-ui, sans-serif;--font-display:"Barlow Condensed", "Barlow", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg);min-height:100vh;font-size:15px;line-height:1.45}h1,h2,h3,h4{font-weight:600}button{font:inherit;cursor:pointer}a{color:var(--brand);text-decoration:none}.btn{border-radius:var(--radius-sm);-webkit-tap-highlight-color:transparent;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:7px;min-height:44px;padding:10px 16px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover{background:var(--brand-hover)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--border-strong)}.btn-secondary:hover{background:#f5f7fa}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#942820}.btn-ghost{color:var(--brand);background:0 0}.btn-ghost:hover{background:var(--brand-soft)}.btn-sm{min-height:36px;padding:6px 12px;font-size:13px}.btn-lg{min-height:52px;padding:14px 22px;font-size:16px}.btn:disabled{opacity:.5;pointer-events:none}.input,.select{border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:100%;min-height:44px;font:inherit;color:var(--ink);background:var(--surface);padding:10px 12px}.input:focus,.select:focus{outline:2px solid var(--brand);outline-offset:-1px;border-color:var(--brand)}.input::placeholder{color:var(--ink-3)}label.field>span{color:var(--ink-2);margin-bottom:4px;font-size:12px;font-weight:600;display:block}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.badge{letter-spacing:.02em;border-radius:100px;align-items:center;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-neutral{color:var(--ink-2);background:#eaedf3}.badge-brand{background:var(--brand-soft);color:var(--brand)}.modal-overlay{z-index:1000;background:#10182873;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);flex-direction:column;width:100%;max-width:480px;max-height:85vh;display:flex;overflow:hidden}.modal-wide{max-width:720px}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-head h3{font-size:17px}.modal-x{color:var(--ink-3);background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:24px}.modal-x:hover{color:var(--ink);background:#eaedf3}.modal-body{padding:20px;overflow-y:auto}.appnav{background:var(--surface);border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch;align-items:center;gap:4px;min-height:56px;padding:0 16px;display:flex;overflow-x:auto}.appnav .brand{font-family:var(--font-display);color:var(--brand);white-space:nowrap;margin-right:16px;font-size:20px;font-weight:700}.appnav a{border-radius:var(--radius-sm);color:var(--ink-2);white-space:nowrap;align-items:center;gap:5px;padding:8px 12px;font-size:14px;font-weight:500;transition:background .12s,color .12s;display:flex}.appnav a:hover{color:var(--ink);background:#f0f3f7}.appnav a.active{background:var(--brand-soft);color:var(--brand)}.appnav .spacer{flex:1}.tbl-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:14px}table.data th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);border-bottom:2px solid var(--border);white-space:nowrap;background:var(--surface);padding:10px 12px;font-size:11px;font-weight:600;position:sticky;top:0}table.data td{border-bottom:1px solid var(--border);vertical-align:middle;padding:10px 12px}table.data tr:hover td{background:#f8f9fc}.card-row{border-bottom:1px solid var(--border);padding:14px 16px}.card-row:last-child{border-bottom:none}.card-row .meta{color:var(--ink-2);flex-wrap:wrap;gap:6px 14px;font-size:13px;display:flex}.card-row .meta span{align-items:center;gap:4px;display:inline-flex}.card-row .title{font-size:15px;font-weight:600}.filters{flex-wrap:wrap;align-items:flex-end;gap:10px;padding:14px 16px;display:flex}.filters>label{flex:1;min-width:140px}.filters>label>span{color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px;font-size:11px;font-weight:600;display:block}.search-wrap{position:relative}.search-wrap input{padding-left:38px}.search-wrap svg{color:var(--ink-3);position:absolute;top:50%;left:12px;transform:translateY(-50%)}.page{max-width:1400px;margin:0 auto;padding:0 16px 40px}.page-head{flex-wrap:wrap;align-items:center;gap:12px;padding:20px 0 14px;display:flex}.page-head h2{flex:1;font-size:22px}.stat-row{flex-wrap:wrap;gap:12px;padding:0 0 16px;display:flex}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex:1;min-width:140px;padding:14px 16px}.stat-card .num{font-family:var(--font-display);font-size:28px;font-weight:700;line-height:1.1}.stat-card .lbl{color:var(--ink-3);margin-top:2px;font-size:12px}.check-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 16px;display:flex}.check-row:last-child{border-bottom:none}.check-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--brand);flex-shrink:0}.check-row .info{flex:1;min-width:0}.check-row .info .main{font-size:14px;font-weight:500}.check-row .info .sub{color:var(--ink-3);margin-top:1px;font-size:12px}.loc-item{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 0;display:flex}.loc-item:last-child{border-bottom:none}.loc-item .name{flex:1;font-weight:500}.loc-item .actions{gap:6px;display:flex}.search-results{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);z-index:100;max-height:320px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.search-results .sr-item{cursor:pointer;border-bottom:1px solid var(--border);padding:10px 14px;font-size:14px}.search-results .sr-item:hover{background:var(--brand-soft)}.search-results .sr-item .sr-meta{color:var(--ink-3);margin-top:2px;font-size:12px}.login-wrap{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-box{width:100%;max-width:380px}.login-box h1{font-family:var(--font-display);color:var(--brand);text-align:center;margin-bottom:24px;font-size:28px}.login-box .card{padding:24px}.login-box .field{margin-bottom:14px}.login-box .btn{width:100%;margin-top:6px}.login-box .error{color:var(--danger);text-align:center;margin-top:8px;font-size:13px}@media print{.appnav,.btn,.filters,.search-wrap,.modal-overlay,.sr-item{display:none!important}body{background:#fff}.page{max-width:none;padding:0}table.data th,table.data td{border:1px solid #ccc;padding:6px 8px;font-size:11px}}@media (width<=768px){.filters>label{min-width:100%}.stat-card{min-width:100px}.page-head h2{font-size:19px}}
