.calendar-shell{max-width:1440px;margin:auto;padding:35px 25px 70px}.calendar-heading,.cal-toolbar,.cal-row{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.calendar-heading h1{font-size:clamp(2.1rem,4vw,3.6rem);margin:12px 0}.calendar-shell button,.calendar-shell input,.calendar-shell select,.calendar-shell textarea{font:inherit}.calendar-shell label{display:grid;gap:6px;font-size:.88rem}.calendar-shell input,.calendar-shell select,.calendar-shell textarea{padding:10px;border:1px solid #ccd2d6;border-radius:7px;background:white;color:#142b3c;max-width:100%;min-width:0}.calendar-shell button{cursor:pointer}.cal-button{border:1px solid #ccd2d6;border-radius:7px;padding:9px 14px;background:#fff;color:#18354b}.cal-button.primary,.cal-button[aria-pressed=true]{background:#18354b;color:white;border-color:#18354b}.cal-toolbar{padding:18px 0;border-top:1px solid #d9dfe1}.cal-controls{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.cal-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px}.cal-panel{background:white;border:1px solid #d9dfe1;border-radius:12px;padding:18px;margin-bottom:18px}.cal-panel h2{font-size:1.3rem;margin:0 0 15px}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid #d9dfe1;border-top:1px solid #d9dfe1}.cal-weekday{padding:10px;background:#18354b;color:white;text-align:center;font-size:.8rem}.cal-day{min-height:125px;padding:7px;border-right:1px solid #d9dfe1;border-bottom:1px solid #d9dfe1;overflow:hidden;background:white}.cal-date{background:transparent;border:0;color:#18354b;font-weight:bold;padding:4px 7px;border-radius:20px}.cal-date.today{background:#b49947;color:white}.cal-day.selected{box-shadow:inset 0 0 0 2px #18354b}.cal-day.outside{opacity:.6}.cal-event{display:block;width:100%;border:0;border-left:3px solid #a48635;background:#edf2f5;color:#18354b;border-radius:3px;text-align:left;font-size:.76rem!important;padding:5px;margin-top:4px;overflow-wrap:anywhere}.cal-event.hg{border-left-color:#647b3a}.cal-event.cancelled{text-decoration:line-through;opacity:.6}.overlay-label{font-size:.68rem;display:block;margin:3px 0;color:#38474b}.nz-public-holiday{background:#e3e5e7}.nz-school-break{background:#fff3b9}.nz-public-holiday.nz-school-break{background:linear-gradient(135deg,#e3e5e7 50%,#fff3b9 50%)}.cal-agenda{list-style:none;margin:0;padding:0}.cal-agenda li{padding:12px 0;border-bottom:1px solid #e3e7e9}.cal-agenda button{background:transparent;color:#18354b;border:0;text-align:left;padding:0;font-weight:bold}.cal-agenda small{display:block;margin-top:5px}.cal-message{padding:12px 16px;background:#edf2f5;border-radius:8px;margin:12px 0}.cal-message.error{background:#ffe5df;color:#842900}.cal-message:empty{display:none}.cal-form{display:grid;gap:14px}.cal-form.two{grid-template-columns:repeat(2,minmax(0,1fr))}.cal-form .full{grid-column:1/-1}.cal-check{display:flex!important;gap:8px!important;align-items:center}.cal-check input{width:auto}.calendar-shell [hidden]{display:none!important}.cal-dialog{border:0;border-radius:16px;padding:25px;width:min(650px,95vw);max-height:90vh;overflow:auto;box-shadow:0 15px 80px #0004;color:#18354b}.cal-dialog::backdrop{background:#081e34aa}.cal-timeline{overflow:auto;border:1px solid #d9dfe1;max-height:700px}.time-header,.time-slot{display:grid;grid-template-columns:60px repeat(var(--days,7),minmax(110px,1fr))}.time-header{position:sticky;top:0;z-index:1;background:#18354b;color:white}.time-header>*{padding:10px}.time-slot>span{font-size:.75rem;padding:10px 4px;background:#f4f5f3}.time-cell{min-height:44px;border:0;border-bottom:1px solid #e2e7e8;border-right:1px solid #e2e7e8;background:white;text-align:left;font-size:.72rem!important;color:#18354b;padding:3px}.time-cell.busy{background:#e7edf0;border-left:3px solid #b49947}.cal-settings{margin-top:25px}.cal-settings summary{cursor:pointer;font-size:1.2rem;font-weight:bold;padding:15px 0}.settings-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.settings-item{display:flex;gap:8px;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #ddd}.slot-list{display:flex;gap:10px;flex-wrap:wrap;padding:18px 0}.slot-list button[aria-pressed=true]{background:#18354b;color:white}.booking-wrap{max-width:850px;margin:auto}.cal-note{font-size:.83rem;color:#56666d;line-height:1.6}.cal-sources{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.cal-source{background:#e6eddf;padding:5px 9px;border-radius:15px;font-size:.76rem}.cal-source.pending{background:#eee;color:#69747b}.cal-login{max-width:460px;margin:35px auto}.calendar-shell textarea{min-height:75px}.cal-detail p{white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:1000px){.cal-layout{grid-template-columns:1fr}.cal-sidebar{display:grid;grid-template-columns:1fr 1fr;gap:15px}.cal-day{min-height:100px}.calendar-shell{padding:22px 12px}.settings-columns{grid-template-columns:1fr}}
@media(max-width:600px){.cal-sidebar,.cal-form.two{grid-template-columns:1fr}.cal-day{min-height:90px;padding:3px}.cal-event{font-size:.62rem!important;padding:3px}.cal-weekday{padding:8px 2px;font-size:.7rem}.overlay-label{font-size:.57rem}.cal-toolbar{gap:15px}.cal-dialog{padding:15px}.calendar-heading .cal-controls{width:100%}}
.day-view .time-header,.day-view .time-slot{grid-template-columns:60px minmax(200px,1fr)}
/* A bounded month; long content never changes the row or page height. */
.cal-grid{height:560px;grid-template-rows:28px repeat(6,minmax(0,1fr));margin-bottom:18px;border-radius:10px;overflow:hidden}.cal-day{min-height:0!important;height:auto;min-width:0;padding:3px 5px;display:flex;flex-direction:column;gap:2px}.cal-weekday{padding:5px}.month-date-row{height:18px;flex:none}.month-date-row .cal-date{padding:0 4px;height:18px;font-size:.75rem}.month-labels{height:12px;flex:none;font-size:.58rem;line-height:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#5b6265}.month-events{height:34px;overflow:hidden;flex:none}.month-events .cal-event{height:16px;margin-top:1px;padding:1px 3px;line-height:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.65rem!important}.month-more{margin-top:auto;height:16px;flex:none;padding:0;border:0;background:transparent;color:#18354b;font-size:.62rem!important;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.month-more:hover{text-decoration:underline}
/* Continuous blocks over a quiet quarter-hour grid. Text is rendered once. */
.cal-timeline{height:640px;max-height:65vh;min-height:360px;overflow:auto;background:#fff;border-radius:10px;margin-bottom:18px;isolation:isolate}.timeline-inner{min-width:770px}.timeline-head,.timeline-body{display:grid;grid-template-columns:50px repeat(7,minmax(0,1fr))}.timeline-head{position:sticky;top:0;z-index:8;background:#18354b;min-height:48px;box-shadow:0 1px 3px #18354b22}.timeline-zone{font-size:.68rem;color:white;padding:12px 6px}.timeline-day-heading{border:0;border-left:1px solid #ffffff22;background:#18354b;color:white;text-align:center;padding:8px 4px!important;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:4px}.timeline-day-heading strong{font-size:.74rem;white-space:nowrap}.timeline-day-heading small{font-size:.59rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block;max-width:100%;color:#e9dca9}.timeline-day-heading.is-today{background:#36566b;box-shadow:inset 0 -3px #c5aa58}.timeline-rail{position:relative;background:#f8f8f4;border-right:1px solid #ddd}.timeline-hour{position:absolute;left:4px;font-size:.65rem;color:#5c6c75;line-height:18px}.timeline-day{position:relative;min-width:0;border-right:1px solid #dfe5e7;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 17px,#edf0f1 17px,#edf0f1 18px)}.timeline-day.nz-public-holiday{background-color:#f0f0f1}.timeline-day.nz-school-break{background-color:#fff9df}.timeline-day.nz-public-holiday.nz-school-break{background-color:#edead9}.timeline-slot{position:absolute;left:0;width:100%;height:18px;border:0;background:transparent;padding:0;z-index:0}.timeline-slot:hover,.timeline-slot:focus-visible{background:#18354b12;outline:1px solid #9eacb7;outline-offset:-1px}.timeline-event{position:absolute;z-index:2;display:block;padding:3px 5px!important;min-height:18px;border:1px solid #d4dce1;border-left:3px solid #b49b48;border-radius:5px;overflow:hidden;color:#18354b;text-align:left;line-height:1.2;background:#e8eff4;box-shadow:0 1px 2px #1733440a}.timeline-event:hover,.timeline-event:focus-visible{z-index:6;box-shadow:0 2px 8px #18354b33;outline:1px solid #55758b}.timeline-event .event-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.67rem;font-weight:650}.timeline-event .event-time{display:block;font-size:.58rem;margin-top:3px;white-space:nowrap;color:#536c7b}.timeline-event.work-block{background:#edf0e5;border-left-color:#84975a;color:#43562e}.timeline-event.work-block .event-time{color:#6d795a}.timeline-event.has-plans .event-title,.timeline-event.has-plans .event-time,.event-plan-hint{max-width:34%;overflow:hidden;text-overflow:ellipsis}.event-plan-hint{display:block;font-size:.56rem;margin-top:12px;color:#758365}.timeline-event.activity-block{z-index:4;background:#fff8df;border-color:#d9c77e;border-left-color:#b49b48}.timeline-event.is-done{background:#e4efe4;border-color:#b4c8b4;opacity:.8}.timeline-event.cancelled{text-decoration:line-through;opacity:.55}.day-view .timeline-inner{min-width:350px}.day-view .timeline-head,.day-view .timeline-body{grid-template-columns:50px minmax(0,1fr)}.day-view .timeline-event .event-title{font-size:.82rem}.day-view .timeline-event .event-time{font-size:.68rem}.day-view .timeline-day-heading strong{font-size:.86rem}.plan-parent-label{padding:12px;background:#eef1e6;border-left:3px solid #84975a;border-radius:5px;font-size:.88rem}.block-plan-summary{margin:8px 0;padding:10px;border:1px solid #e5e6dd;border-radius:6px}.block-plan-summary button{border:0;background:transparent;text-align:left;font:inherit;color:#43562e}.cal-agenda{max-height:390px;overflow:auto}.cal-agenda small{font-size:.73rem}.cal-panel:has(#selected-events){margin-top:0}.cal-event.plan{background:#fff8df}.cal-dialog .cal-row h2{font-size:1.4rem}.cal-dialog input[type=datetime-local]{width:100%}
@media(max-width:600px){.cal-grid{height:560px}.cal-day{padding:3px 2px}.month-more{font-size:.57rem!important}.month-events .cal-event{font-size:.58rem!important}.cal-timeline{height:540px;max-height:65vh}.timeline-inner{min-width:770px}.month-labels{font-size:.52rem}}
.timeline-event{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;align-content:start}.timeline-event.background-block{z-index:1;background:#f0f3e9;border-left-color:#93a16d;box-shadow:none}.timeline-event .event-title,.timeline-event .event-time{max-width:100%;flex-shrink:0}.timeline-event.background-block .event-title{font-size:.67rem;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.event-plan-hint{max-width:100%;margin-top:8px}.timeline-event.compact-event{padding-top:1px!important;padding-bottom:1px!important}.timeline-event.compact-event .event-time{display:none}.timeline-event.activity-block{z-index:4}.cal-agenda li:has(button){min-height:0}
.header-work-title{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.62rem;color:#e4ebd0;border-top:1px solid #ffffff1a;padding-top:5px;margin-top:2px}.timeline-day-heading .header-work-hours{color:#cbd6bd;font-size:.56rem}.background-block .event-title,.background-block .event-time,.background-block .event-plan-hint{display:none!important}.timeline-event.background-block:hover{background:#e9efde}.day-view .header-work-title{font-size:.78rem}
