:root{--bg:#f4f5f7;--panel:#fff;--ink:#1d2733;--muted:#5c6b7a;--line:#d8dde3;--soft:#eef1f4;--accent:#0f766e;--accent-soft:#e3f3f0;--warn:#b5541c;--ok:#15803d;--chrome:#0a0c11;--chrome-ink:#f2f4f8;--today:#fff6d6;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1218;--panel:#161a22;--ink:#e8ecf2;--muted:#98a2b3;--line:#2a3140;--soft:#1d222c;--accent:#2dd4bf;--accent-soft:#163a37;--warn:#f0a070;--ok:#4ade80;--chrome:#0a0c11;--chrome-ink:#f2f4f8;--today:#2b2a1c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0f1218;--panel:#161a22;--ink:#e8ecf2;--muted:#98a2b3;--line:#2a3140;--soft:#1d222c;--accent:#2dd4bf;--accent-soft:#163a37;--warn:#f0a070;--ok:#4ade80;--chrome:#0a0c11;--chrome-ink:#f2f4f8;--today:#2b2a1c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--ink);background:var(--bg);margin:0;font-family:Inter,Segoe UI,system-ui,sans-serif;font-size:14px}button,input,select{font:inherit;color:inherit}button{background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:6px 11px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}:root[data-theme=dark] button.primary,:root:not([data-theme=light]) button.primary{color:#06131a}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) button.primary{color:#fff}}button.lnk{color:var(--accent);background:0 0;border:0;padding:2px 6px}button.chip{border-radius:99px;padding:2px 9px;font-size:12px}button.x{background:0 0;border:0;font-size:16px}input,select{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 9px}input:focus,select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2dd4bf33}.tc{flex-direction:column;min-height:100%;display:flex}header{padding:8px 16px;padding-top:calc(8px + env(safe-area-inset-top,0px));background:var(--chrome);color:var(--chrome-ink);flex-wrap:wrap;align-items:center;gap:18px;display:flex}header .brand{align-items:center;gap:8px;font-size:15px;font-weight:500;display:flex}header .brand b{font-weight:700}header .mark{color:#2dd4bf}header nav{gap:4px;display:flex}header nav button{color:var(--chrome-ink);background:0 0;border-color:#0000;border-radius:999px}header nav button.on{background:#ffffff1f}header nav button:hover{border-color:#ffffff4d}header .who{align-items:center;gap:8px;margin-left:auto;font-size:13px;display:flex}header .who button{color:var(--chrome-ink);background:0 0;border-color:#ffffff59}header .who button.primary{color:#06131a;background:#2dd4bf;border-color:#2dd4bf}header .who select{color:var(--chrome-ink);background:#ffffff14;border-color:#ffffff4d}header .org{color:#98a2b3}header .org.demo{color:#ffb547}header .theme{font-size:12px}main{flex:1;width:100%;max-width:1400px;margin:0 auto;padding:16px}footer{padding:5px 16px;padding-bottom:calc(5px + env(safe-area-inset-bottom,0px));color:var(--muted);background:var(--panel);border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:12px;display:flex}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.weekbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.weekbar .nav{align-items:center;gap:8px;display:flex}.weekbar .nav b{text-align:center;min-width:190px;font-size:16px}.weekbar .st{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.why{color:var(--warn);font-size:13px}.dirty{color:var(--warn);font-size:12px}.badge{background:var(--soft);border-radius:99px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-block}.badge.submitted{color:#1d4ed8;background:#dbeafe}.badge.approved{color:#166534;background:#dcfce7}.badge.rejected{color:#b91c1c;background:#fee2e2}:root[data-theme=dark] .badge.submitted,:root:not([data-theme=light]) .badge.submitted{color:#93c5fd;background:#1e3a5f}:root[data-theme=dark] .badge.approved,:root:not([data-theme=light]) .badge.approved{color:#86efac;background:#14532d}:root[data-theme=dark] .badge.rejected,:root:not([data-theme=light]) .badge.rejected{color:#fca5a5;background:#5f1d1d}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) .badge.submitted{color:#1d4ed8;background:#dbeafe}:root:not([data-theme=dark]) .badge.approved{color:#166534;background:#dcfce7}:root:not([data-theme=dark]) .badge.rejected{color:#b91c1c;background:#fee2e2}}.gridwrap,.tablewrap{overflow-x:auto}table.grid{border-collapse:collapse;width:100%;min-width:900px}table.grid th,table.grid td{border-top:1px solid var(--line);text-align:center;vertical-align:top;padding:5px 4px}table.grid th{color:var(--muted);font-size:12px;font-weight:600}table.grid th.act,table.grid td.act{text-align:left;width:26%;min-width:220px}table.grid td.act .code{color:var(--muted);margin-left:4px;font-size:12px}table.grid td.act .nm{font-size:13px}table.grid td.act .rnote{width:100%;margin-top:4px;padding:3px 6px;font-size:12px}table.grid td.cell input{text-align:center;width:58px;margin:0 auto 3px;padding:5px 4px;display:block}table.grid td.cell input.ot{opacity:.8;padding:2px 4px;font-size:11px}table.grid td.cell input::placeholder{color:var(--muted);opacity:.6}table.grid .today{background:var(--today)}table.grid th.today{color:var(--ink)}table.grid td.tot,table.grid th.tot{min-width:70px}table.grid td small{color:var(--muted);font-size:11px;display:block}table.grid tfoot td{border-top:2px solid var(--line);font-weight:600}table.grid td.x{width:30px}.actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.actions .note{flex:1;min-width:220px}.hint{color:var(--muted);font-size:13px}.pad{padding:14px 6px}.err{color:var(--warn);margin:0;font-size:13px}.quote{color:var(--muted);margin:0 0 8px;font-style:italic}table.list{border-collapse:collapse;width:100%}table.list th,table.list td{border-top:1px solid var(--line);text-align:left;vertical-align:top;padding:7px 8px}table.list th{color:var(--muted);font-size:12px}table.list .n{text-align:right;font-variant-numeric:tabular-nums}table.list tr.off{opacity:.55}table.list.sheet td small{color:var(--muted);font-size:11px}table.list.sheet tfoot td{border-top:2px solid var(--line)}.form{grid-template-columns:1.4fr 1.4fr 1fr auto auto;gap:8px;margin:6px 0 16px;display:grid}@media (width<=820px){.form{grid-template-columns:1fr 1fr}}.obproj{margin-top:14px}.obproj h3{margin:0 0 6px;font-size:15px}.obproj h3 span{color:var(--muted);font-weight:400}.obproj h3 small{color:var(--muted);margin-left:8px;font-weight:400}.modal-back{z-index:10;background:#0a0c118c;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border-radius:10px;flex-direction:column;width:min(560px,100%);max-height:92vh;display:flex;box-shadow:0 20px 60px #00000059}.modal.wide{width:min(1000px,100%)}.modal>header{background:var(--accent-soft);color:var(--ink);border-radius:10px 10px 0 0;gap:10px;padding:10px 14px}.modal>header .x{margin-left:auto}.modal .body{flex-direction:column;gap:8px;padding:12px 14px;display:flex;overflow:auto}.modal .row2{flex-wrap:wrap;gap:8px;display:flex}.modal .row2 select{flex:1;min-width:200px}.modal .row2 input{flex:1;min-width:160px}.chk{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:flex}.acts{flex-direction:column;gap:2px;max-height:50vh;display:flex;overflow:auto}.actrow{text-align:left;background:0 0;border:0;border-radius:6px;grid-template-columns:70px 1fr auto 12px;align-items:center;gap:8px;padding:6px 8px;display:grid}.actrow:hover{background:var(--soft)}.actrow .code,.actrow .wbs{color:var(--muted);font-size:12px}.dot{background:var(--muted);border-radius:50%;width:8px;height:8px}.dot.in_progress{background:var(--accent)}.dot.completed{background:var(--ok);opacity:.6}@media (width<=640px){header{gap:10px}header nav button{padding:5px 9px;font-size:13px}main,.card{padding:8px}table.grid td.cell input{width:46px}}.gatebar{background:var(--accent-soft);border-bottom:1px solid var(--line);justify-content:center;align-items:center;gap:14px;padding:6px 12px;font-size:13px;display:flex}.gatebar b{color:var(--accent)}.gatebar .primary{padding:3px 12px}.dmark{vertical-align:middle;color:#fff;width:22px;height:22px;display:inline-block}header .brand .mark{align-items:center;display:inline-flex}.withprofile{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:14px;display:grid}.withprofile>*{min-width:0}@media (width<=1000px){.withprofile{grid-template-columns:1fr}}.profile{flex-direction:column;gap:10px;display:flex}.pcard{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.pcard h4{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);justify-content:space-between;margin:0 0 8px;font-size:12px;display:flex}.pcard h4 .hint{text-transform:none;letter-spacing:0}.pcard.who{align-items:center;gap:12px;display:flex}.avatar{color:#06131a;background:linear-gradient(135deg,#2dd4bf,#a78bfa);border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-weight:700;display:grid}.who .roles{gap:4px;margin-top:4px;display:flex}.stats{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.stats div{background:var(--soft);border-radius:8px;padding:7px 8px}.stats span{color:var(--muted);font-size:11px;display:block}.stats b{font-variant-numeric:tabular-nums;font-size:18px}.stats small{color:var(--muted);font-size:11px;display:block}.warn{color:var(--warn);margin:8px 0 0;font-size:12.5px}.plist{margin:0;padding:0;list-style:none}.plist li{border-top:1px solid var(--line);padding:6px 0;font-size:13px}.plist li:first-child{border-top:0;padding-top:0}.plist .meta{align-items:center;gap:6px;margin-top:3px;font-size:12px;display:flex}.chip{background:var(--soft);border-radius:99px;padding:1px 7px;font-size:11px}.bal{margin-bottom:10px}.bal .row{justify-content:space-between;font-size:13px;display:flex}.bar{background:var(--soft);border-radius:3px;height:6px;margin:4px 0 3px;overflow:hidden}.bar i{background:var(--accent);height:100%;display:block}.bar.sick i{background:#ffb547}.pcard .primary{width:100%;margin-top:2px}.offs{margin:8px 0 0;padding:0;font-size:12.5px;list-style:none}.offs li{border-top:1px solid var(--line);padding:5px 0}.offs.past{color:var(--muted)}.offform{flex-direction:column;gap:6px;margin-top:4px;display:flex}.offform .two{grid-template-columns:1fr 1fr;gap:6px;display:grid}.offform label{color:var(--muted);flex-direction:column;gap:2px;font-size:11px;display:flex}.offform input,.offform select{width:100%}.hist{margin:0;padding:0;list-style:none}.hist li{border-top:1px solid var(--line);grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:5px 0;font-size:13px;display:grid}.hist li:first-child{border-top:0}.hist li.cur{background:var(--today);border-radius:6px;margin:0 -6px;padding:5px 6px}.hist .lnk{text-align:left;padding:0}.hist .n{font-variant-numeric:tabular-nums}.hist .n small{color:var(--muted)}.hist .hint{grid-column:1/-1}.offact{align-items:center;gap:4px;display:flex}.offact input{width:120px}input.num{text-align:right;width:64px}.main-col{flex-direction:column;gap:14px;min-width:0;display:flex}.panels{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (width<=760px){.panels{grid-template-columns:1fr}}.chart{width:100%;height:120px;color:var(--ink);display:block}.legend{color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:4px;font-size:11px;display:flex}.legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:4px;display:inline-block}.legend span{align-items:center;display:inline-flex}.pbar{margin-bottom:8px}.pbar .row{justify-content:space-between;font-size:13px;display:flex}.pbar .row span{color:var(--muted)}.split{color:var(--muted);flex-wrap:wrap;gap:14px;margin-top:8px;font-size:12px;display:flex}.split b{color:var(--ink);margin-left:3px}.up{margin:0;padding:0;font-size:13px;list-style:none}.up li{border-top:1px solid var(--line);flex-wrap:wrap;align-items:baseline;gap:8px;padding:6px 0;display:flex}.up li:first-child{border-top:0;padding-top:0}.dot{border-radius:50%;flex:none;width:8px;height:8px;position:relative;top:-1px}.recent{flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;display:flex}.recent .chip{font-size:12px}
