:root{--bg: #ffffff;--fg: #1a1a1a;--muted: #6b6b6b;--line: #e4e4e4;--panel: #fafafa;--accent: #2563eb;--accent-fg: #ffffff;--danger: #b91c1c;color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--bg: #16171a;--fg: #e9e9ea;--muted: #9a9ba0;--line: #2c2e33;--panel: #1c1e22;--accent: #4f83ff}}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--fg)}a{color:var(--accent)}.app{display:flex;min-height:100vh}.sidebar{width:224px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--line);padding:20px 0;display:flex;flex-direction:column}.brand{padding:0 20px 18px;font-weight:700;font-size:16px}.nav-item{display:block;padding:9px 20px;font-size:13px;color:var(--muted);text-decoration:none}a.nav-item:hover{color:var(--fg)}.nav-item.active{color:var(--fg);font-weight:600;border-left:3px solid var(--accent)}.main{flex-grow:1;min-width:0}.topbar{height:56px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px}.topbar .title{font-size:15px;font-weight:600}.content{padding:28px}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}.kpi{border:1px solid var(--line);border-radius:4px;padding:16px}.kpi .label{font-size:12px;color:var(--muted)}.kpi .value{font-size:28px;font-weight:700;margin-top:6px}.empty{border:1px dashed var(--line);border-radius:6px;padding:48px 24px;text-align:center;color:var(--muted)}.empty h2{color:var(--fg);margin:0 0 6px;font-size:16px}.btn{height:34px;padding:0 14px;border:1px solid var(--accent);background:var(--accent);color:var(--accent-fg);font-size:13px;font-weight:600;border-radius:3px;cursor:pointer}.btn.secondary{background:transparent;color:var(--fg);border-color:var(--line)}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:360px;border:1px solid var(--line);border-radius:8px;padding:28px}.login-card h1{font-size:18px;margin:0 0 4px}.login-card p{color:var(--muted);font-size:13px;margin:0 0 20px}.field{display:block;margin-bottom:14px}.field span{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}.field input{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:4px;background:var(--bg);color:var(--fg);font-size:13px}.error{color:var(--danger);font-size:12px;margin:8px 0 0}.muted{color:var(--muted);font-size:12px}.rowbar{display:flex;align-items:center;gap:12px}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.page-head h1{font-size:18px;margin:0}h2.section{font-size:14px;margin:28px 0 10px}.section{margin-top:20px}.plain{color:inherit;text-decoration:none;font-weight:600}.kpi-note{font-size:11px;color:var(--muted);margin-top:4px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.v-card{border:1px solid var(--line);border-radius:6px;overflow:hidden;text-decoration:none;color:inherit;display:block}.v-card:hover{border-color:var(--accent)}.v-photo{height:110px;width:100%;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;object-fit:cover}img.v-photo{display:block}.rowbar>.v-photo{width:200px;border:1px solid var(--line);border-radius:6px}.v-body{padding:12px;display:flex;flex-direction:column;gap:4px}.v-title{font-weight:600;font-size:13px}.form{max-width:760px}.form fieldset{border:1px solid var(--line);border-radius:6px;margin:0 0 18px;padding:14px 16px}.form legend{font-size:13px;font-weight:600;padding:0 6px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.field select,.inline-form select{padding:9px 11px;border:1px solid var(--line);border-radius:4px;background:var(--bg);color:var(--fg);font-size:13px}.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;border:1px solid var(--line);border-radius:6px;padding:16px}.info{font-size:13px;display:flex;flex-direction:column;gap:3px}.inline-form{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--line);border-radius:6px;padding:12px 14px;margin-top:18px}.inline-form input{padding:8px 10px;border:1px solid var(--line);border-radius:4px;background:var(--bg);color:var(--fg);font-size:13px}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}.table th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.btn.danger{background:transparent;color:var(--danger);border-color:var(--danger)}.chip{display:inline-block;padding:2px 8px;font-size:11px;font-weight:600;border-radius:2px;white-space:nowrap}.chip-overdue{background:#fee2e2;color:#b91c1c}.chip-due{background:#fef3c7;color:#b45309}.chip-due_soon{background:#f2f2f2;color:#525252}.chip-not_due{background:#dcfce7;color:#15803d}.chip-monitor,.chip-not_applicable{background:#f2f2f2;color:#777}.tag-safety{color:#b91c1c;font-size:11px;font-weight:600}.small{font-size:11px}.actions{white-space:nowrap}.link-btn{background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;padding:0 6px 0 0}.link-btn.danger{color:var(--danger)}.review-banner{border:1px solid #c7d2fe;background:#eef2ff;border-radius:6px;padding:12px 16px;margin:16px 0;display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:13px}@media (prefers-color-scheme: dark){.review-banner{background:#1e2740;border-color:#3b4a80}.chip-overdue{background:#43201f;color:#fca5a5}.chip-due{background:#40331a;color:#fcd34d}.chip-not_due{background:#1e3a2b;color:#86efac}}@media (max-width: 860px){.app{flex-direction:column}.sidebar{width:100%;flex-direction:row;flex-wrap:wrap;align-items:center;border-right:none;border-bottom:1px solid var(--line);padding:6px 10px;gap:2px}.sidebar .brand{display:none}.nav-item{padding:8px 10px;white-space:nowrap}.nav-item.active{border-left:none;border-bottom:2px solid var(--accent)}.topbar{padding:0 16px}.content{padding:16px}.page-head{flex-wrap:wrap;gap:10px}.kpis,.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid3{grid-template-columns:1fr}.review-banner{flex-direction:column;align-items:flex-start}.table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 560px){.kpis,.detail-grid,.card-grid{grid-template-columns:1fr}.login-card{width:100%}.rowbar{flex-wrap:wrap}.rowbar>.v-photo{width:100%}.btn,.btn.secondary{height:auto;min-height:34px}}
