:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#23332e;background:#f4f6f3;font-size:16px;line-height:1.5;color-scheme:light}*{box-sizing:border-box}body{margin:0}main{max-width:720px;margin:auto;padding:24px 18px 40px}h1{font-size:2rem;margin:0;letter-spacing:-.05em}h2{font-size:1.2rem;margin:18px 0 12px}p{margin:12px 0}header{display:flex;align-items:center;justify-content:space-between;gap:12px}button,input,select,textarea{font:inherit}input,select,textarea{font-size:16px}button{cursor:pointer;min-height:44px;border:1px solid #c9d3cb;border-radius:12px;background:white;color:#263d31;padding:10px 15px;touch-action:manipulation}button:hover{background:#edf3ed}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #8bb3eb;outline-offset:2px}.primary{background:#246047;border-color:#246047;color:white;font-weight:650}.primary:hover{background:#194b36}.quiet{font-size:.85rem;padding:8px 10px;background:transparent}.eyebrow{font-size:.66rem;font-weight:750;letter-spacing:.12em;color:#527560;margin:0 0 5px}.intro,.muted,.footer{color:#62736a;font-size:.87rem}.date-panel{background:white;padding:16px;border:1px solid #e0e6de;border-radius:18px;margin:22px 0 16px}.date-nav{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:end;gap:10px}.date-nav label{min-width:0;font-size:.8rem}#choose-day{display:block;width:100%;min-width:0;height:48px;margin:4px 0 0;padding:8px 4px;font-size:16px;font-weight:600;white-space:nowrap}.date-nav>button{font-size:1.5rem;line-height:1;padding:8px;height:48px;display:grid;place-items:center}.quick-nav,.actions{display:flex;gap:10px}.quick-nav{margin-top:12px}.quick-nav button{flex:1}.actions button{flex:1}.date-panel h2{margin-bottom:0}.date-panel .muted{margin:5px 0 0;font-size:.75rem}#status{font-size:.88rem;min-height:24px}.error,#form-error{color:#a52c30}#schedule section{margin:22px 0}small{font-size:.8rem;font-weight:400;color:#62736a;margin-left:8px}.hour-row{display:grid;grid-template-columns:58px minmax(0,1fr) minmax(0,1fr);gap:7px;margin:8px 0;align-items:stretch}.hour-label{font-size:.8rem;font-weight:650;display:flex;align-items:center}.slot{min-width:0;min-height:58px;text-align:left;padding:10px;font-size:.85rem;overflow-wrap:anywhere}.slot.free{background:#fff;border:1px dashed #aabfaf;color:#527660}.slot.occupied{background:#e4eee6;border-color:#ccdace}.slot.blocked{grid-column:span 2;background:#efeae6;border-color:#dbd0c6;color:#6f5542}.slot small{display:block;font-size:.7rem;margin:2px 0 0}.slot span{display:block}label{display:block;font-size:.9rem;font-weight:600}input,select,textarea{display:block;width:100%;border:1px solid #b9c9bc;border-radius:10px;background:white;padding:10px;min-height:44px;color:#23332e;margin:5px 0 16px;max-width:100%}textarea{resize:vertical}dialog{width:calc(100% - 24px);max-width:460px;max-height:calc(100dvh - 32px);border:0;border-radius:20px;padding:20px;box-shadow:0 20px 80px #0003;overflow-y:auto}dialog::backdrop{background:#11251bb0}.dialog-header{display:flex;justify-content:space-between;align-items:center}.dialog-header h2{margin:0}.dialog-header button{font-size:1.5rem;padding:5px 12px}.time-inputs{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dialog-actions{display:flex;flex-wrap:wrap;gap:8px}.dialog-actions button{flex:1}.danger{color:#a52c30;border-color:#ddb8b8}button[hidden]{display:none}.login{max-width:440px;padding-top:12vh}.login form{margin-top:28px}.login .primary{width:100%}.login>.muted{text-align:center;margin-top:24px}.footer{border-top:1px solid #dce4dc;padding-top:16px;font-size:.8rem}@media(max-width:360px){h1{font-size:1.7rem}main{padding:18px 12px}.hour-row{grid-template-columns:48px minmax(0,1fr) minmax(0,1fr);gap:5px}.slot{padding:8px}.actions button{padding:10px 8px}}

/* Whole-month overview; compact enough for narrow phones. */
#calendar-panel{background:#fff;border:1px solid #e0e6de;border-radius:18px;padding:14px;margin:18px 0}
.month-nav,.calendar-nav{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:8px;align-items:center}
#month-heading{margin:0;text-align:center;font-size:1.1rem;line-height:1.3}
#previous-month,#next-month{height:44px;padding:6px;font-size:1.5rem;line-height:1}
.calendar-weekdays,#calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.calendar-weekdays{margin:14px 0 6px;text-align:center;color:#62736a;font-size:.75rem;font-weight:650}
.calendar-day{min-width:0;min-height:64px;padding:6px 2px;border-radius:8px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;background:#f7faf6;border:1px solid #dce5da;overflow-wrap:anywhere}
.calendar-day-number{font-size:1rem;font-weight:700;line-height:1.2}
.calendar-day-status{font-size:.62rem;line-height:1.15;font-weight:600;text-align:center;max-width:100%}
.calendar-day.partial,.calendar-day[data-status="partial"]{background:#fff3d8;border-color:#e7d3a7;color:#6f5522}
.calendar-day.full,.calendar-day[data-status="full"]{background:#f6e4e2;border-color:#e1c4bf;color:#893c35}
.calendar-day.blocked,.calendar-day[data-status="blocked"]{background:#eae6e3;border-color:#d4cbc4;color:#69594b}
.calendar-day.selected{outline:2px solid #246047;outline-offset:0}
.calendar-day.today .calendar-day-number{text-decoration:underline;text-underline-offset:3px}
.calendar-day.outside{background:#f4f5f3;color:#92998e;border-color:transparent;opacity:.55}
.calendar-legend{display:flex;flex-wrap:wrap;gap:6px 12px;margin:12px 0 0;color:#62736a;font-size:.75rem;line-height:1.5}
.calendar-legend span{display:inline-flex;align-items:center;gap:5px}
.calendar-legend span::before{content:"";width:8px;height:8px;border-radius:50%;background:#7b9b7c;flex-shrink:0}
.calendar-legend .partial::before{background:#c59a42}.calendar-legend .full::before{background:#b66055}.calendar-legend .blocked::before{background:#8b7b6d}
.calendar-hint{font-size:.72rem;margin:8px 0 0}
#calendar-status{font-size:.8rem;margin:8px 0;min-height:0}
@media(max-width:360px){#calendar-panel{padding:12px}.calendar-day{min-height:60px}.calendar-day-status{font-size:.6rem}}
