:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#162e45;background:#f2f6fa;font-size:16px;--blue:#173d63}*{box-sizing:border-box}body{margin:0}header{display:flex;align-items:center;gap:18px;max-width:1200px;margin:auto;padding:20px}header a{color:var(--blue);font-weight:750;text-decoration:none}header span{margin-right:auto;color:#52697c}main{max-width:1160px;margin:auto;padding:8px 20px 45px}h1{font-size:clamp(1.8rem,4vw,2.7rem);margin:8px 0}h2{font-size:1.2rem;margin:0 0 15px}p{line-height:1.6}.heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.heading p{margin:4px 0;color:#52697c}button{font:inherit;font-weight:650;border:0;border-radius:9px;min-height:44px;padding:10px 16px;background:var(--blue);color:white;cursor:pointer}button.secondary,.toolbar button{background:white;color:var(--blue);border:1px solid #c8d6e3}button:hover{filter:brightness(.94)}button:disabled{opacity:.6;cursor:wait}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #d08a00;outline-offset:2px}.card{background:white;border:1px solid #d4dfea;border-radius:14px;padding:20px;margin-bottom:20px;box-shadow:0 4px 18px #173d6305}.notice{background:#e3eef8;border-left:4px solid #2871aa;padding:14px 18px;line-height:1.6;margin:12px 0 20px;border-radius:8px}.warning{border-left-color:#b06905;background:#fff2d9}.warning strong{display:block;margin-bottom:3px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:24px 0 14px}.toolbar>div{display:flex;align-items:center;gap:8px}#month{font-size:1.2rem;min-width:180px;text-align:center}.toolbar button[aria-pressed=true]{background:var(--blue);color:white}.filters{display:flex;flex-wrap:wrap;gap:10px 22px;margin-bottom:18px}.filters label{font-size:.9rem;display:flex;align-items:center;gap:5px;min-height:34px;cursor:pointer}input[type=checkbox]{width:18px;height:18px}.dot{display:inline-block;width:5px;height:14px;border-radius:2px;flex-shrink:0}.thomas-work{--event:#1c63a2;background:#1c63a2}.partner-work{--event:#984890;background:#984890}.thomas-event{--event:#a96416;background:#a96416}.partner-event{--event:#cb445b;background:#cb445b}.together{--event:#087567;background:#087567}.weekdays,#grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekdays{font-size:.875rem;text-align:center;color:#52697c;margin-bottom:10px}#month-panel{padding:14px}#grid{gap:1px;background:#d4dfea;border:1px solid #d4dfea}.day{background:white;color:#162e45;min-height:125px;border-radius:0;padding:8px;text-align:left;display:flex;flex-direction:column;align-items:flex-start;gap:5px;font-weight:400;overflow:hidden}.day.outside{background:#f5f8fb;color:#74889b}.day.selected{box-shadow:inset 0 0 0 3px #173d63;background:#eef5fc}.day-number{font-weight:750;font-size:1rem;padding:2px 4px}.day.is-today .day-number{background:var(--blue);color:white;border-radius:5px}.mini{display:block;background:#f0f5f8;width:100%;border-left:3px solid var(--event);padding:4px;font-size:.875rem;color:#162e45;border-radius:4px;line-height:1.3;overflow-wrap:anywhere}.mini small{display:block;font-size:.75rem;color:#52697c}/* Vertical tracks run upward: early hours at the bottom, late hours at the top. */
.day-bars{display:flex;flex-direction:row;align-items:stretch;gap:5px;width:100%;height:72px;flex-shrink:0;padding:0 3px}
.time-track{position:relative;display:block;flex:1;max-width:9px;min-width:0;height:100%;border-radius:2px;background:linear-gradient(180deg,transparent 49%,#a6bbce 49%,#a6bbce 51%,transparent 51%),#e7eef5;overflow:hidden}
.time-fill{position:absolute;left:0;right:0;border-radius:2px;min-height:1px}
.time-track.flexible .time-fill{background:repeating-linear-gradient(135deg,var(--event) 0 2px,transparent 2px 5px);opacity:.6}
.time-track.tentative .time-fill{opacity:.55}
.bar-guide{margin:0 0 12px;font-size:.875rem;color:#52697c;line-height:1.5}
.event-row{display:flex;align-items:flex-start;gap:12px;padding:14px 0;border-bottom:1px solid #e2eaf1}.event-row:last-child{border-bottom:0}.event-row .dot{margin-top:8px}.event-body{flex:1;min-width:0}.event-body strong{display:block;overflow-wrap:anywhere}.event-body p{margin:3px 0;color:#52697c;white-space:pre-wrap}.event-meta{font-size:.9rem;color:#52697c}.edit{background:#edf3f8;color:var(--blue);padding:8px 12px}.footnote{font-size:.875rem;color:#52697c}input:not([type=checkbox]),textarea,select{width:100%;font:inherit;color:#162e45;border:1px solid #b7cadb;background:white;padding:11px;border-radius:7px}dialog{border:1px solid #c8d6e3;border-radius:16px;padding:24px;max-width:520px;width:calc(100% - 24px);max-height:90vh}dialog::backdrop{background:#102a43aa}form label{display:block;margin-bottom:15px;font-size:.95rem}form label input,form label textarea,form label select{margin-top:6px}.pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}.check{display:flex;align-items:center;gap:8px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:15px}.danger{background:#a12e3d}#form-error{color:#a12e3d}#share-link{font-size:.875rem}#agenda h2{margin-top:22px}.empty{color:#52697c;padding:14px 0}.loading{opacity:.65}[hidden]{display:none!important}@media(max-width:700px){main{padding:5px 12px 30px}header{padding:14px 12px;gap:10px;flex-wrap:wrap}header button{font-size:.875rem;padding:8px 10px}.heading{gap:10px}.heading>button{white-space:nowrap}.toolbar{margin-top:20px}.toolbar>div{gap:5px}#month{min-width:150px;font-size:1rem}.toolbar button{padding:8px 12px}.card{padding:15px}#month-panel{padding:10px}.day{min-height:92px;padding:4px;gap:4px}.day .mini{display:none}.day-bars{height:54px;gap:3px;padding:0 2px}.time-track{max-width:6px}.filters{gap:5px 13px}.weekdays{font-size:.8rem}.event-row{gap:8px}.pair{gap:10px}.notice{padding:12px}.footnote{font-size:.875rem}}@media print{header button,.heading button,.toolbar,.filters,#month-panel,#day-panel,#missing,#share-panel,.edit{display:none!important}#agenda{display:block!important}body{background:white}main{max-width:none}header{padding:0 20px}.card{box-shadow:none;border:0;padding:0}.event-row{break-inside:avoid}.notice{break-inside:avoid}}