:root{--bg:#f6f7f9;--card:#fff;--ink:#1d2433;--muted:#5b6475;--line:#dde1e8;--brand:#1f5fbf;--brand-ink:#fff;--warn:#a15c00;--warn-bg:#fff4e0;--bad:#b42318;--bad-bg:#fde8e7;--ok:#05603a;--ok-bg:#e3f6ec}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--brand)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #f5b400;outline-offset:2px}.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:#fff;padding:6px;z-index:10}header.top{background:#16213a;color:#fff;display:flex;align-items:center;gap:18px;padding:10px 20px;flex-wrap:wrap}header.top a{color:#dfe7ff;text-decoration:none;font-weight:500}header.top a:hover{color:#fff;text-decoration:underline}header.top .brand{font-weight:800;font-size:18px;color:#fff;margin-right:8px}header.top .who{margin-left:auto;font-size:13px;color:#b8c3dc}main{max-width:1280px;margin:0 auto;padding:20px}h1{font-size:22px;margin:0 0 14px}h2{font-size:17px;margin:18px 0 10px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:16px}.grid{display:grid;grid-gap:16px;gap:16px}.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}table{width:100%;border-collapse:collapse;background:#fff}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}label{display:block;font-size:13px;font-weight:600;margin:8px 0 4px}input,select,textarea{width:100%;padding:8px;border:1px solid #b9c0cc;border-radius:6px;font:inherit;background:#fff}textarea{min-height:90px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row>*{flex:0 0 auto}.btn{display:inline-block;background:var(--brand);color:var(--brand-ink);border:0;border-radius:6px;padding:8px 14px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none}.btn.secondary{background:#e8edf6;color:var(--ink)}.btn.danger{background:var(--bad)}.btn.small{padding:4px 10px;font-size:13px}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:#e8edf6;color:#243b6b;white-space:nowrap}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.ok{background:var(--ok-bg);color:var(--ok)}.muted{color:var(--muted)}.small{font-size:13px}.notice{background:var(--warn-bg);color:#5a3500}.error,.notice{padding:10px 12px;border-radius:8px;margin-bottom:12px}.error{background:var(--bad-bg);color:var(--bad)}.board{display:grid;grid-template-columns:repeat(7,minmax(180px,1fr));grid-gap:10px;gap:10px;overflow-x:auto}.col{background:#eceff4;border-radius:10px;padding:8px;min-height:120px}.col h3{font-size:13px;margin:4px 4px 8px;color:var(--muted);text-transform:uppercase}.jobcard{display:block;background:#fff;border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:8px;padding:8px;margin-bottom:8px;color:inherit;text-decoration:none;font-size:13px}.jobcard.EMERGENCY{border-left-color:var(--bad)}.jobcard.HIGH{border-left-color:#e07a00}.jobcard.LOW{border-left-color:#8a94a6}.jobcard strong{display:block;font-size:14px}.cal{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:8px;gap:8px}.cal .day{background:#fff;border:1px solid var(--line);border-radius:8px;min-height:160px;padding:6px}.cal .day.today{border-color:var(--brand);box-shadow:0 0 0 2px #cfe0ff}.cal .day h4{margin:0 0 6px;font-size:13px}.thumbs{display:flex;gap:10px;flex-wrap:wrap}.thumbs figure{margin:0;width:150px;font-size:12px}.thumbs img{width:150px;height:110px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}pre.raw{white-space:pre-wrap;background:#f1f3f7;padding:10px;border-radius:8px;font-size:12px;max-height:420px;overflow:auto}.kv{display:grid;grid-template-columns:150px 1fr;grid-gap:4px 12px;gap:4px 12px}.kv dt{color:var(--muted);font-size:13px}.kv dd{margin:0}.conf{font-weight:700}.conf.lo{color:var(--bad)}.conf.mid{color:var(--warn)}.conf.hi{color:var(--ok)}@media (max-width:700px){.kv{grid-template-columns:1fr}.board{grid-template-columns:repeat(7,80vw)}}