*,:before,:after{box-sizing:border-box}body{color:#1f2937;-webkit-font-smoothing:antialiased;background:#f8fafc;margin:0;font-family:system-ui,-apple-system,sans-serif}button{cursor:pointer}.calendar{flex:1;min-width:0}.calendar-nav{align-items:center;gap:12px;margin-bottom:16px;display:flex}.calendar-nav h2{text-align:center;min-width:180px;margin:0;font-size:20px;font-weight:600}.calendar-nav button{color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:6px 14px;font-size:16px;transition:all .15s}.calendar-nav button:hover{background:#f3f4f6}.today-btn{margin-left:auto;padding:6px 12px;font-size:13px!important}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar-header{text-align:center;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;padding:8px 4px;font-size:12px;font-weight:600}.calendar-cell{aspect-ratio:1;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border:2px solid #0000;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;font-size:14px;transition:all .15s;display:flex;position:relative}.calendar-cell.empty{cursor:default;background:0 0}.calendar-cell.weekend{color:#9ca3af;cursor:default;background:#f9fafb}.calendar-cell.holiday{color:#92400e;cursor:not-allowed;background:repeating-linear-gradient(-45deg,#fef3c7,#fef3c7 4px,#fde68a 4px 8px);border-color:#f59e0b}.calendar-cell.holiday:hover{background:repeating-linear-gradient(-45deg,#fef3c7,#fef3c7 4px,#fde68a 4px 8px);border-color:#f59e0b}.holiday-label{text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin-top:2px;padding:0 2px;font-size:8px;font-weight:600;line-height:1.1;overflow:hidden}.legend-dot.holiday-dot{background:repeating-linear-gradient(-45deg,#fef3c7,#fef3c7 2px,#fde68a 2px 4px);border:2px solid #f59e0b}.calendar-cell:not(.empty):not(.weekend):hover{background:#eef2ff;border-color:#a5b4fc}.calendar-cell.today{border-color:#6366f1;box-shadow:0 0 0 1px #6366f1}.calendar-cell.planned{color:#1e40af;background:#dbeafe;border-color:#3b82f6;font-weight:600}.calendar-cell.planned:hover{background:#bfdbfe}.calendar-cell.over-budget{color:#991b1b;background:#fee2e2;border-color:#ef4444}.calendar-cell.over-budget:hover{background:#fecaca}.calendar-cell.hard-limit{color:#d1d5db;cursor:not-allowed;background:#f9fafb;border-color:#0000}.calendar-cell.hard-limit:hover{background:#f3f4f6;border-color:#fca5a5}.day-number{font-size:14px;line-height:1}.day-marker{margin-top:2px;font-size:10px;line-height:1}.day-hours{opacity:.7;font-size:9px;line-height:1;position:absolute;bottom:3px;right:4px}.day-hours.negative{color:#dc2626;opacity:.95;font-weight:700}.type-selector{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.unit-toggle{border:1px solid #e5e7eb;border-radius:6px;margin-left:auto;display:flex;overflow:hidden}.unit-btn{color:#9ca3af;cursor:pointer;background:#fff;border:none;padding:4px 10px;font-size:12px;font-weight:600;transition:all .15s}.unit-btn+.unit-btn{border-left:1px solid #e5e7eb}.unit-btn.active{color:#374151;background:#f3f4f6}.unit-btn:hover:not(.active){color:#6b7280;background:#f9fafb}.type-btn{color:#6b7280;cursor:pointer;background:#fff;border:2px solid #e5e7eb;border-radius:20px;padding:6px 16px;font-size:13px;font-weight:600;transition:all .15s}.type-btn:hover{color:#374151;border-color:#9ca3af}.type-btn.active{font-weight:700}.calendar-legend{color:#6b7280;border-top:1px solid #e5e7eb;gap:20px;margin-top:16px;padding-top:12px;font-size:13px;display:flex}.legend-item{align-items:center;gap:6px;display:flex}.legend-dot{border-radius:4px;width:12px;height:12px;display:inline-block}.planned-dot{background:#dbeafe;border:2px solid #3b82f6}.over-dot{background:#fee2e2;border:2px solid #ef4444}.today-dot{background:#fff;border:2px solid #6366f1;box-shadow:0 0 0 1px #6366f1}.calendar-cell.overflow-next{opacity:.4}.calendar-cell.overflow-next:not(.weekend):hover{opacity:.7}.sidebar{flex-direction:column;flex-shrink:0;gap:12px;width:280px;display:flex}@media (width<=900px){.sidebar{flex-flow:wrap;width:100%}.sidebar>*{flex:250px}}.budget-card{background:#fff;border:1px solid #e5e7eb;border-top-width:4px;border-radius:12px;padding:16px}.budget-card h3{text-transform:uppercase;letter-spacing:.5px;margin:0 0 10px;font-size:13px;font-weight:700}.balance-row{align-items:center;gap:12px;margin-bottom:12px;display:flex}.balance-label{color:#9ca3af;text-transform:uppercase;letter-spacing:.3px;margin-bottom:2px;font-size:11px;font-weight:600}.balance-divider{background:#e5e7eb;width:1px;height:40px}.budget-number{font-size:24px;font-weight:700;line-height:1}.budget-number.positive{color:#059669}.budget-number.negative{color:#dc2626}.budget-detail{color:#6b7280;border-top:1px solid #f3f4f6;justify-content:space-between;padding:4px 0;font-size:13px;display:flex}.budget-detail span:last-child{color:#374151;font-weight:600}.planned-list{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px}.planned-list h3{color:#6b7280;text-transform:uppercase;letter-spacing:.5px;margin:0 0 10px;font-size:13px;font-weight:700}.month-group{margin-bottom:10px}.month-group:last-child{margin-bottom:0}.month-group h4{color:#374151;margin:0 0 6px;font-size:13px;font-weight:600}.type-chip-row{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px;display:flex}.type-label-small{text-transform:uppercase;letter-spacing:.3px;min-width:52px;font-size:11px;font-weight:700}.date-chips{flex-wrap:wrap;gap:3px;display:flex}.date-chip{cursor:pointer;border-radius:5px;justify-content:center;align-items:center;gap:1px;min-width:26px;height:22px;padding:0 4px;font-size:11px;font-weight:600;display:inline-flex}.date-chip:hover{filter:brightness(.9)}.chip-hours{opacity:.85;letter-spacing:-.3px;font-size:9px;font-weight:700}.has-custom-hours{outline-offset:-1px;outline:1px solid}.hours-input{width:28px;color:inherit;text-align:center;-moz-appearance:textfield;background:0 0;border:none;outline:none;padding:0;font-size:11px;font-weight:700}.hours-input::-webkit-inner-spin-button{-webkit-appearance:none}.hours-input::-webkit-outer-spin-button{-webkit-appearance:none}.expand-planned-btn{color:#9ca3af;cursor:pointer;text-align:center;background:0 0;border:1px dashed #d1d5db;border-radius:6px;width:100%;margin-top:8px;padding:5px 0;font-size:11px;font-weight:600;transition:all .15s;display:block}.expand-planned-btn:hover{color:#6b7280;background:#f9fafb;border-color:#9ca3af}.settings-panel{background:#fff;border:1px solid #e5e7eb;border-radius:12px;margin-bottom:24px;padding:24px}.settings-panel h2{color:#1f2937;margin:0 0 16px;font-size:18px;font-weight:600}.settings-global{border-bottom:1px solid #f3f4f6;margin-bottom:20px;padding-bottom:20px}.settings-grid{flex-wrap:wrap;gap:24px;display:flex}.settings-grid label{color:#6b7280;text-transform:uppercase;letter-spacing:.3px;flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.settings-grid input,.settings-grid select{color:#1f2937;background:#fff;border:1px solid #d1d5db;border-radius:8px;width:140px;padding:8px 12px;font-size:15px}.settings-grid input[type=date]{width:175px}.settings-grid input:focus,.settings-grid select:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f11a}.leave-types-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;display:grid}.leave-type-panel{background:#f9fafb;border-left:4px solid #e5e7eb;border-radius:10px;padding:16px}.leave-type-header{align-items:center;gap:8px;margin-bottom:14px;display:flex}.leave-type-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.leave-type-header h3{text-transform:uppercase;letter-spacing:.4px;margin:0;font-size:14px;font-weight:700}.leave-type-panel .settings-grid{margin-bottom:14px}.leave-type-panel .settings-grid input,.leave-type-panel .settings-grid select{width:120px}.linked-fields{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.linked-field{flex-direction:column;gap:4px;display:flex}.linked-field label{color:#6b7280;text-transform:uppercase;letter-spacing:.3px;flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.linked-field input{color:#1f2937;background:#fff;border:1px solid #d1d5db;border-radius:8px;width:120px;padding:8px 12px;font-size:15px}.linked-field input:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f11a}.linked-field input:disabled{color:#9ca3af;cursor:not-allowed;background:#f3f4f6}.linked-arrow{color:#9ca3af;-webkit-user-select:none;user-select:none;padding-bottom:8px;font-size:20px}.unit-chip{font:inherit;font-size:inherit;color:#6366f1;cursor:pointer;background:0 0;border:none;border-radius:3px;padding:0 2px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;transition:background .12s,color .12s;display:inline}.unit-chip:hover{color:#4f46e5;background:#ede9fe}.linked-hint{color:#9ca3af;font-size:11px}.holidays-panel{border-top:1px solid #f3f4f6;margin-top:24px;padding-top:20px}.holidays-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.holidays-header h3{text-transform:uppercase;letter-spacing:.4px;color:#1f2937;margin:0;font-size:14px;font-weight:700}.holidays-seed{gap:6px;display:flex}.holidays-seed button{color:#6366f1;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:600;transition:all .15s}.holidays-seed button:hover{background:#eef2ff;border-color:#6366f1}.holidays-list{flex-direction:column;gap:6px;max-height:320px;margin-bottom:10px;display:flex;overflow-y:auto}.holidays-empty{color:#9ca3af;padding:8px 0;font-size:13px;font-style:italic}.holiday-row{align-items:center;gap:8px;display:flex}.holiday-row input[type=date]{border:1px solid #d1d5db;border-radius:6px;width:150px;padding:6px 10px;font-size:13px}.holiday-row input[type=text]{border:1px solid #d1d5db;border-radius:6px;flex:1;min-width:120px;padding:6px 10px;font-size:13px}.holiday-row input:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f11a}.holiday-remove{color:#9ca3af;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 8px;font-size:20px;line-height:1;transition:all .15s}.holiday-remove:hover{color:#dc2626;background:#fee2e2}.holiday-add{border-top:1px dashed #e5e7eb;padding-top:8px}.holiday-add button{color:#fff;cursor:pointer;background:#6366f1;border:1px solid #6366f1;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:600;transition:all .15s}.holiday-add button:hover:not(:disabled){background:#4f46e5;border-color:#4f46e5}.holiday-add button:disabled{color:#9ca3af;cursor:not-allowed;background:#e5e7eb;border-color:#e5e7eb}.timeline-view{flex-direction:column;flex:1;gap:16px;min-width:0;display:flex}.timeline-heading{color:#374151;margin:0 0 4px;font-size:18px;font-weight:600}.timeline-chart{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px 16px 12px}.chart-header{align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.chart-title{text-transform:uppercase;letter-spacing:.5px;font-size:13px;font-weight:700}.chart-unit{color:#9ca3af;font-size:12px}.chart-svg{width:100%;display:block}.chart-legend{color:#6b7280;flex-wrap:wrap;gap:16px;margin-top:8px;font-size:12px;display:flex}.chart-legend span{align-items:center;gap:5px;display:flex}.legend-line{border-radius:2px;flex-shrink:0;width:20px;height:2.5px;display:inline-block}.legend-line.dashed{border-top:2.5px dashed;background:0 0!important}.legend-line.limit{border-top:2.5px dashed #ef4444;height:0;background:0 0!important}.legend-dot{border:1.5px solid #fff;border-radius:50%;outline:1px solid;flex-shrink:0;width:8px;height:8px;display:inline-block}.loading{color:#6b7280;justify-content:center;align-items:center;height:100vh;font-size:16px;display:flex}.app{max-width:1200px;margin:0 auto;padding:20px;font-family:system-ui,-apple-system,sans-serif}.app-header{border-bottom:2px solid #e5e7eb;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;display:flex}.app-header h1{color:#1f2937;margin:0;font-size:28px;font-weight:700}.header-controls{align-items:center;gap:12px;display:flex}.view-toggle{border:1px solid #d1d5db;border-radius:8px;display:flex;overflow:hidden}.view-toggle button{color:#6b7280;cursor:pointer;background:#fff;border:none;padding:7px 16px;font-size:13px;font-weight:500;transition:all .15s}.view-toggle button:not(:last-child){border-right:1px solid #d1d5db}.view-toggle button.active{color:#fff;background:#1f2937}.settings-btn{color:#374151;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:8px;padding:8px 20px;font-size:14px;font-weight:500;transition:all .15s}.settings-btn:hover{background:#f9fafb;border-color:#9ca3af}.main-content{align-items:flex-start;gap:24px;display:flex}.balance-top-row{flex-wrap:wrap;gap:16px;margin-bottom:20px;display:flex}.balance-top-row .budget-card{flex:1;min-width:180px}.split-content{flex:1;align-items:flex-start;gap:24px;min-width:0;display:flex}.split-content .calendar{flex:0 0 360px;min-width:0}.split-content .timeline-view{flex:1;min-width:0}@media (width<=900px){.main-content{flex-direction:column}}@media (width<=640px){.split-content{flex-direction:column}.split-content .calendar{flex:none;width:100%}}
