:root{--fg:#1d2329;--muted:#66717c;--bg:#f4f5f7;--card:#fff;--line:#dde1e5;--accent:#0f5f8c;--danger:#b3261e;--ok:#1e7a3c;--warn:#9a6700}
*{box-sizing:border-box}
body{margin:0;font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--fg);background:var(--bg)}
.top{display:flex;gap:1rem;align-items:center;padding:.7rem 1rem;background:var(--card);border-bottom:1px solid var(--line)}
.top #who{margin-left:auto;color:var(--muted)}
main{max-width:1200px;margin:0 auto;padding:1rem}
.hidden{display:none!important}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:1rem}
.narrow{max-width:380px;margin:3rem auto}
.layout{display:grid;grid-template-columns:260px 1fr;gap:1rem;align-items:start}
@media(max-width:800px){.layout{grid-template-columns:1fr}}
.stack{display:grid;gap:1rem;min-width:0}
h1,h2,h3{margin:.2rem 0 .8rem}h2{font-size:1.15rem}h3{font-size:1rem;margin-top:1rem}
label{display:block;margin:.5rem 0;font-weight:600;font-size:.9rem}
input,textarea,select{display:block;width:100%;margin-top:.25rem;padding:.5rem;border:1px solid var(--line);border-radius:6px;font:inherit;font-weight:400}
textarea{resize:vertical}
button{font:inherit;padding:.5rem .9rem;border-radius:6px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer}
button.secondary{background:#fff;color:var(--accent)}
button.danger{background:#fff;color:var(--danger);border-color:var(--danger)}
button.small{padding:.25rem .6rem;font-size:.85rem}
button.link{background:none;border:0;color:var(--accent);padding:0}
button:disabled{opacity:.45;cursor:not-allowed}
.row{display:flex;gap:.5rem;align-items:center}.wrap{flex-wrap:wrap}.between{justify-content:space-between}.end{justify-content:flex-end}
.row input{margin:0}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:0 1rem}
.days{border:1px solid var(--line);border-radius:6px;display:flex;flex-wrap:wrap;gap:.8rem}
.days label{display:flex;gap:.3rem;align-items:center;margin:0;font-weight:400}.days input{width:auto;margin:0}
.list{list-style:none;padding:0;margin:.8rem 0 0}
.list li{padding:.5rem;border-radius:6px;cursor:pointer;border:1px solid transparent}
.list li:hover{background:var(--bg)}.list li.active{border-color:var(--accent);background:#eef5fa}
.list small{display:block;color:var(--muted)}
.muted,.hint{color:var(--muted)}.hint{font-size:.85rem}
.msg{min-height:1em;margin:.4rem 0}.msg.err{color:var(--danger)}.msg.ok{color:var(--ok)}
.badge{padding:.15rem .55rem;border-radius:99px;font-size:.8rem;background:var(--bg);border:1px solid var(--line);white-space:nowrap}
.st-accepted{color:var(--ok)}.st-failed{color:var(--danger)}.st-unclear{color:var(--warn)}.st-sending{color:var(--accent)}.st-blocked{color:#888;text-decoration:line-through}
.counts{display:flex;flex-wrap:wrap;gap:1rem;margin:.6rem 0;font-size:.9rem}
.banner{padding:.7rem 1rem;border-radius:8px;margin-bottom:1rem;border:1px solid}
.banner.warn{background:#fff8e5;border-color:#e8c766}.banner.err{background:#fdecea;border-color:#e6a19c}.banner.info{background:#eef5fa;border-color:#b5d3e6}
.preview{border:1px dashed var(--line);border-radius:6px;padding:.8rem;background:#fbfbfc}
.preview pre{white-space:pre-wrap;word-wrap:break-word;font:inherit;margin:.6rem 0 0}
.tablewrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.88rem}
th,td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid var(--line);vertical-align:top}
th[data-s]{cursor:pointer;user-select:none}th[data-s]:hover{color:var(--accent)}
td.err{color:var(--muted);max-width:340px}
dialog{border:1px solid var(--line);border-radius:8px;max-width:520px;width:calc(100% - 2rem)}
dialog dl{display:grid;grid-template-columns:auto 1fr;gap:.3rem 1rem}dialog dt{color:var(--muted)}dialog dd{margin:0}
.qr{display:flex;justify-content:center;margin:.5rem 0}.qr svg{width:220px;height:220px;background:#fff}code{word-break:break-all}
