:root{--bg:#f4f6f8;--card:#fff;--ink:#1c2430;--mute:#66707c;--line:#dde3ea;--brand:#0b5fa5;--ok:#1a7f37;--warn:#b54708;--danger:#b42318}
*{box-sizing:border-box}
body{margin:0;font:15px/1.45 system-ui,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg)}
.wrap{max-width:960px;margin:0 auto;padding:0 16px}
header{background:var(--brand);color:#fff}
header .wrap{display:flex;align-items:center;justify-content:space-between;height:56px}
.brand{color:#fff;font-weight:700;text-decoration:none;font-size:18px}
nav a,nav .prop{color:#fff;margin-left:18px;text-decoration:none}
nav .prop{opacity:.8}
nav button.link{color:#fff;margin-left:18px}
main{padding:20px 16px 40px}
h1{font-size:22px;margin:8px 0 16px}
h2{font-size:17px;margin:0 0 10px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:16px}
.narrow{max-width:420px;margin:40px auto}
label{display:block;margin:8px 0}
input[type=email],input[type=text],input:not([type]),textarea,input[type=time]{width:100%;max-width:420px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;font:inherit}
input[type=time]{width:auto;display:inline-block}
textarea{max-width:100%}
button{padding:8px 14px;border:1px solid var(--line);border-radius:6px;background:#fff;font:inherit;cursor:pointer;margin:4px 6px 4px 0}
button.primary{background:var(--brand);color:#fff;border-color:var(--brand)}
button.danger{background:var(--danger);color:#fff;border-color:var(--danger)}
button.link{background:none;border:none;padding:0;margin:0;text-decoration:underline;cursor:pointer;color:var(--brand)}
form.inline{display:inline}
.flash{background:#e8f1fb;border:1px solid #bcd6f1;padding:10px 12px;border-radius:6px;margin-bottom:12px}
.flash.err{background:#fdecea;border-color:#f5c2c0}
.status{font-size:16px}
.ok{color:var(--ok)}.warn{color:var(--warn)}
.tag{display:inline-block;background:#eef2f6;border-radius:12px;padding:2px 10px;font-size:13px;margin-left:8px}
.pill{display:inline-block;background:#eef2f6;border-radius:6px;padding:2px 8px;font-size:13px;margin:2px 4px 2px 0}
.muted{color:var(--mute);font-size:13px}
.row{margin:6px 0}
.chk{display:inline-block;margin-right:8px}
table{border-collapse:collapse;width:100%}
td,th{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
table.small{font-size:13px}
tr.open td{font-weight:600}
details summary{cursor:pointer;color:var(--brand);margin-top:8px}
footer{color:var(--mute);font-size:13px;padding:10px 16px 30px}
