.layout{display:flex;flex-direction:column;min-height:100vh}.header{background-color:var(--bg-card);box-shadow:var(--shadow-sm);padding:1rem 0;position:sticky;top:0;z-index:10}.logo{font-size:1.5rem;font-weight:700;color:var(--primary);letter-spacing:-.025em;text-decoration:none}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem}.main{flex:1;padding:2rem 0}.footer{background-color:var(--bg-card);color:var(--text-muted);padding:2rem 0;text-align:center;font-size:.875rem;border-top:1px solid #e2e8f0}.container{margin:0 auto;padding:0 1rem}@media (max-width: 768px){.header-inner{flex-direction:column;align-items:flex-start}.logo{font-size:1.25rem}}.payroll-actions-card{display:flex;flex-direction:column}.payroll-action-list{display:flex;flex-direction:column;gap:.6rem;margin-top:.75rem}.payroll-action-btn{display:flex;align-items:center;gap:.65rem;width:100%;padding:.65rem .9rem;border-radius:var(--radius-md);font-size:.9rem;font-weight:700;font-family:inherit;cursor:pointer;text-align:left;transition:all .15s ease}.payroll-action-icon{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;font-size:.85rem;flex-shrink:0}.payroll-action-add{background:#f0fdf4;border:1.5px dashed #86efac;color:#15803d}.payroll-action-add .payroll-action-icon{background:#22c55e;color:#fff}.payroll-action-add:hover{background:#dcfce7}.payroll-action-edit{background:#fff;border:1px solid #e2e8f0;color:var(--text-main)}.payroll-action-edit .payroll-action-icon{background:#f1f5f9;color:var(--text-muted)}.payroll-action-edit:hover{border-color:var(--primary)}.form-group{flex:1;min-width:200px;display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.875rem;font-weight:500;color:var(--text-muted)}.form-input,.form-select{padding:.75rem 1rem;border:1px solid #e2e8f0;border-radius:var(--radius-md);font-size:1rem;background-color:#fff;transition:all .2s ease;outline:none}.form-input:focus,.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #10b9811a}.btn-primary{padding:.75rem 2rem;background-color:var(--primary);color:#fff;border-radius:var(--radius-md);font-weight:600;transition:background-color .2s;height:48px;box-shadow:var(--shadow-sm)}.btn-primary:hover{background-color:var(--primary-hover)}.btn-primary:disabled{cursor:not-allowed;opacity:.8}.btn-loading{display:inline-flex;align-items:center;justify-content:center;gap:.5rem}.btn-spinner{width:.9rem;height:.9rem;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:btn-spin .8s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.form-side-by-side{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 768px){.form-side-by-side{grid-template-columns:1fr}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:flex-start;justify-content:center;padding:4rem 1.5rem 1.5rem;overflow-y:auto;z-index:50}.modal-panel{background:#fff;border-radius:var(--radius-lg);box-shadow:0 20px 40px #0f172a40;width:min(480px,100%);max-height:min(640px,90vh);display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1.1rem 1.5rem;border-bottom:1px solid #e2e8f0;flex-shrink:0}.modal-title{font-size:1.05rem;font-weight:700;color:var(--text-main)}.modal-subtitle{display:block;font-size:.75rem;color:var(--text-muted);margin-top:.2rem}.modal-close{background:none;border:none;font-size:1.4rem;line-height:1;color:var(--text-muted);cursor:pointer;padding:.25rem}.modal-close:hover{color:var(--text-main)}.modal-body{padding:1.25rem 1.5rem;overflow-y:auto}.year-calendar{display:grid;grid-template-columns:repeat(1,1fr);gap:2rem;margin-top:2rem}@media (min-width: 640px){.year-calendar{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.year-calendar{grid-template-columns:repeat(3,1fr)}}.month-card{background:#fff;padding:1rem}.month-title{display:flex;align-items:center;justify-content:center;gap:.5rem;font-weight:700;text-transform:uppercase;color:var(--text-main);margin-bottom:1rem;font-size:1.125rem;border-bottom:2px solid #f1f5f9;padding-bottom:.5rem}.month-title-text{display:inline-flex;align-items:center;gap:.5rem}.month-title-nav{display:inline-flex;align-items:center;gap:.75rem}.month-title-legend{display:none}.month-summary-badge{background:#e0f2fe;color:#0369a1;border:1px solid #bae6fd;border-radius:999px;font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.2rem .5rem;cursor:pointer}.month-summary-badge:hover{background:#bae6fd}.days-header{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-weight:600;font-size:.875rem;color:var(--text-muted);margin-bottom:.5rem}.days-grid{display:grid;grid-template-columns:repeat(7,1fr);row-gap:.5rem}.day-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.925rem;color:var(--text-main);border-radius:50%;cursor:default;font-variant-numeric:tabular-nums;position:relative}.day-cell.today{outline:2px solid #f59e0b;outline-offset:2px}.day-cell.pay-day{background-color:var(--primary);color:#fff;font-weight:600;box-shadow:0 2px 4px #10b98166;cursor:pointer}.day-cell.holiday{border:2px solid #ef4444;color:#ef4444;font-weight:700;cursor:pointer}.day-cell.holiday:focus-visible{outline:2px solid rgba(239,68,68,.6);outline-offset:2px}.day-cell.pay-day.holiday{background-color:var(--primary);color:#fff;border:2px solid #ef4444}.day-cell.has-bills{cursor:pointer}.day-cell.has-bills:focus-visible{outline:2px solid rgba(59,130,246,.6);outline-offset:2px}.day-cell.bill-selected{box-shadow:0 0 0 2px #3b82f659}.day-cell.pay-selected{box-shadow:0 0 0 2px #10b98159}.bill-badge{position:absolute;width:.7rem;height:.7rem;padding:0;background:#3b82f6;border-radius:50%;bottom:.25rem;right:.3rem;box-shadow:0 1px 2px #3b82f666;color:#fff;font-size:.45rem;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums;border:none;cursor:pointer;font-family:inherit}.day-indicators{display:contents}.day-indicator-dot{display:none}.single-month-view .month-card{padding:1.75rem 2rem 2rem;border-radius:1.5rem;border:1px solid #e7ebe7;box-shadow:none}.single-month-view .month-title{border-bottom:none;margin-bottom:1.5rem;text-transform:none;font-size:1.4rem;justify-content:flex-start;flex-wrap:wrap;gap:.75rem}.single-month-view .month-title-legend{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-left:auto}.single-month-view .month-title-legend .legend-item{margin-bottom:0;font-size:.8rem;gap:.4rem}.single-month-view .days-header{margin-bottom:.75rem}.single-month-view .days-header span{font-size:.8rem;font-weight:600;color:#94a3b8;letter-spacing:.02em}.single-month-view .days-grid{gap:.65rem}.single-month-view .day-cell{aspect-ratio:1.6 / 1;min-width:0;min-height:0;border-radius:1rem;border:2px solid transparent;background:#f4f6f4;color:var(--text-main);align-items:flex-start;justify-content:flex-start;flex-direction:column;padding:calc(.85rem - 2px);font-size:1rem;font-weight:700}.single-month-view .day-cell.empty{background:transparent;border-color:transparent}.single-month-view .day-cell.has-bills{border-color:#3b82f6}.single-month-view .day-cell.holiday{border-color:#ef4444}.single-month-view .day-cell.today{outline:none;background:#f4f6f4;border-color:#f59e0b}.single-month-view .day-cell.today .day-number{color:#f59e0b}.single-month-view .day-cell.pay-day{background:#f4f6f4;color:var(--text-main);border-color:var(--primary);box-shadow:none;font-weight:700}.single-month-view .day-cell.bill-selected,.single-month-view .day-cell.pay-selected{box-shadow:0 0 0 2px #10b98159}.single-month-view .day-number{font-size:1rem}.single-month-view .day-indicators{display:flex;align-items:center;gap:.35rem;margin-top:auto}.single-month-view .day-indicator-dot{display:inline-flex;width:.45rem;height:.45rem;border-radius:50%;flex-shrink:0}.single-month-view .day-indicator-dot.indicator-payday{background:var(--primary)}.single-month-view .day-indicator-dot.indicator-holiday{background:#ef4444}.single-month-view .bill-badge{position:static;width:.45rem;height:.45rem;font-size:0;box-shadow:none}.single-month-view .bill-badge.bill-badge-count{width:auto;height:.8rem;min-width:.8rem;padding:0 .2rem;border-radius:999px;font-size:.45rem}:root{--primary: #10b981;--primary-hover: #059669;--secondary: #3b82f6;--accent: #8b5cf6;--bg-body: #f8fafc;--bg-card: #ffffff;--text-main: #0f172a;--text-muted: #64748b;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--font-sans: "Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-body);color:var(--text-main);line-height:1.5;-webkit-font-smoothing:antialiased}a{text-decoration:none;color:inherit}button{font-family:inherit;cursor:pointer;border:none;background:none}.app-container{display:grid;grid-template-columns:1fr;grid-template-areas:"calendar" "planner" "sidebar";gap:2rem;align-items:start}@media (min-width: 1024px){.app-container{grid-template-columns:300px 1fr 320px;grid-template-areas:"planner calendar sidebar"}}.planner-sidebar{grid-area:planner}.calendar-section{grid-area:calendar;min-width:0;position:relative}.app-container>aside.sidebar:not(.planner-sidebar){grid-area:sidebar}.calendar-legend{display:flex;flex-wrap:nowrap;align-items:flex-start;gap:1.25rem;margin-bottom:1rem;background:#fff;padding:.75rem 1rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid #e2e8f0;overflow-x:auto;-webkit-overflow-scrolling:touch}.legend-btn-group{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;flex-shrink:0}.legend-stat-list{display:flex;flex-direction:column;gap:.2rem;font-size:.7rem;min-width:9rem}.legend-stat-row{display:flex;justify-content:space-between;gap:.75rem;color:var(--text-muted)}.legend-stat-row span:last-child{font-weight:600}.legend-stat-strong{border-top:1px dashed #e2e8f0;margin-top:.15rem;padding-top:.25rem}.legend-stat-strong span:last-child{font-weight:700}.calendar-legend-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600}.calendar-legend .legend-item{margin-bottom:0}.month-nav-btn{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:50%;border:1px solid #e2e8f0;background:#fff;color:var(--text-main);font-size:1.1rem;line-height:1;cursor:pointer;transition:all .15s ease}.month-nav-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.month-nav-btn:disabled{opacity:.35;cursor:not-allowed}.calendar-view-toggle{display:flex;align-items:center;align-self:center;gap:.25rem;margin-left:auto;background:#f1f5f9;border-radius:999px;padding:.2rem}.view-toggle-btn{border:none;background:transparent;color:var(--text-muted);font-size:.8rem;font-weight:600;padding:.35rem .75rem;border-radius:999px;cursor:pointer;transition:all .15s ease}.view-toggle-btn:hover{color:var(--text-main)}.view-toggle-btn.is-active{background:#fff;color:var(--primary);box-shadow:var(--shadow-sm)}.planner-view-toggle{width:100%;margin:.75rem 0 0}.planner-view-toggle .view-toggle-btn{flex:1;text-align:center}.year-overview-btn{border:1px solid #e2e8f0;border-radius:999px;background:#fff;color:var(--text-main);font-size:.8rem;font-weight:700;padding:.45rem .9rem;cursor:pointer;transition:all .15s ease}.year-overview-btn:hover{border-color:var(--primary);color:var(--primary)}.single-month-view{width:100%}.sidebar{display:flex;flex-direction:column;gap:1.5rem;position:sticky;top:6rem}.sidebar-card{background:#fff;padding:1.5rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid #e2e8f0}.sidebar-title{font-size:1rem;font-weight:700;margin-bottom:1rem;color:var(--text-main);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid #f1f5f9;padding-bottom:.5rem}.legend-item{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.9rem;color:var(--text-main)}.legend-swatch{width:.75rem;height:.75rem;border-radius:50%;flex-shrink:0}.legend-swatch.payday{background-color:var(--primary)}.legend-swatch.holiday{background-color:transparent;border:2px solid #ef4444;border-radius:50%}.legend-swatch.bill{background-color:#3b82f6;border-radius:50%}.legend-swatch.today{background-color:transparent;border:2px solid #f59e0b;border-radius:50%}.holiday-list{list-style:none;font-size:.875rem;line-height:1.6}.holiday-item{display:flex;justify-content:space-between;border-bottom:1px solid #f1f5f9;padding:.5rem 0}.holiday-item:last-child{border-bottom:none}.holiday-date{color:var(--text-muted);font-feature-settings:"tnum"}.disclaimer{font-size:.75rem;color:var(--text-muted);line-height:1.5;background:#f8fafc;padding:1rem;border-radius:var(--radius-md);border:1px solid #e2e8f0}.bill-panel{border-color:#3b82f64d}.bill-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.bill-panel-title{font-size:.95rem;font-weight:700;color:var(--text-main);margin:0 0 .15rem}.bill-panel-subtitle{font-size:.75rem;color:var(--text-muted)}.bill-panel-close{background:none;border:none;color:#94a3b8;font-size:1.25rem;cursor:pointer;line-height:1}.bill-panel-list{list-style:none;padding:0;margin:0 0 .75rem;display:flex;flex-direction:column;gap:.5rem}.bill-panel-item{display:flex;justify-content:space-between;font-size:.9rem;color:var(--text-main)}.bill-panel-total{font-size:.9rem;font-weight:600;border-top:1px dashed #e2e8f0;padding-top:.5rem}.bill-popup{position:absolute;width:min(260px,90%);z-index:5}.pay-panel{border-color:#10b98140}.pay-popup{position:absolute;width:min(320px,90%);z-index:5}.month-panel{border-color:#2563eb40}.month-popup{position:absolute;width:min(320px,92%);z-index:6}.month-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.month-panel-title{font-size:.95rem;font-weight:700;color:var(--text-main);margin:0 0 .15rem}.month-panel-subtitle{font-size:.75rem;color:var(--text-muted)}.month-panel-close{background:none;border:none;color:#94a3b8;font-size:1.25rem;cursor:pointer;line-height:1}.month-panel-section{margin-bottom:.75rem}.month-panel-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);display:block;margin-bottom:.4rem;margin-top:.4rem;border-bottom:1px solid #e2e8f0;padding-bottom:.25rem}.month-panel-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem;font-size:.85rem}.month-panel-item{display:flex;justify-content:space-between;color:var(--text-main)}.month-panel-empty{font-size:.85rem;color:var(--text-muted)}.month-panel-metrics{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;border-top:1px dashed #e2e8f0;padding-top:.5rem}.modal-body>.month-panel-metrics:first-child{border-top:none;padding-top:0}.month-panel-row{display:flex;justify-content:space-between;color:var(--text-main);padding-top:.2rem}.month-panel-row span:last-child{font-weight:600}.month-panel-strong span:last-child{font-weight:700}.month-panel-top{margin-bottom:.75rem}.month-panel-top .month-panel-row{font-size:.85rem}.month-panel-top .month-panel-row span:last-child{font-weight:600}.value-deductions,.value-bills{color:#ef4444}.value-gross{color:var(--primary)}.value-net{color:var(--secondary)}.value-cash{color:var(--primary)}.checkbox-group{display:flex;align-items:center;gap:.5rem;margin-top:1rem}.checkbox-input{width:1.25rem;height:1.25rem;cursor:pointer;accent-color:var(--primary)}.checkbox-label{font-size:.95rem;cursor:pointer;-webkit-user-select:none;user-select:none}.stats-card{background:#fff;padding:1.5rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid #e2e8f0;width:100%;display:flex;flex-direction:column;align-items:center;text-align:center}.stats-label{font-size:.875rem;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.05em}.stats-value{font-size:.875rem;color:var(--primary);font-weight:800;text-transform:uppercase;letter-spacing:.05em}.stats-row{display:flex;align-items:center;justify-content:flex-start;width:100%;margin-top:.3rem;text-align:left;gap:2rem}.stats-row-label{font-size:.85rem;color:var(--text-muted);font-weight:600}.stats-row-value{font-size:1.25rem;font-weight:800;color:var(--primary)}.params-summary{display:flex;gap:2rem;margin-bottom:2rem;justify-content:center}
