:root{--bg: #eceff4;--surface: #ffffff;--surface-alt: #e5e9f0;--text: #2e3440;--muted: #4c566a;--border: #d8dee9;--primary: #5e81ac;--primary-strong: #3b6ea5;--success: #a3be8c;--warning: #ebcb8b;--danger: #bf616a;--radius: 10px;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--text-xs: .7rem;--text-sm: .8rem;--text-base: .92rem;--text-md: 1rem;--text-lg: 1.1rem;--text-xl: 1.25rem;--color-balance-positive: #2e7d32;--color-balance-negative: #b3261e;--color-status-success-bg: #eaf7e0;--color-status-success-text: #2e7d32;--color-status-info-bg: #e8f0fe;--color-status-info-text: #1a73e8;--color-status-warning-bg: #fff5dd;--color-status-warning-text: #b8860b;--color-status-danger-bg: #fdecef;--color-status-danger-text: #a73645;--color-danger-hover: #8f2d3b;--color-editing-row: #eef3fb;--color-overlay: rgba(13, 22, 35, .42);--color-cal-complete: #a3be8c;--color-cal-complete-bg: #eaf7e0;--color-cal-incomplete: #d08770;--color-cal-incomplete-bg: #fde8d8;--color-cal-invalid: #bf616a;--color-cal-invalid-bg: #fdecef;--color-cal-empty: #d8dee9;--color-cal-holiday: #81a1c1;--color-cal-holiday-bg: #e8f0fe;--color-cal-absence: #b48ead;--color-cal-absence-bg: #f4e8f4;--color-cal-nonwork: #ebcb8b;--color-cal-nonwork-bg: #fff5dd;--radius-sm: 6px;--radius-md: var(--radius);--radius-lg: 14px;--radius-full: 999px}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit}button,input,select{font:inherit}.app-shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:1rem}.sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:1rem}.sidebar-close,.menu-toggle,.nav-backdrop{display:none}.brand{font-weight:700;margin-bottom:1rem}.sidebar-head .brand{margin-bottom:0}.topbar-left{display:flex;align-items:center;gap:.6rem}.nav-list{list-style:none;padding:0;margin:0;display:grid;gap:.3rem}.nav-link{display:block;text-decoration:none;color:var(--text);border-radius:8px;padding:.45rem .6rem}.nav-link.active{background:var(--surface-alt);color:var(--primary-strong);font-weight:600}.main-region{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--border);background:var(--surface)}.page{padding:1rem}.page-header{margin-bottom:1rem}.page-header h1{margin:0;font-size:1.25rem}.page-header p{margin:.35rem 0 0;color:var(--muted)}.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}@media(max-width:1024px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(82vw,320px);z-index:30;border-right:1px solid var(--border);border-bottom:0;transform:translate(-105%);transition:transform .22s ease;overflow-y:auto;box-shadow:0 8px 28px #0000002e}.sidebar.open{transform:translate(0)}.sidebar-close,.menu-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px}.nav-backdrop{display:block;position:fixed;inset:0;z-index:25;border:0;background:var(--color-overlay)}.page-header-actions{display:grid;grid-template-columns:1fr}.page-header-actions>*{width:100%}}.skip-link{position:absolute;top:-100%;left:0;background:var(--primary);color:#fff;padding:var(--space-sm) var(--space-md);z-index:1000;border-radius:0 0 var(--radius-sm) var(--radius-sm);font-weight:600;text-decoration:none}.skip-link:focus{top:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem}.card h3{margin-top:0;margin-bottom:.35rem}.actions{display:flex;gap:.6rem;flex-wrap:wrap}.btn{border:none;border-radius:8px;padding:.45rem .75rem;cursor:pointer}.btn:focus-visible,.nav-link:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,.calendar-tile:focus-visible,.week-strip-cell:focus-visible{outline:2px solid var(--primary-strong);outline-offset:2px}.btn:disabled{opacity:.65;cursor:not-allowed}.btn.primary{background:var(--primary);color:#fff}.btn.outline{border:1px solid var(--border);background:transparent}.btn.secondary{border:1px solid var(--border);background:var(--surface-alt);color:var(--text)}.btn.danger{background:var(--color-status-danger-text);color:#fff;transition:background-color .15s ease-in-out}.btn.danger:hover:not(:disabled){background:var(--color-danger-hover)}.status{display:inline-flex;border-radius:999px;padding:.1rem .6rem;font-size:.85rem;text-transform:capitalize}.status.success{background:var(--color-status-success-bg);color:#4f6a3f}.status.info{background:var(--color-status-info-bg);color:#2b5da8}.status.warning{background:var(--color-status-warning-bg);color:#8a6a21}.status.danger{background:var(--color-status-danger-bg);color:#8b3d4a}.status.neutral{background:var(--surface-alt);color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.inline-error{color:var(--danger)}.inline-warning{color:#8a6a21;margin:0}.import-config-grid{grid-template-columns:1fr}.import-config-card,.import-preview-card{border:1px solid var(--border);border-radius:var(--radius);padding:.8rem;background:var(--surface-alt)}.totals-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.8rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-alt);padding:.7rem;margin-bottom:.9rem}.totals-item{display:grid;gap:.2rem}.meta{color:var(--muted);font-size:.9rem}.time-value{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.balance-positive{color:var(--color-balance-positive)}.balance-negative{color:var(--color-balance-negative)}.balance-neutral{color:var(--text)}.comment-placeholder{color:#8b95a5}.comment-text{display:inline-block;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-events{border:1px solid var(--border);border-radius:8px;padding:.6rem}.day-events-invalid{border-color:#e5a1aa;box-shadow:inset 0 0 0 1px #f7d6da}.quick-stamp-btn{width:min(100%,420px);min-height:56px;font-size:1.1rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:.5rem}.btn-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.quick-stamp-preview{margin-top:.5rem}.quick-stamp-success{margin:.4rem 0 0;color:var(--color-status-success-text);font-weight:600;animation:fade-in .2s ease-in}.dashboard-capture-layout{display:grid;grid-template-columns:minmax(320px,1fr) minmax(320px,1fr);gap:1rem}.dashboard-capture-column,.dashboard-metrics-column{display:grid;gap:1rem;align-content:start}.dashboard-manual-card{margin-top:0}.dashboard-manual-form{margin-bottom:0}.dashboard-events-card h3{margin-bottom:.45rem}.dashboard-event-list{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}.dashboard-event-list li{display:flex;align-items:center;justify-content:space-between;gap:.55rem;border:1px solid var(--border);border-radius:8px;padding:.45rem .55rem;background:var(--surface-alt)}.dashboard-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-context-card h3,.dashboard-calendar-header h3{margin-bottom:.35rem}.dashboard-context-chips{display:flex;flex-wrap:wrap;gap:.45rem}.dashboard-context-chip{display:inline-flex;align-items:center;width:fit-content;font-size:.72rem;border-radius:999px;padding:.12rem .5rem;border:1px solid}.dashboard-context-holiday{color:#6b3a9a;background:#f2e9fc;border-color:#d8c3ee}.dashboard-context-non-working{color:#6a4e22;background:#fbf2df;border-color:#e9d7aa}.dashboard-calendar-shell{display:grid;gap:.85rem}.dashboard-context-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem}.dashboard-calendar-embedded{display:grid;gap:.6rem}.dashboard-calendar-card{margin-top:1rem}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem}.week-strip-cell{border:1px solid var(--border);border-radius:8px;padding:.45rem;background:var(--surface);cursor:pointer;display:grid;gap:.2rem;text-align:left}.week-strip-cell span{font-size:.8rem;color:var(--muted)}.week-strip-cell strong{font-size:1rem}.absence-badge{display:inline-flex;align-items:center;width:fit-content;font-size:.72rem;border-radius:999px;padding:.12rem .45rem;border:1px solid}.absence-badge-vacation{color:#1f4f82;background:#ebf2fc;border-color:#b6cdea}.absence-badge-sickness{color:#8d3a3d;background:#fdeef1;border-color:#e8b6bf}.week-strip-complete{border-color:#bfd8a9;background:#f3f9ed}.week-strip-incomplete{border-color:#ead7a8;background:#fff9eb}.week-strip-invalid{border-color:#e8b1b8;background:#fff1f3}.day-timeline{display:grid;gap:.7rem}.day-timeline-flow{display:flex;align-items:stretch;gap:.45rem;overflow-x:auto;padding-bottom:.2rem}.day-timeline-node-wrap{display:flex;align-items:center;flex:0 0 auto}.day-timeline-node{border:1px solid var(--border);border-radius:8px;background:var(--surface-alt);padding:.5rem;min-width:130px;display:grid;gap:.3rem}.day-timeline-node.is-in{background:#edf6e8;border-color:#bad5a6}.day-timeline-node.is-out{background:#edf1f7;border-color:#c7d2e2}.day-timeline-node.is-invalid{background:#fff1f3;border-color:#e8b1b8}.day-timeline-type{font-size:.78rem;color:var(--muted)}.day-timeline-meta{display:flex;flex-wrap:wrap;gap:.25rem}.day-timeline-flag{border-radius:999px;padding:.1rem .4rem;font-size:.72rem;background:var(--surface);border:1px solid var(--border)}.day-timeline-flag.danger{background:var(--color-status-danger-bg);border-color:#e8b1b8;color:#8b3d4a}.day-timeline-connector{width:18px;height:2px;background:#9aa7bd;display:inline-block;margin:0 .2rem}.day-timeline-connector.is-invalid{background:var(--color-cal-invalid)}.day-intervals{border:1px solid var(--border);border-radius:8px;background:var(--surface-alt);padding:.6rem}.day-intervals strong{display:block;margin-bottom:.35rem}.day-intervals ul{margin:0;padding-left:1rem}.day-intervals li.is-open{color:#8a6a21;font-weight:600}@media(max-width:1024px){.quick-stamp-btn{width:100%}.dashboard-capture-layout,.dashboard-kpi-grid,.dashboard-context-summary{grid-template-columns:1fr}}@media(max-width:840px){.week-strip{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:680px){.my-time-calendar-section .actions{align-items:center}}.section-gap{margin-top:var(--space-md)}.section-gap-lg{margin-top:var(--space-lg)}.section-gap-sm{margin-top:var(--space-sm)}.section-gap-xs{margin-top:var(--space-xs)}.mb-sm{margin-bottom:var(--space-sm)}.flex-row{display:flex;gap:var(--space-sm)}.flex-between{display:flex;justify-content:space-between}.full-span{grid-column:1 / -1}.centered-card{max-width:560px;margin:var(--space-2xl) auto}.meta-reset{margin:0}.heading-lg{font-size:var(--text-xl);font-weight:600}.confirm-dialog{border:none;border-radius:var(--radius);padding:var(--space-lg);max-width:420px;box-shadow:0 8px 32px #0003}.confirm-dialog::backdrop{background:var(--color-overlay)}.confirm-dialog h3{margin:0 0 var(--space-sm)}.confirm-dialog p{margin:0 0 var(--space-lg);color:var(--muted)}.confirm-dialog-actions{display:flex;gap:var(--space-sm);justify-content:flex-end}.toast-container{position:fixed;bottom:var(--space-lg);right:var(--space-lg);z-index:9999;display:flex;flex-direction:column;gap:var(--space-sm);pointer-events:none}.toast{pointer-events:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);box-shadow:0 4px 16px #0000001f;font-size:var(--text-sm);animation:toast-in .2s ease-in}.toast.toast-error{border-color:var(--color-status-danger-text);color:var(--color-status-danger-text)}.toast.toast-success{border-color:var(--color-status-success-text);color:var(--color-status-success-text)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.app-form{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));align-items:start}.app-form>label{display:grid;gap:.35rem;align-content:start;min-width:0;color:var(--muted);font-size:.82rem;font-weight:600}.app-form>label>input,.app-form>label>select,.app-form>label>textarea{width:100%;min-width:0;min-height:2.4rem;box-sizing:border-box}.app-form>.actions,.app-form>.inline-error,.app-form>.meta{grid-column:1 / -1}.app-form-field{display:grid;gap:.35rem;align-content:start;min-width:0;color:var(--muted);font-size:.82rem;font-weight:600}.app-form-field>input,.app-form-field>select,.app-form-field>textarea{width:100%;min-width:0;min-height:2.4rem;box-sizing:border-box}.app-form-field-wide{grid-column:1 / -1}.app-form-field.app-form-field-toggle{display:inline-flex;align-items:center;gap:.45rem;min-height:2.4rem;font-weight:600;grid-column:1 / -1}.app-form-overrides{display:grid;gap:.4rem;padding:.55rem .65rem;border:1px dashed var(--border);border-radius:10px;background:var(--surface-alt);grid-column:1 / -1}.app-form-weekdays label{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .45rem;border:1px solid var(--border);border-radius:999px;background:var(--surface)}.app-form-check{display:inline-flex!important;align-items:center;gap:.5rem;min-height:2.4rem;color:var(--text)!important;font-size:.92rem!important;font-weight:500!important}.inline-form{display:grid;gap:.7rem;margin-bottom:.9rem;padding:.8rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-alt)}.inline-form-row{display:grid;gap:.4rem}.inline-form-row input,.inline-form-row select{max-width:100%}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;background:var(--surface)}.table th,.table td{text-align:left;padding:.55rem;border-bottom:1px solid var(--border)}.table th{font-size:.8rem;text-transform:uppercase;color:var(--muted)}.data-grid-table tbody tr:nth-child(odd){background:#fafbfd}.data-grid-table thead th{position:sticky;top:0;background:var(--surface);z-index:1}.data-grid-toolbar,.data-grid-pagination{display:flex;justify-content:space-between;align-items:center;gap:.8rem;margin-bottom:.8rem}.data-grid-pagination{margin-top:.8rem;margin-bottom:0}.data-grid-search{min-width:220px;max-width:360px;width:100%}.sort-header,.plain-header{border:0;background:transparent;color:inherit;font:inherit;font-weight:600;padding:0}.sort-header{cursor:pointer}.table-state{display:grid;gap:.4rem;text-align:center;padding:1rem}.table-state-error{color:var(--danger)}.table tr.is-editing{background:var(--color-editing-row)}.week-table tbody tr{cursor:default}.week-table tbody tr.is-today{outline:2px solid #93aac9;outline-offset:-2px}.week-table tbody tr.needs-attention{background:#fff8e8}@media(max-width:840px){.week-table thead{display:none}.week-table tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem .75rem;border-bottom:1px solid var(--border);padding:.55rem 0}.week-table td{display:grid;gap:.12rem;border-bottom:0;padding:0}.week-table td:before{content:attr(data-label);color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.02em}}@media(max-width:680px){.data-grid-toolbar,.data-grid-pagination{align-items:stretch;flex-direction:column}.data-grid-pagination .actions{width:100%;justify-content:space-between}}.calendar-header h3{margin-bottom:0}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.4rem}.calendar-weekday{font-size:.8rem;color:var(--muted);text-align:center;padding:.25rem 0}.calendar-empty{min-height:80px}.calendar-tile{border:1px solid var(--border);border-radius:8px;min-height:80px;padding:.45rem;display:grid;align-content:space-between;text-align:left}.calendar-day-number{font-weight:600}.calendar-day-number-row{display:flex;justify-content:space-between;align-items:center}.calendar-day-minutes{font-size:.82rem;color:var(--muted)}.calendar-day-status-text{font-size:.75rem;color:var(--muted)}.calendar-absence-badge{display:inline-flex;align-items:center;width:fit-content;font-size:.68rem;border-radius:999px;padding:.08rem .4rem;border:1px solid}.calendar-context-badge{display:inline-flex;align-items:center;width:fit-content;font-size:.65rem;border-radius:999px;padding:.06rem .35rem;border:1px solid}.calendar-context-holiday{color:#6b3a9a;background:#f2e9fc;border-color:#d8c3ee}.calendar-context-non-working{color:#6a4e22;background:#fbf2df;border-color:#e9d7aa}.calendar-absence-vacation{color:#1f4f82;background:#eaf2fc;border-color:#b6cdea}.calendar-absence-sickness{color:#8d3a3d;background:#fdeef1;border-color:#e8b6bf}.calendar-status-dot{width:8px;height:8px;border-radius:50%;background:#ced4df}.calendar-status-valid{background:#43a047}.calendar-status-incomplete{background:#ef8f00}.calendar-status-invalid{background:#d32f2f}.calendar-tile-no-data{background:#f5f7fa}.calendar-tile-complete{background:#edf4e8;border-color:#c8d9bd}.calendar-tile-incomplete{background:#fff6e5;border-color:#f0deb3}.calendar-tile-invalid{background:#fae9eb;border-color:#e9c1c6}.calendar-tile-today{outline:1px solid #7fa0c6;outline-offset:1px}.calendar-tile-selected{background:#dbe8f8;border-color:#7ea0c4;box-shadow:inset 0 0 0 1px var(--primary-strong)}.year-month-grid{display:grid;gap:.9rem;grid-template-columns:repeat(4,minmax(0,1fr))}.year-month-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:.85rem;display:grid;gap:.75rem;text-align:left;cursor:pointer}.year-month-card:hover{background:#fbfcfe;border-color:#bcc8da}.year-month-card-header{display:flex;justify-content:space-between;align-items:start;gap:.5rem}.year-month-card-header h3{margin:0;text-transform:capitalize;font-size:1rem}.year-status-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.15rem .45rem;border-radius:999px;font-size:.72rem;font-weight:600}.year-status-dot{width:8px;height:8px;border-radius:999px;background:currentColor}.year-status-valid{color:var(--color-status-success-text);background:#edf7ed}.year-status-incomplete{color:#9a640f;background:#fff6e5}.year-status-invalid{color:#a62c2c;background:#fdeeee}.year-month-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;margin:0}.year-month-summary dt{font-size:.76rem;color:var(--muted)}.year-month-summary dd{margin:.1rem 0 0;font-size:.92rem;font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.year-month-summary dd.balance-positive{color:var(--color-balance-positive);font-weight:600}.year-month-summary dd.balance-negative{color:var(--color-balance-negative);font-weight:600}.year-mini-grid-wrap{border-top:1px solid var(--border);padding-top:.6rem}.year-mini-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.2rem;align-items:center}.year-mini-weekday{text-align:center;font-size:.62rem;color:var(--muted);font-weight:600;line-height:1;padding-bottom:.15rem}.year-week-balance-row{grid-column:1 / -1;display:flex;justify-content:flex-end;padding:.05rem 0}.year-mini-dot{position:relative;width:100%;aspect-ratio:1 / 1.4;border-radius:2px;background:#d7dce5;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center}.year-mini-dot-placeholder{background:transparent}.year-mini-dot-valid{background:#43a047}.year-mini-dot-incomplete{background:#ef8f00}.year-mini-dot-invalid{background:#d32f2f}.year-mini-dot-empty{background:#d4d9e1}.year-mini-dot-non-working-period{background:#f3d9a6}.year-mini-dot-absence-layer{position:absolute;top:0;bottom:0;z-index:1}.year-mini-dot-absence-left{left:0;width:50%}.year-mini-dot-absence-right{right:0;width:50%}.year-mini-dot-absence-vacation{background:#88c0d0}.year-mini-dot-absence-sickness{background:#d08770}.year-mini-dot-actual{z-index:2;font-size:.55rem;line-height:1;color:#fffffff2;font-weight:700;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.5)}.year-mini-dot-light .year-mini-dot-actual{color:#000000bf;text-shadow:none}.year-mini-dot-saldo{z-index:2;font-size:.5rem;line-height:1.05;font-weight:700;font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;pointer-events:none;margin-top:1px;white-space:nowrap}.year-mini-dot-saldo.year-mini-saldo-pos{color:#0f3d16;text-shadow:0 1px 1px rgba(255,255,255,.4)}.year-mini-dot-saldo.year-mini-saldo-neg{color:#d32f2f;text-shadow:0 1px 1px rgba(255,255,255,.35)}.year-mini-dot-light .year-mini-dot-saldo.year-mini-saldo-pos{color:#2e7d32;text-shadow:none}.year-mini-dot-light .year-mini-dot-saldo.year-mini-saldo-neg{color:#b3261e;text-shadow:none}.year-mini-dot-balance{position:absolute;bottom:0;left:0;right:0;height:3px;z-index:3;pointer-events:none}.year-mini-bar-pos{background:var(--color-balance-positive)}.year-mini-bar-neg{background:var(--color-balance-negative)}.year-week-balance{font-size:.6rem;font-weight:600;font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;padding:.1rem .2rem;border-radius:2px;text-align:center;line-height:1;white-space:nowrap;min-width:2.5rem}.year-week-balance-pos{color:var(--color-balance-positive);background:#2e7d3214}.year-week-balance-neg{color:var(--color-balance-negative);background:#b3261e14}.year-week-balance-zero{color:var(--muted)}.year-month-meta{margin:0;color:var(--muted);font-size:.8rem}.month-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.45rem}.month-calendar-weekday{text-align:center;color:var(--muted);font-size:.8rem}.month-calendar-empty{min-height:150px}.month-day-tile{border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:.5rem;min-height:150px;display:grid;gap:.3rem;text-align:left;align-content:start}.month-day-tile-empty{background:#f7f8fb}.month-day-tile-complete{background:#eff7ea;border-color:#c8dbbc}.month-day-tile-incomplete{background:#fff8e8;border-color:#efdfb5}.month-day-tile-invalid{background:#fceef0;border-color:#ebc4ca}.month-day-tile-today{box-shadow:inset 0 0 0 1px #7ea0c4}.month-day-tile-head{display:flex;align-items:center;justify-content:space-between}.month-day-tile-main{font-size:1rem;font-weight:700}.month-day-tile-main-no-data{color:var(--muted);font-weight:600}.month-day-tile-secondary,.month-day-tile-balance{font-size:.8rem;color:var(--muted)}.month-day-tile-balance-target-free{opacity:.72}.month-day-status-dot{width:8px;height:8px;border-radius:999px;background:#b8c1d1;display:inline-block}.month-day-status-dot-complete{background:#4f8f44}.month-day-status-dot-incomplete{background:#d48a00}.month-day-status-dot-invalid{background:var(--color-cal-invalid)}.month-day-status-dot-empty{background:#b8c1d1}.month-day-context-row{margin-top:auto;display:grid;gap:.2rem}.month-day-context{width:fit-content;font-size:.72rem;border-radius:999px;padding:.08rem .45rem;border:1px solid var(--border)}.month-day-context-holiday{background:#f3e8ff;border-color:#d7c1ef}.month-day-context-workday{background:#e9f3e1;border-color:#c8dbbc}.month-day-context-non_workday{background:#f0f3f8;border-color:#d2d9e5}.month-day-context-absence{background:#e7effa;border-color:#bbcee8}.month-day-context-non_working_period{background:#fff1d6;border-color:#e6cb93}.month-day-holiday-name{font-size:.75rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.month-legend-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.45rem .8rem}.month-legend-grid span{display:inline-flex;align-items:center;gap:.4rem}@media(max-width:1024px){.calendar-day-status-text{font-size:var(--text-xs)}}@media(max-width:1100px){.year-month-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:900px){.month-calendar-empty,.month-day-tile{min-height:120px}}@media(max-width:840px){.year-month-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.calendar-grid{gap:.25rem}.calendar-tile,.calendar-empty{min-height:68px;padding:.35rem}}@media(max-width:640px){.month-calendar-grid{gap:.3rem}.month-day-tile{min-height:104px;padding:.35rem}.month-day-tile-secondary,.month-day-tile-balance,.month-day-holiday-name{font-size:.72rem}}.summary-balance-positive{border-color:var(--color-balance-positive);background:linear-gradient(135deg,var(--surface) 85%,rgba(46,125,50,.08) 100%)}.summary-balance-positive .heading-lg{color:var(--color-balance-positive)}.summary-balance-negative{border-color:var(--color-balance-negative);background:linear-gradient(135deg,var(--surface) 85%,rgba(179,38,30,.08) 100%)}.summary-balance-negative .heading-lg{color:var(--color-balance-negative)}@media(max-width:520px){.year-month-grid{grid-template-columns:1fr}}
