*{box-sizing:border-box} [hidden]{display:none!important}
body.planner-app{margin-top:0;margin-right:0;margin-bottom:0;background:#f6f7f8;color:#252a2e;font:500 13px/1.5 var(--coastal-font,Arial,sans-serif);letter-spacing:0}.planner-shell{padding:32px 30px 50px;max-width:2100px;margin:auto;min-width:0}.eyebrow{text-transform:uppercase;letter-spacing:.09em;color:#8a1028;font-size:10px;font-weight:700;margin:0 0 7px}h1{font-size:30px;line-height:1.2;margin:0}h2{font-size:23px;margin:0}h3{font-size:15px;margin:18px 0 0}.intro{margin:10px 0 0;color:#63717d}.planner-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.header-actions,.range-controls,.view-controls,.add-controls{display:flex;align-items:end;gap:8px;flex-wrap:wrap}button,.button,select,input,textarea{font:inherit;color:inherit}button,.button{border:1px solid #d4dbe0;border-radius:5px;background:#fff;padding:8px 12px;cursor:pointer;line-height:1.5;font-weight:600;text-decoration:none;display:inline-block}button:hover,.button:hover{background:#f0f2f4}button:disabled{opacity:.4;cursor:default}.primary{background:#8a1028;color:#fff;border-color:#8a1028}.primary:hover{background:#6c0a1e}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,.calendar-scroll:focus-visible{outline:2px solid #26767b;outline-offset:3px}label{display:grid;gap:5px;font-size:11px;font-weight:600;color:#63717d}input,select,textarea{padding:8px;border:1px solid #cdd5da;border-radius:4px;background:#fff;min-width:0}textarea{resize:vertical;line-height:1.5}select{max-width:100%}.save-strip{display:flex;justify-content:space-between;gap:12px;color:#63717d;font-size:11px;padding:10px 0;border-top:1px solid #d4dbe0}.save-strip #save-status{color:#356b57}.save-strip #save-status.error,.error{color:#a52035}.plan-toolbar{display:flex;gap:20px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid #d4dbe0;border-radius:6px;padding:16px 18px;margin:3px 0 20px}.plan-toolbar>label{min-width:240px}.plan-toolbar p{margin:3px 0 0;font-size:11px;color:#63717d}.source-link{color:#8a1028;font-size:11px;margin-left:auto}.calendar-toolbar{display:flex;gap:18px;align-items:end;flex-wrap:wrap;margin-bottom:18px}.add-controls{margin-left:auto}.legend{display:flex;gap:15px;align-items:center;flex-wrap:wrap;font-size:10px;color:#5e6a73;margin:10px 0}.legend>span{display:flex;align-items:center;gap:5px}.legend i{width:9px;height:9px;border:1px solid;border-radius:2px}.today-key{color:#8a1028}.calendar-help{font-size:11px;color:#63717d;margin:10px 0}.calendar-scroll{max-height:68vh;overflow:auto;border:1px solid #d4dbe0;border-radius:6px;background:#fff;position:relative;scrollbar-gutter:stable}.timeline-header,.timeline-row{display:grid;grid-template-columns:220px minmax(0,1fr)}.timeline-header{position:sticky;top:0;z-index:5;background:#fff}.lane-label{position:sticky;left:0;z-index:3;background:#fff;border-right:1px solid #d4dbe0;padding:14px 16px;display:flex;flex-direction:column;justify-content:center;gap:3px}.lane-label>span{font-size:10px;color:#63717d}.lane-label .programme-name{text-transform:uppercase;font-size:9px;letter-spacing:.08em}.header-label{font-size:10px;color:#63717d}.timeline-row{border-top:1px solid #e3e7e9}.track-label{padding:0;border:0;background:transparent;font-size:13px;text-align:left;color:#252a2e}.track-label:hover{text-decoration:underline;background:transparent}.add-in-lane{align-self:start;padding:0;border:0;background:none;color:#8a1028;font-size:10px;margin-top:5px}.date-axis{min-width:0}.month-axis,.week-axis{display:grid;grid-template-columns:repeat(var(--cells),minmax(0,1fr))}.month-axis{background:#f3f5f6;border-bottom:1px solid #d4dbe0}.month-axis>span{padding:9px 10px;border-right:1px solid #d4dbe0;font-size:11px;white-space:nowrap;overflow:hidden}.week-axis>div{display:flex;flex-direction:column;gap:4px;padding:9px 6px;border-right:1px solid #e1e6e9;text-align:center;white-space:nowrap}.week-axis small{color:#82909a;font-size:9px}.week-axis strong{font-size:10px}.timeline-lane{position:relative;min-width:0}.lane-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(var(--cells),minmax(0,1fr));pointer-events:none}.week-cell{border-right:1px solid #e7ebed}.week-cell:nth-child(even){background:#fafbfb}.current-week{background:#fbf0f2!important;box-shadow:inset 2px 0 #9d2540}.calendar-item{position:absolute;display:flex;flex-direction:column;justify-content:center;text-align:left;border:1px solid;border-left-width:3px;border-radius:4px;height:53px;padding:7px 9px;overflow:clip;min-width:0;font-size:11px}.calendar-item strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-item>span{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px;opacity:.85}.calendar-item:hover{filter:brightness(.96);box-shadow:0 2px 5px #0001;z-index:2}.type-accumulation{background:#e6eef8;color:#315979;border-color:#9db8cf}.type-intensification{background:#efe8f5;color:#71518a;border-color:#b9a2ce}.type-competition{background:#f8e7e8;color:#963b46;border-color:#d69aa0}.type-taper{background:#e1f0e9;color:#39765c;border-color:#9ac7af}.type-transition{background:#f1eee5;color:#80704b;border-color:#c6b88c}.type-testing,.type-review{background:#fdf0d8;color:#976d23;border-color:#dbc08a}.type-holiday{background:#e5f1f3;color:#356e79;border-color:#9fc9d0}.type-other{background:#edf0f2;color:#5b6973;border-color:#adb9c2}.track-events .lane-label{color:#63717d}.warnings{font-size:11px;color:#98601d;min-height:16px}.planner-footer{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;color:#7c8790;font-size:10px;margin-top:20px}.empty{padding:45px;max-width:650px;color:#63717d}.empty h2{color:#252a2e;font-size:20px}.empty p{margin-bottom:20px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
dialog{border:1px solid #d4dbe0;border-radius:8px;box-shadow:0 15px 70px #13212d38;width:min(1000px,calc(100vw - 30px));max-height:92vh;padding:0;color:#252a2e}dialog::backdrop{background:#14212e66}#editor-form{padding:0}.editor-heading{display:flex;justify-content:space-between;align-items:center;padding:23px 28px;border-bottom:1px solid #e1e6e9;background:#fff;position:sticky;top:0;z-index:3}.editor-heading button{border:0;font-size:18px;padding:5px 10px}#editor-fields{display:grid;grid-template-columns:1fr 1fr;gap:17px;padding:25px 28px}#editor-fields label{font-size:11px}#editor-fields input,#editor-fields select,#editor-fields textarea{font-size:13px;color:#252a2e;width:100%}.wide{grid-column:1/-1}.field-note{font-size:11px;color:#63717d;margin:0}.duration-note{font-size:11px;color:#8a1028;background:#f8f0f2;padding:8px 12px}.progression-scroll{overflow:auto}.progression-scroll table{width:100%;min-width:800px;border-collapse:collapse;table-layout:fixed;font-size:10px}.progression-scroll th{padding:9px;background:#f1f3f4;border:1px solid #d4dbe0;text-align:left}.progression-scroll th:first-child{width:75px}.progression-scroll small{display:block;font-size:9px;font-weight:500}.progression-scroll td{padding:3px;border:1px solid #d4dbe0}.progression-scroll textarea{border:0!important;min-height:68px;font-size:11px!important;padding:4px!important}dialog footer{position:sticky;bottom:0;padding:16px 28px;border-top:1px solid #e1e6e9;background:#fff;display:flex;justify-content:end;gap:10px}#editor-error{margin:0 28px 14px;font-size:12px}#access{margin:60px auto;max-width:600px}#access a{color:#8a1028}
@media(max-width:900px){.planner-shell{padding:66px 16px 30px}.planner-heading{align-items:start;flex-direction:column}h1{font-size:26px}.plan-toolbar{gap:14px}.calendar-toolbar{gap:12px}.add-controls{margin-left:0}.save-strip{flex-direction:column;gap:4px}.planner-footer{display:block}.source-link{margin-left:0}.header-actions{flex-wrap:wrap}.calendar-scroll{max-height:70vh}.plan-toolbar>label{min-width:0;width:100%}#editor-fields{grid-template-columns:1fr;padding:18px}.wide{grid-column:auto}.editor-heading{padding:18px}dialog footer{padding:12px 18px}}
@media print{.planner-heading .header-actions,.save-strip,.calendar-toolbar,.add-in-lane,.planner-footer,dialog{display:none!important}.planner-shell{padding:0}.calendar-scroll{overflow:visible;max-height:none}.timeline{min-width:0!important}.calendar-item{font-size:8px}.calendar-item>span{font-size:7px}.lane-label{position:static}.timeline-header{position:static}.source-link{display:none}}
/* Keep long-block labels visible as the timeline scrolls beneath fixed track names. */
.timeline .calendar-item>strong,.timeline .calendar-item>span{position:sticky;left:228px;align-self:flex-start;max-width:100%}

.compact-timeline .week-axis>div{overflow:hidden;padding-inline:1px}.compact-timeline .week-axis strong{font-size:9px}.annual-overview .week-axis strong{display:none}.annual-overview .week-axis small{visibility:hidden}.annual-overview .week-axis>div:nth-child(4n+1) small{visibility:visible;overflow:visible}.compact-timeline .month-axis>span{padding-inline:3px;font-size:9px}.compact-timeline .calendar-item{padding-inline:4px;font-size:10px}.compact-timeline .calendar-item>span{font-size:8px}

.annual-overview .week-axis>div{position:relative;height:30px}.annual-overview .week-axis>div:nth-child(4n+1){overflow:visible}.annual-overview .week-axis>div:nth-child(4n+1) small{position:absolute;left:1px;width:28px;text-align:left;font-size:8px;z-index:1}

#duplicate-item{margin-right:auto;color:#8a1028}.copy-note{margin:0;padding:10px 12px;background:#f8f0f2;border-left:3px solid #8a1028;font-size:12px;color:#61404e}

.track-picker{position:relative;display:grid;gap:5px;min-width:165px}
.filter-label{font-size:11px;font-weight:600;color:#63717d}
#track-filter>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px;border:1px solid #cdd5da;border-radius:4px;background:#fff;cursor:pointer;font-size:11px;font-weight:600;color:#63717d}
#track-filter>summary::-webkit-details-marker{display:none}
#track-filter>summary:focus-visible{outline:2px solid #26767b;outline-offset:3px}
.track-filter-menu{position:absolute;top:100%;left:0;z-index:10;margin-top:5px;width:265px;max-width:calc(100vw - 40px);border:1px solid #cdd5da;border-radius:5px;background:#fff;box-shadow:0 6px 20px #14212e20;padding:10px}
.track-filter-actions{display:flex;gap:8px;border-bottom:1px solid #e1e6e9;padding-bottom:9px;margin-bottom:4px}
.track-filter-actions button{font-size:11px;padding:4px 8px}
#track-choices{margin:0;padding:0;border:0;max-height:280px;overflow:auto;min-width:0}
#track-choices .track-choice{display:flex;align-items:center;gap:9px;padding:8px;cursor:pointer;border-radius:4px;color:#252a2e}
.track-choice:hover{background:#f5f7f8}
.track-choice input{width:16px;height:16px;margin:0;flex-shrink:0;accent-color:#8a1028;cursor:pointer}
.track-choice>span{display:flex;flex-direction:column;min-width:0;overflow-wrap:anywhere}
.track-choice strong{font-size:12px;font-weight:600}.track-choice small{font-size:10px;color:#63717d}

#editor-fields input[readonly]{background:#f3f5f6;color:#63717d;cursor:default}

.save-message{display:flex;align-items:center;gap:10px}#undo-resize{font-size:11px;padding:2px 7px;color:#8a1028}
.block-shell{padding:7px 13px}.block-open{display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:0;border:0;background:transparent!important;color:inherit;font:inherit;text-align:left;width:100%;height:100%;padding:0;min-width:0;overflow:clip}
.calendar-item .block-open>span{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px;opacity:.85}
.timeline .calendar-item .block-open>strong,.timeline .calendar-item .block-open>span{position:sticky;left:232px;align-self:flex-start;max-width:100%}
.block-resize{position:absolute;z-index:2;top:0;bottom:0;width:11px;min-width:0;padding:0;border:0;border-radius:0;background:transparent;color:inherit;cursor:ew-resize;touch-action:none}
.block-resize::after{content:"";position:absolute;top:30%;bottom:30%;left:4px;width:2px;border-radius:2px;background:currentColor;opacity:.5}
.block-resize:hover,.block-resize:focus-visible{background:#ffffff88}.resize-start{left:0}.resize-end{right:0}
[data-create-track],[data-create-event]{cursor:crosshair}.timeline-lane[data-create-track],.timeline-lane[data-create-event]{touch-action:pan-x pan-y}
.calendar-dragging,.calendar-dragging *{user-select:none!important}.calendar-dragging .calendar-scroll{cursor:crosshair}
.drag-preview{position:absolute;z-index:3;pointer-events:none;border:2px solid #8a1028;border-radius:4px;background:#f6e9ecdd;color:#8a1028;padding:8px;font-size:10px;font-weight:700;overflow:hidden;display:flex;align-items:center;justify-content:center;text-align:center;box-shadow:0 0 0 1px #fff9}
.drag-preview.invalid{background:#fff0f0ee;border-color:#bd2038;color:#9f1830}
@media print{.block-resize,.drag-preview,#undo-resize{display:none!important}}
.compact-timeline .block-shell{padding-inline:13px}

.progression-scroll table{min-width:800px}.outside-block-day{background:#f3f5f6}.outside-block-day textarea{background:transparent;color:#87919a}
.previous-pattern-notes{border:1px solid #d4dbe0;border-radius:4px;padding:12px}.previous-pattern-notes>summary{cursor:pointer;font-weight:600}.previous-pattern-notes>p{margin-top:10px}.previous-pattern-week{margin-top:14px;font-size:12px}.previous-pattern-week p{margin:5px 0;white-space:normal;overflow-wrap:anywhere}

.timeline .event-card{height:72px}.calendar-item>.event-tracks{font-size:9px;font-weight:600;opacity:1;margin-top:4px}
.event-track-picker{margin:0;padding:12px;border:1px solid #d4dbe0;border-radius:4px;min-width:0}.event-track-picker legend{font-size:11px;font-weight:600;color:#63717d;padding:0 5px}.event-track-picker>p{margin-bottom:10px}
#editor-fields .event-track-option{display:flex;align-items:center;gap:9px;padding:7px;cursor:pointer;color:#252a2e}
#editor-fields .event-track-option input{width:16px;height:16px;margin:0;flex-shrink:0;accent-color:#8a1028}
.event-track-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));max-height:220px;overflow:auto;border-top:1px solid #e1e6e9;margin-top:7px;padding-top:5px}
.event-track-option>span{display:flex;flex-direction:column;min-width:0;overflow-wrap:anywhere}.event-track-option strong{font-size:12px;font-weight:600}.event-track-option small{font-size:10px;color:#63717d}.event-track-option:hover{background:#f5f7f8}
/* Use the same filled caret for native selects and the Tracks disclosure. */
body.planner-app select:not([multiple]),#track-filter>summary{
  -webkit-appearance:none;
  appearance:none;
  background-image:url("./dropdown-caret.svg");
  background-repeat:no-repeat;
  background-position:right 12px center;
  background-size:7px 4px;
  padding-right:32px;
}

/* Calendar rows expand naturally with the page; only horizontal overflow stays local. */
.calendar-scroll{max-height:none;overflow-x:auto;overflow-y:hidden;scrollbar-gutter:auto}
.timeline .block-shell{height:64px}.calendar-item .block-open>.block-emphasis{font-size:9px;font-weight:700;opacity:1;margin-top:2px}
.progression-controls{display:flex;align-items:end;gap:16px;flex-wrap:wrap}.progression-controls>label{min-width:145px}.progression-paging{display:flex;align-items:center;gap:8px;align-self:end;font-size:11px;color:#63717d}.progression-paging button{padding:7px 10px}
#editor-fields .day-session{display:flex;flex-direction:column;gap:1px;margin:0;color:#63717d}.day-session>span{font-size:9px;padding:3px 4px 0}.day-session+.day-session{border-top:1px solid #e1e6e9}.progression-scroll .day-session textarea{min-height:58px}

/* Daily scale keeps one equally sized cell per date, grouped by week and month. */
.day-week-axis{display:grid;grid-template-columns:repeat(var(--cells),minmax(0,1fr));background:#f8f9fa;border-bottom:1px solid #d4dbe0}
.day-week-axis>span{padding:5px 8px;font-size:10px;color:#63717d;border-right:1px solid #d4dbe0}
.daily-timeline .week-axis>div{padding:7px 2px}.daily-timeline .week-axis strong{font-size:11px}
.daily-timeline .week-cell.weekend,.daily-timeline .week-axis>.weekend{background:#f1f4f6}
.daily-timeline .week-cell:nth-child(7n),.daily-timeline .week-axis>div:nth-child(7n){border-right-color:#aab7c1}

/* Keep calendar tiles compact; full KPIs are available in the hover preview. */
.calendar-item .block-open>.block-preview{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;width:100%;max-width:500px;max-height:100%;margin:0;white-space:normal;font-size:inherit;opacity:1;overflow:hidden}
.timeline .calendar-item .block-open>.block-preview{max-width:min(100%,500px)}
.block-details{display:flex;flex-direction:column;gap:2px;min-width:0}
.block-details>strong{font-size:11px;line-height:1.35}
.block-details>.block-emphasis{font-size:9px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.block-details>.block-dates{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.85}

#editor-fields .weekday-session-count{display:grid;gap:7px;font-size:10px;font-weight:600}.progression-scroll .weekday-session-count select{min-height:30px;font-size:11px!important;padding:5px 20px 5px 6px}.progression-rest-day{display:block;padding:10px 4px;color:#7b858d;font-size:10px;font-style:italic}

/* Every weekday fills its week row; a single session uses the space beside split days. */
.progression-scroll .progression-grid,.progression-grid>thead,.progression-grid>tbody{display:block}
.progression-grid tr{display:grid;grid-template-columns:75px repeat(7,minmax(0,1fr));align-items:stretch}
.progression-scroll .progression-grid{border-top:1px solid #d4dbe0;border-left:1px solid #d4dbe0}
.progression-scroll .progression-grid th,.progression-scroll .progression-grid td{min-width:0;border:0;border-right:1px solid #d4dbe0;border-bottom:1px solid #d4dbe0}
.progression-grid tbody th{display:flex;flex-direction:column;justify-content:center}
.progression-grid td{display:flex;flex-direction:column;vertical-align:top}
#editor-fields .progression-grid .day-session{flex:1;min-height:0}
.progression-grid .day-session textarea{flex:1 1 auto}

/* Multiline notes grow with their content; the dialog keeps the page scroll. */
#editor-fields textarea{overflow-y:hidden;max-height:none}

.type-unspecified{background:#edf0f2;color:#5b6973;border-color:#adb9c2}

/* Calendar previews stay readable outside narrow, clipped event and block tiles. */
.planner-event-preview {
  position: fixed;
  z-index: 1000;
  left: 12px;
  top: 12px;
  box-sizing: border-box;
  width: min(400px, calc(100vw - 24px));
  max-height: min(480px, calc(100dvh - 24px));
  overflow-y: auto;
  padding: 16px 18px;
  border: 1px solid #d4dbe0;
  border-top: 3px solid #8a1028;
  border-radius: 6px;
  background: #fff;
  color: #252a2e;
  box-shadow: 0 8px 28px #18202526;
  font: 400 var(--text-base, 14px)/1.5 var(--coastal-font, Arial, sans-serif);
  overflow-wrap: anywhere;
}
.planner-event-preview[hidden], .planner-event-preview [hidden] { display: none !important; }
.planner-event-preview .event-preview-title { display: block; margin: 0 0 6px; font-weight: 650; font-size: var(--text-emphasis, 16px); line-height: 1.35; }
.planner-event-preview .event-preview-type { display: block; margin-bottom: 8px; color: #8a1028; font-size: var(--text-small, 12px); font-weight: 600; }
.planner-event-preview .event-preview-dates { display: block; margin: 0; }
.planner-event-preview .event-preview-tracks { display: block; margin: 6px 0 0; color: #63717d; font-size: var(--text-small, 12px); }
.planner-event-preview .event-preview-notes { display: block; margin: 12px 0 0; padding-top: 10px; border-top: 1px solid #e1e6e9; white-space: pre-line; }
@media print { .planner-event-preview { display: none !important; } }

/* Dates continue beyond the viewport in every scale. Keep native touch panning. */
.calendar-scroll{overflow-anchor:none;overscroll-behavior-x:contain}
@media print{.timeline{width:100%!important}}

.month-axis>span{display:flex;overflow:clip}.month-axis>span>span{position:sticky;left:228px;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}

.timeline .calendar-item .block-open>.block-preview{position:relative;left:0;flex-shrink:0}

@media print{.timeline .calendar-item .block-open>.block-preview{transform:none!important;width:100%!important;visibility:visible!important}}

.planner-event-preview .event-preview-duration{color:#63717d;font-size:var(--text-small,12px)}
.planner-event-preview .event-preview-kpis{margin:12px 0 0;padding-top:10px;border-top:1px solid #e1e6e9}
.event-preview-kpis>b{display:block;font-size:var(--text-small,12px);font-weight:650}
.event-preview-kpis ul{margin:5px 0 0;padding-left:18px;list-style:disc}
.event-preview-kpis li{margin:3px 0;white-space:pre-line}
.planner-event-preview .event-preview-goals{margin:12px 0 0;white-space:pre-line}

#delete-block{margin-right:0;color:#a52035;border-color:#d6a6ad;background:#fff}
#delete-block:hover{background:#fbeff1}
#undo-delete-block{font-size:11px;padding:2px 7px;color:#8a1028}
dialog footer{flex-wrap:wrap}
@media print{#undo-delete-block{display:none!important}}

.type-pre_competition{background:#fbeadc;color:#8a4b26;border-color:#d6a580}

/* Track ordering is separate from block creation and resizing. */
.track-lane-label{padding-right:48px}
.track-order-controls{position:absolute;right:8px;top:50%;transform:translateY(-50%)}
.track-order-handle{display:flex;align-items:center;justify-content:center;width:26px;height:22px;padding:0;border:0;background:transparent;color:#63717d;cursor:grab;font-size:20px;line-height:1;touch-action:none;user-select:none}
.track-order-handle:hover{background:#f8f0f2;color:#8a1028}
.track-order-handle:active{cursor:grabbing}
.track-row-dragging>.lane-label{background:#f8f0f2}
.track-drop-before>.lane-label,.track-drop-before>.timeline-lane{box-shadow:inset 0 3px #8a1028}
.track-drop-after>.lane-label,.track-drop-after>.timeline-lane{box-shadow:inset 0 -3px #8a1028}
@media print{.track-order-controls{display:none!important}.track-lane-label{padding-right:16px}}
