:root{--barh:68px;--bg:#f3f4f6;--card:#fff;--ink:#1f2937;--mut:#6b7280;--pri:#4b5563;--pri2:#374151;--warn:#b7791f;--bad:#c0392b;--ok:#374151;--line:#e5e7eb;--r:14px}
*{box-sizing:border-box}body{margin:0;font-family:Heebo,system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:16px}
header{position:sticky;top:0;z-index:5;background:var(--pri2);color:#fff;padding:10px 14px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.brand{font-weight:800;font-size:1.15rem}nav{display:flex;gap:4px;flex-wrap:wrap}
nav a{color:#e5e7eb;text-decoration:none;padding:6px 10px;border-radius:999px;font-size:.92rem;position:relative}nav a.on{background:#ffffff26;color:#fff}
.badge{background:var(--bad);color:#fff;border-radius:999px;font-size:.72rem;padding:1px 6px;margin-inline-start:4px}
main{max-width:920px;margin:0 auto;padding:14px}
.card{background:var(--card);border-radius:var(--r);padding:14px;margin-bottom:12px;box-shadow:0 1px 3px #0000000f;border:1px solid var(--line)}
h2{margin:4px 0 12px;font-size:1.3rem}h3{margin:0 0 8px;font-size:1.08rem}
button,.btn{font-family:inherit;font-size:1rem;border:0;border-radius:10px;padding:10px 14px;background:var(--pri);color:#fff;cursor:pointer;font-weight:500}button:hover,.btn:hover{background:var(--pri2)}button.sec:hover,.btn.sec:hover{background:#d1d5db}button.bad:hover{background:#a93226}
button.sec{background:#e5e7eb;color:var(--ink)}button.bad{background:var(--bad)}button.sm{padding:5px 9px;font-size:.88rem}button.big{font-size:1.15rem;padding:13px 22px;font-weight:700}
input,select,textarea{font-family:inherit;font-size:1rem;padding:9px;border:1px solid #d1d5db;border-radius:9px;background:#fff;width:100%}
input,textarea{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default;touch-action:manipulation}
input[type=checkbox]{width:auto}label{display:block;font-size:.88rem;color:var(--mut);margin:6px 0 3px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row>*{flex:1 1 140px}.row>.nf{flex:0 1 auto;min-width:0;max-width:100%}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:6px 11px;border-radius:999px;background:#f3f4f6;border:1px solid var(--line);cursor:pointer;user-select:none;font-size:.92rem}
.chip.on{background:#fde8e6;border-color:#f3b4ad;color:#8a2a1f;text-decoration:line-through}
.tag{display:inline-block;font-size:.75rem;padding:1px 7px;border-radius:999px;background:#e5e7eb;color:var(--pri2);margin-inline-start:3px}
.tag.h3{background:#fde2e1;color:#9b2c2c}.tag.h2{background:#fef3c7;color:#92400e}
.task{border-inline-start:5px solid var(--pri)}.task.d3{border-color:var(--bad)}.task.d2{border-color:var(--warn)}
.slot{display:flex;gap:8px;align-items:center;margin:5px 0}.slot .role{flex:0 0 52px;font-size:.85rem;color:var(--mut)}
.slot.empty select{border-color:var(--bad);background:#fff3f2}.slot.hl select{outline:3px solid #f6ad55}
.warn{background:#fff8e6;border:1px solid #f6d58e;color:#7a4b00;border-radius:10px;padding:8px 12px;margin:4px 0;font-size:.92rem}
.err{background:#fdecea;border-color:#f5b5ae;color:#8a1f13}
table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{padding:7px 6px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
.tw{overflow-x:auto}.mut{color:var(--mut);font-size:.9rem}.me{background:#fff4d6;font-weight:700;border-radius:6px;padding:0 4px}
.st-pending{color:var(--warn)}.st-approved{color:var(--ok)}.st-declined{color:var(--bad)}
#toast{position:fixed;bottom:calc(var(--barh) + 12px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%) translateY(10px);max-width:calc(100% - 24px);text-align:center;background:#222;color:#fff;padding:10px 16px;border-radius:10px;opacity:0;visibility:hidden;transition:.3s;pointer-events:none;z-index:20}#toast.show{opacity:.95;visibility:visible;transform:translateX(-50%)}
body:not(:has(.sticky)) #toast{bottom:calc(18px + env(safe-area-inset-bottom))}
.grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.sticky{position:fixed;bottom:0;left:0;right:0;z-index:10;background:var(--bg);border-top:1px solid var(--line);box-shadow:0 -2px 8px #0000000f;padding:10px max(14px,calc((100% - 892px)/2));padding-bottom:calc(10px + env(safe-area-inset-bottom));display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-start}
main:has(.sticky){padding-bottom:calc(var(--barh) + 24px + env(safe-area-inset-bottom))}
.tmeta{display:flex;justify-content:space-between;gap:8px;font-weight:700;font-size:.95rem;margin-bottom:4px}.tmeta .vnum{direction:ltr;unicode-bidi:isolate;background:#f3f4f6;border-radius:6px;padding:0 6px}
details.sec-c>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px}details.sec-c>summary::-webkit-details-marker{display:none}
details.sec-c>summary::before{content:'◂';transition:.2s;color:var(--mut)}details.sec-c[open]>summary::before{transform:rotate(-90deg)}details.sec-c>summary h3{margin:0}details.sec-c[open]>summary{margin-bottom:10px}
@media(max-width:520px){main{padding:10px}.card{padding:12px}.grid2{grid-template-columns:1fr}
 .row>*{flex:1 1 45%}.row>.nf{flex:0 1 auto;min-width:0;max-width:100%}header{padding:8px 10px}nav a{padding:5px 8px;font-size:.85rem}
 .sticky{gap:6px}.sticky button{flex:1 1 auto;min-width:0;padding:10px 6px;font-size:.92rem}.sticky button.big{font-size:1rem}
 table{font-size:.85rem}th,td{padding:6px 4px}h2{font-size:1.15rem}code{word-break:break-all}}
.qt{display:inline-block;font-size:.72rem;padding:0 5px;border-radius:5px;background:#e8eefc;color:#2b4a8a;margin-inline-start:4px;font-weight:700}
.board{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}.bcell{border:1px solid var(--line);border-radius:10px;padding:6px;background:#fafafa}
.bh{font-weight:700;margin-bottom:4px}.bp{display:flex;align-items:center;gap:4px;font-size:.9rem;margin:3px 0}.bp .sub{flex:1;padding:3px 5px;font-size:.8rem;min-width:50px}
.bcell select{padding:5px;font-size:.88rem}button.x{background:none;color:var(--bad);padding:2px 6px}
.sumrow{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.92rem}.sumrow b{font-size:1.05rem}
.hlin{background:#fff59d}.hlt{background:#fff176;font-weight:700}ol.ins{margin:6px 0;padding-inline-start:22px}
/* print sheet – mimics the Word table */
.sheet{background:#fff;padding:10px;direction:rtl;font-size:12px;color:#000;min-width:900px}main:has(.sheet){max-width:none;overflow-x:auto}
.sheet .ttl{font-weight:800;font-size:17px;text-align:center}.sheet .dt{font-weight:700;text-align:center;margin-bottom:6px}
.sheet table{border-collapse:collapse;width:100%;font-size:12px}.sheet td,.sheet th{border:1px solid #2f3b52;padding:2px 5px;white-space:nowrap;text-align:right}
.sheet .grid>tbody>tr>td.colc{vertical-align:top;padding:0;border:2px solid #1d2a44}.sheet .gh{background:#b4c6e7;text-align:center;font-weight:800}
.sheet .tb{background:#d9e2f3;text-align:center}.sheet .hd td{background:#eef2f9;font-weight:700}.sheet .rl{background:#f3f6fb;font-weight:700;width:1%}
.sheet .vn{direction:ltr;text-align:center}.sheet .emp{background:#fbecec}.sheet .aux{margin-top:8px}.sheet .aux td.cl{vertical-align:top;height:22px}
.sheet .gar td{color:#a00}.sheet .bot{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px;align-items:start}
@media print{header,.noprint,#toast{display:none!important}body{background:#fff}main{padding:0;max-width:none}.sheet{min-width:0;padding:0}@page{size:A4 landscape;margin:8mm}}
/* multi-role editing: tap-friendly chips, task composition editor, inline person editor */
.rchips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.rchip{display:inline-flex;align-items:center;margin:0;cursor:pointer;color:var(--ink);font-size:.92rem}
.rchip input{position:absolute;opacity:0;width:1px;height:1px}.rchip span{padding:7px 12px;border-radius:999px;border:1px solid #d1d5db;background:#fff;user-select:none;min-height:36px;display:inline-flex;align-items:center}
.rchip input:checked+span{background:var(--pri);border-color:var(--pri);color:#fff}.rchip input:checked+span::before{content:'✓ '}.rchip input:focus-visible+span{outline:3px solid #f6ad55}
.plist{display:flex;flex-direction:column;gap:8px}.prow{border:1px solid var(--line);border-radius:10px;padding:8px;background:#fafafa}
.comp{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:4px 0}.comp .ci{display:inline-flex;gap:3px;align-items:center;background:#f3f4f6;border:1px solid var(--line);border-radius:9px;padding:3px}
.comp .ci input{width:56px;padding:6px}.comp .ci select{width:auto;padding:6px}.rolerow{border-bottom:1px solid var(--line);padding-bottom:6px}
.slot .pe{flex:0 0 auto;color:var(--pri);font-size:1rem}
.modal{position:fixed;inset:0;z-index:50;background:#0007;display:flex;align-items:center;justify-content:center;padding:12px}.mbox{width:100%;max-width:480px;max-height:90vh;overflow:auto;margin:0}
.cal{background:#e8f0fe;color:#1a56c4;border-radius:8px;padding:0 6px;font-size:.8rem;white-space:nowrap}
.air{border:2px solid #dc2626;background:#fef2f2}.air h3{color:#b91c1c}.air .chip{background:#fee2e2;border-color:#fca5a5;cursor:pointer}
.actv{background:#fff7ed;border-radius:8px;padding:2px 4px}
.ponly{display:none}@media print{.ponly{display:inline}h3.ponly{display:block}select.noprint{display:none!important}}
.sbx{border-top:1px dashed #d1d5db;margin-top:6px;padding-top:4px}
.dcomp{padding:4px 2px;border-bottom:1px solid #e5e7eb;font-size:.85rem}.dhl{outline:3px solid #f59e0b;background:#fffbeb}
.formula{background:#f3f4f6;border-radius:8px;padding:10px;line-height:1.9;font-size:14px;margin:8px 0}

.sheet.scr{min-width:0}@media screen{main:has(.sheet.scr):not(:has(.sheet:not(.scr))){max-width:920px}}
.ycal{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.mcal table{border-collapse:collapse;width:100%;font-size:11px;text-align:center}.mcal th{color:var(--mut);font-weight:600}.mcal td{padding:3px 0;border-radius:4px}
.mct{font-weight:700;text-align:center;font-size:13px}.cw{background:#fde68a}.ch{background:#fca5a5}.ca{outline:2px solid #b91c1c;font-weight:800}td[data-cj]{cursor:pointer}.mcal td.dhl{outline:3px solid #2563eb}
.clg{margin-top:6px;font-size:12px}.clg span{padding:1px 6px;border-radius:4px;margin-inline-end:4px}
.printcal .plist{columns:2;font-size:8px}.printcal .ycal.p12+.clg+.plist{columns:3;font-size:7px;margin-top:6px}.printcal .dcomp{break-inside:avoid;padding:1px 0}.printcal .ycal.p12{grid-template-columns:repeat(6,1fr)}.printcal .ycal.p3{grid-template-columns:repeat(3,1fr)}
@media print{.qpage{page-break-after:always}.qpage:last-child{page-break-after:auto}.printcal .mcal td{padding:1px 0}.cw,.ch{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.secsw{margin-bottom:8px}.secsw .chip.cur{background:var(--pri);color:#fff;border-color:var(--pri)}
.trn{border-inline-start:4px solid #7c3aed}.ptrn{border:1px solid #7c3aed;padding:3px 6px;margin:4px 0;font-size:12px}
.over{color:var(--bad);font-size:.85em}
.onlyprint{display:none}@media print{.onlyprint{display:block}}
table.pins td{padding:6px 8px}table.pins .pin{font-family:monospace;font-size:1.1rem;letter-spacing:.15em}
