@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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,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+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,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+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,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+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sora-latin-ext-600-normal-Cue1zdhl.woff2) format("woff2"),url(/assets/sora-latin-ext-600-normal-DLOJK0Ta.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Sora;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sora-latin-600-normal-Cdg4DaK0.woff2) format("woff2"),url(/assets/sora-latin-600-normal-1_7fyUAY.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sora-latin-ext-700-normal-DM0oy5s8.woff2) format("woff2"),url(/assets/sora-latin-ext-700-normal-Oc7uZIYt.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Sora;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sora-latin-700-normal-9waGdLWo.woff2) format("woff2"),url(/assets/sora-latin-700-normal-BKPfQAnC.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-primary: #114260;--color-primary-hover: #0c3149;--color-primary-soft: #e3ecf2;--color-accent: #1f9891;--color-accent-hover: #2bb3aa;--color-accent-soft: #eaf6f5;--color-bg: #f5f7f8;--color-surface: #ffffff;--color-surface-muted: #eef2f4;--color-border: #cbd5dc;--color-border-light: #e3e9ed;--color-text: #101418;--color-text-secondary: #33404a;--color-text-muted: #5b6770;--color-danger: #dc2626;--color-admin-bg: #eff4f8;--color-admin-border: #dce6ec;--font-heading: "Sora", "IBM Plex Sans", system-ui, sans-serif;--font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--radius: 8px;--radius-lg: 10px;--touch-target: 44px;--header-height: 56px;--focus-ring: 0 0 0 3px rgba(31, 152, 145, .25);--sidebar-width: 220px;font-family:var(--font-body)}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-weight:400}h1,h2,h3{font-family:var(--font-heading);color:var(--color-text)}h1{font-size:1.5rem;font-weight:700;margin:0 0 1rem}h2{font-size:1.2rem;font-weight:600;margin:1.5rem 0 .75rem}h3{font-size:1rem;font-weight:600;margin:0 0 .75rem}input,select,textarea{font-family:inherit;color:var(--color-text);background:var(--color-surface)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--focus-ring)}button:focus-visible,a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--color-primary);color:#e3ecf2;display:flex;flex-direction:column;padding:1.25rem 1rem;flex-shrink:0}.sidebar-body{display:flex;flex-direction:column;flex-grow:1}.sidebar nav{display:flex;flex-direction:column;gap:.25rem;flex-grow:1}.icon{flex-shrink:0;display:block}.sidebar nav a{display:flex;align-items:center;gap:10px;color:#c9d8e2;text-decoration:none;padding:.5rem .6rem;border-radius:var(--radius);font-size:.9rem;font-weight:500}.sidebar nav a:hover{background:#ffffff14;color:#fff}.sidebar nav a.active{background:var(--color-accent);color:#fff}.sidebar-footer{border-top:1px solid rgba(255,255,255,.15);padding-top:1rem;margin-top:1rem;display:flex;flex-direction:column;gap:.5rem}.user-name{font-size:.9rem;font-weight:600}.user-role{font-size:.75rem;color:#9fb4c2}.content{flex-grow:1;padding:1.5rem 2rem;max-width:1100px;width:100%;min-width:0;margin:0 auto}.panel,.two-col>*{min-width:0}.page-loading{padding:2rem;color:var(--color-text-muted)}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.page-header h1{margin:0}.button-row{display:flex;gap:.5rem}button{font-family:inherit;font-size:.9rem;cursor:pointer;border-radius:var(--radius)}.btn-primary{background:var(--color-accent);color:#fff;border:none;padding:.5rem 1rem;border-radius:var(--radius);font-weight:600;transition:background-color .15s ease}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--color-surface);color:var(--color-primary);border:1px solid var(--color-border);padding:.5rem 1rem;border-radius:var(--radius);font-weight:500;transition:border-color .15s ease,background-color .15s ease}.btn-secondary:hover:not(:disabled){background:var(--color-accent-soft);border-color:var(--color-accent)}.btn-secondary:disabled{opacity:.6;cursor:not-allowed}.btn-link{background:none;border:none;color:var(--color-primary);padding:0;font-size:.85rem;text-decoration:underline;border-radius:0}.btn-link:hover{color:var(--color-accent)}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:1rem}.card-grid-4{grid-template-columns:repeat(4,1fr)}.card-grid-3{grid-template-columns:repeat(3,1fr)}.section-title{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;margin:1.5rem 0 .75rem}.section-title h2{margin:0}.pill-admin{display:inline-block;padding:3px 10px;border-radius:12px;background:var(--color-primary);color:#fff;font-size:.7rem;font-weight:600;letter-spacing:.02em}.admin-section .stat-card,.admin-section .panel{background:var(--color-admin-bg);border:1px solid var(--color-admin-border)}.admin-section table th{background:var(--color-admin-border)}.admin-section table tbody tr:hover td{background:transparent}.show-mobile{display:none}.task-cards{list-style:none;margin:0;padding:0}.task-card{padding:.75rem 0;border-bottom:1px solid var(--color-border-light)}.task-card:last-child{border-bottom:none}.task-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.task-card-title{font-weight:600;min-width:0}.task-card-head .badge{flex-shrink:0}.task-card-meta{margin:.3rem 0 .5rem;font-size:.85rem;color:var(--color-text-muted)}.task-card .progress-inline{font-size:.8rem;color:var(--color-text-muted)}.task-card .progress-bar{flex-grow:1;width:auto;height:6px}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1rem}.stat-value{font-size:1.6rem;font-weight:700;font-family:var(--font-heading);color:var(--color-primary)}.stat-label{color:var(--color-text-muted);font-size:.8rem;margin-top:.25rem}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1rem 1.25rem;margin-bottom:1rem}.form-inline{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end}.form-inline label{display:flex;flex-direction:column;font-size:.8rem;color:var(--color-text-secondary);font-weight:500;gap:.25rem;flex:1 1 160px}.form-inline label.full-width{flex-basis:100%}.form-inline input,.form-inline select,.form-inline textarea{padding:.45rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;font-family:inherit}.form-inline textarea{min-height:60px;resize:vertical}.form-inline .checkbox-label{flex-direction:row;align-items:center;gap:.4rem}.search-box{width:100%;max-width:320px;padding:.5rem .7rem;border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1rem;font-size:.9rem}.filter-row{display:flex;gap:1rem;margin-bottom:1rem}.filter-row label{display:flex;flex-direction:column;font-size:.8rem;color:var(--color-text-secondary);font-weight:500;gap:.25rem}.filter-row select{padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;background:var(--color-surface)}table th,table td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--color-border-light);font-size:.88rem;color:var(--color-text-secondary)}table th{color:var(--color-text-muted);background:var(--color-surface-muted);border-bottom:1px solid var(--color-border);font-weight:600;font-size:.75rem;letter-spacing:.03em;text-transform:uppercase}table tbody tr:hover td{background:var(--color-bg)}a{color:var(--color-primary)}a:hover{color:var(--color-accent)}.badge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:.75rem;font-weight:600;white-space:nowrap}.badge-open{background:var(--color-accent-soft);color:var(--color-accent)}.badge-in_progress{background:#fef3c7;color:#92400e}.badge-waiting{background:#ede9fe;color:#6d28d9}.badge-done{background:#d1fae5;color:#065f46}.hint-text{color:var(--color-text-muted);font-size:.88rem}.breadcrumbs{margin-bottom:.75rem;font-size:.85rem;color:var(--color-text-muted)}.breadcrumbs .btn-link{font-size:.85rem}.nc-toolbar{margin-bottom:.75rem}.upload-label{display:inline-flex;align-items:center;cursor:pointer}.alert-success{background:#d1fae5;color:#065f46;padding:.5rem .75rem;border-radius:var(--radius);font-size:.85rem}.user-info-link{text-decoration:none;color:inherit;display:block;border-radius:var(--radius);padding:.25rem;margin:-.25rem}.user-info-link:hover{background:#ffffff14}.sidebar .btn-link{color:#c9d8e2;align-self:flex-start}.sidebar .btn-link:hover{color:#fff}.readonly-text{white-space:pre-wrap;font-size:.9rem}.timer-active{display:flex;align-items:center;justify-content:space-between;background:#ecfdf5;border-color:#a7f3d0}.alert-error{background:#fee2e2;color:#991b1b;padding:.5rem .75rem;border-radius:var(--radius);font-size:.85rem}.login-logo{display:flex;align-items:center;gap:10px}.login-logo-mak{font-family:var(--font-heading);font-weight:700;font-size:26px;color:#fff}.login-logo-mark{width:148px;height:auto;display:block}.sidebar .login-logo{gap:7px}.sidebar-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.menu-toggle{display:none;align-items:center;justify-content:center;width:var(--touch-target);height:var(--touch-target);padding:0;background:transparent;border:1px solid rgba(255,255,255,.25);color:#fff}.menu-toggle:hover{background:#ffffff14}.sidebar .login-logo-mak{font-size:18px}.sidebar .login-logo-mark{width:100px}.login-page{min-height:100vh;display:flex;background:var(--color-bg)}.login-brand-panel{flex:0 0 42%;min-height:100vh;background:var(--color-primary);padding:56px;display:flex;flex-direction:column;justify-content:space-between}.login-brand-copy{display:flex;flex-direction:column;gap:28px;max-width:380px}.login-bars{display:flex;align-items:flex-end;gap:10px;height:96px}.login-bars span{width:16px;border-radius:4px;background:var(--color-accent)}.login-bars span:nth-child(2),.login-bars span:nth-child(4){background:var(--color-accent-hover)}.login-bars span:nth-child(1){height:34px}.login-bars span:nth-child(2){height:58px}.login-bars span:nth-child(3){height:88px}.login-bars span:nth-child(4){height:48px}.login-bars span:nth-child(5){height:66px}.login-brand-copy h2{margin:0;font-size:26px;line-height:1.3;color:#fff;font-weight:700}.login-brand-copy p{margin:0;font-size:15px;line-height:1.6;color:#b9cbd6}.login-copyright{margin:0;font-size:13px;color:#6e8ca0}.login-form-panel{flex:1;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:48px}.login-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:22px}.login-card h1{margin:0}.login-card .subtitle{margin:-14px 0 0;color:var(--color-text-muted);font-size:.85rem}.login-hint{margin:4px 0 0;font-size:12.5px;color:var(--color-text-muted);text-align:center}.login-card label{display:flex;flex-direction:column;font-size:.85rem;color:var(--color-text-secondary);font-weight:500;gap:.3rem}.login-card input{padding:.55rem .7rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.95rem}.login-card input[type=checkbox]{padding:0;width:18px;height:18px}.login-card .checkbox-label{flex-direction:row;align-items:center;gap:.5rem}.login-switch{align-self:center;margin-top:-10px;font-size:.85rem}.setup-steps{margin:0;padding-left:1.2rem;display:flex;flex-direction:column;gap:.6rem;font-size:.9rem;color:var(--color-text-secondary)}.setup-qr{display:block;width:180px;height:180px;margin:.6rem 0;border:1px solid var(--color-border-light);border-radius:var(--radius);background:#fff}.setup-steps details{font-size:.85rem}.setup-steps summary{cursor:pointer;color:var(--color-primary)}.setup-secret{display:block;margin:.4rem 0;padding:.4rem .6rem;background:var(--color-surface-muted);border-radius:var(--radius);font-size:.85rem;word-break:break-all}.recovery-codes ul{list-style:none;margin:0 0 .75rem;padding:.75rem;display:grid;grid-template-columns:repeat(2,1fr);gap:.35rem 1rem;background:var(--color-surface-muted);border-radius:var(--radius);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.95rem;text-align:center}.recovery-codes .button-row{flex-wrap:wrap}.twofa-ok{color:#065f46}.twofa-open{color:var(--color-danger)}.note-edit{display:flex;flex-direction:column;gap:.4rem;min-width:220px}.note-edit textarea{padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;resize:vertical}.mail-drop-hint{position:sticky;top:.5rem;z-index:20;margin-bottom:1rem;padding:.75rem 1rem;border:2px dashed var(--color-accent);border-radius:var(--radius-lg);background:var(--color-accent-soft);color:var(--color-primary);font-weight:600;text-align:center}.planner-cell.is-drop-target{background:var(--color-accent-soft);box-shadow:inset 0 0 0 2px var(--color-accent)}.mail-draft{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.6rem .8rem;border-left:3px solid var(--color-accent);border-radius:var(--radius);background:var(--color-accent-soft);font-size:.9rem}.attachment-list{list-style:none;margin:0 0 .75rem;padding:0}.attachment-list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;padding:.5rem 0;border-bottom:1px solid var(--color-border-light)}.attachment-list li:last-child{border-bottom:none}.attachment-drop{padding:1rem;border:2px dashed var(--color-border);border-radius:var(--radius-lg);text-align:center;color:var(--color-text-muted);font-size:.9rem}.attachment-drop.is-over{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-primary)}.tab-row{margin-bottom:1rem;flex-wrap:wrap}.pre-line{white-space:pre-line}.billing-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem}.billing-sum{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.billing-rate{display:flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--color-text-muted)}.billing-rate input{width:5.5rem}.filter-row input:not([type=checkbox]),.billing-rate input,.sevdesk-select{padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem}.sevdesk-select{max-width:100%}.billing-sepa{display:flex;align-items:center;gap:.4rem;margin-top:.6rem;font-size:.85rem;color:var(--color-text-secondary)}.billing-warning{margin-top:.4rem}.billing-actions{justify-content:space-between;align-items:center;flex-wrap:wrap;margin-top:.75rem}.panel.filter-row{flex-wrap:wrap;align-items:flex-end;justify-content:space-between}.filter-row .checkbox-label{flex-direction:row;align-items:center;gap:.4rem}.billing-card .table-scroll{margin-top:.75rem}.planner-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.planner-week-label{font-weight:600;align-self:center}.planner-filter{display:flex;flex-direction:column;font-size:.8rem;color:var(--color-text-secondary);font-weight:500;gap:.25rem}.planner-filter select{padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius)}.planner-range-hint{padding:.45rem 0;color:var(--color-text)}.planner{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow-x:auto;margin-bottom:1rem}.planner-row{display:grid;grid-template-columns:150px repeat(7,minmax(110px,1fr));min-width:920px;border-bottom:1px solid var(--color-border)}.planner-row:last-child{border-bottom:none}.planner-name{grid-column:1;padding:.6rem .75rem;font-weight:600;font-size:.88rem;border-right:1px solid var(--color-border);position:sticky;left:0;background:var(--color-surface);z-index:2}.planner-day-head{padding:.5rem .6rem;font-size:.78rem;color:var(--color-text-muted);border-right:1px solid var(--color-border)}.planner-day-head span{font-weight:600;text-transform:uppercase}.planner-day-head:last-child,.planner-cell:nth-child(8){border-right:none}.planner-day-head.is-today{color:var(--color-accent);font-weight:600}.planner-cell{border-right:1px solid var(--color-border);min-height:52px}.planner-cell.is-weekend,.planner-day-head.is-weekend{background:var(--color-surface-muted)}.planner-cell.is-today{background:var(--color-accent-soft)}.planner-cell.is-clickable{cursor:copy}.planner-cell.is-clickable:hover{background:var(--color-bg)}.planner-task{position:relative;z-index:1;margin:4px;padding:.35rem .5rem;border-radius:var(--radius);border-left:4px solid var(--color-primary);background:var(--color-primary-soft);color:var(--color-text);text-decoration:none;font-size:.8rem;overflow:hidden;min-width:0}.planner-task:hover{filter:brightness(.96)}.planner-task.status-in_progress{border-left-color:#d97706;background:#fef3c7}.planner-task.status-waiting{border-left-color:#7c3aed;background:#ede9fe}.planner-task.status-done{border-left-color:#059669;background:#d1fae5;opacity:.75}.planner-task.cont-before{border-top-left-radius:0;border-bottom-left-radius:0;border-left-style:dashed}.planner-task.cont-after{border-top-right-radius:0;border-bottom-right-radius:0}.planner-task-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.planner-task.status-done .planner-task-title{text-decoration:line-through}.prio-dot{display:inline-block;color:var(--color-danger);font-weight:700;margin-right:.25rem}.planner-task-meta{display:flex;flex-wrap:wrap;gap:.15rem .5rem;font-size:.72rem;color:var(--color-text-muted);margin:.15rem 0 .3rem}.planner-empty{padding:1rem}.progress-bar{height:4px;background:#00000014;border-radius:999px;overflow:hidden}.progress-bar>div{height:100%;background:var(--color-accent)}.progress-inline{display:flex;align-items:center;gap:.5rem}.progress-inline .progress-bar{width:100px;height:6px}.task-summary{display:flex;flex-wrap:wrap;gap:1rem 2rem;font-size:.9rem}.task-summary .stat-label{margin-bottom:.2rem}.form-inline h3.full-width,.form-inline .full-width{flex-basis:100%}.task-updates{list-style:none;margin:0;padding:0}.task-updates li{padding:.75rem 0;border-bottom:1px solid var(--color-border)}.task-updates li:last-child{border-bottom:none}.task-update-head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.3rem}.clock-widget{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.clock-widget.is-absent{background:var(--color-accent-soft);border-color:var(--color-accent-soft);border-left:4px solid var(--color-accent)}.clock-widget.is-present{background:#ecfdf5;border-color:#a7f3d0}.clock-widget.clock-warning{background:#fffbeb;border-color:#fcd34d}.clock-widget.clock-warning input{padding:.45rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit}.clock-state{font-weight:600;font-size:1.05rem;margin-bottom:.2rem}.btn-clock{min-width:140px;padding:.75rem 1.5rem;border:none;border-radius:var(--radius);font-size:1.05rem;font-weight:700;color:#fff;cursor:pointer}.btn-clock:disabled{opacity:.6;cursor:default}.btn-clock-in{background:#059669}.btn-clock-in:hover{background:#047857}.btn-clock-out{background:var(--color-danger)}.btn-clock-out:hover{background:#b91c1c}.present-list{display:flex;flex-wrap:wrap;gap:.5rem}.present-chip{background:#ecfdf5;border:1px solid #a7f3d0;border-radius:999px;padding:.2rem .7rem;font-size:.88rem}.text-negative{color:var(--color-danger)}.text-positive{color:#059669}.attendance-table tr.row-free td{background:var(--color-surface-muted);color:var(--color-text-muted)}.attendance-table tr.row-today td{background:var(--color-accent-soft)}.day-tag{display:inline-block;margin-left:.4rem;padding:.05rem .4rem;border-radius:4px;background:var(--color-surface-muted);color:var(--color-text-secondary);font-size:.72rem}.day-tag.tag-vacation,.planner-vacation{background:#fce7f3;color:#9d174d}.stamp-chip{display:inline-block;margin:0 .3rem .2rem 0;padding:.1rem .45rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);font-size:.82rem;font-family:inherit;color:inherit}.stamp-chip.is-clickable{cursor:pointer}.stamp-chip.is-clickable:hover{border-color:var(--color-primary)}.stamp-chip.is-edited{border-style:dashed}.input-small{width:5.5rem;padding:.3rem .4rem;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit}.year-nav{align-items:center}.badge-vac-requested{background:#fef3c7;color:#92400e}.badge-vac-approved{background:#d1fae5;color:#065f46}.badge-vac-rejected{background:#fee2e2;color:#991b1b}.badge-vac-cancelled{background:var(--color-surface-muted);color:var(--color-text-muted)}.planner-vacation{position:relative;z-index:1;margin:4px;padding:.35rem .5rem;border-radius:var(--radius);border-left:4px solid #db2777;font-size:.8rem;font-weight:600;text-decoration:none;align-self:start;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.planner-vacation.is-requested{background:repeating-linear-gradient(135deg,#fce7f3,#fce7f3 6px,#fdf2f8 6px,#fdf2f8 12px);border-left-style:dashed}.planner-holiday{font-size:.7rem;color:#9d174d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}a.stat-link{text-decoration:none;color:inherit}a.stat-link:hover{border-color:var(--color-primary)}.vcal-scroll{overflow-x:auto}table.vcal{border-collapse:separate;border-spacing:0;width:100%;table-layout:fixed;min-width:900px}table.vcal th,table.vcal td{padding:0;height:28px;text-align:center;font-size:.72rem;border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border-light);text-transform:none}table.vcal thead th{background:var(--color-surface);height:auto;padding:.25rem 0;color:var(--color-text-muted);font-weight:600}table.vcal .vcal-name{width:140px;padding:0 .5rem;text-align:left;font-size:.85rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:sticky;left:0;background:var(--color-surface);z-index:1}table.vcal tbody tr:hover td{background:inherit}.vcal-wd{font-weight:400}.vcal-holiday-dot{color:#db2777;line-height:.8}table.vcal .is-free{background:var(--color-surface-muted)}table.vcal th.is-today,table.vcal td.is-today{box-shadow:inset 2px 0 0 var(--color-accent),inset -2px 0 0 var(--color-accent)}table.vcal th.is-today{color:var(--color-accent)}table.vcal td.vac-approved{background:#f472b6}table.vcal td.vac-requested{background:repeating-linear-gradient(135deg,#fbcfe8,#fbcfe8 4px,#fdf2f8 4px,#fdf2f8 8px)}table.vcal td.vac-offday{opacity:.45}table.vcal tr.is-me .vcal-name{color:var(--color-primary)}table.vcal tr.vcal-sum td{color:var(--color-text-muted);font-weight:600;border-bottom:none}table.vcal td.is-occasion{font-size:.85rem;line-height:1;box-shadow:inset 0 0 0 2px #facc15}.vcal-legend{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;margin-top:.6rem;font-size:.8rem}.vcal-legend i{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:.3rem;border:1px solid var(--color-border)}.vcal-legend i.vac-approved{background:#f472b6}.vcal-legend i.vac-requested{background:repeating-linear-gradient(135deg,#fbcfe8,#fbcfe8 3px,#fdf2f8 3px,#fdf2f8 6px)}.vcal-legend i.is-free{background:var(--color-surface-muted)}.break-hint{margin-top:.25rem;font-size:.82rem;color:#b45309;font-weight:600}.break-deducted{color:#b45309;font-weight:600}.occasion-list{list-style:none;margin:0;padding:0}.occasion-list li{display:flex;align-items:center;gap:.6rem;padding:.3rem 0;font-size:.9rem}.occasion-list li.is-today{font-weight:700}.occasion-list li.is-past{color:var(--color-text-muted)}.occasion-badge{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;border-radius:50%;background:var(--color-accent-soft);color:var(--color-accent)}.occasion-day{min-width:6.5rem;color:var(--color-text-muted)}.day-tag.tag-school,.planner-vacation.is-school{background:#e0e7ff;color:#3730a3}.planner-vacation.is-school{border-left-color:#6366f1}table.vcal td.vac-school,.vcal-legend i.vac-school{background:#818cf8}.school-days{display:flex;flex-wrap:wrap;gap:.35rem;margin:.5rem 0 0;padding:0;list-style:none}.school-days li{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .3rem .15rem .55rem;border-radius:999px;background:#e0e7ff;color:#3730a3;font-size:.8rem}.school-days li button{border:none;background:none;color:inherit;cursor:pointer;font-size:1rem;line-height:1;padding:0 .25rem}.weekday-picks{display:flex;gap:.6rem;flex-wrap:wrap}.weekday-picks label{flex:0 0 auto;flex-direction:row!important;align-items:center;gap:.3rem!important;min-width:3.5rem}.school-remove{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border-light)}.day-tag.tag-sick,.planner-vacation.is-sick{background:#ffedd5;color:#9a3412}.planner-vacation.is-sick{border-left-color:#ea580c}table.vcal td.vac-sick,.vcal-legend i.vac-sick{background:#fb923c}.sick-form{margin-bottom:1rem}.input-name{width:11rem;padding:.3rem .4rem;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit}.role-select{padding:.3rem .4rem;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit}.role-table th{white-space:normal;min-width:6.5rem;vertical-align:bottom}.role-table td.role-check{text-align:center}.role-table td.role-check input{width:18px;height:18px}.role-new{margin-top:1rem}.permission-legend{display:grid;grid-template-columns:max-content 1fr;gap:.35rem 1rem;margin:1rem 0 0;font-size:.85rem;color:var(--color-text-secondary)}.permission-legend dt{font-weight:600;color:var(--color-text)}.permission-legend dd{margin:0}@media (max-width: 768px){.permission-legend{grid-template-columns:1fr}.permission-legend dd{margin-bottom:.4rem}}.input-date-small{padding:.25rem .4rem;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit;font-size:.85rem}.asset-filters{flex-wrap:wrap;align-items:flex-end}.asset-filters input:not([type=checkbox]){padding:.4rem .6rem;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit}.asset-filters .checkbox-inline{flex-direction:row;align-items:center;gap:.35rem;padding-bottom:.45rem}.asset-new{margin-left:auto}.asset-name{font-weight:600;text-align:left;padding:0}.asset-table tr.row-retired td{color:var(--color-text-muted)}.expiry-expired{color:var(--color-danger);font-weight:600}.expiry-soon{color:#b45309;font-weight:600}@media (max-width: 768px){.app-shell{flex-direction:column}.sidebar{width:100%;height:var(--header-height);padding:0 1rem;justify-content:center;position:sticky;top:0;z-index:30}.sidebar-top{margin-bottom:0}.menu-toggle{display:inline-flex}.sidebar-body{position:fixed;top:var(--header-height);bottom:0;left:0;width:min(280px,85vw);padding:.75rem 1rem 1rem;overflow-y:auto;background:var(--color-primary);box-shadow:4px 0 16px #0003;transform:translate(-100%);visibility:hidden;transition:transform .2s ease,visibility .2s;z-index:30}.sidebar.is-open .sidebar-body{transform:translate(0);visibility:visible}.sidebar-backdrop{position:fixed;inset:var(--header-height) 0 0 0;background:#10141873;z-index:25}body.menu-open{overflow:hidden}.sidebar nav a{min-height:var(--touch-target);padding:0 .75rem}.sidebar .btn-link,.user-info-link{min-height:var(--touch-target);display:flex;align-items:center}.btn-primary,.btn-secondary,.btn-clock{min-height:var(--touch-target)}.form-inline input:not([type=checkbox]),.form-inline select,.filter-row select,.search-box{min-height:var(--touch-target)}.card-grid-4,.card-grid-3{grid-template-columns:repeat(2,1fr)}.hide-mobile{display:none}.show-mobile{display:block}.content{padding:1rem}.two-col{grid-template-columns:1fr}.login-page{flex-direction:column}.login-brand-panel{flex:none;min-height:0;padding:24px}.login-brand-copy,.login-copyright{display:none}.login-form-panel{min-height:0;padding:32px 16px}}td.role-check{text-align:center}
