:root{--ol:#556B2F;--ol-dk:#3F4F22;--ol-t:#eef2e6;--ol-t2:#dfe7cf;--bg:#e9ece4;--ink:#1d2214;--mut:#5d6650;--red:#b3261e;--grn:#2e7d32;--amb:#b26a00;--hh:0px;--cw:8.5em}
*{box-sizing:border-box}
html{font-size:clamp(15px,1.02vw,48px);scroll-behavior:auto}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Segoe UI",Roboto,Helvetica,Arial,sans-serif;text-transform:uppercase;line-height:1.25}
header{position:sticky;top:0;left:0;z-index:40;background:var(--ol-dk);color:#fff;box-shadow:0 .15em .5em rgba(0,0,0,.3)}
.row1{display:flex;align-items:center;gap:1.2em;padding:.45em 1em}
.logo{height:2.6em;background:#fff;border-radius:.3em;padding:.2em .5em}
.ttl .t1{font-size:1.5em;font-weight:800;letter-spacing:.04em}
.ttl .t2{font-size:1.05em;opacity:.9;font-weight:600}
.wk{display:flex;gap:.5em;margin-left:auto}
button{font:inherit;text-transform:uppercase;cursor:pointer}
.wk button,.row2 button{background:var(--ol);color:#fff;border:.08em solid rgba(255,255,255,.35);border-radius:.35em;padding:.4em .9em;font-weight:700;font-size:1em}
.wk button:hover,.row2 button:hover{background:#6b8640}
.wk button.on{background:#fff;color:var(--ol-dk)}
.upd{text-align:right;font-size:.9em;font-weight:600;min-width:12em}
.upd .stale{color:#ffcf66}
.row2{display:flex;flex-wrap:wrap;align-items:center;gap:.4em;padding:.35em 1em .5em;border-top:.06em solid rgba(255,255,255,.15)}
.row2 .lbl{font-size:.8em;opacity:.75;font-weight:700;margin:0 .2em 0 .6em}
.row2 .lbl:first-child{margin-left:0}
.row2 button{font-size:.9em;padding:.3em .75em}
.row2 button.today{background:#f0b429;color:#2a2000;border-color:#f0b429}
.row2 button.act{outline:.15em solid #fff}
main{padding:0 0 3em}
.msg{padding:3em;font-size:1.6em;color:var(--mut);text-align:center}
.grid{display:grid;width:100%}
.dh{position:sticky;top:var(--hh);z-index:20;background:var(--ol);color:#fff;padding:.45em .7em;font-weight:800;font-size:1.25em;border-left:.06em solid rgba(255,255,255,.25);display:flex;align-items:baseline;gap:.5em;flex-wrap:wrap}
.dh .sub{font-size:.6em;font-weight:700;opacity:.85}
.dh.today{background:#f0b429;color:#2a2000}
.dh.past{background:#6f7b5c}
.corner{position:sticky;top:var(--hh);left:0;z-index:30;background:var(--ol-dk);color:#fff;font-weight:800;padding:.5em .7em;font-size:1em;display:flex;align-items:center}
.cl{position:sticky;left:0;z-index:10;background:var(--ol-t2);border-top:.12em solid var(--ol);padding:.6em .7em;font-weight:800}
.cl .cn{font-size:1.5em;color:var(--ol-dk)}
.cl .nm{font-size:.95em;margin-top:.2em;color:var(--ink)}
.cl.to{background:#f6e2df}
.cl.to .cn{color:var(--red);font-size:1.2em}
.cell{border-top:.12em solid var(--ol);border-left:.06em solid #c9cfbd;padding:.45em;background:#f7f8f4;min-height:4em;display:flex;flex-direction:column;gap:.45em}
.cell.today{background:#fff8e1;box-shadow:inset .25em 0 0 #f0b429,inset -.25em 0 0 #f0b429}
.cell.past{background:#eef0ea}
.cell.to{background:#fbf0ee}
.cell.today.to{background:#fff1e6}
.empty{color:#9aa38c;font-weight:700;font-size:.95em;padding:.2em}
.off{background:#fde8e6;border:.08em solid #e5a29b;color:var(--red);border-radius:.35em;padding:.35em .5em;font-weight:800;font-size:.95em}
.off .r{font-weight:600;color:#7a2a24}
.crewoff{background:var(--red);color:#fff;border-radius:.35em;padding:.35em .5em;font-weight:800}
.who{font-size:.85em;font-weight:800;color:var(--ol-dk);background:var(--ol-t);border-radius:.3em;padding:.2em .45em}
.info{font-size:.85em;font-weight:600;color:#4b3b00;background:#fff3c4;border-radius:.3em;padding:.25em .45em}
.job{background:#fff;border:.06em solid #cfd5c3;border-left:.4em solid var(--ol);border-radius:.4em;padding:.45em .6em;box-shadow:0 .05em .15em rgba(0,0,0,.08)}
.job .top{display:flex;align-items:baseline;gap:.5em;flex-wrap:wrap}
.job .tm{font-size:1.2em;font-weight:800}
.job .wo{font-weight:800;color:var(--mut);font-size:.95em}
.tags{display:flex;gap:.3em;flex-wrap:wrap;margin:.25em 0}
.tag{font-size:.75em;font-weight:800;border-radius:.3em;padding:.12em .4em;background:#e3e7da;color:#3a4229}
.tag.cf{background:var(--grn);color:#fff}
.tag.nr{background:var(--red);color:#fff}
.tag.hold{background:#6a1b9a;color:#fff}
.tag.arch{background:#37474f;color:#fff}
.tag.cust{background:#795548;color:#fff}
.tag.done{background:#1b5e20;color:#fff}
.tag.nd{background:#fff;color:var(--red);border:.1em solid var(--red)}
.tag.part{background:#ffe0a3;color:#5a3a00}
.tag.left{background:#9e9e9e;color:#fff}
.job .cu{font-size:1.15em;font-weight:800;margin-top:.1em}
.job .jn{font-weight:700;color:#333}
.job .ad{color:#333;font-size:.95em}
.job .bp{font-weight:800;color:var(--ol-dk);margin-top:.2em}
.job .mh{font-size:.9em;font-weight:700;color:var(--mut);margin-top:.15em;display:flex;gap:.6em;flex-wrap:wrap;align-items:center}
.ms{border-radius:.3em;padding:.08em .4em;color:#fff;font-weight:800}
.job .nt{white-space:pre-line;font-size:.9em;margin-top:.3em;padding-top:.3em;border-top:.06em dashed #cfd5c3;color:#222;overflow-wrap:anywhere}
.flash{animation:fl 1.6s ease-out}
@keyframes fl{0%{box-shadow:inset 0 0 0 .3em #f0b429}100%{box-shadow:inset 0 0 0 0 transparent}}
.info.cmb{background:#e3ecf7;color:#1f3b5a}
