/* Shared workspace, with comfortably sized controls on every screen. */
:root{--bg:#f4f6f1;--green:#1f5949;--ink:#1f3f36;--line:#e1e7dd}html{max-width:100%;overflow-x:clip}body{min-width:0}main,header,.heading,.period,.workspace,.workspace>div,.panel,.panel-head,.team-card,.team-controls>div{min-width:0}main{padding:0 clamp(22px,3.8vw,66px)}aside{background:#fcfdfb}.brand{letter-spacing:-1.1px}.mark{background:linear-gradient(135deg,#316f58,#174335);box-shadow:0 6px 14px #245d4c1f}.heading{position:relative;padding:28px 30px;margin:28px 0;background:linear-gradient(108deg,#e9f0de 0%,#f0f4e8 65%,#e3eddb 100%);border:1px solid #dce6d1;border-radius:20px;isolation:isolate;gap:20px;overflow:visible}.heading:after{content:none;position:absolute;right:27%;top:5px;font-size:140px;line-height:1;color:#789b6e12;z-index:-1}.heading h1{font-size:clamp(25px,2.5vw,40px);line-height:1.2;letter-spacing:-1.4px;max-width:650px}.heading p{font-size:13px;color:#74816e}.eyebrow{letter-spacing:1.7px;font-size:9px;color:#6c8754}.period{flex:0 0 auto;max-width:100%}.period label{color:#718064;font-size:9px}.month-switch{display:flex;align-items:center;background:white;border:1px solid #d6e1ca;box-shadow:0 3px 8px #213e3505;border-radius:10px;max-width:100%;padding:4px}.month-switch button{border:0;background:transparent;color:var(--ink);padding:9px;border-radius:6px;min-width:32px;min-height:36px}.month-switch button:hover{background:#f0f4e9}#monthLabel{font-weight:600;white-space:nowrap;font-size:12px;flex:1;min-width:0}#month{display:none}.cohort-bar{border:0;background:#fff;border-radius:12px;padding:12px 18px;box-shadow:0 1px 3px #203e3805}#cohorts button{padding:8px 20px;min-height:38px;transition:.18s}#cohorts button.active{box-shadow:0 3px 7px #245d4c25}.pill{display:flex;align-items:center;gap:6px;line-height:1.4;max-width:50%;font-size:10px}.pill[data-state="saving"]{color:#987437;background:#fff8e9}.pill[data-state="offline"],.pill[data-state="conflict"]{background:#fbece5;color:#a55c42}.pill[data-state="connected"]{background:#f0f6e8;color:#56763f}.stat{position:relative;border-radius:14px;box-shadow:0 3px 6px #203e3803;padding:20px 22px}.stat:after{content:'◫';position:absolute;right:18px;top:17px;width:31px;height:31px;display:grid;place-items:center;background:#eef4e6;color:#6f8b55;border-radius:10px;font-size:17px}.stat:nth-child(2):after{content:'▦';background:#ecf1fb;color:#7792b0}.stat:nth-child(3):after{content:'✓';background:#ecf4ee;color:#5e906e}.stat:nth-child(4):after{content:'↗';background:#fbf2e2;color:#b89c63}.stat strong{font-size:32px;margin:11px 0 3px}.stat label{padding-right:32px}.stat small{display:block;line-height:1.6;overflow-wrap:anywhere}.panel{border-radius:16px;box-shadow:0 4px 15px #203e3804;padding:25px}.panel h2{font-size:17px;letter-spacing:-.4px}.step{font-size:9px;letter-spacing:1.5px;color:#8a9c7a}.upload{padding:25px 16px;background:repeating-linear-gradient(135deg,#f9fcf5,#f9fcf5 8px,#f7faf2 8px,#f7faf2 16px);border-color:#b8cbaa;border-radius:12px;transition:.2s}.upload:hover{border-color:#6e9956;background:#f0f6e9}.upload-icon{width:43px;height:43px;border:1px solid #dce6d2;border-radius:13px;display:grid!important;place-items:center;margin:0 auto 12px;background:white}.upload strong{display:block;overflow-wrap:anywhere}.button{min-height:40px;border-radius:8px;line-height:1.4;transition:background .15s,transform .15s}.button:hover{background:#f0f4e9}.button.primary{background:var(--green);box-shadow:0 3px 7px #245d4c19}.button.primary:hover{background:#174737}.button:active{transform:translateY(1px)}.button-row{min-width:0}.days{border-radius:10px;overflow:hidden;border:1px solid var(--line);border-right:0;border-bottom:0}.day{min-height:112px}.day-num{font-size:12px;font-weight:600}.add-day{width:25px;height:25px;border-radius:7px;color:#8a9c7c}.add-day:hover{background:#e9f0df;color:var(--green)}.slot-chip{font-size:10px;padding:7px 5px;min-height:36px;line-height:1.55;margin:5px 0}.slot-chip b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot-chip br{display:none}.rule{font-size:11px;line-height:1.5}.check{width:22px;height:22px;border-radius:50%;background:#edf3e4;text-align:center;flex-shrink:0;padding-top:2px}.notice{border:1px solid #e4ebd8;background:#f3f7ed;font-size:11px}.team-card{background:linear-gradient(120deg,#fff,#fafcf7);border-radius:12px}.team-card h3{font:600 16px Manrope;display:flex;align-items:center;gap:10px}.avatar{display:inline-grid;place-items:center;flex-shrink:0;width:36px;height:36px;background:#e6eedb;border:1px solid #d8e4ca;color:#5e7d43;border-radius:11px;font-size:12px}.team-controls{gap:28px}.blocked-grid button{min-height:31px;font-size:12px}.blocked-grid button.selected{box-shadow:inset 0 0 0 1px #d7a394}.table-wrap{max-width:100%;overscroll-behavior-x:contain;border:1px solid var(--line);border-radius:10px;margin-top:20px}.table-wrap th:first-child,.table-wrap td:first-child{position:sticky;left:0;background:#fcfdf9;z-index:1;min-width:165px}.table-wrap th:first-child{background:#f1f5e9}.table-wrap input{min-width:55px}dialog{box-shadow:0 18px 80px #203e3830;padding:28px;border-radius:18px}dialog h2{font:600 21px Manrope;letter-spacing:-.6px}dialog input,dialog select{min-width:0;max-width:100%}.field label{color:#73826a;font-size:11px}input,select{min-height:40px}.blocked-grid{max-width:420px}.weekday-mobile{display:none}.shared-note{font-size:10px;color:#8b9882;line-height:1.7;margin-top:15px}.sync-banner{padding:13px 17px;margin-bottom:20px;border:1px solid #e4d7ba;border-radius:10px;background:#fff9e9;color:#877242;display:flex;gap:12px;align-items:center;justify-content:space-between;font-size:12px;flex-wrap:wrap}#loadingScreen{position:fixed;inset:0;background:#f4f6f1ed;z-index:200;display:grid;place-items:center;padding:25px;text-align:center}#loadingScreen>div{max-width:400px}#loadingScreen strong{display:block;font:600 23px Manrope;margin-bottom:13px}#loadingScreen p{font-size:13px}.spinner{width:33px;height:33px;border:3px solid #d8e4cf;border-top-color:var(--green);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 20px}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:1600px){main{max-width:1800px}.workspace{grid-template-columns:minmax(0,1fr) 320px}.heading{padding:34px 36px}}@media(max-width:1200px){.heading{padding:24px;flex-wrap:wrap}.period{margin-left:auto}.workspace{grid-template-columns:minmax(0,1fr)}.rules-panel{display:none}.workspace>div:last-child>.panel{display:none}}@media(max-width:900px){aside{width:190px;padding:25px 15px}main{margin-left:190px;padding:0 20px}.brand{font-size:18px}nav button{padding:11px 8px}nav button span{font-size:12px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.heading h1{font-size:29px}.period{margin-left:0}.cohort-bar .hint{display:none}.panel-head{flex-wrap:wrap;gap:12px}.heading:after{right:5%}.stat{padding:17px 19px}}@media(max-width:700px){aside{position:static;width:auto;padding:18px 16px 12px;background:#fff}main{margin-left:0;padding:0 14px}.brand{font-size:22px}.brand .mark{width:32px;height:32px}nav{margin:16px -3px 0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;overflow:visible}nav button{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;padding:10px 2px;font-size:19px;border-radius:10px;min-width:0;white-space:normal}nav button span{margin:0;font-size:8px;line-height:1.3;max-width:70px;text-align:center}nav button.active{background:#ecf3e4}header{height:auto;min-height:50px;gap:12px;flex-wrap:wrap;padding:12px 0}header>span:first-child{font-size:9px}header .slash{padding:0 6px}.pill{padding:5px 8px;font-size:9px;max-width:100%}.heading{margin:14px 0 18px;padding:24px 19px;border-radius:16px;display:flex;gap:23px;overflow:hidden}.heading>div:first-child{width:100%}.heading h1{font-size:30px;letter-spacing:-1.3px;max-width:340px;margin:12px 0}.heading p{font-size:12px}.heading:after{right:-12px;top:8px;font-size:170px}.period{width:100%;flex:1 1 100%;max-width:100%;margin:0}.period label{font-size:8px;letter-spacing:1.3px;margin-bottom:8px}.month-switch{width:100%;box-sizing:border-box;padding:5px;min-width:0}.month-switch button{min-height:38px}#monthLabel{font-size:14px;white-space:normal;text-align:center;overflow-wrap:anywhere;max-width:calc(100% - 70px)}.cohort-bar{padding:10px;margin-bottom:17px;display:block}.cohort-bar>div{width:100%}#cohorts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:0}#cohorts button{padding:8px 10px;border-radius:7px;min-height:40px}.stats{gap:9px;margin-bottom:17px}.stat{padding:15px;border-radius:12px}.stat:after{width:25px;height:25px;font-size:14px;top:13px;right:12px}.stat label{font-size:10px}.stat strong{font-size:28px}.stat small{font-size:9px}.panel{padding:19px 14px;border-radius:14px;margin-bottom:16px}.panel h2{font-size:16px}.panel-head{margin-bottom:16px}.panel-head>.button-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto}.button{font-size:11px;padding:10px 12px;min-height:42px}.upload{padding:22px 12px}.upload strong{font-size:12px}.upload small{font-size:10px;line-height:1.7}.week{display:none}.days{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;border:0;border-radius:0}.day{min-height:91px;border:1px solid var(--line);border-radius:9px;padding:10px;min-width:0;background:#fcfdf9}.day.weekend{background:#f2f5ed}.day.blank{display:none}.day-num{margin-bottom:5px;font-size:13px}.weekday-mobile{display:inline;font-weight:400;font-size:9px;margin-left:5px;color:#8b9980}.slot-chip{font-size:10px;padding:6px;min-height:38px}.slot-chip b{font-size:10px;white-space:normal;overflow-wrap:anywhere}.legend{gap:10px;font-size:9px;margin-top:17px}.team-controls{grid-template-columns:minmax(0,1fr);gap:20px}.team-card{padding:15px 12px}.team-card .panel-head>.button-row{display:flex;flex-wrap:wrap}.team-card h3{font-size:14px;overflow-wrap:anywhere}.toggle-line{font-size:11px;gap:8px;flex-wrap:wrap}.toggle-line label{display:flex;align-items:center;gap:3px}.toggle-line input{min-height:22px;width:18px;height:18px}.blocked-grid{max-width:none;gap:5px}.blocked-grid button{min-height:35px}.table-wrap th:first-child,.table-wrap td:first-child{min-width:130px;font-size:10px}th,td{padding:10px}.notice{padding:12px;font-size:10px}.workspace{gap:0}footer{font-size:8px;gap:14px;letter-spacing:1px;padding:21px 0;margin-top:22px}.side-bottom{display:none}dialog{padding:23px 17px;width:calc(100% - 22px);max-width:none;max-height:90dvh}dialog .button-row{gap:7px}#chooseMonth{box-sizing:border-box;width:100%;min-width:0;max-width:100%;display:block;-webkit-appearance:none}#chooseMonth::-webkit-date-and-time-value{text-align:left;min-width:0}#toast{font-size:11px;bottom:15px;padding:13px 17px;width:max-content;max-width:calc(100vw - 28px)}.help-list{padding-left:20px}.help-list li{font-size:12px}}@media(max-width:360px){main{padding:0 10px}.heading{padding:20px 15px}.heading h1{font-size:27px}.panel{padding:17px 11px}.day{padding:7px}.stat{padding:12px}.stat label{font-size:9px}nav button span{font-size:7px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

@media(max-width:700px){.team-card .side-label{display:block;font-size:9px}.panel .button-row .button{max-width:100%}}

.import-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px;margin:18px 0}.import-summary>div{background:#f0f5e9;border:1px solid #e0e9d6;border-radius:10px;padding:12px}.import-summary span{display:block;font-size:10px;color:#7a8c6a}.import-summary strong{display:block;font:600 25px Manrope;margin-top:7px}

.toggle-line{flex-wrap:wrap;padding:9px 0;border-bottom:1px solid #edf0e7}.toggle-line:last-child{border-bottom:0}.toggle-line .week-two-option{display:flex;align-items:flex-start;gap:7px;flex-basis:100%;margin:7px 0 0 67px;font-size:11px;line-height:1.5}.week-two-option input{min-height:16px;margin-top:2px;accent-color:var(--green)}.week-two-option small{display:block;color:#91a083;font-size:9px}.week-two-option:has(input:disabled){opacity:.5}.weekend-balance{line-height:1.7;font-size:11px;padding:0 3px}@media(max-width:700px){.toggle-line .week-two-option{margin-left:0;gap:8px;font-size:11px}.week-two-option input{width:18px;height:18px;flex-shrink:0}.weekend-balance{font-size:10px}}

.toggle-line input[type="checkbox"]{min-height:16px;width:16px;height:16px;vertical-align:middle;accent-color:var(--green)}@media(max-width:700px){.toggle-line input[type="checkbox"]{min-height:18px;width:18px;height:18px}}

/* Compact resident cards; expansion stays local to this browser tab. */
.team-card.resident-details{padding:0;overflow:hidden}
.resident-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;cursor:pointer;list-style:none;min-height:68px;box-sizing:border-box}
.resident-summary::-webkit-details-marker{display:none}
.resident-summary::marker{content:''}
.resident-summary:hover{background:#eef4e67a}
.resident-summary:focus-visible{outline:2px solid var(--green);outline-offset:-3px;border-radius:12px}
.resident-name{display:flex;align-items:center;gap:10px;min-width:0;overflow-wrap:anywhere;font:600 15px Manrope}
.resident-disclosure{display:flex;align-items:center;gap:9px;flex-shrink:0;color:var(--green);font-size:11px}
.resident-chevron{font-size:20px;line-height:1;transition:transform .15s}
.resident-hide{display:none}
.resident-details[open]>.resident-summary .resident-hide{display:inline}
.resident-details[open]>.resident-summary .resident-show{display:none}
.resident-details[open]>.resident-summary .resident-chevron{transform:rotate(180deg)}
.resident-body{padding:0 18px 18px;border-top:1px solid var(--line)}
.resident-actions{justify-content:flex-end;display:flex;flex-wrap:wrap;gap:8px;padding:14px 0}
@media(max-width:700px){.resident-summary{padding:13px 12px;gap:10px}.resident-name{font-size:14px}.resident-body{padding:0 12px 15px}.resident-disclosure{font-size:10px;gap:5px}}
