:root{--cal-blue:#174e78;--cal-blue-2:#237fb8;--cal-border:#cfe0ea;--cal-bg:#eef6fa;--cal-panel:#fff;--cal-text:#143047;--cal-muted:#647b8d;--cal-green:#17854b;--cal-yellow:#e6a500;--cal-red:#cf3e42;--cal-purple:#7257bb}
*{box-sizing:border-box}
html,body{min-height:100%;margin:0;font-family:Tahoma,Arial,sans-serif;color:var(--cal-text);background:var(--cal-bg)}
button,input,select,textarea{font:inherit}
.calendar-loading{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:16px;font-size:1.2rem}
.calendar-header{min-height:112px;background:linear-gradient(135deg,#103d61,#1f6996);color:#fff;padding:22px clamp(18px,4vw,58px);display:flex;align-items:center;justify-content:space-between;gap:24px;box-shadow:0 8px 30px #174e7826}
.calendar-header h1{margin:2px 0;font-size:clamp(1.7rem,3vw,2.55rem)}
.calendar-header .muted,.calendar-header .eyebrow{color:#d8ebf6}
.calendar-header-actions{display:flex;gap:10px;direction:rtl}
.calendar-header .icon-btn{background:#ffffff17;border-color:#ffffff47;color:#fff}
.calendar-main{width:min(1560px,calc(100% - 32px));margin:24px auto 60px;display:grid;gap:16px}
.panel,.manager-requests{background:var(--cal-panel);border:1px solid var(--cal-border);border-radius:22px;box-shadow:0 12px 32px #174e7810}
.calendar-toolbar{padding:18px;display:grid;grid-template-columns:auto minmax(380px,1fr);gap:18px;align-items:end}
.calendar-period-nav,.view-switch,.calendar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.calendar-period-strip{display:flex;align-items:center;justify-content:center;padding:2px 12px}.calendar-period-strip .calendar-period-nav{justify-content:center;background:#ffffffbf;border:1px solid var(--cal-border);border-radius:18px;padding:4px 10px;box-shadow:0 7px 22px #174e780d}
.period-button{border:0;background:transparent;color:var(--cal-text);font-size:1.45rem;font-weight:800;padding:10px 12px;cursor:pointer;border-radius:12px}
.calendar-period-nav .period-button{max-width:min(58vw,360px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.period-button:hover{background:#e8f3f9}.period-button.year{color:var(--cal-blue-2)}
.view-switch{background:#edf4f8;border-radius:13px;padding:4px;justify-self:center}
.view-switch button{border:0;background:transparent;padding:10px 18px;border-radius:10px;font-weight:700;color:var(--cal-muted);cursor:pointer}
.view-switch button.active{background:#fff;color:var(--cal-blue);box-shadow:0 4px 14px #174e7817}
.range-search{grid-column:2;display:flex;align-items:end;justify-content:flex-end;gap:9px;flex-wrap:wrap}
.range-search label,.calendar-dialog label{display:grid;gap:6px;font-weight:700;color:var(--cal-text)}
.note-viewers-section{border:1px solid var(--cal-border);border-radius:14px;padding:12px;margin:0;max-height:210px;overflow:auto}
.note-viewers-section legend{font-weight:900;padding:0 7px}
.note-viewers-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.note-viewer-choice{display:flex!important;grid-template-columns:none!important;align-items:center;gap:9px!important;padding:9px 10px;border:1px solid var(--cal-border);border-radius:11px;background:#fff}
.note-viewer-choice input{width:18px;height:18px;margin:0}
input,select,textarea{border:1px solid var(--cal-border);border-radius:11px;background:#fff;color:var(--cal-text);padding:11px 12px;min-width:0}
textarea{resize:vertical}.calendar-actions{grid-column:1/-1;border-top:1px solid #e3edf3;padding-top:14px}
.btn{border:1px solid transparent;border-radius:11px;padding:10px 16px;font-weight:800;cursor:pointer}.btn.primary{background:var(--cal-blue-2);color:#fff}.btn.secondary{background:#edf6fb;color:var(--cal-blue);border-color:#c8e0ed}.btn.ghost{background:#fff;border-color:var(--cal-border);color:var(--cal-text)}
.btn.danger{background:#fff0f0;color:#a92128;border-color:#efb7ba}.btn.danger:hover{background:#a92128;color:#fff}.dialog-message{margin:16px 18px 0;padding:11px 13px;border-radius:11px;background:#edf6fb;color:var(--cal-blue);font-weight:700}
.btn.vacation{background:#dff8e8;color:#17623b;border-color:#83d2a4}.btn.vacation:hover{background:#c8f1d8}.btn.note-action{background:#fde5f1;color:#962052;border-color:#ef9fc1}.btn.note-action:hover{background:#f9cee2}.btn.sick{background:#f1eafe;color:#5a3c9f;border-color:#d8caf8}.btn.half-day{background:#e6f5ff;color:#0b6592;border-color:#b9deef}
.calendar-legend{display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap;padding:12px 16px;color:var(--cal-muted);font-size:.9rem}.calendar-legend span{display:flex;align-items:center;gap:7px}.legend-dot{width:12px;height:12px;border-radius:50%;display:inline-block}.legend-dot.holiday{background:#246fa3}.legend-dot.eve{background:#9153ae}.legend-dot.pending{background:var(--cal-yellow)}.legend-dot.approved{background:var(--cal-green)}.legend-dot.rejected{background:var(--cal-red)}.legend-dot.sick{background:var(--cal-purple)}.legend-dot.department-garden{background:#f05b9b;border-radius:3px}.legend-dot.department-technical{background:#2e7de1;border-radius:3px}
.calendar-surface{padding:12px;overflow:hidden;min-height:540px}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));direction:rtl}.calendar-weekdays{background:#eef6fa;border-radius:14px 14px 0 0;color:var(--cal-muted);font-weight:800}.calendar-weekdays span{padding:13px;text-align:center}
.calendar-grid{border-right:1px solid var(--cal-border);border-top:1px solid var(--cal-border)}
.calendar-day{min-height:138px;border-left:1px solid var(--cal-border);border-bottom:1px solid var(--cal-border);background:#fff;padding:9px;cursor:pointer;overflow:hidden;position:relative;transition:.16s ease}.calendar-day:hover{background:#f5fbfe;box-shadow:inset 0 0 0 2px #80bedf}.calendar-day.outside{background:#f6f8f9;color:#95a5b0}.calendar-day.today{box-shadow:inset 0 0 0 3px #2596d1}.calendar-day.selected-range,.calendar-day.date-selected,.single-day-card.date-selected{background:#e8f7ff;box-shadow:inset 0 0 0 3px #2389c3}
.calendar-date-select{position:absolute;left:50%;right:auto;top:5px;transform:translateX(-50%);width:18px;height:18px;display:grid!important;place-items:center;border:1.5px solid #8bb8cf;border-radius:5px;background:#fff;z-index:2;cursor:pointer}.calendar-date-select input{position:absolute;opacity:0;width:1px;height:1px;padding:0}.calendar-date-select span{width:100%;height:100%;display:grid;place-items:center;font-size:.7rem;font-weight:900;color:#fff}.calendar-date-select:has(input:checked){background:var(--cal-blue-2);border-color:var(--cal-blue-2)}
.calendar-selection-summary{margin-inline-start:auto;padding:8px 11px;border-radius:10px;background:#edf6fb;color:var(--cal-blue);font-weight:800;font-size:.85rem}
.day-number{display:flex;align-items:center;justify-content:space-between;font-weight:900;font-size:1.05rem;margin-bottom:6px}.day-number small{font-size:.68rem;font-weight:400;color:var(--cal-muted);line-height:1.15}.today .day-number b{background:var(--cal-blue-2);color:white;border-radius:50%;min-width:30px;height:30px;display:grid;place-items:center}.holiday-chip,.day-event{display:block;border-radius:8px;padding:4px 7px;margin:4px 0;font-size:.78rem;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.holiday-chip{background:#e5f1fa;color:#15557e;font-weight:800}.holiday-chip.day-off{background:#dcecff;border-right:4px solid #1e6d9c}.holiday-chip.eve{background:#f3e8f8;color:#763d8e;border-right:4px solid #9a54b3}.holiday-chip.fast{background:#f2f2f2;color:#5b6267}
.day-event.pending{background:#fff2b7;color:#725100}.day-event.approved{background:#dff6e7;color:#15693b}.day-event.rejected{background:#ffe3e3;color:#9d2428}.day-event.sick{background:#ede5fb;color:#5e4294}.day-event.note{background:#eaf3f7;color:#345b70}.day-event.half_day{background:#def3ff;color:#126b95}
.day-event.pending,.request-card.pending,.calendar-request-detail.pending{--request-legend-color:var(--cal-yellow)}.day-event.approved,.request-card.approved,.calendar-request-detail.approved{--request-legend-color:var(--cal-green)}.day-event.rejected,.request-card.rejected,.calendar-request-detail.rejected{--request-legend-color:var(--cal-red)}.day-event.sick,.request-card.sick,.calendar-request-detail.sick{--request-legend-color:var(--cal-purple)}.day-event.half_day,.request-card.half_day,.calendar-request-detail.half_day{--request-legend-color:var(--cal-blue-2)}
:is(.day-event,.request-card,.calendar-request-detail).calendar-department-garden{--request-department-color:#f05b9b}:is(.day-event,.request-card,.calendar-request-detail).calendar-department-technical{--request-department-color:#2e7de1}
:is(.day-event,.request-card,.calendar-request-detail).calendar-department-garden,:is(.day-event,.request-card,.calendar-request-detail).calendar-department-technical{position:relative;overflow:hidden}
:is(.day-event,.request-card,.calendar-request-detail).calendar-department-garden::before,:is(.day-event,.request-card,.calendar-request-detail).calendar-department-technical::before{content:attr(data-employee-name);position:absolute;z-index:1;top:0;right:0;left:0;width:auto;height:21px;display:flex;align-items:center;justify-content:center;padding:0 5px;background:linear-gradient(to left,var(--request-department-color) 0 30%,var(--request-legend-color) 30% 100%);color:#fff;font-size:11px;font-weight:900;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px #000,0 0 3px #000}
:is(.day-event,.request-card,.calendar-request-detail).calendar-department-garden::after,:is(.day-event,.request-card,.calendar-request-detail).calendar-department-technical::after{content:none}
:is(.day-event,.request-card,.calendar-request-detail).calendar-department-garden .calendar-request-name-fallback,:is(.day-event,.request-card,.calendar-request-detail).calendar-department-technical .calendar-request-name-fallback{display:none}
.day-event.calendar-department-garden,.day-event.calendar-department-technical{padding-top:24px}.request-card.calendar-department-garden,.request-card.calendar-department-technical{padding-top:31px}.calendar-request-detail.calendar-department-garden,.calendar-request-detail.calendar-department-technical{padding-top:31px}
.single-view{display:grid;gap:14px}.single-day-card{border:1px solid var(--cal-border);border-radius:17px;padding:18px;min-height:180px;background:#fff;cursor:pointer;position:relative}.single-day-card h3{margin:0 0 12px;font-size:1.15rem;padding-inline-start:34px}.week-view{display:grid;grid-template-columns:repeat(7,minmax(180px,1fr));gap:10px;overflow-x:auto;padding-bottom:8px}.week-view .single-day-card{min-height:430px}
.manager-requests{padding:18px}.section-title{display:flex;align-items:center;justify-content:space-between}.section-title h2{margin:2px 0}.count-badge{background:var(--cal-red);color:#fff;border-radius:999px;min-width:30px;height:30px;padding:0 10px;display:grid;place-items:center;font-weight:900}.manager-request-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:10px;margin-top:14px}.request-card{border:1px solid var(--cal-border);border-radius:15px;padding:13px;display:grid;gap:8px}.request-card.sick{border-right:5px solid var(--cal-purple)}.request-card.vacation{border-right:5px solid var(--cal-yellow)}.request-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.request-actions{display:flex;gap:7px;flex-wrap:wrap}.request-actions button{padding:8px 12px}.certificate-thumb{width:54px;height:54px;object-fit:contain;border:1px solid var(--cal-border);border-radius:9px;cursor:pointer;background:#fff}
.calendar-dialog{border:0;border-radius:20px;padding:0;width:min(620px,calc(100% - 24px));max-height:92vh;overflow:auto;color:var(--cal-text);background:#fff;box-shadow:0 28px 90px #0e31475c}.calendar-dialog::backdrop{background:#0c2d416b;backdrop-filter:blur(3px)}.wide-dialog{width:min(900px,calc(100% - 24px))}.compact-dialog{width:min(480px,calc(100% - 24px))}.dialog-head{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid var(--cal-border);display:flex;align-items:center;justify-content:space-between;padding:16px 18px;gap:12px}.dialog-head h2{margin:0}.calendar-dialog form>label,.calendar-dialog form>.form-grid,.calendar-dialog form>.certificate-section{margin:16px 18px}.dialog-actions{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--cal-border);padding:14px 18px;display:flex;gap:9px;justify-content:flex-end;flex-wrap:wrap}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-grid .full{grid-column:1/-1}.certificate-section{border:1px dashed var(--cal-border);border-radius:13px;padding:12px}.certificate-section h3{margin:0 0 10px}.certificate-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.pending-check{display:flex!important;grid-auto-flow:column;align-items:center}.pending-check input{min-width:auto}.certificate-section img{display:block;max-width:100%;max-height:240px;object-fit:contain;margin:12px auto 0;border-radius:12px}.period-options{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:16px}.period-options button{border:1px solid var(--cal-border);border-radius:11px;background:#fff;padding:12px;cursor:pointer;font-weight:700}.period-options button.active{background:var(--cal-blue-2);color:#fff}.day-holiday,.day-requests,.day-notes{padding:0 18px}.day-holiday:not(:empty),.day-requests:not(:empty),.day-notes:not(:empty){padding-top:14px}.day-detail-row{border:1px solid var(--cal-border);border-radius:12px;padding:11px;margin-bottom:8px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.day-detail-row .row-actions{display:flex;gap:6px}.media-dialog img{display:block;max-width:100%;max-height:75vh;object-fit:contain;margin:auto;padding:12px}.calendar-toast{position:fixed;z-index:10000;left:50%;bottom:24px;transform:translate(-50%,20px);background:#163e58;color:#fff;padding:12px 18px;border-radius:12px;opacity:0;pointer-events:none;transition:.2s}.calendar-toast.show{opacity:1;transform:translate(-50%,0)}
.cohen-dark{--cal-bg:#0f2534;--cal-panel:#173246;--cal-text:#edf7fc;--cal-muted:#aac1cf;--cal-border:#315166}.cohen-dark .calendar-day,.cohen-dark input,.cohen-dark select,.cohen-dark textarea,.cohen-dark .calendar-dialog,.cohen-dark .dialog-head,.cohen-dark .dialog-actions,.cohen-dark .single-day-card,.cohen-dark .period-options button{background:#173246;color:var(--cal-text)}.cohen-dark .calendar-weekdays,.cohen-dark .view-switch{background:#102a3b}.cohen-dark .view-switch button.active{background:#27516b;color:#fff}
@media(max-width:1050px){.calendar-toolbar{grid-template-columns:1fr 1fr}.range-search{grid-column:1/-1;justify-content:flex-start}.calendar-actions{grid-column:1/-1}}
@media(max-width:720px){
 .calendar-header{min-height:82px;padding:12px 14px}.calendar-header h1{font-size:1.34rem}.calendar-header .muted{font-size:.76rem}.calendar-main{width:calc(100% - 10px);margin:9px auto 28px;gap:9px}.calendar-toolbar{grid-template-columns:1fr;padding:9px;gap:8px;border-radius:15px}.calendar-period-strip{padding:0}.calendar-period-strip .calendar-period-nav{width:100%;justify-content:center;padding:2px 5px}.period-button{font-size:1.12rem;padding:8px 5px}.calendar-period-nav .icon-btn{min-width:36px}.view-switch{justify-self:stretch}.view-switch button{flex:1;padding:8px 5px}.range-search{grid-column:1;display:grid;grid-template-columns:1fr 1fr;gap:6px}.range-search label{font-size:.72rem}.range-search input{padding:8px 5px;font-size:.77rem}.range-search .btn{width:100%;padding:8px 5px;font-size:.76rem}.calendar-actions{grid-column:1;padding-top:8px;gap:5px}.calendar-actions .btn{flex:1;min-width:calc(50% - 5px);padding:8px 5px;font-size:.76rem}.calendar-selection-summary{order:10;width:100%;text-align:center;margin:0;font-size:.7rem}.calendar-legend{gap:7px 11px;font-size:.68rem;padding:9px 7px;border-radius:14px}.legend-dot{width:9px;height:9px}.calendar-surface{padding:3px;min-height:390px;overflow:hidden;border-radius:15px}.calendar-weekdays,.calendar-grid{width:100%;min-width:0}.calendar-weekdays span{padding:7px 1px;font-size:.64rem}.calendar-day{min-height:86px;padding:3px 2px}.calendar-date-select{left:50%;right:auto;top:3px;transform:translateX(-50%);width:15px;height:15px;border-radius:4px}.calendar-date-select span{font-size:.58rem}.day-number{display:grid;grid-template-columns:auto 1fr;gap:2px;font-size:.8rem;margin-bottom:2px;padding-left:0;padding-top:16px}.day-number small{font-size:.47rem;font-weight:400;line-height:1.1;white-space:normal;overflow-wrap:anywhere;text-align:left}.today .day-number b{min-width:23px;height:23px}.holiday-chip,.day-event{font-size:.53rem;padding:2px 3px;margin:2px 0;border-radius:5px}.week-view{grid-template-columns:repeat(7,88vw);gap:7px}.single-day-card{padding:28px 12px 12px;min-height:150px}.manager-request-list{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:1}.period-options{grid-template-columns:repeat(2,1fr)}.dialog-actions .btn{flex:1;min-width:120px}.day-detail-row{flex-direction:column}.calendar-header-actions{gap:5px}.note-viewers-grid{grid-template-columns:1fr}.calendar-dialog{width:calc(100% - 10px);max-height:96dvh;border-radius:16px}.wide-dialog,.compact-dialog{width:calc(100% - 10px)}.dialog-head{padding:11px 12px}.dialog-head h2{font-size:1.1rem}.calendar-dialog form>label,.calendar-dialog form>.form-grid,.calendar-dialog form>.certificate-section{margin:11px 12px}.dialog-actions{padding:10px 12px}.calendar-toast{width:calc(100% - 24px);text-align:center}
}
@media(max-width:720px){.day-event.calendar-department-garden,.day-event.calendar-department-technical{padding-top:19px}.day-event.calendar-department-garden::before,.day-event.calendar-department-technical::before{height:17px;font-size:8px;padding-inline:2px}.request-card.calendar-department-garden,.request-card.calendar-department-technical,.calendar-request-detail.calendar-department-garden,.calendar-request-detail.calendar-department-technical{padding-top:29px}}
