@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#fff;--fg:#1a1a1a;--muted:#6b7280;--border:#d8dbe0;--accent:#2563eb;--ok:#16a34a;--pend:#d97706;--err:#dc2626;--panel:#f7f8fa}*{box-sizing:border-box}body{color:var(--fg);background:var(--bg);margin:0;font-family:IBM Plex Sans Variable,system-ui,sans-serif}.app{min-height:100vh}.topbar{border-bottom:1px solid var(--border);align-items:center;padding:10px 18px;display:flex}.topbar-nav{margin-left:auto}.topbar-nav a{color:var(--accent);font-weight:600;text-decoration:none}.brand{align-items:center;gap:8px;font-weight:600;display:flex}.brand-mark{font-size:20px}.wordmark-accent{color:var(--accent)}main{max-width:960px;margin:0 auto;padding:18px}.page{padding:8px}.muted{color:var(--muted)}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:#fff;border-radius:6px;padding:5px 10px}button.primary,button.submit{background:var(--accent);color:#fff;border-color:var(--accent)}button:disabled{opacity:.5;cursor:not-allowed}input,select{font:inherit;border:1px solid var(--border);background:#fff;border-radius:6px;padding:5px 7px}table{border-collapse:collapse;width:100%}.tabnum{font-variant-numeric:tabular-nums}.error{color:var(--err);font-size:13px}.weekstrip{align-items:center;gap:8px;margin:6px 0 12px;display:flex}.weekstrip-days{flex:1;gap:6px;display:flex}.daychip{flex-direction:column;align-items:center;gap:2px;min-width:52px;padding:6px 4px;display:flex}.daychip.sel{background:var(--accent);color:#fff;border-color:var(--accent)}.daychip-dow{font-size:11px}.daychip-tot{font-size:13px;font-weight:600}.weekstrip-total{white-space:nowrap;margin-left:auto}button.ghost{background:0 0;border-color:#0000;font-size:18px}.period{border:1px solid var(--border);border-radius:8px;align-items:center;gap:7px;margin:8px 0;padding:8px 11px;display:flex}.dot{background:var(--muted);border-radius:50%;width:9px;height:9px;display:inline-block}.dot-none{background:var(--muted)}.dot-pending{background:var(--pend)}.dot-approved{background:var(--ok)}.dot-rejected{background:var(--err)}.backdrop{background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:#fff;border-radius:10px;min-width:360px;max-width:90vw;max-height:80vh;padding:16px;overflow:auto}.dialog th,.dialog td{text-align:left;border-bottom:1px solid var(--border);padding:4px 8px}.day h3{margin:8px 0}.entry-row{border:1px solid var(--border);border-radius:7px;align-items:center;gap:10px;margin:5px 0;padding:7px 9px;display:flex}.entry-main{flex:1}.entry-hrs{font-weight:600}.entry-actions{gap:6px;display:flex}.field-row{flex-wrap:wrap;align-items:center;gap:10px;margin:6px 0;display:flex}.field-row label{flex-direction:column;gap:3px;font-size:12px;display:flex}.field-row label.chk{flex-direction:row;align-items:center;gap:5px}.field-row label.grow{flex:1}.field-row label.grow input{width:100%}.editor{border:1px solid var(--border);background:var(--panel);border-radius:8px;margin:6px 0;padding:10px}
