.calendar-workspace{color:var(--ink);max-width:1600px;margin:auto}
.cal-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}
.cal-header h1{font-size:30px;letter-spacing:-.8px;line-height:1.2;margin:0 0 8px}
.cal-header p{font-size:var(--text-sm);color:var(--secondary);line-height:1.6;margin:0}
.cal-toolbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;border-bottom:1px solid var(--hairline);padding:0 0 20px}
.cal-mode-switch,.cal-view-switch{display:inline-flex;border:1px solid var(--hairline);border-radius:8px;padding:3px;background:var(--surface);gap:3px}
.cal-mode-switch button,.cal-view-switch button{font:inherit;font-size:var(--text-sm);padding:7px 11px;border:0;border-radius:5px;background:transparent;color:var(--secondary);min-height:34px}
.cal-mode-switch .active,.cal-view-switch .active{background:var(--background);color:var(--ink);font-weight:var(--font-medium)}
.cal-mode-switch .active{background:#edf3ff;color:var(--brand)}
.cal-range{display:flex;align-items:center;gap:10px;flex:1}
.cal-range h2{font-size:var(--text-base);line-height:1.4;letter-spacing:-.3px;margin:0;text-transform:capitalize;font-weight:var(--font-medium);white-space:nowrap}
.cal-range .icon-btn{border:1px solid var(--hairline);background:var(--surface);border-radius:7px;min-width:30px;min-height:32px;padding:5px;display:grid;place-items:center}
.cal-range .icon-svg{width:16px;height:16px}
.cal-range .secondary-btn{min-height:34px;font-size:var(--text-label);padding:6px 10px;margin-left:8px}
.cal-date-jump input{min-width:0;width:135px;padding:8px;border:1px solid var(--hairline);border-radius:7px;background:var(--surface);color:var(--secondary);font:inherit;font-size:var(--text-label)}
.cal-filterbar{display:flex;align-items:center;gap:12px;padding:16px 0 20px;flex-wrap:wrap}
.cal-filterbar select{font:inherit;font-size:var(--text-label);min-height:34px;border:1px solid var(--hairline);border-radius:7px;padding:6px 10px;color:var(--secondary);background:var(--surface);max-width:100%}
.cal-tipe-toggle{font:inherit;font-size:var(--text-label);min-height:34px;border:1px solid var(--hairline);border-radius:7px;padding:6px 12px;color:var(--secondary);background:var(--surface)}
.cal-tipe-toggle.active{background:#edf3ff;color:var(--brand);border-color:#b9d0ff}
.cal-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-right:auto;font-size:var(--text-xs);color:var(--secondary)}
.cal-legend>span{display:flex;align-items:center;gap:6px}
.cal-legend i{width:7px;height:7px;border-radius:2px;display:inline-block;background:var(--cal-color)}
.cal-workspace-grid{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:22px;align-items:start}
.cal-surface{background:var(--surface);border:1px solid var(--hairline);border-radius:12px;overflow:hidden;min-width:0}
.cal-days,.cal-unscheduled,.cal-timeline{display:grid;grid-template-columns:52px repeat(var(--cal-days),minmax(0,1fr))}
.cal-days{border-bottom:1px solid var(--hairline)}
.cal-day-head{border:0;background:var(--surface);border-left:1px solid var(--hairline);padding:12px 4px;text-align:center;font:inherit;min-width:0;cursor:pointer}
.cal-day-head span{display:block;font-size:var(--text-xs);color:var(--secondary);margin-bottom:7px;text-transform:capitalize}
.cal-day-head strong{display:inline-grid;place-items:center;width:30px;height:30px;font-weight:var(--font-medium);font-size:var(--text-base);line-height:1;color:var(--ink);border-radius:8px}
.cal-day-head.is-today strong{background:var(--brand);color:white}
.cal-day-head.is-selected:not(.is-today) strong{background:#edf3ff;color:var(--brand)}
.cal-gutter-head{display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);color:var(--secondary)}
.cal-unscheduled{border-bottom:1px solid var(--hairline);min-height:48px}
.cal-unscheduled>span{font-size:var(--text-xs);line-height:1.4;color:var(--secondary);align-self:center;padding:5px 8px}
.cal-unscheduled>div{border-left:1px solid var(--hairline);padding:4px;min-width:0}
.cal-timeline-scroll{overflow-y:auto;max-height:580px;min-height:320px;scrollbar-width:thin;overscroll-behavior:contain}
.cal-timeline{position:relative;height:1248px}
.cal-time-axis{position:relative;color:var(--secondary);font-size:var(--text-xs);font-variant-numeric:tabular-nums}
.cal-time-axis>span{position:absolute;right:7px;transform:translateY(-50%);background:var(--surface);padding:0 2px}
.cal-time-axis>span:first-child{transform:none}
.cal-time-axis>span:last-child{transform:translateY(-100%)}
.cal-day-column{position:relative;min-width:0;border-left:1px solid var(--hairline)}
.cal-day-column.is-selected{background:#f9fbff}
.cal-hour-slot{position:absolute;left:0;right:0;width:100%;height:52px;border:0;border-top:1px solid #eceff3;background:transparent;cursor:pointer;padding:0}
.cal-hour-slot:before{content:'';position:absolute;left:0;right:0;top:26px;border-top:1px dashed #f2f3f5}
.cal-hour-slot:hover{background:#edf3ff80}
.cal-hour-slot:focus-visible{outline:2px solid var(--brand);outline-offset:-2px;z-index:4}
.cal-event{--cal-color:#0750e8;--cal-bg:#edf3ff;border:1px solid color-mix(in srgb,var(--cal-color) 18%,white);border-left:3px solid var(--cal-color);background:var(--cal-bg);color:var(--ink);border-radius:6px;padding:5px 7px;text-align:left;font:inherit;display:flex;flex-direction:column;gap:3px;overflow:hidden;min-width:0;box-sizing:border-box;width:100%;cursor:pointer;z-index:2}
.cal-day-column>.cal-event{position:absolute}
.cal-event strong{font-size:var(--text-label);line-height:1.4;font-weight:var(--font-medium);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex-shrink:0;max-height:38px}
.cal-event span,.cal-event small{font-size:var(--text-xs);line-height:1.4;color:var(--secondary);display:block}
.cal-event:hover{filter:brightness(.98);border-color:var(--cal-color)}
.cal-event:focus-visible{outline:2px solid var(--brand);outline-offset:2px;z-index:5}
.cal-event.is-done strong{text-decoration:line-through;color:var(--secondary)}
.cal-event.cal-short{justify-content:center;padding:4px 7px}
.cal-event.cal-short strong{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-height:none}
.cal-event.cal-short span,.cal-event.cal-short small{display:none}
.cal-open-end{border-style:dashed;border-left-style:solid}
.cal-event.cal-recorded{--cal-color:#177d64;--cal-bg:#edf8f4}
.cal-unscheduled .cal-event{padding:4px 5px;margin-bottom:4px;border-left-width:2px}
.cal-unscheduled .cal-event span,.cal-unscheduled .cal-event small{display:none}
.cal-unscheduled .cal-event strong{font-size:var(--text-xs)}
.cal-study{--cal-color:#0750e8;--cal-bg:#edf3ff}
.cal-class{--cal-color:#9c6618;--cal-bg:#fff7e8}
.cal-exam{--cal-color:#b34a43;--cal-bg:#fff0ee}
.cal-sport{--cal-color:#177d64;--cal-bg:#edf8f4}
.cal-personal{--cal-color:#657286;--cal-bg:#f1f3f6}
.cal-task{--cal-color:#49728b;--cal-bg:#eef6fa}
.cal-now-line{position:absolute;left:0;right:0;border-top:1px solid #df4444;z-index:3;pointer-events:none}
.cal-now-line:before{content:'';position:absolute;left:-3px;top:-3px;width:5px;height:5px;border-radius:50%;background:#df4444}
.cal-agenda{min-width:0;padding:5px 0 0 18px;border-left:1px solid var(--hairline)}
.cal-agenda h2{font-size:19px;line-height:1.4;letter-spacing:-.4px;margin:8px 0 20px}
.cal-day-totals{display:grid;grid-template-columns:1fr 1fr;gap:16px;border-bottom:1px solid var(--hairline);padding:0 0 22px}
.cal-day-totals strong{font-size:23px;line-height:1.3;font-weight:var(--font-semibold);letter-spacing:-.6px;display:block}
.cal-day-totals span{font-size:var(--text-xs);color:var(--secondary);line-height:1.6;display:block;margin-top:6px}
.cal-agenda-item{border-bottom:1px solid var(--hairline);padding:22px 0;scroll-margin-top:100px}
.cal-agenda-item h3{font-size:15px;line-height:1.6;font-weight:var(--font-medium);overflow-wrap:anywhere;margin:7px 0 4px}
.cal-agenda-item p{font-size:var(--text-label);color:var(--secondary);line-height:1.6;margin:0 0 12px}
.cal-agenda-item>strong{font-size:var(--text-sm);font-weight:var(--font-medium);display:block;margin-bottom:5px}
.cal-agenda-tag{font-size:var(--text-xs);color:var(--cal-color,var(--secondary));line-height:1.5}
.cal-agenda-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.cal-agenda-actions .link-btn{font-size:var(--text-label)}
.cal-task-check{display:flex;gap:6px;align-items:center;color:var(--secondary);font-size:var(--text-label)}
.cal-task-check input{width:15px;height:15px;accent-color:var(--brand)}
.cal-empty{padding:28px 0;font-size:var(--text-sm);color:var(--secondary);line-height:1.7}
.cal-empty h3{font-size:15px;font-weight:var(--font-medium);color:var(--ink);margin:0 0 8px}
.cal-empty p{margin:0}
.cal-footnote{font-size:var(--text-xs);line-height:1.7;color:var(--secondary);margin:20px 0}
.cal-agenda>.secondary-btn{width:100%;margin-top:20px}
.cal-highlight{background:#edf3ff;outline:8px solid #edf3ff}
.cal-month-weekdays,.cal-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.cal-month-weekdays{border-bottom:1px solid var(--hairline);padding:15px 0;font-size:var(--text-xs);color:var(--secondary);text-align:center}
.cal-month-day{border:0;border-bottom:1px solid var(--hairline);border-right:1px solid var(--hairline);min-height:116px;padding:10px 7px;background:var(--surface);text-align:left;display:flex;flex-direction:column;gap:5px;font:inherit;cursor:pointer;min-width:0}
.cal-month-day>strong{font-size:var(--text-label);font-weight:var(--font-medium);display:inline-grid;place-items:center;align-self:flex-start;width:24px;height:24px;border-radius:6px;margin-bottom:4px}
.cal-month-day.is-outside{background:#fafbfc;color:#9aa2ad}
.cal-month-day.is-selected{box-shadow:inset 0 0 0 1px var(--brand)}
.cal-month-day.is-today>strong{background:var(--brand);color:white}
.cal-month-item{display:block;background:var(--cal-bg);color:var(--cal-color);font-size:var(--text-xs);line-height:1.4;padding:3px 4px;border-radius:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.cal-month-day small{font-size:var(--text-xs);color:var(--secondary)}
.cal-all-day{margin:0 0 20px}
.cal-trash{margin-top:24px;font-size:var(--text-label);line-height:1.6;color:var(--secondary);grid-column:1/-1}
.cal-trash summary{cursor:pointer;color:var(--ink)}
.cal-trash>div{display:flex;justify-content:space-between;gap:16px;margin-top:12px}
.cal-trash>div>span{min-width:0;overflow-wrap:anywhere}
@media(min-width:1450px){.cal-workspace-grid{grid-template-columns:minmax(0,1fr) 300px;gap:28px}.cal-timeline-scroll{max-height:650px}.cal-event strong{font-size:var(--text-label)}.cal-event span{font-size:var(--text-xs)}}
@media(max-width:1100px){.cal-workspace-grid{grid-template-columns:1fr}.cal-agenda{border:0;padding:24px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.cal-agenda>header,.cal-day-totals,.cal-empty,.cal-footnote,.cal-agenda>.secondary-btn{grid-column:1/-1}.cal-day-totals{max-width:400px}.cal-range{flex:0 1 auto}.cal-toolbar{gap:12px}}
@media(max-width:767px){.cal-header h1{font-size:28px}.cal-range{order:3;width:100%;justify-content:flex-start;flex-wrap:wrap}.cal-range h2{flex:1}.cal-range .secondary-btn{margin-left:auto}.cal-date-jump{display:none}.cal-view-switch{margin-left:auto}.cal-mode-switch button,.cal-view-switch button{padding:7px 9px;font-size:var(--text-label)}.cal-legend{width:100%;gap:12px}.cal-filterbar{gap:10px}.cal-timeline-wrap{overflow-x:auto}.cal-timeline-wrap:has(.cal-days[style="--cal-days:7"]){min-width:620px}.cal-surface:has(.cal-days[style="--cal-days:7"]){overflow-x:auto}.cal-timeline-scroll{max-height:470px}.cal-agenda{display:block}.cal-agenda-item{padding:20px 0}.cal-month-day{min-height:88px;padding:6px 3px}.cal-month-day>strong{font-size:var(--text-xs)}.cal-month-item{font-size:10px;padding:2px}.cal-header{align-items:flex-start}.cal-header p{max-width:240px}.cal-header>.primary-btn{white-space:nowrap;padding:8px 12px;font-size:var(--text-label)}}
@media(prefers-reduced-motion:reduce){.cal-session-detail{scroll-behavior:auto}}
