:root { --bg:#f6f7f9; --fg:#1f2933; --muted:#667085; --line:#d9dde3; --accent:#2563eb; --bad:#b42318; --ok:#067647; }
* { box-sizing: border-box; }
body { margin:0; font:16px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; background:var(--bg); color:var(--fg); }
a { color:var(--accent); }
header.top { display:flex; flex-wrap:wrap; gap:.5rem 1rem; align-items:center; padding:.6rem 1rem; background:#fff; border-bottom:1px solid var(--line); }
header.top nav { display:flex; flex-wrap:wrap; gap:.25rem 1rem; align-items:center; flex:1; }
header.top a { text-decoration:none; }
.brand { font-weight:700; color:var(--fg); }
main { max-width:1000px; margin:1rem auto; padding:0 1rem; }
footer { max-width:1000px; margin:2rem auto; padding:0 1rem; color:var(--muted); font-size:.8rem; }
h1 { font-size:1.5rem; margin:.2rem 0 1rem; }
form.inline { display:inline; }
button, .btn { font:inherit; padding:.5rem 1rem; border:1px solid var(--accent); background:var(--accent); color:#fff; border-radius:.4rem; cursor:pointer; text-decoration:none; display:inline-block; }
.btn.small { padding:.15rem .7rem; }
.btn.secondary, button.secondary { background:#fff; color:var(--accent); }
.btn.danger, button.danger { background:#fff; color:var(--bad); border-color:var(--bad); }
button.link { background:none; border:none; color:var(--accent); padding:0; }
input, select, textarea { font:inherit; padding:.45rem; border:1px solid var(--line); border-radius:.35rem; width:100%; max-width:26rem; }
input[type=checkbox], input[type=radio] { width:auto; }
label { display:block; font-weight:600; margin:.8rem 0 .2rem; }
.helptext { color:var(--muted); font-size:.85rem; }
ul.errorlist { color:var(--bad); list-style:none; padding:0; margin:.2rem 0; }
.card { background:#fff; border:1px solid var(--line); border-radius:.6rem; padding:1rem; margin-bottom:1rem; }
.messages { list-style:none; padding:0; }
.messages li { padding:.6rem .8rem; border-radius:.4rem; background:#e8f1ff; margin-bottom:.4rem; }
.messages li.success { background:#e6f6ec; }
.messages li.error { background:#fde8e8; }
.msg-bad { color:var(--bad); } .msg-ok { color:var(--ok); }
.avail { margin:1rem 0; padding:.7rem .9rem; border-radius:.5rem; background:#fff; border:1px solid var(--line); }
.avail.free { border-color:var(--ok); } .avail.busy { border-color:var(--bad); }
table { border-collapse:collapse; width:100%; background:#fff; }
th, td { border:1px solid var(--line); padding:.4rem .6rem; text-align:left; vertical-align:top; }
td.num, th.num { text-align:right; }
tr.sub th, tr.hh th { background:#eef1f5; }
.chip { display:block; padding:.1rem .3rem; margin:2px 0; border-radius:.3rem; font-size:.78rem; text-decoration:none; color:#fff; background:var(--hh, #888); overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.cal { table-layout:fixed; }
.cal td { height:5.5rem; padding:.2rem; }
.cal td.other { background:#f1f2f4; color:var(--muted); }
.cal td.today { outline:2px solid var(--accent); outline-offset:-2px; }
.cal .d { font-size:.8rem; color:var(--muted); display:block; }
.cal a.add { float:right; text-decoration:none; font-size:.8rem; }
.cal-head { display:flex; gap:1rem; align-items:center; }
.cal-head h1 { margin:0; flex:1; }
.dot { display:inline-block; width:.7em; height:.7em; border-radius:50%; background:var(--hh,#888); }
.checks label { display:flex; gap:.5rem; align-items:center; font-weight:400; margin:.2rem 0; }
@media (max-width:640px) {
  .cal td { height:4rem; font-size:.7rem; } .chip { font-size:.65rem; }
  table.cal th { font-size:.7rem; padding:.2rem; }
}
.chip.tentative { background:repeating-linear-gradient(45deg, var(--hh,#888), var(--hh,#888) 6px, #fff 6px, #fff 8px); color:#1f2933; border:1px dashed var(--hh,#888); }
.chip.shared { border-left:4px solid #fff; box-shadow:inset 0 0 0 1px rgba(0,0,0,.25); }
