:root{--green-dark: #1B5E20;--green-forest: #2E7D32;--green-lime: #C6D92E;--bg: #F5F7F4;--border: #D5DDD2;--text: #1F2A1C;--muted: #5C6B58;--white: #fff;--danger: #B3261E;--radius: 6px;--font: "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px}button,input,select,textarea{font:inherit}a{color:var(--green-forest);text-decoration:none}.shell{display:flex;min-height:100%}.side{width:220px;background:var(--green-dark);color:#fff;padding:16px 12px;flex-shrink:0}.side h1{font-size:15px;margin:0 0 4px}.side p{margin:0 0 16px;font-size:11px;opacity:.75}.side a,.side button.nav{display:block;width:100%;text-align:left;color:#ffffffe6;padding:9px 10px;border-radius:var(--radius);border:none;background:transparent;cursor:pointer;margin-bottom:2px}.side a.active,.side a:hover,.side button.nav:hover{background:#c6d92e38}.main{flex:1;padding:20px;min-width:0}.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;flex-wrap:wrap;gap:10px}.top h2{margin:0;color:var(--green-dark);font-size:22px}.card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:0 1px 3px #1b5e200f}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:16px}.stat-title{font-size:12px;color:var(--muted);margin:0 0 4px}.stat-val{font-size:22px;font-weight:650;color:var(--green-dark);margin:0}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--radius);border:1px solid var(--border);background:#fff;cursor:pointer}.btn-primary{background:var(--green-dark);color:#fff;border-color:var(--green-dark)}.btn-danger{color:var(--danger);border-color:#e8b4b0;background:#fff5f4}.btn-sm{padding:5px 10px;font-size:12px}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;padding:10px;background:#e8f0e6;color:var(--green-dark)}td{padding:10px;border-bottom:1px solid var(--border)}.badge{display:inline-block;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:600;background:#e8f0e6;color:var(--green-dark)}.badge-danger{background:#fdecea;color:var(--danger)}.badge-warn{background:#fff8e1;color:#8a6d00}.badge-ok{background:#e6f4ea;color:#1b5e20}.auth{min-height:100%;display:grid;place-items:center;background:linear-gradient(160deg,#0f3d14,#1b5e20 50%,#2e7d32);padding:20px}.auth-card{background:#fff;border-radius:10px;padding:32px;width:min(400px,100%);text-align:center;box-shadow:0 16px 40px #0003}.auth-card img{width:96px;height:96px;border-radius:50%;object-fit:cover;margin-bottom:12px}.form-group{text-align:left;margin-bottom:12px}.form-group label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:4px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius)}.alert{padding:10px;border-radius:var(--radius);margin-bottom:12px;font-size:13px}.alert-error{background:#fdecea;color:var(--danger)}.alert-warn{background:#fff8e1;color:#7a5c00}.alert-info{background:#eef6ee;color:var(--green-dark)}.test-banner,.cloud-banner{display:inline-block;background:#c6d92e4d;color:#3d4a12;font-size:11px;font-weight:600;padding:3px 8px;border-radius:4px}.cloud-banner{background:#3884ff33;color:#0b3d91}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 900px){.grid-2{grid-template-columns:1fr}}code{font-size:12px;background:#eef2ee;padding:1px 5px;border-radius:3px}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:grid;place-items:center;padding:16px;z-index:50}.modal{background:#fff;border-radius:8px;width:min(560px,100%);max-height:90vh;overflow:auto}.modal-h{background:var(--green-dark);color:#fff;padding:12px 16px;display:flex;justify-content:space-between;align-items:center}.modal-b{padding:16px}.modal-f{padding:12px 16px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}.mono{font-family:ui-monospace,Consolas,monospace;font-size:12px}.muted{color:var(--muted)}.flex{display:flex;gap:8px;flex-wrap:wrap;align-items:center}@media (max-width: 800px){.shell{flex-direction:column}.side{width:100%}}
