:root{
  --cal-bg:#0b0b0c; --cal-panel:#151516; --cal-panel-2:#1b1b1d; --cal-border:#2a2a2d;
  --cal-text:#f6f6f6; --cal-muted:#9a9aa2; --cal-gold:#f8e702; --cal-red:#ef3f39;
  --cal-event:#8d6cff; --cal-group:#38bdf8; --cal-individual:#f6ad55;
}
*{box-sizing:border-box}
body.calendar-page{margin:0;background:var(--cal-bg);color:var(--cal-text);font-family:'DM Sans',sans-serif;min-height:100vh}
.calendar-shell{max-width:1500px;margin:0 auto;padding:20px 18px 90px}
.calendar-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}
.calendar-brand .eyebrow{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--cal-gold);font-weight:700}
.calendar-brand h1{font-family:'Bebas Neue',sans-serif;font-size:clamp(2rem,5vw,3.6rem);line-height:.9;margin:.25rem 0}.calendar-brand h1 span{color:var(--cal-gold)}
.calendar-role{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--cal-border);background:var(--cal-panel);border-radius:999px;padding:7px 11px;color:var(--cal-muted);font-size:.8rem}
.calendar-head-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.calendar-btn,.calendar-link{appearance:none;border:1px solid var(--cal-border);background:var(--cal-panel);color:var(--cal-text);border-radius:9px;padding:10px 13px;font:inherit;font-size:.84rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px}
.calendar-btn:hover,.calendar-link:hover{border-color:#555}.calendar-btn.primary{background:var(--cal-gold);color:#090909;border-color:var(--cal-gold);font-weight:800}.calendar-btn.danger{border-color:rgba(239,63,57,.45);color:#ffaaa7}
.calendar-toolbar{position:sticky;top:0;z-index:7;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;background:rgba(11,11,12,.94);backdrop-filter:blur(10px);padding:10px 0 14px}
.calendar-nav,.calendar-view-tabs,.calendar-filters{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.calendar-period{font-size:1.05rem;font-weight:800;text-align:center;text-transform:capitalize}
.calendar-view-tabs{justify-content:flex-end}.calendar-view-tabs .calendar-btn.active{background:var(--cal-text);color:#111;border-color:var(--cal-text)}
.calendar-filter-select{border:1px solid var(--cal-border);background:var(--cal-panel);color:var(--cal-text);border-radius:9px;padding:9px 11px;font:inherit}
.calendar-summary{display:flex;gap:10px;flex-wrap:wrap;margin:4px 0 14px}.calendar-summary span{font-size:.75rem;color:var(--cal-muted);border:1px solid var(--cal-border);border-radius:999px;padding:6px 9px;background:var(--cal-panel)}
.calendar-summary .event-dot::before,.calendar-summary .group-dot::before,.calendar-summary .individual-dot::before{content:'';width:8px;height:8px;border-radius:99px;display:inline-block;margin-right:6px}.event-dot::before{background:var(--cal-event)}.group-dot::before{background:var(--cal-group)}.individual-dot::before{background:var(--cal-individual)}
.calendar-board{border:1px solid var(--cal-border);border-radius:14px;background:var(--cal-panel);overflow:hidden;min-height:560px}
.calendar-loading,.calendar-empty{padding:60px 20px;text-align:center;color:var(--cal-muted)}
.month-weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.month-weekdays{background:#101011;border-bottom:1px solid var(--cal-border)}.month-weekdays div{padding:10px;text-align:center;color:var(--cal-muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em}
.month-day{min-height:128px;border-right:1px solid var(--cal-border);border-bottom:1px solid var(--cal-border);padding:7px;overflow:hidden}.month-day:nth-child(7n){border-right:0}.month-day.outside{opacity:.38}.month-day.today{box-shadow:inset 0 0 0 2px rgba(248,231,2,.55)}
.month-day-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}.month-day-num{width:27px;height:27px;display:grid;place-items:center;border-radius:50%;font-size:.78rem;font-weight:700}.today .month-day-num{background:var(--cal-gold);color:#111}.month-count{font-size:.65rem;color:var(--cal-muted)}
.cal-item{width:100%;border:0;border-left:3px solid var(--cal-group);border-radius:5px;background:#222228;color:var(--cal-text);padding:5px 6px;margin:3px 0;text-align:left;cursor:pointer;font:inherit;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.69rem}.cal-item.event{border-left-color:var(--cal-event)}.cal-item.individual{border-left-color:var(--cal-individual)}.cal-item.important{box-shadow:inset 0 0 0 1px rgba(239,63,57,.45)}.cal-item time{color:#c8c8ce;margin-right:4px}
.month-more{font-size:.68rem;color:var(--cal-muted);padding:3px}
.week-grid{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));min-width:980px}.week-scroll{overflow:auto}.week-day{min-height:560px;border-right:1px solid var(--cal-border)}.week-day:last-child{border-right:0}.week-day-head{position:sticky;top:0;background:#111113;padding:11px;text-align:center;border-bottom:1px solid var(--cal-border);z-index:2}.week-day-head strong{display:block;font-size:.84rem;text-transform:capitalize}.week-day-head span{color:var(--cal-muted);font-size:.72rem}.week-day.today .week-day-head{color:var(--cal-gold)}.week-items{padding:8px}.week-items .cal-item{white-space:normal;font-size:.76rem;padding:8px}
.agenda-list{padding:12px}.agenda-day{margin-bottom:20px}.agenda-day-title{position:sticky;top:66px;z-index:3;background:var(--cal-panel);padding:8px 4px;border-bottom:1px solid var(--cal-border);font-weight:800;text-transform:capitalize}.agenda-row{display:grid;grid-template-columns:82px 1fr auto;gap:12px;align-items:center;padding:12px 8px;border-bottom:1px solid #252528;cursor:pointer}.agenda-row:hover{background:var(--cal-panel-2)}.agenda-time{font-weight:800;font-size:.82rem}.agenda-main strong{display:block}.agenda-main small{display:block;color:var(--cal-muted);margin-top:3px}.agenda-kind{font-size:.68rem;border-radius:999px;padding:5px 8px;border:1px solid var(--cal-border);color:var(--cal-muted)}
.calendar-modal{position:fixed;inset:0;background:rgba(0,0,0,.74);z-index:50;display:none;align-items:center;justify-content:center;padding:18px}.calendar-modal.open{display:flex}.calendar-modal-card{width:min(560px,100%);background:#18181b;border:1px solid #333;border-radius:16px;padding:20px;box-shadow:0 30px 90px rgba(0,0,0,.5)}.calendar-modal-head{display:flex;justify-content:space-between;gap:12px}.calendar-modal h2{margin:0 0 4px;font-size:1.3rem}.calendar-modal-type{color:var(--cal-muted);font-size:.78rem}.calendar-modal-close{border:0;background:transparent;color:#bbb;font-size:1.5rem;cursor:pointer}.calendar-detail-grid{display:grid;gap:9px;margin:18px 0}.calendar-detail{background:#101012;border:1px solid #29292c;border-radius:9px;padding:10px}.calendar-detail span{display:block;color:var(--cal-muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px}.calendar-modal-actions{display:flex;gap:8px;flex-wrap:wrap}
.calendar-error{margin:12px 0;padding:10px 12px;border:1px solid rgba(239,63,57,.4);background:rgba(239,63,57,.08);color:#ffc1bf;border-radius:8px;display:none}.calendar-error.show{display:block}
@media(max-width:850px){.calendar-topbar{align-items:flex-start;flex-direction:column}.calendar-head-actions{justify-content:flex-start}.calendar-toolbar{grid-template-columns:1fr}.calendar-period{text-align:left;order:-1}.calendar-view-tabs{justify-content:flex-start}.month-day{min-height:100px;padding:4px}.month-weekdays div{font-size:.6rem;padding:8px 2px}.cal-item{font-size:.61rem;padding:4px}.agenda-row{grid-template-columns:64px 1fr}.agenda-kind{display:none}}
@media(max-width:560px){.calendar-shell{padding:14px 8px 80px}.month-day{min-height:82px}.month-day-num{width:22px;height:22px;font-size:.68rem}.month-count{display:none}.month-day .cal-item:nth-of-type(n+3){display:none}.calendar-btn,.calendar-link{padding:9px 10px}.calendar-board{border-radius:10px}.agenda-day-title{top:118px}}
