@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-vietnamese-500-normal-BmEvtly_.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-500-normal-BTqKIpxg.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:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-ext-500-normal-DUe3BAxM.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-500-normal-3dgZTiw9.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:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2)format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.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}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-vietnamese-600-normal-DUi7WF5p.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-600-normal-D6zpsUhD.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:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-ext-600-normal-DxxdqCpr.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-600-normal-VcznFIpX.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:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2)format("woff2"),url(/assets/space-grotesk-latin-600-normal-BflQw4A9.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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.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{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ct-font-display:"Space Grotesk", system-ui, "Segoe UI", sans-serif;--ct-font-sans:"IBM Plex Sans", system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--ct-space-1:.25rem;--ct-space-2:.5rem;--ct-space-3:.75rem;--ct-space-4:1rem;--ct-space-5:1.5rem;--ct-space-6:2rem;--ct-radius-xs:4px;--ct-radius-sm:6px;--ct-radius:8px;--ct-radius-lg:12px;--ct-transition:.16s cubic-bezier(.2, 0, .2, 1);--ct-bg:#eef1f4;--ct-text:#1b2430;--ct-text-body:#46515f;--ct-text-heading:#28323e;--ct-text-muted:#5c6775;--ct-text-subtle:#6f7a87;--ct-text-soft:#828d99;--ct-text-slate:#3a4654;--ct-menu-heading:#6b7785;--ct-border:#d4dbe2;--ct-border-soft:#e3e8ed;--ct-border-row:#e8edf1;--ct-accent:#2f6b4f;--ct-accent-hover:#265a42;--ct-accent-soft:#e8f1ec;--ct-on-accent:#fff;--ct-on-danger:#fff;--ct-surface:#fdfefe;--ct-surface-raised:#f3f6f4;--ct-surface-hover:#eef3f0;--ct-row-selected:#e8f1ec;--ct-shadow:#16202a1a;--ct-shadow-strong:#16202a29;--ct-shadow-modal:#10182047;--ct-shadow-panel:#16202a0d;--ct-shadow-sm:#16202a0f;--ct-menu-rule:#e8edf1;--ct-sticky-shadow:#16202a1a;--ct-flash-bg:#e7f0ec;--ct-flash-border:#b9d4c6;--ct-flash-text:#235640;--ct-warn:#9a6a2e;--ct-code-bg:#eef1f4;--ct-scroll-thumb:#c4ccd4;--ct-bulk-bg:#e8f1ec;--ct-bulk-border:#c2dcce;--ct-bulk-text:#235640;--ct-backdrop:#141c2473;--ct-backdrop-heavy:#141c248c;--ct-fab-bg:#e8edf1;--ct-fab-text:#2a333f;--ct-fab-hover:#dce3e9;--ct-persist-bg:#fbf3e2;--ct-persist-border:#e3c98f;--ct-persist-text:#7a5a1c;--ct-import-error:#8a3b1e;--ct-badge-paid-bg:#ebf3ee;--ct-badge-paid-border:#bcdcc8;--ct-badge-paid-label:#5c6775;--ct-badge-paid-strong:#3f7d63;--ct-badge-pending-bg:#f7ece6;--ct-badge-pending-border:#e6c3b1;--ct-badge-pending-label:#5c6775;--ct-badge-pending-strong:#a9533f;--ct-btn-ghost-hover:#eef1f4;--ct-danger:#a8483a;--ct-danger-border:#8f3d2d;--ct-danger-hover:#94402f;--ct-danger-soft:#f7ece8;--ct-row-off:#b06a3f;--ct-row-paid:#3f7d63;--ct-row-pending:#a9533f;--ct-import-ok-bg:#ebf3ee;--ct-import-ok-border:#bcdcc8;--ct-import-ok-text:#2c6147;--ct-mobile-border:#dfe5ea;--ct-mobile-row:#e8edf1;--ct-thead-line:#e2e7ec;--chart-grid:#e6ebef;--chart-bar-paid:#3f7d63;--chart-bar-pending:#c0795c;--chart-line-accent:#2f6b4f;--chart-bar-hours:#4f86a6;--chart-line-visits:#7a6cae;--muted:var(--ct-text-muted);--border:var(--ct-border);font-family:var(--ct-font-sans);color:var(--ct-text);background:var(--ct-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.45}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ct-bg:#161a20;--ct-text:#e3e8ed;--ct-text-body:#b9c2cc;--ct-text-heading:#d4dae1;--ct-text-muted:#94a0ac;--ct-text-subtle:#a3aeba;--ct-text-soft:#8b96a2;--ct-text-slate:#cbd5e1;--ct-menu-heading:#8995a3;--ct-border:#333b46;--ct-border-soft:#3c4450;--ct-border-row:#2a313b;--ct-accent:#5aa07e;--ct-accent-hover:#6fb094;--ct-accent-soft:#1f2c25;--ct-on-accent:#0d1712;--ct-on-danger:#fff;--ct-surface:#1c2129;--ct-surface-raised:#232a33;--ct-surface-hover:#283039;--ct-row-selected:#1f2c25;--ct-shadow:#0006;--ct-shadow-strong:#00000080;--ct-shadow-modal:#0009;--ct-shadow-panel:#0000004d;--ct-shadow-sm:#00000059;--ct-menu-rule:#333b46;--ct-sticky-shadow:#00000073;--ct-flash-bg:#1a2b24;--ct-flash-border:#2f5a46;--ct-flash-text:#8fcdb0;--ct-warn:#e0b066;--ct-code-bg:#2a313b;--ct-scroll-thumb:#475160;--ct-bulk-bg:#1a2b24;--ct-bulk-border:#2f5a46;--ct-bulk-text:#aee0c6;--ct-backdrop:#000000a8;--ct-backdrop-heavy:#000000c2;--ct-fab-bg:#2f3742;--ct-fab-text:#eef2f6;--ct-fab-hover:#3a434f;--ct-persist-bg:#352c12;--ct-persist-border:#8a7430;--ct-persist-text:#ecd79a;--ct-import-error:#e9a06f;--ct-badge-paid-bg:#15271d;--ct-badge-paid-border:#2f5a42;--ct-badge-paid-label:#94a0ac;--ct-badge-paid-strong:#6fb094;--ct-badge-pending-bg:#2e1c14;--ct-badge-pending-border:#6b3a28;--ct-badge-pending-label:#94a0ac;--ct-badge-pending-strong:#d99a7e;--ct-btn-ghost-hover:#283039;--ct-danger:#c66b52;--ct-danger-border:#9c4634;--ct-danger-hover:#d4795f;--ct-danger-soft:#2e1c16;--ct-row-off:#d99a66;--ct-row-paid:#6fb094;--ct-row-pending:#d99a7e;--ct-import-ok-bg:#15271d;--ct-import-ok-border:#2f5a42;--ct-import-ok-text:#8fcdb0;--ct-mobile-border:#333b46;--ct-mobile-row:#2a313b;--ct-thead-line:#333b46;--chart-grid:#333b46;--chart-bar-paid:#5aa07e;--chart-bar-pending:#d08a66;--chart-line-accent:#6fb094;--chart-bar-hours:#6ba0c4;--chart-line-visits:#9a86c4}*,:before,:after{box-sizing:border-box}html{overflow-x:clip}body{font-family:var(--ct-font-sans);margin:0}#root{min-height:100dvh}@media (width<=720px){html{font-size:15px}}@media (width<=400px){html{font-size:14px}}.app{max-width:1240px;min-height:100dvh;padding:clamp(1rem,2vw,1.5rem);padding-left:max(clamp(1rem, 2vw, 1.5rem), env(safe-area-inset-left,0px));padding-right:max(clamp(1rem, 2vw, 1.5rem), env(safe-area-inset-right,0px));padding-bottom:max(2rem, env(safe-area-inset-bottom,0px));color:var(--ct-text);margin:0 auto}.app--loading{justify-content:center;align-items:center;min-height:60vh;display:flex}.loading-msg{color:var(--ct-text-muted);margin:0;font-size:1rem}.load-error{width:min(100%,34rem);padding:var(--ct-space-6);background:var(--ct-surface);border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius-lg);box-shadow:0 1px 2px var(--ct-shadow-sm);text-align:left;margin:0 auto}.auth-screen{justify-content:center;align-items:center;gap:var(--ct-space-5);min-height:100dvh;padding:var(--ct-space-5);background:radial-gradient(120% 120% at 50% -10%, color-mix(in srgb, var(--ct-accent) 26%, var(--ct-bg)) 0%, var(--ct-bg) 55%);flex-direction:column;display:flex;position:relative;overflow:hidden}.auth-aurora{background:radial-gradient(40% 50% at 25% 30%, color-mix(in srgb, var(--ct-accent) 45%, transparent) 0%, transparent 70%), radial-gradient(45% 55% at 80% 20%, color-mix(in srgb, var(--ct-accent-hover) 40%, transparent) 0%, transparent 70%);filter:blur(60px);opacity:.7;pointer-events:none;height:70vh;animation:14s ease-in-out infinite alternate auth-float;position:absolute;inset:-30% -10% auto}@keyframes auth-float{0%{transform:translate(0,0)scale(1)}to{transform:translateY(4%)scale(1.08)}}@media (prefers-reduced-motion:reduce){.auth-aurora{animation:none}}.auth-card{z-index:1;gap:var(--ct-space-4);background:color-mix(in srgb, var(--ct-surface) 82%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.1);border:1px solid color-mix(in srgb, var(--ct-on-accent) 35%, transparent);border-radius:var(--ct-radius-lg);width:min(100%,25rem);box-shadow:0 24px 60px -22px var(--ct-shadow-modal), 0 2px 8px -4px var(--ct-shadow);flex-direction:column;padding:clamp(1.6rem,4vw,2.5rem);display:flex;position:relative}.auth-brand{align-items:center;gap:.85rem;display:flex}.auth-logo{width:3rem;height:3rem;color:var(--ct-on-accent);background:linear-gradient(150deg, var(--ct-accent) 0%, var(--ct-accent-hover) 100%);box-shadow:0 10px 22px -8px color-mix(in srgb, var(--ct-accent) 70%, transparent), inset 0 1px 0 color-mix(in srgb, var(--ct-on-accent) 30%, transparent);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.auth-brand-text{flex-direction:column;gap:.15rem;min-width:0;display:flex}.auth-brand-name{font-family:var(--ct-font-display);letter-spacing:-.025em;color:var(--ct-text-heading);font-size:1.4rem;font-weight:600;line-height:1.1}.auth-tagline{color:var(--ct-text-muted);font-size:.85rem;line-height:1.3}.auth-form{gap:var(--ct-space-3);flex-direction:column;display:flex}.login-field{color:var(--ct-text-muted);flex-direction:column;gap:.3rem;font-size:.82rem;font-weight:500;display:flex}.login-field input{border:1px solid var(--ct-border);border-radius:var(--ct-radius-sm);background:color-mix(in srgb, var(--ct-surface) 70%, transparent);min-height:2.7rem;color:var(--ct-text);font:inherit;transition:border-color var(--ct-transition), box-shadow var(--ct-transition);padding:.55rem .75rem;font-size:16px}.login-field input:focus{border-color:var(--ct-accent);box-shadow:0 0 0 3px var(--ct-accent-soft);outline:none}.login-error{border-radius:var(--ct-radius-sm);background:color-mix(in srgb, var(--ct-danger) 12%, transparent);color:var(--ct-danger);margin:0;padding:.5rem .7rem;font-size:.85rem}.login-submit{min-height:2.9rem;box-shadow:0 12px 24px -12px color-mix(in srgb, var(--ct-accent) 80%, transparent);justify-content:center;margin-top:.4rem;font-size:.98rem}.auth-footnote{z-index:1;color:var(--ct-text-muted);text-align:center;margin:0;font-size:.78rem;position:relative}.users-modal-head{margin-bottom:var(--ct-space-4);align-items:center;gap:.8rem;display:flex}.users-modal-icon{width:2.7rem;height:2.7rem;color:var(--ct-on-accent);background:linear-gradient(150deg, var(--ct-accent) 0%, var(--ct-accent-hover) 100%);box-shadow:0 8px 18px -8px color-mix(in srgb, var(--ct-accent) 70%, transparent);border-radius:13px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.users-modal-title{margin:0!important}.users-modal-sub{color:var(--ct-text-muted);margin:.1rem 0 0;font-size:.85rem}.users-list{margin:0 0 var(--ct-space-4);flex-direction:column;gap:.4rem;padding:0;list-style:none;display:flex}.users-list-item{border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius);background:var(--ct-surface-raised);color:var(--ct-text-heading);align-items:center;gap:.6rem;padding:.4rem .45rem .4rem .5rem;font-size:.92rem;display:flex}.users-avatar{background:var(--ct-accent-soft);width:1.9rem;height:1.9rem;color:var(--ct-accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.82rem;font-weight:700;display:inline-flex}.users-list-info{flex-direction:column;flex:auto;min-width:0;line-height:1.2;display:flex}.users-list-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.users-list-handle{color:var(--ct-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;overflow:hidden}.users-you{background:var(--ct-accent);color:var(--ct-on-accent);letter-spacing:.02em;border-radius:999px;padding:.1rem .5rem;font-size:.7rem;font-weight:600}.users-ok{border-radius:var(--ct-radius-sm);background:var(--ct-flash-bg);border:1px solid var(--ct-flash-border);color:var(--ct-flash-text);margin:0;padding:.5rem .7rem;font-size:.85rem}.users-section{gap:var(--ct-space-3);margin-top:var(--ct-space-4);padding:var(--ct-space-4);border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius-lg);background:color-mix(in srgb, var(--ct-surface-raised) 60%, transparent);flex-direction:column;display:flex}.users-section-title{font-family:var(--ct-font-display);letter-spacing:-.02em;color:var(--ct-text-heading);align-items:center;gap:.5rem;margin:0;font-size:1rem;font-weight:600;display:flex}.users-section-icon{background:var(--ct-accent-soft);width:1.7rem;height:1.7rem;color:var(--ct-accent);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.users-section .config-modal-fields{margin-top:0}.users-section .btn.primary{justify-content:center}.load-error-title,.missing-dates-modal-title,.charts-panel-title,.title{font-family:var(--ct-font-display);letter-spacing:-.025em}.load-error-title{margin:0 0 var(--ct-space-3);color:var(--ct-danger);font-size:1.25rem;font-weight:600}.load-error-text{margin:0 0 var(--ct-space-3);color:var(--ct-text-body);line-height:1.55}.load-error code,.import-hint code{background:var(--ct-code-bg);border-radius:var(--ct-radius-xs);padding:.1rem .3rem;font-size:.85em}.persist-banner,.menu-flash{margin-bottom:var(--ct-space-3);border-radius:var(--ct-radius);padding:.65rem .8rem;font-size:.9rem;line-height:1.45}.persist-banner{background:var(--ct-persist-bg);border:1px solid var(--ct-persist-border);color:var(--ct-persist-text)}.persist-banner--with-action{gap:var(--ct-space-2) var(--ct-space-4);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.persist-banner-text{flex:1;min-width:14rem;margin:0}.persist-banner-close{color:var(--ct-persist-text)!important}.menu-flash{background:var(--ct-flash-bg);border:1px solid var(--ct-flash-border);color:var(--ct-flash-text)}.header{z-index:20;margin-bottom:var(--ct-space-4);padding-top:max(.5rem, env(safe-area-inset-top,0px));padding-bottom:var(--ct-space-3);background:var(--ct-bg);box-shadow:0 6px 16px -12px var(--ct-shadow-strong);position:sticky;top:0}.header-top{justify-content:space-between;align-items:flex-start;gap:var(--ct-space-4);margin-bottom:var(--ct-space-4);display:flex}.header-copy{min-width:0}.eyebrow{color:var(--ct-text-muted);letter-spacing:.02em;margin:0 0 .25rem;font-size:.78rem;font-weight:600}.title{color:var(--ct-text-heading);margin:0;font-size:clamp(1.75rem,4vw,2.75rem);font-weight:600;line-height:1}.header-subtitle{max-width:36rem;color:var(--ct-text-muted);margin:.55rem 0 0;font-size:.95rem;line-height:1.45}.toolbar{gap:var(--ct-space-4);grid-template-columns:minmax(0,1fr) auto;align-items:end;display:grid}.toolbar-year-menu{align-items:flex-end;gap:var(--ct-space-3);flex-wrap:wrap;min-width:0;display:flex}.menu-wrap{flex-shrink:0;position:relative}.field,.charts-year-field{color:var(--ct-text-muted);flex-direction:column;gap:.3rem;font-size:.78rem;font-weight:500;display:flex}.field span,.charts-year-field span{line-height:1.1}.field input,.field select,.charts-year-field select,.input-date,.import-textarea{border:1px solid var(--ct-border);border-radius:var(--ct-radius-sm);background:var(--ct-surface);min-height:2.45rem;color:var(--ct-text);font:inherit;transition:border-color var(--ct-transition), background-color var(--ct-transition), box-shadow var(--ct-transition)}.field input,.field select,.charts-year-field select,.input-date{padding:.45rem .65rem}.field select,.charts-year-field select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--ct-text-muted) 50%), linear-gradient(135deg, var(--ct-text-muted) 50%, transparent 50%);background-position:calc(100% - 16px) 52%,calc(100% - 11px) 52%;background-repeat:no-repeat;background-size:5px 5px,5px 5px;min-width:7rem;padding-right:2rem}.toolbar-year-menu .field--year select{min-width:6.5rem}.toolbar-year-menu .field{flex-direction:row;align-items:center;gap:.5rem}.toolbar-year-menu .field>span{white-space:nowrap;flex:none}.toolbar-year-menu .field select,.toolbar-year-menu .field .filter-control,.toolbar-year-menu .field--months-filter .months-wrap{flex:auto;min-width:0}.toolbar-year-menu .field--year{order:1}.toolbar-year-menu .field--months-filter{order:2}.toolbar-year-menu .field--row-filter{order:3}.filter-control{align-items:stretch;gap:.35rem;display:flex}.filter-control select{flex:auto;min-width:0}.filter-clear{border:1px solid var(--ct-border);border-radius:var(--ct-radius-sm);background:var(--ct-surface);width:2.45rem;min-height:2.45rem;color:var(--ct-text-muted);cursor:pointer;transition:border-color var(--ct-transition), background-color var(--ct-transition), color var(--ct-transition);flex:none;justify-content:center;align-items:center;padding:0;font-size:1.2rem;line-height:1;display:inline-flex}.filter-clear:hover{background:var(--ct-surface-hover);color:var(--ct-text)}.months-wrap{position:relative}.months-btn{border:1px solid var(--ct-border);border-radius:var(--ct-radius-sm);background:var(--ct-surface);width:100%;min-width:9rem;min-height:2.45rem;color:var(--ct-text);font:inherit;cursor:pointer;transition:border-color var(--ct-transition), background-color var(--ct-transition);justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .65rem;display:flex}.months-btn:hover{border-color:var(--ct-accent)}.months-btn-caret{color:var(--ct-text-muted);font-size:.7rem}.months-dropdown{z-index:30;background:var(--ct-surface);border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius);width:max-content;min-width:14rem;max-width:calc(100vw - 2rem);box-shadow:0 10px 24px var(--ct-shadow-strong);padding:.5rem;position:absolute;top:calc(100% + .4rem);left:0}.months-dropdown-actions{gap:.4rem;margin-bottom:.5rem;display:flex}.btn--mini{flex:1 1 0;min-height:2rem;padding:.3rem .5rem;font-size:.8rem}.months-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;display:grid}.chip--month{justify-content:center;gap:.3rem;min-height:2rem;padding:.3rem .4rem;font-size:.82rem}.toolbar-year-menu .field--table-filter select{min-width:12rem}.toolbar-meta{gap:var(--ct-space-3);grid-template-columns:repeat(2,minmax(11.5rem,1fr));align-items:stretch;display:grid}.kpi-card,.summary-badge,.pending-badge{background:var(--ct-surface);border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius);min-height:5.25rem;box-shadow:0 1px 1px var(--ct-shadow-sm);grid-template-columns:.25rem 1fr;grid-template-areas:"indicator label""indicator value""indicator context";gap:.1rem .75rem;padding:.85rem .95rem;display:grid;position:relative}.kpi-indicator{background:var(--ct-accent);border-radius:999px;grid-area:indicator;width:.25rem}.kpi-card--paid .kpi-indicator{background:var(--ct-badge-paid-strong)}.kpi-card--pending .kpi-indicator{background:var(--ct-badge-pending-strong)}.kpi-label{color:var(--ct-text-muted);letter-spacing:.01em;grid-area:label;font-size:.78rem;font-weight:600}.kpi-value{color:var(--ct-text-heading);font-family:var(--ct-font-display);font-variant-numeric:tabular-nums;grid-area:value;font-size:clamp(1.45rem,3vw,2rem);font-weight:600;line-height:1.05}.kpi-card--paid .kpi-value,.summary-badge--paid strong{color:var(--ct-badge-paid-strong)}.kpi-card--pending .kpi-value,.pending-badge strong{color:var(--ct-badge-pending-strong)}.kpi-context{color:var(--ct-text-soft);grid-area:context;font-size:.76rem}.kpi-pay-btn{border:1px solid var(--ct-badge-pending-strong);border-radius:var(--ct-radius-sm);background:var(--ct-surface);width:2.1rem;height:2.1rem;color:var(--ct-badge-pending-strong);cursor:pointer;transition:background-color var(--ct-transition), color var(--ct-transition), border-color var(--ct-transition);justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:50%;right:.7rem;transform:translateY(-50%)}.kpi-pay-btn:hover{background:var(--ct-badge-pending-strong);color:var(--ct-surface)}.btn{border:1px solid var(--ct-border);border-radius:var(--ct-radius-sm);background:var(--ct-surface);min-height:2.45rem;color:var(--ct-text);font:inherit;cursor:pointer;touch-action:manipulation;transition:border-color var(--ct-transition), background-color var(--ct-transition), color var(--ct-transition), transform var(--ct-transition);justify-content:center;align-items:center;gap:.45rem;padding:.5rem .85rem;font-size:.88rem;font-weight:500;display:inline-flex}.btn:hover{background:var(--ct-btn-ghost-hover);border-color:var(--ct-border)}.btn:active{transform:translateY(1px)}.btn:disabled{cursor:not-allowed;opacity:.55}.btn.primary{background:var(--ct-accent);border-color:var(--ct-accent);color:var(--ct-on-accent)}.btn.primary:hover{background:var(--ct-accent-hover);border-color:var(--ct-accent-hover)}.btn--text{min-height:auto;color:var(--ct-accent);background:0 0;border:none;padding:.1rem .25rem;text-decoration:underline}.btn--text:hover{color:var(--ct-accent-hover);background:0 0}.btn--danger{background:var(--ct-danger-soft);color:var(--ct-danger);border-color:#0000}.btn--danger:hover{background:var(--ct-danger);border-color:var(--ct-danger);color:var(--ct-on-danger)}.theme-toggle,.menu-btn{width:2.45rem;min-width:2.45rem;padding:0}.theme-toggle{color:var(--ct-text-muted);flex-shrink:0}.menu-dropdown{z-index:30;background:var(--ct-surface);border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius);width:max-content;min-width:min(18rem,100vw - 2rem);max-width:calc(100vw - 2rem);max-height:min(70vh,100dvh - 9rem);box-shadow:0 10px 24px var(--ct-shadow-strong);-webkit-overflow-scrolling:touch;padding:.35rem;position:absolute;top:calc(100% + .45rem);left:0;overflow:auto}.menu-item{border-radius:var(--ct-radius-sm);width:100%;min-height:2.4rem;color:var(--ct-text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:.55rem .65rem;font-size:.9rem;display:block}.menu-item:hover{background:var(--ct-surface-hover)}.menu-heading{color:var(--ct-menu-heading);padding:.35rem .65rem .2rem;font-size:.72rem;font-weight:600}.menu-rule{background:var(--ct-menu-rule);height:1px;margin:.3rem .2rem}.weekday-toggles{gap:var(--ct-space-2);margin-bottom:var(--ct-space-4);flex-wrap:wrap;display:flex}.chip{border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius-sm);background:var(--ct-surface-raised);min-height:2.3rem;color:var(--ct-text-body);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.45rem;padding:.35rem .6rem;font-size:.9rem;display:inline-flex}.chip input[type=checkbox],.grid input[type=checkbox],.cell-check input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--ct-accent);cursor:pointer}.punctual-block--modal,.config-modal-fields,.import-block--modal{margin-top:var(--ct-space-4)}.punctual-row,.import-actions,.missing-dates-modal-actions,.bulk-bar-actions{gap:var(--ct-space-2);flex-wrap:wrap;align-items:center;display:flex}.input-date{font-family:var(--ct-font-sans)}.punctual-feedback{margin:var(--ct-space-2) 0 0;color:var(--ct-warn);font-size:.85rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.bulk-bar{justify-content:space-between;align-items:center;gap:var(--ct-space-3);margin-bottom:var(--ct-space-3);background:var(--ct-bulk-bg);border:1px solid var(--ct-bulk-border);border-radius:var(--ct-radius);color:var(--ct-bulk-text);flex-wrap:wrap;padding:.75rem .9rem;display:flex}.bulk-bar-text{font-size:.9rem}.btn--trash{width:2.15rem;min-width:2.15rem;height:2.15rem;padding:0}.btn--trash.btn--bulk-delete{width:auto;min-width:0;height:auto;min-height:2.3rem;padding:.45rem .7rem}.missing-dates-modal-backdrop,.charts-modal-backdrop{z-index:230;padding:max(1rem, env(safe-area-inset-top,0px)) max(1rem, env(safe-area-inset-right,0px)) max(1rem, env(safe-area-inset-bottom,0px)) max(1rem, env(safe-area-inset-left,0px));background:var(--ct-backdrop);-webkit-overflow-scrolling:touch;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.charts-modal-backdrop{z-index:250;background:var(--ct-backdrop-heavy)}.missing-dates-modal-dialog,.charts-modal-dialog{background:var(--ct-surface);border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius-lg);width:100%;box-shadow:0 18px 36px var(--ct-shadow-modal);margin:.5rem auto 1.5rem;position:relative}.missing-dates-modal-dialog{max-width:34rem;padding:2.7rem 1.25rem 1.25rem}.import-modal-dialog{max-width:42rem}.charts-modal-backdrop{align-items:center;overflow:hidden}.charts-modal-dialog{flex-direction:column;max-width:1120px;max-height:calc(100dvh - 2rem);margin:0;display:flex;overflow:hidden}.charts-modal-dialog .charts-panel{overscroll-behavior:contain;scrollbar-width:thin;flex:auto;min-height:0;overflow-y:auto}.charts-modal-dialog .charts-panel::-webkit-scrollbar{width:8px}.charts-modal-dialog .charts-panel::-webkit-scrollbar-thumb{background:var(--ct-scroll-thumb);border-radius:999px}.modal-close-fab{z-index:5;border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius-sm);background:var(--ct-fab-bg);width:2.25rem;height:2.25rem;color:var(--ct-fab-text);cursor:pointer;transition:background-color var(--ct-transition), border-color var(--ct-transition);justify-content:center;align-items:center;font-size:1.35rem;line-height:1;display:inline-flex;position:absolute;top:.55rem;right:.55rem}.modal-close-fab:hover{background:var(--ct-fab-hover)}.missing-dates-modal-title{margin:0 0 var(--ct-space-3);color:var(--ct-text-heading);font-size:1.25rem;font-weight:600}.missing-dates-modal-intro,.missing-dates-modal-preview,.missing-dates-modal-warn{margin:0 0 var(--ct-space-4);color:var(--ct-text-body);font-size:.92rem;line-height:1.5}.missing-dates-modal-warn{color:var(--ct-warn)}.missing-dates-modal-preview{color:var(--ct-text-slate)}.config-modal-fields{gap:var(--ct-space-3);display:grid}.import-hint{margin:0 0 var(--ct-space-3);color:var(--ct-text-subtle);font-size:.82rem;line-height:1.45}.import-textarea{width:100%;min-height:9rem;margin-bottom:var(--ct-space-3);resize:vertical;padding:.65rem .75rem;font-family:ui-monospace,Consolas,monospace;font-size:.82rem;line-height:1.4}.import-flash{margin:0 0 var(--ct-space-3);background:var(--ct-import-ok-bg);border:1px solid var(--ct-import-ok-border);border-radius:var(--ct-radius-sm);color:var(--ct-import-ok-text);padding:.55rem .7rem;font-size:.9rem}.import-report{color:var(--ct-text-body);font-size:.85rem}.import-report p{margin:0 0 var(--ct-space-2)}.import-errors{max-height:10rem;margin:var(--ct-space-2) 0 0;color:var(--ct-import-error);padding-left:1.25rem;font-size:.8rem;overflow:auto}.import-err-raw{opacity:.82;word-break:break-word}.table-wrap{overscroll-behavior:contain;border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius);background:var(--ct-surface);max-height:min(72vh,100dvh - 11rem);box-shadow:0 1px 2px var(--ct-shadow-sm);scrollbar-width:thin;-webkit-overflow-scrolling:touch;overflow:auto}.table-wrap::-webkit-scrollbar{width:8px;height:8px}.table-wrap::-webkit-scrollbar-thumb{background:var(--ct-scroll-thumb);border-radius:999px}.grid{border-collapse:separate;border-spacing:0;--select-col-w:3rem;--day-col-w:9.5rem;width:100%;min-width:760px;font-size:.88rem}.grid th,.grid td{border-bottom:1px solid var(--ct-border-row);vertical-align:middle;padding:.52rem .65rem}.grid th{z-index:6;background:var(--ct-surface-raised);box-shadow:inset 0 -1px 0 var(--ct-thead-line);color:var(--ct-text-muted);text-align:left;white-space:nowrap;font-size:.76rem;font-weight:600;position:sticky;top:0}.grid tbody tr{background:var(--ct-surface);transition:background-color var(--ct-transition), color var(--ct-transition)}.grid tbody tr:hover{background:var(--ct-surface-hover)}.grid tbody tr.row--selected,.grid tbody tr.row--selected:hover{background:var(--ct-row-selected)}.grid tr:last-child td{border-bottom:none}.grid th.cell-select,.grid td.cell-select,.grid th.cell-day-head,.grid td.cell-day{background:inherit;box-shadow:6px 0 12px -10px var(--ct-sticky-shadow);position:sticky}.grid th.cell-select,.grid td.cell-select{z-index:3;width:var(--select-col-w);min-width:var(--select-col-w);max-width:var(--select-col-w);text-align:center;padding-left:.35rem;padding-right:.35rem;left:0}.grid th.cell-select{z-index:12;background:var(--ct-surface-raised)}.grid th.cell-day-head,.grid td.cell-day{left:var(--select-col-w);z-index:2;min-width:var(--day-col-w)}.grid th.cell-day-head{z-index:11;background:var(--ct-surface-raised)}.th-select-wrap{flex-direction:column;justify-content:center;align-items:center;gap:.15rem;display:flex}.th-select-label{max-width:2.5rem;color:var(--ct-text-soft);font-size:.6rem;font-weight:600;line-height:1}.cell-day{color:var(--ct-text-heading);white-space:nowrap;font-weight:500}.cell-actions,.cell-actions-head,.cell-check{text-align:center;white-space:nowrap}.grid th.th-num,.grid td.cell-check,.grid td[data-label="Precio / h"]{text-align:right}.grid td[data-label=Horas] .hours-field{justify-content:flex-end}.cell-actions-head{color:var(--ct-text-soft)}.grid .input-text,.grid .input-num{border-radius:var(--ct-radius-xs);width:100%;color:inherit;font:inherit;transition:border-color var(--ct-transition), background-color var(--ct-transition), box-shadow var(--ct-transition);background:0 0;border:1px solid #0000}.grid .input-text{min-width:11rem;max-width:24rem;padding:.28rem .35rem}.grid .input-num{text-align:right;font-variant-numeric:tabular-nums;width:4.8rem;padding:.28rem .35rem}.hours-field{align-items:center;gap:.3rem;display:flex}.hours-default-btn{border:1px solid var(--ct-border);border-radius:var(--ct-radius-xs);background:var(--ct-surface);width:1.7rem;height:1.7rem;color:var(--ct-text-muted);cursor:pointer;transition:border-color var(--ct-transition), color var(--ct-transition), background-color var(--ct-transition);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.hours-default-btn:hover{border-color:var(--ct-accent);color:var(--ct-accent)}.grid .input-text:hover,.grid .input-num:hover,.grid .input-text:focus,.grid .input-num:focus{background:var(--ct-surface);border-color:var(--ct-border)}.input-text,.input-num{font-variant-numeric:tabular-nums}.field .input-text{border:1px solid var(--ct-border);border-radius:var(--ct-radius-sm);background:var(--ct-surface);width:100%;min-width:8rem;color:var(--ct-text);font:inherit;padding:.45rem .65rem}.num{color:var(--ct-text-heading);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.row--off td{color:var(--ct-row-off)}.row--paid td{color:var(--ct-row-paid)}.row--pending td{color:var(--ct-row-pending)}.row--off .input-text,.row--off .input-num,.row--paid .input-text,.row--paid .input-num,.row--pending .input-text,.row--pending .input-num{color:inherit}.grid .input-text:disabled,.grid .input-num:disabled{opacity:.7;cursor:not-allowed;box-shadow:none;background:0 0;border-color:#0000}.grid .btn--trash:disabled{opacity:.35;cursor:not-allowed}.empty{color:var(--ct-text-subtle);text-align:center;padding:2rem!important}.charts-modal-loading{min-height:14rem;padding:var(--ct-space-6);color:var(--ct-text-muted);justify-content:center;align-items:center;display:flex}.charts-panel{background:var(--ct-surface);padding:1.25rem}.charts-modal-dialog .charts-panel{padding-top:2.85rem}.charts-panel-head,.charts-month-head{justify-content:space-between;align-items:flex-start;gap:var(--ct-space-3);margin-bottom:var(--ct-space-2);flex-wrap:wrap;display:flex}.charts-panel-title{color:var(--ct-text-heading);margin:0;font-size:1.35rem;font-weight:600}.charts-panel-intro,.charts-historic-hint{margin:0 0 var(--ct-space-4);color:var(--ct-text-muted);font-size:.9rem;line-height:1.5}.charts-historic-hint{font-size:.82rem}.charts-empty{padding:var(--ct-space-5);color:var(--ct-text-subtle);text-align:center;margin:0}.charts-block{margin-bottom:var(--ct-space-6);padding:var(--ct-space-4);border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius);background:var(--ct-surface)}.charts-block:last-child{margin-bottom:0}.charts-subtitle,.charts-microtitle{margin:0 0 var(--ct-space-3);color:var(--ct-text-heading);font-size:1rem;font-weight:600}.charts-microtitle{font-size:.9rem}.charts-canvas{width:100%;min-height:260px}.charts-canvas--second{margin-top:var(--ct-space-4);padding-top:var(--ct-space-4);border-top:1px solid var(--ct-border-row)}.chart-tooltip{background:color-mix(in srgb, var(--ct-surface) 96%, transparent);border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius);min-width:11rem;box-shadow:0 10px 24px var(--ct-shadow-strong);color:var(--ct-text);font-family:var(--ct-font-sans);padding:.7rem .75rem}.chart-tooltip-title{color:var(--ct-text-heading);font-family:var(--ct-font-display);margin:0 0 .45rem;font-size:.9rem;font-weight:600}.chart-tooltip-list{gap:.35rem;display:grid}.chart-tooltip-row{grid-template-columns:.55rem minmax(0,1fr) auto;align-items:center;gap:.45rem;font-size:.82rem;display:grid}.chart-tooltip-dot{border-radius:999px;width:.5rem;height:.5rem}.chart-tooltip-name{color:var(--ct-text-muted)}.chart-tooltip-value{color:var(--ct-text-heading);font-variant-numeric:tabular-nums;font-weight:600}:where(button,input,select,textarea):focus-visible{outline:2px solid var(--ct-accent);outline-offset:2px}@media (width<=980px){.toolbar{grid-template-columns:1fr}.toolbar-meta{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=720px){.app{padding:.75rem .5rem 1.25rem;padding-top:max(.65rem, env(safe-area-inset-top,0px));padding-left:max(.45rem, env(safe-area-inset-left,0px));padding-right:max(.45rem, env(safe-area-inset-right,0px));padding-bottom:max(1.1rem, env(safe-area-inset-bottom,0px))}.header-top{gap:var(--ct-space-3);margin-bottom:var(--ct-space-3)}.header-subtitle{font-size:.86rem}.toolbar-year-menu{gap:var(--ct-space-2);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.toolbar-year-menu .field--months-filter{grid-area:1/3}.toolbar-year-menu .field--row-filter{grid-area:2/1/auto/-1}.field--months-filter .months-btn{min-width:0}.field--months-filter .months-dropdown{left:auto;right:0}.field,.charts-year-field{width:100%;max-width:100%}.field select,.field input,.charts-year-field select,.input-date,.import-textarea{width:100%;min-width:0;font-size:16px}.toolbar-meta{gap:var(--ct-space-2);grid-template-columns:1fr 1fr}.kpi-card,.summary-badge,.pending-badge{min-height:4.6rem;padding:.65rem .7rem}.kpi-value,.summary-badge strong,.pending-badge strong{font-size:1.2rem}.table-wrap{border-radius:var(--ct-radius-sm);max-height:min(68vh,100dvh - 13rem)}.grid{--select-col-w:2.6rem;--day-col-w:7.5rem;min-width:640px;font-size:.76rem}.grid th,.grid td{padding:.36rem .34rem}.grid th{font-size:.68rem}.grid .input-text{min-width:8rem;padding:.14rem .25rem}.grid .input-num{width:3.5rem;padding:.14rem .2rem}.grid input[type=checkbox],.cell-check input[type=checkbox]{width:.9rem;height:.9rem}.grid .btn--trash{width:1.7rem;min-width:1.7rem;height:1.7rem}.missing-dates-modal-backdrop,.charts-modal-backdrop{padding:max(.45rem, env(safe-area-inset-top,0px)) max(.35rem, env(safe-area-inset-right,0px)) max(.45rem, env(safe-area-inset-bottom,0px)) max(.35rem, env(safe-area-inset-left,0px))}.missing-dates-modal-dialog,.charts-modal-dialog{border-radius:var(--ct-radius);margin:.25rem auto .85rem}.missing-dates-modal-dialog{padding:2.4rem .75rem 1rem}.missing-dates-modal-actions,.import-actions,.punctual-row,.bulk-bar,.bulk-bar-actions{flex-direction:column;align-items:stretch}.missing-dates-modal-actions .btn,.import-actions .btn,.punctual-row .btn,.bulk-bar-actions .btn{width:100%}.charts-panel{padding:2.4rem .65rem .85rem}.charts-block{padding:.75rem}.charts-canvas{min-height:220px;margin-left:-.25rem;margin-right:-.25rem}}@media (width<=380px){.toolbar-meta{grid-template-columns:1fr}.title{font-size:1.45rem}.grid{--day-col-w:6.8rem;min-width:600px;font-size:.7rem}.grid .input-num{width:3rem}}@media (width<=720px){.table-wrap{max-height:none;box-shadow:none;background:0 0;border:none;overflow:visible}.grid{width:100%;min-width:0;font-size:.84rem;display:block}.grid thead{display:none}.grid tbody{display:block}.grid tbody tr{border:1px solid var(--ct-border-soft);border-radius:var(--ct-radius-sm);background:var(--ct-surface);box-shadow:0 1px 2px var(--ct-shadow-sm);flex-wrap:wrap;align-items:center;column-gap:.5rem;margin-bottom:.5rem;padding:.45rem .6rem .3rem;display:flex}.grid td.cell-select,.grid td.cell-day,.grid td.cell-actions{box-shadow:none;border-bottom:none;width:auto;min-width:0;max-width:none;padding:0;position:static}.grid td.cell-select{text-align:left;order:1}.grid td.cell-day{white-space:normal;color:var(--ct-text-heading);flex:auto;order:2;font-size:.94rem;font-weight:600}.grid td.cell-actions{text-align:right;order:3;margin-left:auto}.grid td[data-label=Observaciones],.grid td.cell-pending{border-bottom:1px dashed var(--ct-border-row);text-align:right;flex:0 0 100%;justify-content:space-between;align-items:center;gap:.6rem;width:100%;padding:.22rem 0;display:flex}.grid td[data-label=Observaciones]{order:4}.grid td.cell-pending{border-bottom:none;order:9;justify-content:flex-end;gap:.5rem;font-weight:700}.grid td[data-label=Horas],.grid td[data-label="Precio / h"],.grid td[data-label=Totales],.grid td.cell-check{border-bottom:1px dashed var(--ct-border-row);text-align:right;flex-direction:column;align-items:stretch;gap:.1rem;min-width:0;padding:.32rem 0;display:flex}.grid td[data-label=Horas]{flex:1.3 1 0;order:5}.grid td[data-label="Precio / h"]{flex:.8 1 0;order:6}.grid td[data-label=Totales]{font-variant-numeric:tabular-nums;color:var(--ct-text-heading);text-align:right;flex:1 1 0;order:7;font-weight:600}.grid td.cell-check{flex:none;order:8;align-items:flex-end;padding-left:.2rem}.grid td[data-label=Observaciones]:before,.grid td.cell-check:before,.grid td.cell-pending:before,.grid td[data-label=Horas]:before,.grid td[data-label="Precio / h"]:before,.grid td[data-label=Totales]:before{content:attr(data-label);color:var(--ct-text-muted);text-transform:uppercase;letter-spacing:.03em;flex:none;font-size:.66rem;font-weight:600}.grid td .input-text{text-align:right;border-color:var(--ct-border);background:var(--ct-surface);flex:auto;width:auto;min-width:0;max-width:none;padding:.24rem .4rem}.grid td[data-label=Horas] .input-num,.grid td[data-label="Precio / h"] .input-num{text-align:right;border-color:var(--ct-border);background:var(--ct-surface);width:100%;max-width:none;padding:.24rem .4rem}.grid td[data-label=Horas] .hours-field{width:100%}.grid td[data-label=Horas] .hours-field .input-num{flex:auto;width:auto;min-width:0}.grid input[type=checkbox],.cell-check input[type=checkbox]{width:1.05rem;height:1.05rem}.grid .btn--trash{width:1.75rem;min-width:1.75rem;height:1.75rem}.grid td.empty{text-align:center;border-bottom:none;flex:0 0 100%;width:100%;padding:.6rem .2rem}.grid td.empty:before{display:none}}
