:root{--text:#1f2430;--text-muted:#5b6472;--bg:#f4f6f9;--surface:#fff;--border:#d7dce3;--primary:#1a73e8;--primary-dark:#0f57b5;--danger:#d64545;--danger-bg:#fdeceb;--success:#1c8a4b;--success-bg:#e9f8ef;--warn-bg:#fff6e0;--radius:14px;--shadow:0 2px 10px #141e3214;color:var(--text);background:var(--bg);font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:18px}*{box-sizing:border-box}body{min-height:100vh;margin:0}h1,h2,h3{margin:0 0 12px;font-weight:700}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.2rem}p{margin:0 0 12px}button,.btn{border-radius:var(--radius);cursor:pointer;background:var(--primary);color:#fff;border:none;justify-content:center;align-items:center;gap:10px;min-height:56px;padding:12px 24px;font-size:1.05rem;font-weight:600;transition:background .15s,transform 50ms;display:inline-flex}button:hover,.btn:hover{background:var(--primary-dark);box-shadow:0 3px 10px #1a73e84d}button:active,.btn:active{transform:scale(.98)}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn-secondary{background:var(--surface);color:var(--text);border:2px solid var(--border)}.btn-secondary:hover{background:#eef1f5}.btn-danger{background:var(--danger)}.btn-danger:hover{background:#b13636}.btn-block{width:100%}.btn-lg{min-height:68px;font-size:1.25rem}label{margin-bottom:6px;font-size:1rem;font-weight:600;display:block}input,select,textarea{border-radius:var(--radius);border:2px solid var(--border);background:var(--surface);width:100%;min-height:56px;color:var(--text);padding:14px 16px;font-family:inherit;font-size:1.05rem}input:focus,select:focus,textarea:focus{outline:3px solid var(--primary);outline-offset:1px;border-color:var(--primary)}.field{margin-bottom:18px}.page{max-width:1000px;margin:0 auto;padding:24px 20px 60px}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);max-width:100%;margin-bottom:20px;padding:24px;overflow-x:auto}.topbar{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;display:flex}.topbar .brand{color:var(--primary);font-size:1.4rem;font-weight:800}.nav{flex-wrap:wrap;gap:10px;display:flex}.nav a,.nav .navlink{color:var(--text);border-radius:10px;align-items:center;min-height:44px;padding:10px 16px;font-weight:600;text-decoration:none;display:inline-flex}.nav a.active,.nav a:hover{background:var(--primary);color:#fff}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:14px 12px;font-size:1rem}th{color:var(--text-muted);font-weight:700}.badge{border-radius:999px;padding:4px 12px;font-size:.85rem;font-weight:700;display:inline-block}.badge-active{background:var(--success-bg);color:var(--success)}.badge-archived{background:var(--warn-bg);color:#8a6d1c}.error-box{background:var(--danger-bg);color:var(--danger);border-radius:var(--radius);margin-bottom:16px;padding:14px 18px;font-weight:600}.banner{border-radius:var(--radius);justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:14px 18px;font-weight:600;animation:.15s ease-out banner-in;display:flex}.banner-error{background:var(--danger-bg);color:var(--danger)}.banner-success{background:var(--success-bg);color:var(--success)}.banner-close{color:inherit;cursor:pointer;background:0 0;border:none;min-height:auto;padding:2px 8px;font-size:1.5rem;font-weight:700;line-height:1}.banner-close:hover{box-shadow:none;background:#00000014}@keyframes banner-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.spinner{border:3px solid #0000001f;border-top-color:var(--primary);vertical-align:middle;border-radius:50%;width:20px;height:20px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-row{color:var(--text-muted);align-items:center;gap:10px;display:flex}.row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.center-screen{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}@media (width<=640px){:root{font-size:17px}.page{padding:16px 14px 40px}}
