:root{--bg:#f5f4f0;--ink:#1f2a24;--muted:#6b756f;--line:#e3e1da;--brand:#2f5d46;--brand-2:#e8f0eb;--bad:#b23b31;--bad-bg:#fbecea}
*{box-sizing:border-box}
body{margin:0;font-family:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink);font-size:14px}
main{max-width:1100px;margin:0 auto;padding:24px}
main.narrow{max-width:560px}
main.login{max-width:380px;padding-top:12vh}
h1{font-size:22px;margin:0 0 16px}
h1 span{color:var(--muted);font-weight:400}
h2{font-size:16px;margin:0 0 6px}
h3{font-size:14px;margin:18px 0 8px}
a{color:var(--brand)}
.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:18px}
label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);margin-bottom:10px}
input,select{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}
input:focus,select:focus{outline:2px solid var(--brand-2);border-color:var(--brand)}
.btn{font:inherit;border:1px solid var(--line);background:#fff;padding:8px 14px;border-radius:7px;cursor:pointer;color:var(--ink)}
.btn.pri{background:var(--brand);color:#fff;border-color:var(--brand)}
.msg{padding:10px 14px;border-radius:8px;margin-bottom:14px}
.msg.ok{background:var(--brand-2);color:#2f7d5b}
.msg.bad{background:var(--bad-bg);color:var(--bad)}
.small{font-size:12px;color:var(--muted)}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-size:12px;color:var(--muted)}
td input,td select{width:100%}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 14px;align-items:end}
.scroll{max-height:420px;overflow:auto}
