﻿/* ── Calendar — full stylesheet ─────────────────────────────────────────────── */

/* ── Variables ───────────────────────────────────────────────────────────────── */:root {--cal-bg:var(--white,#ffffff);--cal-border:var(--border-color,#e2e8f0);--cal-text:var(--text-primary,#1e293b);--cal-text-muted:var(--text-secondary,#64748b);--cal-header-bg:var(--background-light,#f8fafc);--cal-today-bg:var(--primary-color,#2563eb);--cal-today-text:#fff;--cal-hover-bg:#f1f5f9;--cal-other-month:#f8fafc;--cal-event-radius:4px;--cal-time-width:64px;--cal-row-height:56px;--cal-font:var(--font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif)}.calendar-page-wrap{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--cal-bg)}.calendar-page-error,.calendar-page-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;height:100%;color:var(--cal-text-muted);font-size:.9rem}.calendar-page-error .material-symbols-outlined{font-size:2.5rem;color:#ef4444}.calendar-page{display:flex;flex-direction:column;flex:1;min-height:0;background:var(--cal-bg);font-family:var(--cal-font)}.calendar-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;padding:.75rem 1.25rem;background:var(--cal-header-bg);border-bottom:1px solid var(--cal-border);flex-shrink:0}.calendar-title h1{margin:0;font-size:1.1rem;font-weight:600;color:var(--cal-text)}.calendar-controls{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.view-controls{display:flex;border:1px solid var(--cal-border);border-radius:8px;overflow:hidden;background:var(--cal-bg)}.view-button{padding:.35rem .85rem;font-size:.78rem;font-weight:500;color:var(--cal-text-muted);background:transparent;border:none;border-right:1px solid var(--cal-border);cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.view-button:last-child {border-right:none}.view-button:hover {background:var(--cal-hover-bg);color:var(--cal-text)}.view-button.active{background:var(--cal-today-bg);color:#fff}.navigation-controls{display:flex;align-items:center;gap:.25rem}.nav-button,.today-button{display:inline-flex;align-items:center;justify-content:center;padding:.35rem .7rem;font-size:.8rem;font-weight:500;color:var(--cal-text);background:var(--cal-bg);border:1px solid var(--cal-border);border-radius:6px;cursor:pointer;transition:background .15s;line-height:1}.nav-button:hover,.today-button:hover {background:var(--cal-hover-bg)}.nav-button .material-symbols-outlined{font-size:1.25rem;line-height:1;display:block}.current-date{font-size:.88rem;font-weight:600;color:var(--cal-text);min-width:155px;text-align:center}.action-controls{display:flex;align-items:center}.add-event-button{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .9rem;font-size:.8rem;font-weight:500;color:#fff;background:var(--cal-today-bg);border:none;border-radius:6px;cursor:pointer;transition:opacity .15s}.add-event-button:hover {opacity:.88}.calendar-month-view{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;border:1px solid var(--cal-border);border-radius:8px;background:var(--cal-border);gap:1px}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);background:var(--cal-header-bg);border-bottom:1px solid var(--cal-border)}.weekday{padding:.5rem .5rem .4rem;text-align:center;font-size:.7rem;font-weight:700;color:var(--cal-text-muted);text-transform:uppercase;letter-spacing:.04em}.calendar-grid{flex:1;display:flex;flex-direction:column;background:var(--cal-border);gap:1px;overflow:auto}.calendar-week{display:grid;grid-template-columns:repeat(7,1fr);flex:1;gap:1px;min-height:100px}.calendar-day{background:var(--cal-bg);padding:.35rem;display:flex;flex-direction:column;gap:2px;cursor:pointer;transition:background .1s}.calendar-day:hover {background:var(--cal-hover-bg)}.calendar-day.other-month{background:var(--cal-other-month)}.calendar-day.other-month .day-number{color:#c4cdd6}.calendar-day.today .day-number{background:var(--cal-today-bg);color:var(--cal-today-text);border-radius:50%;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;font-weight:700}.day-header{display:flex;justify-content:flex-start;padding-bottom:2px}.day-number{font-size:.82rem;font-weight:500;color:var(--cal-text);line-height:1}.day-events{display:flex;flex-direction:column;gap:2px;overflow:hidden}.calendar-week-view{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;border:1px solid var(--cal-border);border-radius:8px}.time-grid{display:flex;flex-direction:column;flex:1;min-height:0}.time-header{display:grid;grid-template-columns:var(--cal-time-width) repeat(7,1fr);position:sticky;top:0;z-index:10;background:var(--cal-header-bg);border-bottom:2px solid var(--cal-border)}.time-header > .time-cell{border-right:1px solid var(--cal-border)}.time-header .day-header{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.5rem .25rem;border-right:1px solid var(--cal-border);min-height:52px;cursor:default}.time-header .day-header:last-child {border-right:none}.time-header .day-header.today{background:#eff6ff}.time-header .day-header.today .day-number{background:var(--cal-today-bg);color:#fff;border-radius:50%;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;font-weight:700}.time-header .day-name{font-size:.67rem;font-weight:700;color:var(--cal-text-muted);text-transform:uppercase;letter-spacing:.05em;line-height:1;margin-bottom:4px}.time-header .day-number{font-size:1.2rem;font-weight:400;color:var(--cal-text);line-height:1}.time-body{flex:1;overflow-y:auto;overflow-x:hidden}.time-row{display:grid;grid-template-columns:var(--cal-time-width) repeat(7,1fr);min-height:var(--cal-row-height);border-bottom:1px solid var(--cal-border)}.time-row:last-child {border-bottom:none}.time-label{display:flex;align-items:flex-start;justify-content:flex-end;padding:4px 8px 0 0;font-size:.67rem;font-weight:500;color:var(--cal-text-muted);border-right:1px solid var(--cal-border);background:var(--cal-bg);white-space:nowrap;flex-shrink:0}.time-row > .time-cell{padding:2px 3px;border-right:1px solid var(--cal-border);display:flex;flex-direction:column;gap:2px;min-height:var(--cal-row-height);cursor:pointer;transition:background .1s}.time-row > .time-cell:last-child {border-right:none}.time-row > .time-cell:hover {background:var(--cal-hover-bg)}.calendar-day-view{flex:1;overflow-y:auto;border:1px solid var(--cal-border);border-radius:8px}.calendar-day-view .time-grid{display:block}.time-slot{display:grid;grid-template-columns:var(--cal-time-width) 1fr;min-height:var(--cal-row-height);border-bottom:1px solid var(--cal-border)}.time-slot:last-child {border-bottom:none}.time-slot > .time-label{display:flex;align-items:flex-start;justify-content:flex-end;padding:4px 8px 0 0;font-size:.67rem;font-weight:500;color:var(--cal-text-muted);border-right:1px solid var(--cal-border);background:var(--cal-bg);white-space:nowrap}.time-content{padding:2px 4px;display:flex;flex-direction:column;gap:2px;cursor:pointer;transition:background .1s}.time-content:hover {background:var(--cal-hover-bg)}.event-item{padding:3px 6px;border-radius:var(--cal-event-radius);font-size:.73rem;font-weight:500;color:#fff;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.4;border-left:3px solid rgba(0,0,0,0.2);transition:opacity .15s,transform .1s;display:flex;flex-direction:column;gap:1px}.event-item:hover {opacity:.88;transform:translateY(-1px)}.event-item .event-time{font-size:.65rem;font-weight:700;opacity:.9;white-space:nowrap}.event-item .event-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-agenda-view{flex:1;overflow-y:auto;padding:1rem}.no-events{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:3rem;color:var(--cal-text-muted);font-size:.875rem}.event-list{display:flex;flex-direction:column;gap:.5rem}.agenda-event{display:flex;align-items:stretch;gap:.75rem;padding:.75rem 1rem;background:var(--cal-bg);border:1px solid var(--cal-border);border-radius:8px;cursor:pointer;transition:box-shadow .15s,transform .1s}.agenda-event:hover {box-shadow:0 2px 8px rgba(0,0,0,0.08);transform:translateY(-1px)}.event-date{font-size:.78rem;font-weight:600;color:var(--cal-text-muted);min-width:88px;display:flex;flex-direction:column;justify-content:center;line-height:1.3}.event-marker{width:4px;border-radius:2px;flex-shrink:0;min-height:36px}.event-details{flex:1;min-width:0}.event-details .event-title{font-size:.88rem;font-weight:600;color:var(--cal-text);margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-details .event-time{font-size:.75rem;color:var(--cal-text-muted);margin-bottom:2px}.event-description{font-size:.75rem;color:var(--cal-text-muted);line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,0.45);display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem}.modal-content{background:var(--cal-bg);border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,0.25);width:100%;max-width:480px;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--cal-border);flex-shrink:0}.modal-header h2{margin:0;font-size:1rem;font-weight:600;color:var(--cal-text)}.close-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:6px;color:var(--cal-text-muted);cursor:pointer;transition:background .15s;font-size:1.1rem}.close-button:hover {background:var(--cal-hover-bg);color:var(--cal-text)}.modal-body{padding:1.25rem;flex:1}.event-form{display:flex;flex-direction:column;gap:1rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.form-group{display:flex;flex-direction:column;gap:.3rem}.form-group label,.form-label{font-size:.8rem;font-weight:500;color:var(--cal-text)}.form-group input,.form-group textarea,.form-input{padding:.45rem .7rem;font-size:.875rem;color:var(--cal-text);background:var(--cal-bg);border:1px solid var(--cal-border);border-radius:6px;outline:none;font-family:var(--cal-font);transition:border-color .15s,box-shadow .15s;width:100%;box-sizing:border-box}.form-group input:focus,.form-group textarea:focus,.form-input:focus {border-color:var(--cal-today-bg);box-shadow:0 0 0 3px rgba(37,99,235,0.12)}.form-group textarea{min-height:80px;resize:vertical}.color-picker{display:flex;gap:.5rem;flex-wrap:wrap}.color-option{width:22px;height:22px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:transform .15s,border-color .15s}.color-option:hover {transform:scale(1.15)}.color-option.selected{border-color:#1e293b;transform:scale(1.15)}.form-actions{display:flex;justify-content:flex-end;gap:.5rem;padding-top:.75rem;border-top:1px solid var(--cal-border)}.cancel-button{padding:.45rem 1rem;font-size:.875rem;font-weight:500;color:var(--cal-text);background:var(--cal-bg);border:1px solid var(--cal-border);border-radius:6px;cursor:pointer;transition:background .15s}.cancel-button:hover {background:var(--cal-hover-bg)}.save-button{padding:.45rem 1rem;font-size:.875rem;font-weight:500;color:#fff;background:var(--cal-today-bg);border:none;border-radius:6px;cursor:pointer;transition:opacity .15s}.save-button:hover {opacity:.88}@media (prefers-color-scheme: dark){:root {--cal-bg:#1e293b;--cal-border:#334155;--cal-text:#f1f5f9;--cal-text-muted:#94a3b8;--cal-header-bg:#0f172a;--cal-hover-bg:#273549;--cal-other-month:#162032}.time-header .day-header.today{background:#1e3a5f}}@media print{.action-controls,.modal-backdrop,.view-controls{display:none!important}.calendar-page{height:auto}}@media (max-width: 768px){.calendar-controls{gap:.5rem}.current-date{min-width:120px;font-size:.8rem}:root {--cal-time-width:48px;--cal-row-height:48px}.time-header .day-name{font-size:.62rem}.time-header .day-number{font-size:.95rem}.form-row{grid-template-columns:1fr}}@media (max-width: 480px){.calendar-header{flex-direction:column;align-items:flex-start}:root {--cal-time-width:40px}}