:root{--tde-red:#c9182b;--tde-black:#181818;--tde-soft:#f5f5f7;--tde-border:#e2e3e6}
.tde-calendar-app{font-family:Arial,sans-serif;background:#fff;border:1px solid var(--tde-border);border-radius:18px;overflow:hidden;color:var(--tde-black);box-shadow:0 12px 35px rgba(0,0,0,.08)}
.tde-calendar-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:24px 26px;background:linear-gradient(135deg,#fff,#f8f8f9)}
.tde-eyebrow{font-size:10px;letter-spacing:2px;font-weight:800;color:var(--tde-red)}.tde-calendar-title h2{margin:5px 0 3px;font-size:26px}.tde-calendar-title p{margin:0;color:#6d7177}
.tde-toolbar-right{display:flex;gap:14px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.tde-view-switch{display:flex;background:#eceef1;padding:3px;border-radius:10px}.tde-view-switch button{border:0;background:transparent;padding:8px 12px;border-radius:8px;font-weight:700;cursor:pointer}.tde-view-switch button.is-active{background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.tde-view-controls{display:flex;align-items:center;gap:7px}.tde-icon-btn,.tde-today-btn{border:1px solid #d6d8dc;background:#fff;border-radius:9px;height:38px;cursor:pointer;font-weight:800}.tde-icon-btn{width:38px;font-size:22px}.tde-today-btn{padding:0 14px}
.tde-filter-bar{display:grid;grid-template-columns:repeat(7,minmax(115px,1fr)) auto;gap:9px;padding:16px 22px;background:#f2f3f5;border-top:1px solid var(--tde-border);border-bottom:1px solid var(--tde-border)}.tde-filter-bar label span{display:block;font-size:10px;font-weight:800;text-transform:uppercase;color:#70747b;margin:0 0 5px}.tde-filter-bar select{width:100%;min-height:38px;border:1px solid #d5d7db;border-radius:8px;background:#fff;padding:0 8px}.tde-clear-btn{align-self:end;height:38px;border:0;background:transparent;color:var(--tde-red);font-weight:800;cursor:pointer}
.tde-calendar-heading{padding:15px 22px;display:flex;justify-content:space-between;align-items:center;gap:14px}.tde-calendar-heading>span{font-size:18px;font-weight:800}.tde-legend{display:flex;gap:11px;flex-wrap:wrap;justify-content:flex-end}.tde-legend span{font-size:11px;color:#666;display:flex;align-items:center;gap:4px}.tde-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.tde-calendar-shell{padding:0 18px 20px;overflow:auto}.tde-week-grid{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));gap:8px;min-width:970px}.tde-day-column{border:1px solid var(--tde-border);border-radius:12px;background:#fafafa;min-height:250px;overflow:hidden}.tde-day-column.is-today{box-shadow:inset 0 0 0 2px var(--tde-red)}.tde-day-head{padding:10px;text-align:center;border-bottom:1px solid var(--tde-border);background:#fff}.tde-day-head strong,.tde-day-head span{display:block}.tde-day-head strong{font-size:12px;text-transform:uppercase}.tde-day-head span{font-size:11px;color:#777;margin-top:2px}.tde-day-events{padding:7px}
.tde-event-card{width:100%;text-align:left;border:0;border-left:5px solid #777;border-radius:9px;padding:9px 10px;margin-bottom:7px;cursor:pointer;color:#202124;box-shadow:0 2px 6px rgba(0,0,0,.06);transition:.15s transform,.15s box-shadow}.tde-event-card:hover{transform:translateY(-1px);box-shadow:0 5px 12px rgba(0,0,0,.11)}.tde-event-card.is-extra:after{content:'EXTRA';display:inline-block;margin-top:7px;font-size:9px;letter-spacing:.6px;font-weight:900;background:rgba(255,255,255,.72);padding:3px 5px;border-radius:5px}.tde-event-time{display:block;font-size:11px;font-weight:800}.tde-event-name{display:block;font-size:14px;font-weight:850;margin:4px 0 7px;line-height:1.2}.tde-event-meta{display:block;font-size:11px;line-height:1.45;opacity:.82}.tde-event-detail{display:block;font-size:10px;margin-top:6px;opacity:.72}.tde-no-events{padding:26px 8px;text-align:center;color:#9a9da2;font-size:12px}
.tde-day-view{max-width:760px;margin:0 auto}.tde-day-list .tde-event-card{padding:15px 17px;margin-bottom:10px}.tde-day-list .tde-event-name{font-size:18px}
.tde-month-grid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));min-width:880px;border:1px solid var(--tde-border);border-radius:12px;overflow:hidden}.tde-month-weekday{background:#f3f4f6;padding:8px;text-align:center;font-size:11px;font-weight:800;border-right:1px solid var(--tde-border)}.tde-month-cell{min-height:122px;padding:7px;border-top:1px solid var(--tde-border);border-right:1px solid var(--tde-border);background:#fff}.tde-month-cell.is-blank{background:#fafafa}.tde-month-cell.is-today{box-shadow:inset 0 0 0 2px var(--tde-red)}.tde-month-date{font-size:12px;font-weight:800;margin-bottom:5px}.tde-month-pill{display:block;width:100%;border:0;border-left:4px solid #777;border-radius:5px;text-align:left;padding:5px 6px;margin-bottom:4px;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.tde-more{border:0;background:transparent;color:var(--tde-red);font-size:10px;font-weight:800;cursor:pointer;padding:3px}
.tde-empty-state{text-align:center;padding:35px;color:#555}.tde-empty-state strong,.tde-empty-state span{display:block}.tde-empty-state span{margin-top:5px;color:#777}
.tde-jazz{background:#ffe2e5;border-color:#c9182b!important}.tde-dot.tde-jazz{background:#c9182b}.tde-lyrical{background:#e9e1ff;border-color:#7557c8!important}.tde-dot.tde-lyrical{background:#7557c8}.tde-contemporary{background:#dff4ec;border-color:#258b6d!important}.tde-dot.tde-contemporary{background:#258b6d}.tde-tap{background:#fff0cf;border-color:#c48a13!important}.tde-dot.tde-tap{background:#c48a13}.tde-hiphop{background:#dceafa;border-color:#2c70b7!important}.tde-dot.tde-hiphop{background:#2c70b7}.tde-ballet,.tde-pointe{background:#fde5f1;border-color:#b94780!important}.tde-dot.tde-ballet,.tde-dot.tde-pointe{background:#b94780}.tde-musical{background:#eee1d7;border-color:#9b6545!important}.tde-dot.tde-musical{background:#9b6545}.tde-production{background:#e4e4e4;border-color:#393939!important}.tde-dot.tde-production{background:#393939}.tde-acro{background:#e1f3fb;border-color:#3586a5!important}.tde-dot.tde-acro{background:#3586a5}.tde-other{background:#edf0f3;border-color:#777!important}.tde-dot.tde-other{background:#777}
.tde-modal[hidden]{display:none}.tde-modal{position:fixed;z-index:999999;inset:0;display:flex;align-items:center;justify-content:center;padding:18px}.tde-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.58)}.tde-modal-card{position:relative;background:#fff;border-radius:17px;padding:26px;width:min(580px,100%);max-height:88vh;overflow:auto;box-shadow:0 24px 70px rgba(0,0,0,.3)}.tde-modal-close{position:absolute;right:14px;top:12px;border:0;background:#f0f1f3;border-radius:50%;width:34px;height:34px;font-size:23px;cursor:pointer}.tde-modal-genre{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--tde-red)}.tde-modal-card h3{font-size:27px;margin:5px 45px 5px 0}.tde-modal-time{font-size:15px;color:#5d6269;margin-bottom:18px}.tde-detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.tde-detail-grid div{background:#f5f6f8;border-radius:10px;padding:10px}.tde-detail-grid span{display:block;font-size:10px;text-transform:uppercase;color:#737880;font-weight:800;margin-bottom:4px}.tde-modal-section{border-top:1px solid #e5e6e8;margin-top:16px;padding-top:13px}.tde-modal-section h4{margin:0 0 6px}.tde-modal-section p{margin:0;line-height:1.55}.tde-music-button{display:inline-block;background:var(--tde-red);color:#fff!important;text-decoration:none;padding:11px 15px;border-radius:9px;font-weight:800;margin-top:18px}
@media(max-width:1180px){.tde-filter-bar{grid-template-columns:repeat(4,1fr)}}@media(max-width:760px){.tde-calendar-toolbar{align-items:flex-start;flex-direction:column}.tde-toolbar-right{width:100%;justify-content:space-between}.tde-filter-bar{grid-template-columns:1fr 1fr}.tde-calendar-heading{align-items:flex-start;flex-direction:column}.tde-legend{justify-content:flex-start}.tde-week-grid{display:block;min-width:0}.tde-day-column{margin-bottom:10px;min-height:0}.tde-day-column:not(.has-events){display:none}.tde-day-head{text-align:left;display:flex;gap:8px;align-items:baseline}.tde-day-head strong,.tde-day-head span{display:inline}.tde-detail-grid{grid-template-columns:1fr 1fr}.tde-month-grid{min-width:760px}}
/* v0.7 polish */
.tde-calendar-app{width:min(1180px,100%);margin-inline:auto}
.tde-calendar-toolbar{background:#171717;color:#fff}
.tde-calendar-title h2,.tde-calendar-title p{color:#fff}.tde-calendar-title p{opacity:.72}
.tde-view-switch{background:#303034}.tde-view-switch button{color:#fff}.tde-view-switch button.is-active{background:#fff;color:#171717}
.tde-icon-btn,.tde-today-btn{border-color:#4a4a4f;background:#252529;color:#fff}
.tde-filter-bar{display:flex;align-items:end;gap:14px;flex-wrap:wrap}.tde-filter-bar label{flex:1 1 145px}.tde-filter-bar label:nth-child(1),.tde-filter-bar label:nth-child(2){flex-basis:175px}.tde-filter-bar label:nth-child(5),.tde-filter-bar label:nth-child(7){flex-basis:185px}.tde-filter-bar select{min-width:0;padding-right:28px}
@media(max-width:760px){.tde-calendar-app{width:100%}.tde-filter-bar{display:grid;grid-template-columns:1fr 1fr}}


/* v0.7.7: keep rehearsal cards inside their day column and wrap long dance names */
.tde-event-card,
.tde-month-pill {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
}
.tde-event-card {
  display: block;
  white-space: normal;
  overflow: hidden;
}
.tde-event-name {
  width: 100%;
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}

/* v0.8 calendar refinements */
.tde-event-card.tde-other,.tde-month-pill.tde-other{background:#e7e8ea;border-color:#3f4247!important}
.tde-event-updated{display:block;margin-top:7px;font-size:9px;line-height:1.3;color:#555;opacity:.78}
.tde-event-updated:empty{display:none}
.tde-modal-updated{margin:15px 0 0;font-size:11px;color:#777;font-style:italic}
.tde-modal-updated:empty{display:none}

/* v0.8.2 responsive and usability update */
.tde-event-card,
.tde-month-pill{background:#f1f2f3;border-color:#3f4247!important}
.tde-event-card[class*="tde-jazz"],.tde-month-pill[class*="tde-jazz"]{background:#fff2f3;border-color:#c9182b!important}
.tde-event-card[class*="tde-lyrical"],.tde-month-pill[class*="tde-lyrical"]{background:#f6f2ff;border-color:#7557c8!important}
.tde-event-card[class*="tde-contemporary"],.tde-month-pill[class*="tde-contemporary"]{background:#eff9f5;border-color:#258b6d!important}
.tde-event-card[class*="tde-tap"],.tde-month-pill[class*="tde-tap"]{background:#fff9ea;border-color:#c48a13!important}
.tde-event-card[class*="tde-hiphop"],.tde-month-pill[class*="tde-hiphop"]{background:#f0f6fd;border-color:#2c70b7!important}
.tde-event-card[class*="tde-ballet"],.tde-event-card[class*="tde-pointe"],.tde-month-pill[class*="tde-ballet"],.tde-month-pill[class*="tde-pointe"]{background:#fff3f9;border-color:#b94780!important}
.tde-event-card[class*="tde-musical"],.tde-month-pill[class*="tde-musical"]{background:#faf4ef;border-color:#9b6545!important}
.tde-event-card[class*="tde-production"],.tde-month-pill[class*="tde-production"]{background:#f1f1f1;border-color:#393939!important}
.tde-event-card[class*="tde-acro"],.tde-month-pill[class*="tde-acro"]{background:#f0f9fc;border-color:#3586a5!important}
.tde-event-name{font-size:15px;font-weight:900;display:flex;align-items:flex-start;gap:7px}
.tde-event-name .tde-title-dot{flex:0 0 8px;width:8px;height:8px;border-radius:50%;margin-top:5px;background:currentColor}
.tde-event-updated{font-size:8.5px;font-weight:400;color:#74777c;opacity:.72}
.tde-legend-item{appearance:none;border:0;background:transparent;padding:4px 6px;border-radius:7px;font:inherit;font-size:11px;color:#666;display:flex;align-items:center;gap:4px;cursor:pointer}
.tde-legend-item:hover,.tde-legend-item:focus-visible{background:#eceef1;outline:none}
.tde-legend-item.is-active{background:#202124;color:#fff}
.tde-day-column.is-today{background:#fff9fa;box-shadow:inset 0 0 0 2px var(--tde-red)}
.tde-day-column.is-today .tde-day-head{background:#fff1f3;color:#9f1021}

@media (max-width: 980px){
  .tde-calendar-toolbar{padding:18px}
  .tde-filter-bar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px}
  .tde-filter-bar label{min-width:0}
  .tde-clear-btn{width:100%;border:1px solid #c9182b;border-radius:8px;background:#fff;padding:0 12px}
  .tde-calendar-heading{padding:14px 16px}
  .tde-calendar-shell{padding:0 12px 18px;overflow-x:hidden}
  .tde-week-grid{display:block;min-width:0}
  .tde-day-column{width:100%;min-width:0;min-height:0;margin:0 0 12px;overflow:hidden}
  .tde-day-column:not(.has-events){display:none}
  .tde-day-events{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:9px}
  .tde-event-card{height:100%;margin:0;min-width:0}
  .tde-day-head{text-align:left;display:flex;gap:8px;align-items:baseline;padding:10px 12px}
  .tde-day-head strong,.tde-day-head span{display:inline}
}

@media (max-width: 600px){
  .tde-calendar-app{border-radius:12px}
  .tde-calendar-toolbar{padding:16px;gap:14px}
  .tde-calendar-title h2{font-size:22px;line-height:1.15}
  .tde-calendar-title p{font-size:13px}
  .tde-toolbar-right{display:grid;grid-template-columns:1fr;width:100%;gap:10px}
  .tde-view-switch{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}
  .tde-view-switch button{padding:9px 6px}
  .tde-view-controls{display:grid;grid-template-columns:42px 1fr 42px;width:100%}
  .tde-icon-btn{width:42px}
  .tde-today-btn{width:100%}
  .tde-filter-bar{grid-template-columns:1fr;padding:12px}
  .tde-filter-bar select,.tde-clear-btn{min-height:42px}
  .tde-calendar-heading{gap:9px}
  .tde-calendar-heading>span{font-size:16px;line-height:1.25}
  .tde-legend{justify-content:flex-start;gap:3px}
  .tde-legend-item{font-size:10px;padding:4px 5px}
  .tde-calendar-shell{padding:0 10px 16px}
  .tde-day-events{display:block;padding:8px}
  .tde-event-card{width:100%;height:auto;margin:0 0 8px;padding:12px 13px;text-align:left}
  .tde-event-card:last-child{margin-bottom:0}
  .tde-event-time{font-size:12px}
  .tde-event-name{font-size:16px;line-height:1.25;margin:5px 0 8px}
  .tde-event-meta{font-size:12px}
  .tde-event-updated{font-size:9px;margin-top:7px}
  .tde-detail-grid{grid-template-columns:1fr}
  .tde-modal{padding:10px}
  .tde-modal-card{padding:22px 18px;border-radius:14px}
  .tde-modal-card h3{font-size:23px}
  .tde-month-grid{min-width:680px}
}

/* v0.9.1 Company Calendar */
.tde-event-card.tde-jazz .tde-event-name,.tde-month-pill.tde-jazz{color:#c9182b}
.tde-event-card.tde-lyrical .tde-event-name,.tde-month-pill.tde-lyrical{color:#7557c8}
.tde-event-card.tde-contemporary .tde-event-name,.tde-month-pill.tde-contemporary{color:#258b6d}
.tde-event-card.tde-tap .tde-event-name,.tde-month-pill.tde-tap{color:#9b6b09}
.tde-event-card.tde-hiphop .tde-event-name,.tde-month-pill.tde-hiphop{color:#2c70b7}
.tde-event-card.tde-ballet .tde-event-name,.tde-event-card.tde-pointe .tde-event-name,.tde-month-pill.tde-ballet,.tde-month-pill.tde-pointe{color:#b94780}
.tde-event-card.tde-musical .tde-event-name,.tde-month-pill.tde-musical{color:#8b593d}
.tde-event-card.tde-production .tde-event-name,.tde-month-pill.tde-production{color:#303030}
.tde-event-card.tde-acro .tde-event-name,.tde-month-pill.tde-acro{color:#28738f}
.tde-event-card.tde-other .tde-event-name,.tde-month-pill.tde-other{color:#292b2f}
.tde-event-meta,.tde-event-time,.tde-event-detail,.tde-event-updated{color:#4f5359}
.tde-company-event{background:#fff7e6!important;border-color:#9a6810!important;color:#6f4800!important}
.tde-company-event .tde-event-name{color:#7a5000}.tde-company-event .tde-event-name>span:first-child{font-size:11px;margin-top:3px}
.tde-planner-widgets{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(300px,1.2fr);gap:12px;padding:14px 18px;background:#f4f5f6;border-bottom:1px solid #e3e5e8}
.tde-countdown,.tde-whats-new{background:#fff;border:1px solid #e0e2e5;border-radius:11px;padding:13px 15px;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.tde-countdown strong{display:block;font-size:24px;line-height:1;color:#c9182b}.tde-countdown span{display:block;margin-top:5px;font-size:13px;color:#4e5359}
.tde-whats-new>strong{display:block;font-size:13px;margin-bottom:7px}.tde-whats-new #tde_whats_new{display:grid;gap:4px}.tde-whats-new span{font-size:12px;color:#555;line-height:1.35}
.tde-modal-section p{white-space:pre-line}
@media(max-width:760px){.tde-planner-widgets{grid-template-columns:1fr;padding:12px}.tde-countdown strong{font-size:21px}}


/* v0.9.1 polish and bug fixes */
.tde-calendar-heading{display:block}
.tde-calendar-heading>span{display:block;margin-bottom:12px}
.tde-legend{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;width:100%;justify-content:stretch}
.tde-legend-item{justify-content:center;min-width:0;border:1px solid currentColor;padding:7px 8px}
.tde-event-name{font-size:clamp(11px,1.05vw,15px);word-break:normal;overflow-wrap:normal;hyphens:none}
.tde-event-name>span:last-child{min-width:0;word-break:normal;overflow-wrap:normal;hyphens:none}
.tde-day-list .tde-event-name{font-size:clamp(15px,2vw,18px)}
.tde-event-card.tde-open .tde-event-name,.tde-month-pill.tde-open{color:#7a4a9e}
.tde-open{border-color:#7a4a9e!important}.tde-dot.tde-open{background:#7a4a9e}
.tde-countdown>strong{font-size:16px;line-height:1.2;margin-bottom:8px;color:#c9182b}
.tde-upcoming-event{display:block;width:100%;text-align:left;border:0;border-top:1px solid #eceef1;background:transparent;padding:8px 0;cursor:pointer;color:#202124}
.tde-upcoming-event:first-of-type{border-top:0;padding-top:2px}
.tde-upcoming-event b{display:block;font-size:13px}.tde-upcoming-event span{display:block;margin-top:2px;font-size:11px;color:#62666d}
@media(max-width:980px){.tde-legend{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){.tde-legend{grid-template-columns:repeat(2,minmax(0,1fr))}.tde-legend-item{justify-content:flex-start}.tde-event-name{font-size:14px}}


/* v0.9.2 calendar polish */
.tde-planner-widgets{gap:10px;padding:10px 16px}
.tde-countdown,.tde-whats-new{min-height:0;padding:11px 13px}
.tde-upcoming-event{padding:5px 0}
.tde-view-switch button{padding:9px 14px}
.tde-calendar-heading{display:block;padding:14px 22px 10px}
.tde-calendar-heading>span{display:block;margin-bottom:8px}
.tde-legend{display:flex;align-items:center;justify-content:flex-start;gap:5px 15px;flex-wrap:wrap}
.tde-legend-item{display:inline-flex;align-items:center;gap:4px;padding:0;border:0;background:none;color:#60646b;font-size:11px;line-height:1.35;white-space:nowrap;cursor:default;box-shadow:none}
.tde-legend-item:hover{transform:none;box-shadow:none}
.tde-legend-item .tde-dot{width:7px;height:7px;flex:0 0 7px}
.tde-day-column.is-today{box-shadow:inset 0 0 0 2px #77859a;background:#f4f7fa}
.tde-day-column.is-today .tde-day-head{background:#e9eef4}
.tde-month-cell.is-today{box-shadow:inset 0 0 0 2px #77859a;background:#f4f7fa}
.tde-event-name{overflow-wrap:normal;word-break:normal;hyphens:none;text-wrap:balance}
.tde-event-card.tde-title-long .tde-event-name{font-size:12px;line-height:1.18}
.tde-event-card.tde-title-very-long .tde-event-name{font-size:11px;line-height:1.16}
.tde-event-card .tde-event-name>span{overflow-wrap:normal;word-break:normal;hyphens:none}
.tde-filter-bar label:nth-child(2),.tde-filter-bar label:nth-child(3){flex-grow:1.35}
@media(max-width:760px){
  .tde-planner-widgets{padding:8px;gap:8px}
  .tde-calendar-heading{padding:13px 14px 8px}
  .tde-legend{gap:4px 11px}
  .tde-legend-item{font-size:10px}
}


/* v0.9.4 alignment, legend, recency and hover refinements */
.tde-calendar-heading>span{
  margin-bottom:10px;
}
.tde-legend{
  width:100%;
  justify-content:center;
  align-items:center;
  gap:6px 22px;
  padding:1px 2%;
  box-sizing:border-box;
}
.tde-legend-item{
  font-size:12px;
  line-height:1.4;
}
.tde-legend-item .tde-dot{
  width:9px;
  height:9px;
  flex:0 0 9px;
}

/* Keep every card centered and give its content predictable vertical zones. */
.tde-event-card{
  text-align:center;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.tde-event-time{
  min-height:1.35em;
  text-align:center;
}
.tde-event-name{
  width:100%;
  min-height:3.48em;
  margin:4px 0 5px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  line-height:1.16;
  overflow:visible;
}
.tde-event-name>span:last-child{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:3;
  overflow:hidden;
  max-width:100%;
  text-align:center;
  word-break:normal;
  overflow-wrap:normal;
  hyphens:none;
  text-wrap:balance;
}
.tde-event-name .tde-title-dot{
  margin-top:0;
}
.tde-event-card.tde-title-long .tde-event-name{
  font-size:11.5px;
  line-height:1.15;
}
.tde-event-card.tde-title-very-long .tde-event-name{
  font-size:10.5px;
  line-height:1.13;
}
.tde-event-meta{
  min-height:1.45em;
  text-align:center;
}
.tde-event-updated{
  min-height:1.3em;
  margin-top:6px;
  text-align:center;
}
.tde-event-updated:empty{
  display:block;
  visibility:hidden;
}

/* Preserve the genre identity on hover instead of turning every card Jazz red. */
.tde-event-card:hover{
  transform:none;
  box-shadow:0 4px 11px rgba(0,0,0,.13);
}
.tde-event-card.tde-jazz:hover{background:#f9e3e6!important;border-color:#a91425!important}
.tde-event-card.tde-lyrical:hover{background:#eee7fb!important;border-color:#6246ad!important}
.tde-event-card.tde-contemporary:hover{background:#e3f3ec!important;border-color:#1f735b!important}
.tde-event-card.tde-tap:hover{background:#f8efd9!important;border-color:#a87410!important}
.tde-event-card.tde-hiphop:hover{background:#e4eef9!important;border-color:#245e99!important}
.tde-event-card.tde-ballet:hover,.tde-event-card.tde-pointe:hover{background:#f7e7ef!important;border-color:#9d3d6d!important}
.tde-event-card.tde-acro:hover{background:#e4f2f7!important;border-color:#2d718b!important}
.tde-event-card.tde-musical:hover{background:#f1e8e1!important;border-color:#815338!important}
.tde-event-card.tde-production:hover{background:#e4e4e4!important;border-color:#2f2f2f!important}
.tde-event-card.tde-open{background:#f3edf8!important;border-color:#7a4a9e!important}
.tde-event-card.tde-open:hover{background:#e9def1!important;border-color:#643b83!important}
.tde-event-card.tde-other:hover{background:#e2e5e8!important;border-color:#34373b!important}
.tde-company-event:hover{background:#f8edcf!important;border-color:#80560d!important}

@media(max-width:760px){
  .tde-legend{justify-content:center;gap:5px 15px;padding-inline:0}
  .tde-legend-item{font-size:11px}
  .tde-event-name{min-height:auto}
  .tde-event-updated{min-height:0}
  .tde-event-updated:empty{display:none}
}


/* v0.9.5 month-view and calendar-header refinements */
.tde-eyebrow{
  font-size:12px;
  letter-spacing:2.1px;
}
.tde-calendar-heading{
  text-align:center;
}
.tde-calendar-heading>span{
  text-align:center;
  width:100%;
}
.tde-legend{
  display:flex;
  flex-wrap:nowrap;
  justify-content:space-between;
  align-items:center;
  width:100%;
  max-width:100%;
  gap:8px;
  padding:2px 1%;
  overflow-x:auto;
  scrollbar-width:thin;
}
.tde-legend-item{
  flex:0 0 auto;
  font-size:clamp(11px,1.05vw,13px);
  gap:5px;
}
.tde-legend-item .tde-dot{
  width:10px;
  height:10px;
  flex-basis:10px;
}
.tde-month-grid{
  align-items:stretch;
}
.tde-month-cell{
  min-height:122px;
  height:auto;
}
.tde-month-events{
  display:flex;
  flex-direction:column;
  gap:0;
}
.tde-month-pill{
  padding:6px 8px;
}
@media(max-width:760px){
  .tde-eyebrow{font-size:11px}
  .tde-legend{
    justify-content:flex-start;
    flex-wrap:nowrap;
    overflow-x:auto;
    padding-bottom:5px;
  }
  .tde-legend-item{font-size:11px}
  .tde-legend-item .tde-dot{width:9px;height:9px;flex-basis:9px}
}


/* v0.9.7 card alignment and dancer summary */
.tde-week-grid .tde-event-card{
  min-height:145px;
}
.tde-week-grid .tde-event-name{
  min-height:2.7em;
  max-height:2.7em;
}
.tde-week-grid .tde-event-meta{
  min-height:1.45em;
}
.tde-week-grid .tde-event-updated{
  margin-top:auto;
  padding-top:6px;
}
.tde-roster-links{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
}
.tde-dancer-link{
  border:1px solid #d7d9dd;
  background:#f7f8fa;
  border-radius:999px;
  padding:6px 10px;
  font:inherit;
  font-size:12px;
  font-weight:750;
  cursor:pointer;
}
.tde-dancer-link:hover{
  border-color:var(--tde-red);
  background:#fff3f4;
}
.tde-dancer-summary-card{
  width:min(520px,100%);
}
.tde-level-badge{
  display:inline-block;
  margin:2px 0 18px;
  padding:6px 10px;
  border-radius:999px;
  background:#f0f1f3;
  font-size:12px;
  font-weight:850;
}
.tde-dancer-dance-list{
  display:grid;
  gap:14px;
}
.tde-dancer-dance-group{
  border:1px solid #e4e5e8;
  border-radius:13px;
  padding:12px;
}
.tde-dancer-dance-group h4{
  display:flex;
  align-items:center;
  gap:8px;
  margin:0 0 8px;
  font-size:13px;
  text-transform:uppercase;
  letter-spacing:.5px;
}
.tde-dancer-dance-group h4 span{
  min-width:28px;
  color:var(--tde-red);
  letter-spacing:-2px;
}
.tde-dancer-dance-row{
  width:100%;
  display:block;
  text-align:left;
  border:0;
  border-top:1px solid #eceef0;
  background:transparent;
  padding:10px 4px;
  cursor:pointer;
}
.tde-dancer-dance-row:first-of-type{border-top:0}
.tde-dancer-dance-row strong,
.tde-dancer-dance-row small{display:block}
.tde-dancer-dance-row small{
  margin-top:3px;
  color:#74777c;
}
.tde-dancer-dance-row:hover strong{color:var(--tde-red)}
.tde-no-dances{margin:0;color:#777}
@media(max-width:760px){
  .tde-week-grid .tde-event-card{min-height:0}
  .tde-week-grid .tde-event-name{min-height:auto;max-height:none}
}


/* v0.9.8 compact dancer card + larger rehearsal titles */
.tde-week-grid .tde-event-name{
  font-size:clamp(13px,1.2vw,16px);
  line-height:1.18;
}
.tde-dancer-summary-card{
  width:min(430px,calc(100vw - 32px));
  max-height:78vh;
  padding:20px;
  border-radius:15px;
}
.tde-dancer-summary-card .tde-modal-genre{display:none}
.tde-dancer-summary-card h3{
  font-size:22px;
  line-height:1.15;
  margin:0 38px 3px 0;
}
.tde-dancer-summary-card .tde-level-badge{
  margin:2px 0 12px;
  padding:4px 9px;
  font-size:11px;
}
.tde-dancer-summary-card .tde-modal-close{
  width:30px;
  height:30px;
  font-size:20px;
  right:10px;
  top:10px;
}
.tde-dancer-dance-list{gap:9px}
.tde-dancer-dance-group{
  padding:9px 10px 10px;
  border-radius:11px;
}
.tde-dancer-dance-group h4{
  margin:0 0 7px;
  font-size:11px;
  letter-spacing:.45px;
}
.tde-dancer-dance-group h4 span{
  min-width:25px;
  font-size:13px;
  letter-spacing:-1px;
}
.tde-dancer-dance-group{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-start;
  gap:7px;
}
.tde-dancer-dance-group h4{flex:0 0 100%}
.tde-dancer-dance-row{
  width:auto;
  max-width:100%;
  flex:0 1 auto;
  border:1px solid #f0b5c3;
  border-radius:9px;
  background:#fff8fa;
  padding:8px 11px;
  text-align:center;
}
.tde-dancer-dance-row:first-of-type{border-top:1px solid #f0b5c3}
.tde-dancer-dance-row strong{
  font-size:13px;
  line-height:1.2;
  color:#d81f52;
}
.tde-dancer-dance-row small{
  margin-top:3px;
  font-size:10px;
}
.tde-dancer-dance-row:hover{
  border-color:var(--tde-red);
  background:#fff0f4;
}
@media(max-width:520px){
  .tde-dancer-summary-card{width:min(390px,calc(100vw - 24px));padding:17px}
  .tde-dancer-summary-card h3{font-size:20px}
  .tde-dancer-dance-row{padding:7px 9px}
}

/* v0.9.9 mobile-first calendar overhaul and smart title fitting */
.tde-event-card .tde-event-name{
  font-size:16px;
  line-height:1.16;
}
.tde-week-grid .tde-event-name{
  font-size:16px;
}

@media(max-width:760px){
  .tde-calendar-app{border-radius:10px;overflow:hidden}
  .tde-calendar-toolbar{padding:13px 12px;gap:10px}
  .tde-calendar-title h2{font-size:20px}
  .tde-calendar-title p{font-size:12px}
  .tde-view-switch button{min-height:40px;font-size:12px}
  .tde-view-controls{grid-template-columns:40px 1fr 40px}
  .tde-icon-btn,.tde-today-btn{min-height:40px}
  .tde-filter-bar{padding:10px;gap:8px}
  .tde-filter-bar label span{margin-bottom:3px}
  .tde-filter-bar select,.tde-clear-btn{min-height:40px}
  .tde-calendar-heading{padding:11px 10px 8px}
  .tde-calendar-heading>span{font-size:15px;margin-bottom:7px}
  .tde-legend{gap:10px;overflow-x:auto;padding:1px 0 5px}
  .tde-legend-item{font-size:10px;flex:0 0 auto}
  .tde-calendar-shell{padding:0 9px 12px;overflow:hidden}

  .tde-week-mobile{display:block;width:100%;min-width:0}
  .tde-mobile-day-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:0 0 9px}
  .tde-mobile-day-tab{position:relative;min-width:0;border:1px solid #dfe1e5;border-radius:9px;background:#fff;padding:6px 2px 7px;text-align:center;color:#555;cursor:pointer}
  .tde-mobile-day-tab span,.tde-mobile-day-tab strong{display:block}
  .tde-mobile-day-tab span{font-size:9px;text-transform:uppercase;font-weight:800}
  .tde-mobile-day-tab strong{font-size:14px;line-height:1.15;margin-top:2px}
  .tde-mobile-day-tab i{position:absolute;right:3px;top:3px;min-width:14px;height:14px;border-radius:999px;background:#eceef1;font-style:normal;font-size:8px;line-height:14px}
  .tde-mobile-day-tab.is-selected{border-color:var(--tde-red);background:#fff3f5;color:#9f1021;box-shadow:0 0 0 1px var(--tde-red)}
  .tde-mobile-day-tab.is-today:not(.is-selected){border-color:#77859a;background:#f3f6f9}
  .tde-mobile-day-panel{border:1px solid #e0e2e5;border-radius:12px;background:#fafafa;overflow:hidden}
  .tde-mobile-day-heading{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:10px 12px;background:#fff;border-bottom:1px solid #e0e2e5}
  .tde-mobile-day-heading strong{font-size:14px}
  .tde-mobile-day-heading span{font-size:11px;color:#777}
  .tde-mobile-card-list{display:grid;gap:7px;padding:8px}
  .tde-mobile-card-list .tde-event-card{min-height:0;height:auto;margin:0;padding:10px 12px;border-left-width:4px;border-radius:8px;text-align:left;align-items:stretch}
  .tde-mobile-card-list .tde-event-time{font-size:11px;text-align:left;min-height:0}
  .tde-mobile-card-list .tde-event-name{min-height:0;max-height:none;margin:4px 0 6px;justify-content:flex-start;text-align:left;font-size:16px}
  .tde-mobile-card-list .tde-event-name>span:last-child{text-align:left;-webkit-line-clamp:3}
  .tde-mobile-card-list .tde-event-meta{text-align:left;min-height:0;font-size:11px;line-height:1.35}
  .tde-mobile-card-list .tde-event-updated{text-align:left;min-height:0;margin-top:4px;padding-top:0;font-size:8.5px}
  .tde-mobile-card-list .tde-no-events{padding:34px 10px}

  .tde-month-mobile{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));width:100%;border:1px solid #dfe1e5;border-radius:11px;overflow:hidden;background:#fff}
  .tde-month-mobile .tde-month-weekday{padding:7px 1px;font-size:9px;border-right:1px solid #e6e7e9}
  .tde-month-mobile .tde-month-cell{appearance:none;min-width:0;min-height:55px;height:55px;padding:5px 3px;border:0;border-top:1px solid #e6e7e9;border-right:1px solid #e6e7e9;border-radius:0;background:#fff;color:#333;text-align:center;cursor:pointer}
  .tde-month-mobile .tde-month-cell.is-blank{background:#fafafa;cursor:default}
  .tde-month-mobile .tde-month-cell.is-today{box-shadow:inset 0 0 0 2px #77859a;background:#f4f7fa}
  .tde-month-mobile .tde-month-cell.has-events{background:#fffafb}
  .tde-month-mobile .tde-month-date{font-size:11px;margin:0 0 4px}
  .tde-month-mobile .tde-month-events{display:flex;justify-content:center;align-items:center;gap:3px;min-height:18px}
  .tde-month-count{font-size:8px;font-weight:800;color:#777}
  .tde-month-dots{display:flex;gap:2px}
  .tde-month-dots .tde-dot{width:5px;height:5px;flex:0 0 5px}

  .tde-day-view{width:100%;max-width:none}
  .tde-day-list .tde-event-card{padding:11px 12px}
  .tde-day-list .tde-event-name{font-size:16px}
  .tde-dancer-summary-card{max-height:84vh}
}

/* v1.0.0 condensed cross-platform filters and mobile bottom sheet */
.tde-filter-compact{padding:14px 22px;background:#f2f3f5;border-top:1px solid var(--tde-border);border-bottom:1px solid var(--tde-border)}
.tde-filter-primary{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(190px,.9fr) auto;align-items:end;gap:10px}
.tde-filter-primary label span,.tde-filter-sheet-grid label span{display:block;font-size:10px;font-weight:800;text-transform:uppercase;color:#70747b;margin:0 0 5px}
.tde-filter-primary select,.tde-filter-sheet-grid select{width:100%;min-width:0;min-height:42px;border:1px solid #d5d7db;border-radius:9px;background:#fff;padding:0 34px 0 11px;color:#202124}
.tde-more-filters-btn{min-height:42px;border:1px solid #cfd2d7;border-radius:9px;background:#fff;color:#222;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 13px;font-weight:750;cursor:pointer;white-space:nowrap}
.tde-more-filters-btn:hover{border-color:#b51932;background:#fff9fa}
.tde-filter-icon{font-size:14px;transform:rotate(180deg);line-height:1}
.tde-filter-chevron{margin-left:auto;font-size:18px;line-height:1}
.tde-more-filters-btn b{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:999px;background:var(--tde-red);color:#fff;font-size:11px}
.tde-clear-compact{min-height:42px;border:0;background:transparent;color:var(--tde-red);font-weight:800;cursor:pointer;padding:0 4px}
.tde-active-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.tde-active-chips:empty{display:none}
.tde-filter-chip{display:inline-flex;align-items:center;gap:8px;min-height:30px;border:1px solid #e78ba0;border-radius:8px;background:#fff8fa;color:#3d3034;padding:4px 9px;font-size:12px;font-weight:700;cursor:pointer}
.tde-filter-chip b{font-size:17px;font-weight:500;color:#777;line-height:1}
.tde-filter-chip:hover{border-color:var(--tde-red);background:#fff0f4}
.tde-filter-sheet[hidden]{display:none!important}
.tde-filter-sheet{position:fixed;inset:0;z-index:999999;display:flex;align-items:flex-end;justify-content:center}
.tde-filter-backdrop{position:absolute;inset:0;border:0;background:rgba(0,0,0,.48);opacity:0;transition:opacity .22s ease;cursor:default}
.tde-filter-sheet-card{position:relative;width:min(720px,calc(100% - 24px));max-height:min(82vh,720px);overflow:auto;background:#fff;border-radius:20px 20px 0 0;padding:10px 20px max(20px,env(safe-area-inset-bottom));box-shadow:0 -14px 48px rgba(0,0,0,.22);transform:translateY(105%);transition:transform .24s cubic-bezier(.2,.8,.2,1)}
.tde-filter-sheet.is-open .tde-filter-backdrop{opacity:1}
.tde-filter-sheet.is-open .tde-filter-sheet-card{transform:translateY(0)}
.tde-sheet-handle{width:54px;height:5px;border-radius:999px;background:#b9bbc0;margin:0 auto 12px}
.tde-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.tde-sheet-head h3{margin:0;font-size:22px;color:#1f2023}
.tde-sheet-clear{border:0;background:transparent;color:var(--tde-red);font-weight:800;cursor:pointer;padding:8px}
.tde-filter-sheet-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.tde-apply-filters{width:100%;min-height:48px;margin-top:18px;border:0;border-radius:9px;background:var(--tde-red);color:#fff;font-size:15px;font-weight:800;cursor:pointer}
body.tde-filter-sheet-open{overflow:hidden;touch-action:none}

@media(min-width:761px){
 .tde-filter-sheet{align-items:center}
 .tde-filter-sheet-card{border-radius:18px;transform:translateY(24px) scale(.98);opacity:0;padding:12px 24px 24px}
 .tde-filter-sheet.is-open .tde-filter-sheet-card{transform:translateY(0) scale(1);opacity:1}
}
@media(max-width:760px){
 .tde-filter-compact{padding:10px}
 .tde-filter-primary{grid-template-columns:1fr 1fr;gap:8px}
 .tde-filter-primary label span{margin-bottom:3px}
 .tde-filter-primary select{min-height:42px;font-size:14px;padding-left:9px}
 .tde-more-filters-btn{grid-column:1/2;min-height:42px;justify-content:flex-start;padding:0 11px;font-size:13px}
 .tde-clear-compact{grid-column:2/3;justify-self:stretch;border:1px solid #e78ba0;border-radius:9px;background:transparent}
 .tde-active-chips{margin-top:8px;gap:6px}
 .tde-filter-chip{font-size:11px;min-height:28px;padding:3px 8px}
 .tde-filter-sheet-card{width:100%;max-height:88vh;border-radius:20px 20px 0 0;padding:8px 14px max(16px,env(safe-area-inset-bottom))}
 .tde-sheet-head h3{font-size:19px}
 .tde-filter-sheet-grid{grid-template-columns:1fr 1fr;gap:9px}
 .tde-filter-sheet-grid label span{font-size:9px;margin-bottom:3px}
 .tde-filter-sheet-grid select{min-height:43px;font-size:13px;padding-left:9px}
 .tde-apply-filters{position:sticky;bottom:0;margin-top:14px;box-shadow:0 -8px 14px rgba(255,255,255,.9)}
}
@media(max-width:430px){
 .tde-filter-sheet-grid{grid-template-columns:1fr}
}
