@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAa0ABQAAAAADOwAAAZHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbbhwoP0hWQVJtP01WQVJGBmA/U1RBVIEcAGQvXBEICoMkgmcLFgAwhEwBNgIkAyYEIAWGXAdiDAcbOgtRlHLSRcD8TEzkdoghPRuspKefbVnJIM5yRfA8vZv9uTNJSCZY21Scrigr6qyJ/C3sE1OFKuVP3e+lxUTbYio1zb/kFdk2bufY2BlhWERRBrcDUBhB5GEpd2Cy+MDxqf9zLPX+XVsk5r+s50d6IpWLatqbdT6f2MAikiOKQocbjya2QT0DqPDX4R0jQBgAUAiCRhDA0EkvYeLk9X3I2bEWI8jBAihIANm+kUWQBgggWChcBBdFhXlAUgOCAgBA0AgKjUJ8HKvjddFCKSgAVklEBYAeEJgCQJH0qB3B+neDg4sAA4hAD0AVIEAA0IACJGeaUjMIIIhBUE/zNABjTQMBwEVRcwcYBUCObLERABAgjAA1M/ZSa9hSi4OlpsnZ2KBOVUsAZlRGl1W0NZ6gSwhQPIAFs7YFL0QS91vRQgdgx2VDAnIegKpQvwAJIoLgooBAGtCJcHizg0TDiz8vhPgIcVXaDJu37ZyDAIjFy4AAiC1JAA0olJwN6nFAACQk/zfQVUuA3t5ELKMT9hpBSRj+HBSggYCIAIEkUoC4PCIQIWHGA8+IStxf0PW15ntP22gc+Wo+BLyQAHECQiAVd+c3Ba8gZ4NOACBaLOhsbIMkAXEmuHsSAvkf4oJaAogH6nEQAzoBIEihUAwAA0AACAObAGcANYAAABaqgMmpWAhiiVyrvNyqFV8tMQ5Iyq6r9Lf7W82i8ILl2cv8zbfdJ5lnPzSnvt/XXPfRR/5pH3xA+u5uS0798EPJ3Fft33w36Wc+8E/7aIB/9fvvb1pE9erNXLB9mkw//cSg8Cnx03VGXDvZnRzKqV9Xkhn7eRHb3wVjHpg19nkZpX9bBU+vnHegrsuQcbW9Bi7oO33h+8SU0Tly/MbeYUuG1cftVz6oNxrW0qH1iezq446fkDFo/rgvTkqt7zmteFzncZ0uxXti09FFF2z+C7CODpjUudOE5NSeb3bv/mbPKcmOEzpWQ3VBgBAuj/AOY3qMm7UvgA8qo3+qvAUBBAX0wADQG4AG+jCKaSxkBe/zvcTG8jRpRZgqhCog4sd++cOo7J+/RdvaaMoc78Ri/PNPSclx6fDvG1Kt3qQFi1rq+5EaavTtt9TVvfvucYsA5wc4oESU+E1ikF9TkrOkIsIH5Fawx7SBNLnMcWlM3skBluCmQNs7GeyFvYVDamsqwhxx18n/+WdxzDgOLU1AqbUlb3m+KOT9+ONvY/7XlrdLS//5v7nN97XHj0VzJpJvz4spq0V7ioXDuv2YrSxtF/KZmvbWfKtorXSh8dfvgGu+ev/nFSaXM6jyuCE/f/EpmuP7Rqu8R98vP/+tXUdrOgKlZP9Q/s+fRF9+3CHZd4EugfPv158me9X7v/6aSMCxMJmIr//65bNXngl7+uiPP5oKx+y27D8trp+psUzMacpm80XlnYeMAct0LynxhNYgaP3dtn8/LBAi+ksr+7NvjjtJV+UXrz0uLXV1x08AZRN1S2A8EaVE5afk/dfGjz//+fdHn36Xdttz2d9/z+bawZ8/slNN1aYtq+ZPGzNuPGdwOsfYflwmHCkPgs5DcKizvdpS/3gEUMW9/lvQvWp1bGTW1fpngC/uSVYAfH3TeSusL8TtlHUD4KAAEHjahk4YpuffGwEBN/dUmpHqdHyJ3Ap8O3UlQ4gCNrMRwLBBKiskL6a+RoBi/9XGlgc8L4/CUejQxaiIyqmomdhktOhfgDbDfaNDb4+yKIPd6IgmzDa0CByijWFmL2dlSRKagTIWXeIU9HDphoZiJeBTjAefHMxDhVSRFUgVcOkW3EGMahYVMFjWHhMluB2wAcbHYqF1LpsDF9C6s+CI2fDgh4wSuFEyGadjXAmIk3CugIRibLIti9ZtC8S4VSqfikGqPaoI122XyRYLBmsOmdiiTpqK1OklUQzpMcZmQRQV4M4oJCMkfRQXK+qvjifUcQd1bRdetW/LWjacYxvcttnVjWg5h0q4xw6rZyejSpZVZ78LzC4uyDNRQ4bymHSTMyM+SZ7D75mg/7YTlmNz7W8T00h0VEiGKB+F7iWYZFvSTiA4LVxttm2ATt5EoUWLJbY4EnLGrfsvEROlHtzlKn3H9VUT5tU/2dt3/EBv7foYzV/W4upyj04woO/gh6Vwwt3WGQAA)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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.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}:root{--ink:#0f1f2e;--green:#16a871;--green-bright:#22c07f;--green-deep:#0b7a4f;--green-tint:#e6f6ee;--bg:#f4f8f6;--surface:#fff;--line:#dfe7e3;--text:#0f1f2e;--muted:#586673;--good:#0b7a4f;--good-bg:#e6f6ee;--warn:#8a5300;--warn-bg:#fdf1d8;--info:#1f5fa8;--info-bg:#e7f0fb;--danger:#b3261e;--danger-bg:#fbe9e7;--font-display:"Plus Jakarta Sans Variable", system-ui, sans-serif;--font-text:"Inter Variable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--radius:12px;--shadow:0 1px 2px #0f1f2e0d, 0 4px 14px #0f1f2e0d;font-family:var(--font-text);color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{min-height:100dvh;margin:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em}h1{margin:0;font-size:1.45rem;font-weight:800}h2{margin:0;font-size:1.05rem;font-weight:700}h3{margin:0;font-size:.95rem;font-weight:700}p{margin:0 0 .75rem;line-height:1.5}a{color:var(--green-deep)}button,input,select,textarea{font:inherit;color:inherit}.btn{cursor:pointer;border:1px solid var(--line);background:var(--surface);min-height:2.4rem;color:var(--text);border-radius:9px;justify-content:center;align-items:center;gap:.4rem;padding:0 .95rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{border-color:#c3cfca}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn.go{background:var(--green);border-color:var(--green);color:var(--ink);font-weight:700}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.ghost{background:0 0;border-color:#0000}.btn.small{min-height:2rem;padding:0 .65rem;font-size:.85rem}.btn.big{width:100%;min-height:3.4rem;font-size:1.1rem;font-family:var(--font-display);border-radius:12px}.field{gap:.3rem;margin-bottom:.8rem;display:grid}.field-label{color:var(--muted);font-size:.82rem;font-weight:600}.field-hint{color:var(--muted);font-size:.78rem}input,select,textarea{border:1px solid var(--line);background:var(--surface);border-radius:9px;width:100%;min-height:2.4rem;padding:.45rem .6rem}textarea{resize:vertical;min-height:4.5rem}input:focus,select:focus,textarea:focus,.btn:focus-visible{outline:2px solid var(--green);outline-offset:1px}input[type=checkbox]{width:1.1rem;min-height:1.1rem;accent-color:var(--green)}.row{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:0 .8rem;display:grid}.row:has(input[type=datetime-local]){grid-template-columns:repeat(auto-fit,minmax(13rem,1fr))}.actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.actions .spacer{flex:1}.check{align-items:center;gap:.5rem;margin-bottom:.8rem;display:flex}.note{border-radius:9px;padding:.6rem .75rem;font-size:.9rem}.note.error{background:var(--danger-bg);color:var(--danger)}.note.warn{background:var(--warn-bg);color:var(--warn)}.note.info{background:var(--info-bg);color:var(--info)}.note.good{background:var(--good-bg);color:var(--good)}.empty{color:var(--muted);text-align:center;padding:1.5rem 0}.badge{color:var(--muted);white-space:nowrap;background:#e9eeec;border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.badge.good{background:var(--good-bg);color:var(--good)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.info{background:var(--info-bg);color:var(--info)}.muted{color:var(--muted)}.small{font-size:.85rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.stack{gap:.75rem;display:grid}.grid{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.75rem;display:grid}.stat-value{font-family:var(--font-display);font-size:1.7rem;font-weight:800;line-height:1.1}.stat-label{color:var(--muted);font-size:.82rem}.split{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.55rem .6rem;font-size:.9rem}th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.75rem}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#f9fbfa}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.modal-backdrop{z-index:20;background:#0f1f2e73;place-items:start center;padding:4vh .75rem;display:grid;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border-radius:14px;width:min(34rem,100%);padding:1.1rem;box-shadow:0 20px 50px #0f1f2e40}.modal-head{justify-content:space-between;align-items:center;margin-bottom:.9rem;display:flex}.admin{grid-template-columns:14rem 1fr;min-height:100dvh;display:grid}.sidebar{background:var(--ink);color:#fff;flex-direction:column;gap:.25rem;padding:1.1rem .75rem;display:flex}.sidebar .brand{padding:.15rem .5rem 1.1rem;display:block}.sidebar .brand img{height:1.75rem;display:block}.sidebar a{color:inherit;opacity:.8;border-radius:9px;justify-content:space-between;align-items:center;padding:.55rem .6rem;text-decoration:none;display:flex}.sidebar a:hover{opacity:1;background:#ffffff12}.sidebar a.active{color:var(--green-bright);opacity:1;background:#22c07f29;font-weight:600}.sidebar .count{background:var(--green-bright);color:var(--ink);border-radius:999px;padding:.05rem .45rem;font-size:.72rem;font-weight:700}.sidebar .foot{gap:.5rem;margin-top:auto;padding:.5rem;font-size:.85rem;display:grid}.sidebar .foot button{color:inherit;cursor:pointer;background:0 0;border:1px solid #ffffff4d;border-radius:9px;padding:.4rem}.main{width:100%;max-width:72rem;padding:1.4rem 1.6rem 3rem}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.page-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.day{margin-bottom:1rem}.day-head{font-family:var(--font-display);align-items:baseline;gap:.5rem;padding:.35rem 0;font-size:.9rem;font-weight:700;display:flex}.day-head.today{color:var(--green-deep)}.job-row{text-align:left;background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:10px;grid-template-columns:5.5rem 1fr auto;align-items:center;gap:.75rem;width:100%;margin-bottom:.4rem;padding:.6rem .75rem;display:grid}.job-row:hover{border-color:#c3cfca}.job-row.cancelled{opacity:.55}.job-time{font-variant-numeric:tabular-nums;font-weight:700}@media (width<=760px){.admin{grid-template-columns:1fr}.sidebar{flex-flow:wrap;align-items:center;padding:.5rem}.sidebar .brand{width:100%;padding:.35rem .5rem}.sidebar .foot{align-items:center;margin:0 0 0 auto;display:flex}.sidebar .foot .who{display:none}.main{padding:1rem .75rem 3rem}.job-row{grid-template-columns:4.5rem 1fr}.job-row>:last-child{grid-column:2}}.phone{flex-direction:column;max-width:32rem;min-height:100dvh;margin:0 auto;display:flex}.phone-head{background:var(--ink);color:#fff;padding:calc(.8rem + env(safe-area-inset-top)) 1rem .8rem;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.phone-head img{height:1.5rem;margin-bottom:.3rem;display:block}.phone-head .sub{opacity:.8;font-size:.82rem}.phone-head button,.phone-head a{color:inherit;cursor:pointer;background:0 0;border:1px solid #ffffff4d;border-radius:9px;padding:.35rem .6rem;font-size:.85rem;text-decoration:none}.tabs{background:var(--ink);grid-auto-columns:1fr;grid-auto-flow:column;padding:0 .75rem;display:grid}.tabs button{color:#ffffffb3;cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;padding:.6rem .25rem;font-weight:600}.tabs button.active{color:var(--green-bright);border-bottom-color:var(--green-bright)}.phone-body{flex:1;align-content:start;gap:.9rem;padding:1rem;display:grid}.visit{gap:.5rem;display:grid}.visit .when{font-family:var(--font-display);font-size:1.05rem;font-weight:700}.visit .where{font-size:.95rem}.clock{background:var(--green-tint);border-color:#bfe6d2}.clock .elapsed{font-family:var(--font-display);font-variant-numeric:tabular-nums;color:var(--green-deep);font-size:2.1rem;font-weight:800}.section-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-top:.4rem;font-size:.78rem;font-weight:700}.login{place-items:center;min-height:100dvh;padding:1rem;display:grid}.login .card{width:min(24rem,100%);padding:1.6rem}.login .logo{height:2.1rem;margin-bottom:1.4rem;display:block}.login h1{margin-bottom:.25rem}.login .code{letter-spacing:.35em;text-align:center;font-variant-numeric:tabular-nums;font-size:1.6rem}.demo{border-top:1px dashed var(--line);gap:.4rem;margin-top:1.25rem;padding-top:1rem;display:grid}.form-grid{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:0 .8rem;display:grid}.form-grid .wide{grid-column:1/-1}.lines{gap:.4rem;margin:.4rem 0 .8rem;display:grid}.lines-head,.lines-row{grid-template-columns:1fr 4.5rem 6.5rem 2rem;align-items:center;gap:.4rem;display:grid}.lines-head{color:var(--muted);font-size:.75rem;font-weight:600}.sidebar .section{text-transform:uppercase;letter-spacing:.08em;opacity:.5;padding:.8rem .6rem .2rem;font-size:.68rem}.sidebar a{padding:.42rem .6rem;font-size:.93rem}@media (width<=760px){.sidebar .section{display:none}}.tabbar{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:.25rem;margin-bottom:1rem;display:flex}.tabbar button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;padding:.5rem .8rem;font-weight:600}.tabbar button.active{color:var(--ink);border-bottom-color:var(--green)}.kv{grid-template-columns:max-content 1fr;gap:.25rem 1rem;margin:0;font-size:.92rem;display:grid}.kv dt{color:var(--muted)}.kv dd{margin:0}.board{grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));align-items:start;gap:.75rem;display:grid}.board-col{border-radius:var(--radius);background:#eaf0ed;gap:.5rem;padding:.6rem;display:grid}.board-col h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:.1rem .2rem;font-size:.8rem}.board-card{background:var(--surface);border:1px solid var(--line);text-align:left;cursor:pointer;border-radius:9px;gap:.2rem;width:100%;padding:.6rem .7rem;display:grid}.board-card:hover{border-color:#c3cfca}.task{align-items:flex-start;gap:.6rem;padding:.35rem 0;font-size:.95rem;display:flex}.task input{flex:none;margin-top:.15rem}.task.done span{color:var(--muted);text-decoration:line-through}.money-neg{color:var(--danger)}.photos{flex-wrap:wrap;gap:.5rem;display:flex}.photos img{object-fit:cover;border:1px solid var(--line);border-radius:8px;width:5.5rem;height:5.5rem}pre.json{color:#d7e3e8;background:#0f1f2e;border-radius:9px;max-height:22rem;padding:.75rem;font-size:.8rem;overflow:auto}textarea.code{min-height:18rem;font-family:ui-monospace,Consolas,monospace;font-size:.82rem}.public{gap:1rem;max-width:40rem;margin:0 auto;padding:1.5rem 1rem 3rem;display:grid}.public .logo{height:2.1rem}.public .total{font-family:var(--font-display);font-size:2.2rem;font-weight:800}
