.calendar-intro{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:#fff}.calendar-intro b,.calendar-intro span{display:block}.calendar-intro span{font-size:12px;color:var(--muted)}
.calendar-panel{margin:0 0 14px;padding:8px 14px 7px;border-radius:16px;background:#fff;border:1px solid var(--line)}.calendar-heading{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;align-items:center;margin-bottom:4px;min-height:28px}.calendar-heading h2{grid-column:1;font-size:16px;margin:0}.calendar-current-time{grid-column:2;justify-self:center;white-space:nowrap;font-size:13px;color:#66706b}.calendar-current-time b{font-size:15px;color:var(--ink)}.calendar-controls{grid-column:3;justify-self:end;display:flex;align-items:center;gap:5px}.calendar-controls .quiet{padding:3px 11px;min-height:28px;font-size:12px;border:1px solid #d9dedb;border-radius:18px;background:#fff;line-height:20px}.calendar-controls .calendar-arrow{font-size:24px;line-height:20px;width:33px;padding:0}.calendar-controls button:disabled{cursor:default;opacity:.35}.calendar-date{display:flex;flex-direction:row;align-items:center;gap:7px;font-size:12px;white-space:nowrap}.calendar-weekday{text-transform:capitalize;font-weight:600}.calendar-controls input{max-width:136px;padding:3px 8px;min-height:28px;font-size:12px;line-height:20px;border-radius:18px}
.calendar-tracks{position:relative;display:grid;gap:3px}.calendar-row{--bar-top:#83bdf0;--bar-bottom:#4083c0;margin:0;padding:0;border:0;min-width:0}.calendar-row[data-calendar-sport=basketball]{--bar-top:#f6bf80;--bar-bottom:#cf8541}.calendar-sport-compact{display:flex;align-items:center;gap:inherit}.calendar-sport-wide{display:none}.calendar-sport{display:flex;align-items:center;gap:7px;height:18px;font-size:13px;line-height:18px}.calendar-sport strong{font-size:16px;font-weight:750}.calendar-unit{font-size:11px;color:var(--muted);font-weight:400}.calendar-hours{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;gap:5px;height:28px;border-bottom:1px solid #dfe6e9;background:linear-gradient(to bottom,transparent calc(50% - .5px),#f3f5f6 50%,transparent calc(50% + .5px));min-width:0}.calendar-hour{display:flex;align-items:flex-end;justify-content:stretch;position:relative;height:100%;min-width:0!important;padding:0!important;border:0!important;border-radius:4px 4px 0 0!important;background:transparent!important;cursor:pointer}.calendar-bar{display:block;width:100%;border-radius:4px 4px 0 0;background:linear-gradient(var(--bar-top),var(--bar-bottom));transition:height .2s ease,filter .15s}.calendar-hour:hover .calendar-bar,.calendar-hour:focus-visible .calendar-bar{filter:brightness(1.12)}.calendar-hour.chosen .calendar-bar{box-shadow:inset 0 0 0 2px #294e71}.calendar-hour:focus-visible{outline:2px solid #294e71;outline-offset:1px}.calendar-uncovered{grid-column:1/-1;align-self:stretch;display:flex;align-items:center;padding:0 8px;font-size:11px;color:var(--muted);background:repeating-linear-gradient(135deg,#f7f8f5,#f7f8f5 6px,#ecf0e9 6px,#ecf0e9 8px);border-radius:4px}
.calendar-marker-track{position:absolute;inset:18px 0 -4px;pointer-events:none;z-index:2}.calendar-now{position:absolute;top:0;bottom:0;border-left:2px solid #ed526e;pointer-events:none}.calendar-now span{position:absolute;left:-1px;top:0;transform:translate(-50%,-50%);width:9px;height:9px;background:#ed526e;border:2px solid white;border-radius:50%;box-shadow:0 0 0 1.5px #ed526e}.calendar-axis{margin:3px 0 0;font-size:10px;line-height:12px;color:#66706b}.calendar-axis>div{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:5px}.calendar-axis-note{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.calendar-status{font-size:11px;margin:3px 0 0;color:#8a5c1b}
.calendar-detail-date::first-letter{text-transform:uppercase}.calendar-detail .calendar-footnote{margin:0 0 12px;font-size:13px;line-height:1.5}.calendar-method{font-size:13px;color:var(--muted);margin-top:14px;padding:12px 0}.calendar-method p{margin:8px 0 0}.calendar-events{border-top:1px solid var(--line);padding-top:12px}.calendar-events h3{font-size:15px;margin:4px 0 10px}.calendar-events article{display:flex;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}.calendar-events time{font-variant-numeric:tabular-nums;min-width:44px;font-weight:650}.calendar-events article>div{display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}.calendar-events article .bot-mark{font-size:12px}.calendar-events article small{font-size:13px;color:var(--muted)}#calendar-form textarea{width:100%;font-size:14px;font-family:monospace;resize:vertical;padding:10px;border:1px solid var(--line);border-radius:6px}
@media(max-width:1000px){.calendar-heading{grid-template-columns:minmax(0,1fr) auto;gap:4px 8px}.calendar-controls{grid-column:1/-1;grid-row:2}}
@media(max-width:700px){.calendar-panel{padding:8px 11px 7px}.calendar-heading h2{font-size:15px}.calendar-current-time{font-size:11px}.calendar-current-time b{font-size:13px}.calendar-controls{width:100%;justify-content:space-between;gap:3px}.calendar-date{gap:5px;font-size:11px}.calendar-controls .quiet{font-size:11px;padding:3px 8px}.calendar-controls .calendar-arrow{font-size:22px;padding:0;width:29px}.calendar-controls input{font-size:11px;max-width:125px}.calendar-sport{font-size:12px;gap:5px;height:17px}.calendar-sport strong{font-size:15px}.calendar-hours{height:26px;gap:3px}.calendar-axis>div{gap:3px}.calendar-marker-track{top:17px}.calendar-unit{font-size:10px}}
@media(prefers-reduced-motion:reduce){.calendar-bar{transition:none}}

.calendar-hour::after{content:attr(data-count);position:absolute;bottom:calc(100% + 3px);left:50%;transform:translateX(-50%);opacity:0;pointer-events:none;padding:2px 5px;border-radius:4px;background:#263d36;color:white;font-size:11px;line-height:16px;font-weight:650;z-index:4}.calendar-hour:hover::after,.calendar-hour:focus-visible::after{opacity:1}.calendar-hour:first-child::after{left:0;transform:none}.calendar-hour:last-child::after{left:auto;right:0;transform:none}

/* On wide screens, reserve a separate label column beside the histograms. */
@media(min-width:1400px){
  .calendar-plot{--calendar-label-column:220px;--calendar-label-gap:24px}
  .calendar-tracks{gap:6px}
  .calendar-row{display:grid;grid-template-columns:var(--calendar-label-column) minmax(0,1fr);column-gap:var(--calendar-label-gap);align-items:center;min-height:38px}
  .calendar-sport{height:auto;display:block;font-size:14px;line-height:18px}.calendar-sport-compact{display:none}.calendar-sport-wide{display:grid;gap:2px}.calendar-sport-wide .bot-mark{display:flex;align-items:center;gap:8px;font-weight:700}.calendar-sport-wide .bot-mark-icon{font-size:18px}.calendar-sport-wide small{display:block;font-size:11px;line-height:14px;color:var(--muted);white-space:nowrap}.calendar-sport-wide small b{font-weight:650}.calendar-hours{align-self:stretch;height:auto;min-height:38px}
  .calendar-marker-track{inset:0 0 -4px calc(var(--calendar-label-column) + var(--calendar-label-gap))}
  .calendar-axis{padding-left:calc(var(--calendar-label-column) + var(--calendar-label-gap))}
}

.calendar-controls{flex-wrap:wrap;justify-content:flex-end}.calendar-scale{display:flex;align-items:center;gap:2px;padding:2px;border-radius:18px;background:var(--surface,#eef1e9)}.calendar-controls .calendar-scale .quiet{border-color:transparent;background:transparent;white-space:nowrap}.calendar-controls .calendar-scale .quiet.selected{background:#e4ecd7;border-color:#bacba2;color:var(--ink);font-weight:700}.calendar-scale-note{margin:3px 0 0;font-size:10px;color:var(--muted)}
@media(max-width:700px){.calendar-scale{margin-right:auto}.calendar-controls{justify-content:flex-end}.calendar-scale .quiet{padding:2px 6px}}

.calendar-sync{display:inline-flex;flex-direction:row;align-items:center;gap:7px;padding:4px 9px;border-width:1px;border-style:solid;border-color:var(--line);border-radius:999px;white-space:nowrap;font-size:12px;line-height:18px;font-weight:500;cursor:pointer;color:var(--muted);transition:color .15s,border-color .15s}.calendar-sync:has(input:checked){color:var(--green);border-color:var(--green)}.calendar-controls .calendar-sync input[type=checkbox]{appearance:none;-webkit-appearance:none;position:relative;width:28px;height:16px;min-width:28px;max-width:28px;min-height:16px;max-height:16px;line-height:normal;box-sizing:border-box;margin:0;padding:0;border:1px solid var(--line);border-radius:999px;background:var(--line);cursor:pointer;flex-shrink:0;transition:background .15s,border-color .15s}.calendar-controls .calendar-sync input[type=checkbox]::before{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0002;transition:transform .15s}.calendar-controls .calendar-sync input[type=checkbox]:checked{background:var(--green);border-color:var(--green)}.calendar-controls .calendar-sync input[type=checkbox]:checked::before{transform:translateX(12px)}@media(prefers-reduced-motion:reduce){.calendar-sync,.calendar-controls .calendar-sync input[type=checkbox],.calendar-controls .calendar-sync input[type=checkbox]::before{transition:none}}
