*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f0f2f7;--surface: #ffffff;--border: #e4e7ef;--text: #1a1d27;--text-muted:#6b7280;--primary: #6366f1;--primary-h: #4f46e5;--green: #059669;--red: #dc2626;--amber: #d97706;--radius: 10px;--radius-lg: 14px;--shadow-sm: 0 1px 3px rgba(0,0,0,.07), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.09), 0 2px 4px rgba(0,0,0,.05);--shadow-lg: 0 20px 60px rgba(0,0,0,.18)}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);font-size:13.5px;line-height:1.5;height:100vh;overflow:hidden;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;background:linear-gradient(135deg,#1e1b4b,#312e81,#4c1d95);box-shadow:0 2px 12px #4f2ee559;flex-shrink:0;gap:12px}.header-left{display:flex;align-items:center;gap:12px}.header-title-block{display:flex;flex-direction:column;gap:1px}.app-header h1{font-size:17px;font-weight:800;color:#fff;letter-spacing:-.3px}.header-subtitle{font-size:10px;color:#ffffff8c;font-weight:500;text-transform:uppercase;letter-spacing:.08em}.user-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px 4px 5px;border-radius:20px;border:1.5px solid;font-size:12px;font-weight:600}.user-avatar{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:10px;font-weight:700;flex-shrink:0}.header-actions{display:flex;align-items:center;gap:8px}.schedule-msg{font-size:12px;color:#a7f3d0;font-weight:600}.btn{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:var(--radius);border:1.5px solid transparent;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap;font-family:inherit}.btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border-color:transparent;box-shadow:0 2px 8px #6366f166}.btn-primary:hover{background:linear-gradient(135deg,#4f46e5,#7c3aed);box-shadow:0 4px 12px #6366f180;transform:translateY(-1px)}.btn-secondary{background:#ffffff1f;color:#fff;border-color:#fff3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.btn-secondary:hover{background:#fff3}.btn-ghost{background:transparent;color:#ffffffb3;border-color:transparent}.btn-ghost:hover{background:#ffffff1a;color:#fff}.btn-sm{padding:4px 10px;font-size:11.5px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.refresh-icon{display:inline-block;font-size:15px;line-height:1}.refresh-icon.spin{animation:spin .6s linear infinite}.refresh-btn{color:#ffffffbf;border-color:#ffffff26}.refresh-btn:hover:not(:disabled){background:#ffffff1a;color:#fff}.refresh-btn:disabled{opacity:.6;cursor:default}.run-btn{font-size:13px;padding:8px 18px;letter-spacing:.01em}.btn-ghost-dark{background:transparent;color:var(--text-muted);border:1.5px solid var(--border);border-radius:var(--radius);padding:4px 10px;font-size:11.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s}.btn-ghost-dark:hover{background:var(--bg);color:var(--text)}.week-nav{display:flex;align-items:center;justify-content:space-between;padding:10px 24px;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);flex-shrink:0}.nav-btn{background:var(--bg);border:1.5px solid var(--border);padding:6px 16px;border-radius:var(--radius);cursor:pointer;font-size:12.5px;font-weight:600;color:var(--text);font-family:inherit;transition:all .15s}.nav-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.week-label-block{display:flex;flex-direction:column;align-items:center;gap:2px}.week-number{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--primary)}.week-dates{font-size:14px;font-weight:700;color:var(--text)}.main-content{display:flex;flex:1;overflow:hidden}.grid-section{flex:1;overflow:auto;padding:20px}.month-section{width:290px;flex-shrink:0;border-left:1px solid var(--border);overflow:auto;background:var(--surface)}.empty-week{display:flex;flex-direction:column;align-items:center;justify-content:center;height:260px;gap:10px;text-align:center}.empty-icon{font-size:48px;line-height:1}.empty-title{font-size:16px;font-weight:700;color:var(--text)}.empty-sub{font-size:13px;color:var(--text-muted)}.person-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px 3px 4px;border-radius:20px;border:1.5px solid;font-weight:600;font-size:12.5px;white-space:nowrap;transition:all .15s;cursor:default}.person-badge-editable{cursor:pointer}.person-badge-editable:hover{filter:brightness(.93);transform:scale(1.03)}.person-badge-sm{font-size:11.5px;padding:2px 8px 2px 3px}.person-badge-lg{font-size:14px;padding:5px 14px 5px 6px}.person-avatar{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:9px;font-weight:800;flex-shrink:0}.person-badge-lg .person-avatar{width:24px;height:24px;font-size:11px}.person-name{line-height:1}.person-edit-icon{font-size:10px;opacity:0;transition:opacity .15s;margin-left:2px}.person-badge-editable:hover .person-edit-icon{opacity:.7}.person-select{padding:3px 8px;border-radius:var(--radius);border:2px solid;font-size:12.5px;font-weight:600;outline:none;background:#fff;font-family:inherit;cursor:pointer}.week-grid-wrapper{min-width:620px}.week-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;border:1px solid var(--border)}.week-table thead{background:linear-gradient(135deg,#1e1b4b,#312e81)}.week-table th{padding:13px 16px;text-align:center;font-size:12px;font-weight:700;color:#fffc;letter-spacing:.05em;text-transform:uppercase}.week-table th.role-col{text-align:left;width:210px}.week-table th.day-col{min-width:110px}.week-table td{padding:10px 14px;border-bottom:1px solid var(--border);text-align:center;vertical-align:middle}.week-table tr:last-child td{border-bottom:none}.week-table tbody tr{transition:background .12s}.week-table tbody tr:hover td{background:#f5f4ff}.role-label{text-align:left!important;font-weight:600;color:var(--text);font-size:13px;display:flex;align-items:center;gap:8px;white-space:nowrap}.role-icon{font-size:15px;flex-shrink:0}.schedule-cell{position:relative}.span-cell{text-align:center}.pair-value{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.pair-person{display:inline-flex;align-items:center;gap:6px}.pair-sep,.pair-amp{color:var(--text-muted);font-weight:700;font-size:13px}.month-panel{padding:18px 16px}.month-header{display:flex;align-items:center;gap:8px;margin-bottom:18px}.month-icon{font-size:20px}.month-title{font-size:15px;font-weight:800;color:var(--text)}.month-section-block{margin-bottom:20px;background:var(--bg);border-radius:var(--radius);padding:12px 14px;border:1px solid var(--border)}.month-section-block h3{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:5px}.section-icon{font-size:13px}.month-badge-wrap{display:flex}.month-empty{text-align:center;color:var(--text-muted);padding:24px 0;display:flex;flex-direction:column;gap:12px;align-items:center}.onboarding-event{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);padding:10px 12px;margin-bottom:8px}.onboarding-label{font-size:10px;text-transform:uppercase;letter-spacing:.07em;font-weight:700;color:var(--primary);margin-bottom:3px}.onboarding-date{font-size:11.5px;color:var(--text-muted);margin-bottom:8px}.date-original{text-decoration:line-through;color:var(--red)}.date-arrow{color:var(--text-muted)}.date-moved{color:var(--green);font-weight:600}.date-note{font-size:10px;color:var(--text-muted);font-style:italic}.onboarding-persons{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pair-amp{color:var(--text-muted);font-weight:700;font-size:12px}.modal-overlay{position:fixed;inset:0;background:#0f0a288c;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:480px;max-width:95vw;max-height:88vh;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border)}.modal-wide{width:800px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 14px;border-bottom:1px solid var(--border);background:linear-gradient(135deg,#1e1b4b,#312e81);flex-shrink:0}.modal-header h2{font-size:16px;font-weight:800;color:#fff}.modal-close{background:#ffffff26;border:none;font-size:15px;cursor:pointer;color:#fffc;padding:3px 8px;border-radius:6px;transition:background .15s}.modal-close:hover{background:#ffffff40}.settings-form,.absence-form{padding:20px 22px;display:flex;flex-direction:column;gap:18px;overflow-y:auto}label{display:flex;flex-direction:column;gap:7px;font-size:12.5px;font-weight:600;color:var(--text)}input[type=text],select{padding:9px 12px;border:1.5px solid var(--border);border-radius:var(--radius);font-size:13px;background:#fff;color:var(--text);width:100%;outline:none;font-family:inherit;transition:border-color .15s,box-shadow .15s}input[type=text]:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #6366f11f}.file-path-row{display:flex;gap:8px;align-items:center}.file-path-row .file-input{flex:1}.hint{font-size:11px;color:var(--text-muted);font-weight:400;line-height:1.4}.name-options{display:flex;gap:8px;flex-wrap:wrap}.name-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 16px 6px 8px;border-radius:20px;border:2px solid var(--border);background:#fff;cursor:pointer;font-size:13px;font-weight:600;color:var(--text);font-family:inherit;transition:all .15s}.name-chip:hover,.name-chip.selected{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.name-chip-avatar{width:20px;height:20px;border-radius:50%;color:#fff;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.settings-form .btn-ghost,.absence-form .btn-ghost{background:transparent;color:var(--text-muted);border-color:var(--border)}.settings-form .btn-ghost:hover,.absence-form .btn-ghost:hover{background:var(--bg);color:var(--text)}.settings-form .btn-secondary,.absence-form .btn-secondary{background:#fff;color:var(--text);border-color:var(--border)}.settings-form .btn-secondary:hover,.absence-form .btn-secondary:hover{background:var(--bg)}.settings-form .btn-primary,.absence-form .btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border-color:transparent;box-shadow:0 2px 8px #6366f159}.status-msg{font-size:12.5px;color:var(--green);font-weight:600}.role-info{font-size:12.5px;color:var(--text-muted);background:var(--bg);padding:9px 12px;border-radius:var(--radius);border:1.5px solid var(--border);line-height:1.4}.setup-intro{padding:14px 22px 0;font-size:13px;color:var(--text-muted);line-height:1.5}.drop-zone{border:2.5px dashed var(--border);border-radius:var(--radius-lg);padding:20px;text-align:center;background:var(--bg);transition:all .15s;cursor:default}.drop-zone-active{border-color:var(--primary);background:#ede9fe}.drop-zone-filled{border-style:solid;border-color:#6ee7b7;background:#f0fdf4;text-align:left;padding:12px 16px}.drop-zone-empty{display:flex;flex-direction:column;align-items:center;gap:4px}.drop-icon{font-size:32px;line-height:1}.drop-main{font-size:13px;font-weight:600;color:var(--text)}.drop-sub{font-size:11.5px;color:var(--text-muted)}.drop-zone-path{display:flex;align-items:center;gap:8px}.drop-zone-icon{font-size:20px;flex-shrink:0}.drop-zone-filepath{font-size:11.5px;color:#065f46;font-weight:600;word-break:break-all;flex:1;line-height:1.4}.drop-zone-clear{background:none;border:none;color:#6b7280;cursor:pointer;font-size:14px;padding:0 2px;flex-shrink:0}.drop-zone-clear:hover{color:var(--red)}.setup-steps{background:#eff6ff;border:1.5px solid #bfdbfe;border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:8px}.steps-title{font-size:12px;font-weight:700;color:#1e40af}.steps-list{font-size:12px;color:#1e3a8a;line-height:1.6;padding-left:16px}.steps-list li{margin-bottom:2px}.steps-alt{font-size:11.5px;color:#3b82f6;border-top:1px solid #bfdbfe;padding-top:8px;margin-top:2px}.status-error{color:var(--red)!important}.empty-msg{padding:28px;color:var(--text-muted);text-align:center;font-size:13px}.history-list{overflow:auto;flex:1}.history-table{width:100%;border-collapse:collapse;font-size:12.5px}.history-table th{padding:10px 16px;text-align:left;background:#f1f5f9;color:var(--text-muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;position:sticky;top:0;border-bottom:1px solid var(--border)}.history-table td{padding:10px 16px;border-bottom:1px solid var(--border);vertical-align:top}.history-time{color:var(--text-muted);white-space:nowrap;font-size:11.5px}.history-user{font-weight:700}.history-details{color:var(--text-muted);line-height:1.4}.history-table tr:hover td{background:#f8f7ff}.action-badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.reset-week-btn{margin-left:8px;padding:6px 14px;border-radius:var(--radius);border:1.5px solid #fca5a5;background:#fff1f2;color:#b91c1c;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s}.reset-week-btn:hover{background:#fee2e2;border-color:#f87171}.modal-vacation{width:520px}.vacation-form{padding:18px 22px;display:flex;flex-direction:column;gap:16px;overflow-y:auto;max-height:calc(88vh - 60px)}.vacation-week-nav{display:flex;align-items:center;justify-content:space-between;background:var(--bg);border:1.5px solid var(--border);border-radius:var(--radius);padding:8px 12px}.vacation-week-label{font-size:12.5px;font-weight:600;color:var(--text)}.nav-btn-sm{background:none;border:none;font-size:12px;font-weight:600;color:var(--primary);cursor:pointer;font-family:inherit;padding:2px 6px;border-radius:4px;transition:background .12s}.nav-btn-sm:hover{background:#6366f114}.vacation-days{display:flex;gap:8px}.vacation-day-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border:2px solid var(--border);border-radius:var(--radius);background:#fff;cursor:pointer;font-family:inherit;transition:all .15s;position:relative}.vacation-day-btn:hover{border-color:var(--primary)}.vacation-day-btn.selected{font-weight:600}.vd-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:inherit}.vd-date{font-size:12px;color:inherit}.vd-check{font-size:13px}.vacation-week-actions{display:flex;gap:14px;margin-top:-6px}.btn-link{background:none;border:none;color:var(--primary);font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;padding:0;text-decoration:underline;text-underline-offset:2px}.btn-link:hover{color:var(--primary-h)}.selected-summary{background:var(--bg);border:1.5px solid var(--border);border-radius:var(--radius);padding:10px 12px;display:flex;flex-direction:column;gap:8px}.summary-label{font-size:11.5px;font-weight:600;color:var(--text-muted)}.summary-dates{display:flex;flex-wrap:wrap;gap:6px}.summary-date-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:20px;border:1.5px solid;font-size:11.5px;font-weight:600}.chip-remove{background:none;border:none;cursor:pointer;color:inherit;font-size:10px;padding:0 0 0 2px;opacity:.6}.chip-remove:hover{opacity:1}.existing-vacations{background:#fff7ed;border:1.5px solid #fed7aa;border-radius:var(--radius);padding:10px 12px;display:flex;flex-direction:column;gap:6px}.existing-label{font-size:11.5px;font-weight:700;color:#92400e}.existing-vacation-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text)}.ev-dates{font-weight:600}.ev-note{color:var(--text-muted);font-style:italic}.ev-remove{margin-left:auto;background:none;border:1px solid #f87171;color:#b91c1c;border-radius:4px;padding:1px 8px;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit}.ev-remove:hover{background:#fee2e2}.vacation-hint{font-size:12px;color:var(--text-muted);background:var(--bg);border-radius:var(--radius);padding:8px 12px;border:1px solid var(--border);line-height:1.5}.action-run_schedule{background:#d1fae5;color:#065f46}.action-mark_vacation{background:#fef9c3;color:#854d0e}.action-remove_vacation{background:#f1f5f9;color:var(--text-muted)}.action-reset_week{background:#fee2e2;color:#991b1b}.action-manual_edit{background:#fef3c7;color:#92400e}.action-mark_absence{background:#fee2e2;color:#991b1b}.action-resolve_absence{background:#ede9fe;color:#5b21b6}.action-edit_cell{background:#f1f5f9;color:var(--text-muted)}.action-toggle_holiday{background:#fff1f2;color:#b91c1c}.guest-badge{font-style:italic;opacity:.9}.day-col-holiday{background:#ef444414!important;color:#fff9!important;position:relative}.day-holiday-flag{margin-left:4px;font-size:11px}.cell-holiday{background:#fff1f2!important}.week-table tbody tr:hover .cell-holiday{background:#ffe4e6!important}.holiday-cell{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 4px}.holiday-cell-icon{font-size:18px;line-height:1}.holiday-cell-text{font-size:10.5px;font-weight:700;color:#b91c1c;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.modal-holiday{width:560px}.holiday-body{padding:18px 22px;display:flex;flex-direction:column;gap:20px;overflow-y:auto;max-height:calc(88vh - 60px)}.holiday-section{display:flex;flex-direction:column;gap:10px}.holiday-section h3{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-weight:700;display:flex;align-items:center;gap:5px}.holiday-hint{font-size:12px;color:var(--text-muted);line-height:1.5}.holiday-week-days{display:flex;gap:8px}.holiday-day-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border:2px solid var(--border);border-radius:var(--radius);background:#fff;cursor:pointer;font-family:inherit;transition:all .15s}.holiday-day-btn:hover:not(:disabled){border-color:#f87171;background:#fff1f2}.holiday-day-btn.holiday-day-active{border-color:#f87171;background:#fff1f2}.holiday-day-btn:disabled{cursor:default;opacity:.8}.hd-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.hd-date{font-size:12px;font-weight:600;color:var(--text)}.hd-badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:20px;white-space:nowrap}.hd-badge.auto{background:#fee2e2;color:#b91c1c}.hd-badge.custom{background:#fef3c7;color:#92400e;cursor:pointer}.hd-badge.none{background:var(--bg);color:var(--text-muted);font-size:14px}.holiday-msg{font-size:12px;color:var(--green);font-weight:600}.holiday-year-nav{display:flex;align-items:center;justify-content:space-between}.year-nav-btns{display:flex;gap:6px}.holiday-list{display:flex;flex-direction:column;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}.holiday-row{display:flex;align-items:center;gap:8px;font-size:12.5px}.holiday-icon{font-size:14px;flex-shrink:0}.holiday-date{font-weight:700;color:var(--text);min-width:90px}.holiday-name{color:var(--text-muted);flex:1}.holiday-tag{font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px}.auto-tag{background:#fee2e2;color:#b91c1c}.custom-tag{background:#fef3c7;color:#92400e}.holiday-remove-btn{background:none;border:1px solid #f87171;color:#b91c1c;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit}.holiday-remove-btn:hover{background:#fee2e2}.holiday-note{font-size:12px;color:var(--text-muted);background:#eff6ff;border:1.5px solid #bfdbfe;border-radius:var(--radius);padding:10px 14px;line-height:1.5}.guest-divider{display:flex;align-items:center;gap:10px;color:var(--text-muted)}.guest-divider:before,.guest-divider:after{content:"";flex:1;height:1px;background:var(--border)}.guest-divider-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.guest-chip{border-style:dashed}.guest-notice{font-size:12px;color:#6b7280;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:var(--radius);padding:8px 12px;line-height:1.5}
