:root{--bg:#f4f1ea;--card:#fffdf8;--ink:#1d2320;--mute:#6b736e;--line:#ddd7c8;--acc:#1f6f50;--acc2:#154d38;--bad:#b3261e;--ok:#1f6f50}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
header{display:flex;gap:1rem;align-items:center;padding:.8rem 1.2rem;border-bottom:1px solid var(--line);background:var(--card)}
header .brand{font-weight:700;letter-spacing:.04em;margin-right:auto}
header .brand span{color:var(--acc)}
header a{color:var(--ink);text-decoration:none}
header a:hover{color:var(--acc)}
main{max-width:980px;margin:1.5rem auto;padding:0 1rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:1.1rem 1.3rem;margin-bottom:1.1rem}
h1{font-size:1.4rem;margin:.2rem 0 1rem}
h2{font-size:1.05rem;margin:0 0 .6rem}
label{display:block;font-size:.85rem;color:var(--mute);margin:.7rem 0 .2rem}
input,select{width:100%;padding:.55rem .65rem;border:1px solid var(--line);border-radius:6px;font:inherit;background:#fff}
input:focus,select:focus{outline:2px solid var(--acc);border-color:transparent}
button{margin-top:.9rem;padding:.55rem 1rem;border:0;border-radius:6px;background:var(--acc);color:#fff;font:inherit;font-weight:600;cursor:pointer}
button:hover{background:var(--acc2)}
button.link{background:none;color:var(--ink);padding:0;margin:0;font-weight:400}
button.link:hover{color:var(--acc);background:none}
button.danger{background:var(--bad)}
button.small{margin:0;padding:.25rem .6rem;font-size:.85rem}
button.ghost{background:none;color:var(--ink);border:1px solid var(--line)}
table{width:100%;border-collapse:collapse}
td,th{text-align:left;padding:.45rem .3rem;border-bottom:1px solid var(--line);font-size:.93rem}
th{color:var(--mute);font-weight:600;font-size:.8rem}
.err{background:#fbe9e7;color:var(--bad);padding:.6rem .8rem;border-radius:6px;margin-bottom:1rem}
.okmsg{background:#e5f3ec;color:var(--ok);padding:.6rem .8rem;border-radius:6px;margin-bottom:1rem}
.mute{color:var(--mute);font-size:.9rem}
.row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:.6rem;align-items:end}
.row button{margin:0}
.inline{display:inline}
.tag{display:inline-block;padding:.05rem .5rem;border-radius:99px;font-size:.78rem;border:1px solid var(--line)}
.tag.good{color:var(--ok);border-color:var(--ok)}
.tag.bad{color:var(--bad);border-color:var(--bad)}
code,.mono{font-family:ui-monospace,Menlo,monospace;font-size:.85rem;word-break:break-all}
ol{padding-left:1.2rem}
@media(max-width:560px){.row{grid-template-columns:1fr}}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.4rem}
.cal h3{font-size:.8rem;color:var(--mute);margin:0 0 .3rem;text-align:center}
.slot{display:block;width:100%;margin:0 0 .3rem;padding:.3rem .35rem;background:#fff;color:var(--ink);border:1px solid var(--line);font-size:.74rem;font-weight:400;text-align:left;line-height:1.25}
.slot:hover{border-color:var(--acc);background:#f1f8f4}
.slot .t{display:block;font-weight:700}
.slot.on{background:var(--acc);color:#fff;border-color:var(--acc)}
.slot.on.paused{opacity:.55}
@media(max-width:700px){.cal{grid-template-columns:1fr}.slot .t{display:inline}}
