:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#17332d;background:#f5f1e8;line-height:1.45}*{box-sizing:border-box}body{margin:0}header{background:#123b32;color:#fff;padding:1rem max(1rem,calc((100% - 1040px)/2));display:flex;align-items:center;gap:1.25rem;justify-content:space-between;position:sticky;top:0;z-index:5}.brand{font-size:1.25rem;font-weight:800;color:#fff;text-decoration:none}nav{display:flex;gap:.85rem;align-items:center;flex-wrap:wrap}nav a{color:#d8ede2;text-decoration:none;font-size:.9rem}main{max-width:1040px;margin:auto;padding:1.25rem 1rem 4rem}.hero{padding:1.5rem 0 1rem}.eyebrow{letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;font-weight:800;color:#678278;margin:.1rem 0}.muted{color:#60736d}.small{font-size:.83rem;color:#60736d}h1{font-size:clamp(1.8rem,5vw,2.7rem);line-height:1.1;margin:.35rem 0 .7rem}h2{margin-top:1.25rem}h3{margin:.3rem 0}.cards{display:grid;gap:1rem}.card,.panel{background:#fff;border-radius:18px;padding:1.2rem;box-shadow:0 4px 18px #17332d14}.card{display:block}.card-link{color:inherit;text-decoration:none;display:block}.card:hover{box-shadow:0 6px 22px #17332d28}.card-top,.detail-heading{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start}.card h2{font-size:1.25rem;margin:.55rem 0 .2rem}.playing,.status{display:inline-block;border-radius:999px;padding:.3rem .6rem;font-size:.75rem;font-weight:750}.playing{background:#d9f3df;color:#17613a}.status{background:#edf1ed;color:#49605a}.participation{width:100%;margin-top:.9rem;text-align:left}.participation.not-playing{background:#17613a}.participation.playing{background:#d9f3df;color:#17613a}.filters{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.filter{border:1px solid #b7c7bf;border-radius:999px;padding:.45rem .7rem;color:#17613a;text-decoration:none;background:#fff;font-size:.9rem}.filter:hover{background:#e4eee7}.notice{background:#fff1c7;padding:.8rem;border-radius:10px;margin:1rem 0}.back{display:inline-block;margin:.3rem 0 1rem;color:#17613a;text-decoration:none}dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1rem;margin:1.25rem 0}dt{color:#6a7c75;font-size:.8rem}dd{margin:.1rem 0 0;font-weight:650}.group{border-top:1px solid #e3e9e4;padding:.65rem 0}.group ul{margin:.2rem 0;padding-left:1.2rem}.group li.open{color:#6c7d74}.group li.pending{color:#a16b23}.actions{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:1.5rem}button{border:0;border-radius:12px;background:#17613a;color:#fff;padding:.78rem 1rem;font-size:1rem;font-weight:700;cursor:pointer;min-height:46px}button:disabled{opacity:.7;cursor:wait}.secondary{background:#e4eee7;color:#174d39}.danger{background:#a23a2b}.primary{background:#17613a}.auth{max-width:460px;margin:8vh auto;background:#fff;padding:1.5rem;border-radius:18px;box-shadow:0 4px 18px #17332d14}label{display:block;font-weight:650;margin:1rem 0}input,select{display:block;width:100%;margin-top:.4rem;border:1px solid #b7c7bf;border-radius:10px;padding:.8rem;font:inherit;background:#fff}.two{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.checks{display:flex;gap:1rem;flex-wrap:wrap}.checks label{display:flex;align-items:center;gap:.4rem;font-weight:500}.checks input{width:auto;margin:0}.manager-grid,.status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.link-panel{color:inherit;text-decoration:none}.link-panel:hover{box-shadow:0 6px 22px #17332d28}.link-panel p{color:#60736d}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:650px}th,td{text-align:left;padding:.7rem;border-bottom:1px solid #e3e9e4;vertical-align:top}th{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:#678278}.small-button{min-height:36px;padding:.4rem .65rem;font-size:.85rem}.status-grid>div{background:#edf5ef;border-radius:14px;padding:1rem;display:flex;flex-direction:column;gap:.25rem}.activity-overlay{position:fixed;inset:0;background:#123b3288;z-index:20;display:grid;place-items:center;padding:1rem}.activity-overlay[hidden]{display:none}.activity-card{background:#fff;border-radius:18px;padding:1.5rem;max-width:380px;width:100%;text-align:center;box-shadow:0 12px 40px #0004}.spinner{width:44px;height:44px;border:5px solid #d9e8dd;border-top-color:#17613a;border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 1rem}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:650px){header{padding:.85rem 1rem}nav{gap:.55rem}nav a{font-size:.78rem}dl,.two,.manager-grid,.status-grid{grid-template-columns:1fr}.actions button{width:100%}.card{padding:1rem}}
.group-count-control{display:flex;flex-direction:column;align-items:flex-start;gap:.45rem;margin:.75rem 0 1rem}.group-count-buttons{display:flex;align-items:center;gap:.75rem}.group-count-buttons output{display:inline-flex;justify-content:center;min-width:2.25rem;font-weight:750;font-size:1.05rem}.group-count-buttons button{width:46px;height:46px;padding:0;font-size:1.35rem;touch-action:manipulation}@media(max-width:650px){.group-count-buttons{gap:1rem}}
.create-group{border:1px solid #cbd8d0;border-radius:14px;padding:.75rem 1rem 1rem;margin:1rem 0;background:#fbfdfb;min-width:0}.create-group legend{font-weight:800;padding:0 .35rem}.create-slot-row{display:grid;grid-template-columns:minmax(100px,.35fr) minmax(0,1fr);align-items:center;gap:.75rem;border-top:1px solid #e5ebe6;padding:.4rem 0}.create-slot-controls{display:grid;grid-template-columns:minmax(120px,.4fr) minmax(0,1fr);gap:.6rem;align-items:center}.create-slot-type{max-width:190px}.create-slot-row select{min-height:46px}.create-owner{border:1px solid #b7c7bf;background:#edf5ef;border-radius:10px;padding:.75rem;margin-top:.4rem}.create-owner span{display:block;color:#60736d;font-size:.8rem}.boca-guest-fields{grid-column:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.boca-guest-fields label{margin:.25rem 0}.boca-guest-fields input{padding:.6rem}.create-group[hidden]{display:none}@media(max-width:650px){.create-slot-row{grid-template-columns:1fr;gap:.1rem}.create-slot-controls{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}.create-slot-type{max-width:none}.boca-guest-fields{grid-column:1;grid-template-columns:1fr}.create-group{padding:.65rem}}
[hidden]{display:none!important}
#activity-copy{white-space:pre-line}
.build-version{max-width:1040px;margin:0 auto;padding:.65rem 1rem calc(.65rem + env(safe-area-inset-bottom));text-align:center;color:#75857e;font-size:.72rem;letter-spacing:.02em}
.notification-list{display:grid;gap:10px}.notification-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;padding:0;background:#fff;border:1px solid #d4dfd8;border-radius:12px;overflow:hidden}.notification-card.unread{border-left:4px solid #075d63;background:#f4fbfa}.notification-card-link{display:block;padding:16px;color:inherit;text-decoration:none}.notification-card-link:hover{background:#f7fbfb}.notification-copy{display:grid;gap:4px;position:relative}.notification-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#075d63;margin-right:6px}.notification-status{font-size:.78rem;font-weight:800;color:#075d63;text-transform:uppercase;letter-spacing:.06em}.notification-subject{font-weight:750}.notification-summary{font-size:.94rem}.notification-facts{font-size:.84rem;color:#60736d}.notification-action{display:inline-block;margin-top:5px;color:#075d63;font-weight:750}.notification-read-form{grid-column:1/-1;padding:0 16px 12px}.notification-read-state{padding:0 16px 16px;color:#60736d;font-size:.8rem}.notification-facts-grid{display:grid;grid-template-columns:max-content 1fr;gap:5px 14px;margin:18px 0}.notification-facts-grid dd{margin:0}.notification-detail pre{max-height:420px;overflow:auto;padding:12px;background:#f3f6f7;border-radius:8px;font-size:.78rem;white-space:pre-wrap}
.slot-remove{position:relative;display:inline-grid;place-items:center;justify-self:end;width:1.65rem;height:1.65rem;min-width:1.65rem;min-height:1.65rem;max-width:1.65rem;padding:0;margin:0;border:1px solid #a84a3c;border-radius:50%;background:transparent;color:#a02f22;font-size:1rem;font-weight:700;line-height:1;flex:0 0 1.65rem}.slot-remove::before{content:"";position:absolute;inset:-8px}
.slot-add{display:inline-flex;min-height:36px;padding:.35rem .65rem;font-size:.85rem}
.create-slot-row[hidden],.boca-guest-fields[hidden]{display:none!important}
.create-slot-row:has(.slot-remove){grid-template-columns:auto minmax(0,1fr) auto;gap:.4rem;padding:.2rem 0}
@media(max-width:650px){.create-slot-row:has(.slot-remove){grid-template-columns:auto minmax(0,1fr) auto;gap:.35rem}.create-slot-row:has(.slot-remove)>strong{grid-column:1;grid-row:1}.create-slot-row:has(.slot-remove) .create-slot-controls{grid-column:2;grid-row:1;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:.35rem}.create-slot-row .slot-remove{grid-column:3;grid-row:1;align-self:center}}
.weekday-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}
.weekday-check{display:flex;align-items:center;gap:.55rem;margin:.2rem 0;padding:.7rem;border:1px solid #d4dfd8;border-radius:10px;background:#fbfdfb;font-weight:600}
.weekday-check input{width:auto;margin:0;min-width:18px;min-height:18px}
.date-block-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.5rem 1rem;align-items:end}
.date-block-form label{margin:.4rem 0}
.date-block-scroll-list{display:grid;gap:.45rem;max-height:22rem;overflow-y:auto;padding:.35rem;border:1px solid #d4dfd8;border-radius:14px;background:#f7faf7}
.date-block-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.75rem .85rem;border-left:7px solid;border-radius:10px;background:#fff;box-shadow:0 2px 8px #17332d12}
.date-block-clear{border-left-color:#3e9a63;background:#eff9f1}
.date-block-conflict{border-left-color:#d7a62a;background:#fff7dc}
.date-block-copy{display:grid;gap:.15rem;min-width:0}
.date-block-copy strong,.date-block-copy span{overflow-wrap:anywhere}
.date-block-state{font-size:.78rem;color:#60736d}
.date-block-actions{display:flex;gap:.35rem;flex:0 0 auto}
.date-block-icon{display:inline-grid;place-items:center;width:2.3rem;min-width:2.3rem;height:2.3rem;min-height:2.3rem;padding:0;border-radius:50%;background:#fff;color:#17613a;border:1px solid #b7c7bf;font-size:1.1rem;line-height:1}
.date-block-icon:hover{background:#dfeee2}
.date-block-icon.date-block-delete{color:#a23a2b;border-color:#d9aaa2}
.date-block-explanation{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;margin:.7rem 0 0}
.date-block-legend{display:inline-block;width:.75rem;height:.75rem;border-radius:3px;margin-left:.35rem}
.date-block-legend-conflict{background:#d7a62a}.date-block-legend-clear{background:#3e9a63}
.date-block-overlay{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:1rem;background:#123b3288}
.date-block-overlay[hidden]{display:none}
.date-block-modal{position:relative;width:min(100%,30rem);background:#fff;border-radius:18px;padding:1.4rem;box-shadow:0 12px 40px #0004}
.date-block-close{position:absolute;right:.8rem;top:.8rem;min-height:2.25rem;width:2.25rem;padding:0;border-radius:50%;background:#e4eee7;color:#174d39}
.action-card{display:flex;flex-direction:column;gap:.35rem}
.action-card p{margin:.25rem 0}
.button-link{display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;min-height:42px;padding:.55rem .85rem;border-radius:10px;background:#e4eee7;color:#174d39;text-decoration:none;font-weight:700}
.version-warning{font-weight:700}
@media(max-width:650px){.weekday-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.date-block-form{grid-template-columns:1fr}}
.app-install{margin-top:1rem}.app-install button:disabled{background:#e4eee7;color:#174d39;opacity:1;cursor:default}
.install-instructions{margin-top:1rem}.install-instructions ol{margin:.6rem 0;padding-left:1.4rem}
.view-toggle-button{min-height:36px;padding:.45rem .75rem;border:1px solid #b7c7bf;border-radius:999px;background:#fff;color:#17613a;font-size:.9rem;font-weight:750;white-space:nowrap}
.view-toggle-button:hover,.view-toggle-button:focus-visible{background:#e4eee7;outline:2px solid #17613a;outline-offset:2px}
.upcoming-views{margin-top:1rem}
.compressed-view[hidden],.tiles-view[hidden]{display:none!important}
.compressed-list{display:grid;gap:.55rem}
.compressed-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;min-width:0;padding:.65rem .85rem;border-radius:12px;background:#fff;box-shadow:0 2px 10px #17332d12}
.compressed-row>a{min-width:0;flex:1;color:inherit;text-decoration:none}
.compressed-summary{display:flex;align-items:baseline;gap:.35rem;min-width:0;flex-wrap:wrap;font-size:.94rem;color:#17332d}
.compressed-summary strong{color:#17613a;letter-spacing:.04em;font-size:.8rem}
.compressed-separator{color:#9aa9a2;padding:0 .05rem}
.compressed-action{flex:0 0 auto;display:inline-grid;place-items:center;width:34px;height:34px;min-height:34px;padding:0;border-radius:50%;background:#e4eee7;color:#17613a;border:1px solid #b7c7bf;font-weight:800;font-size:1.15rem;line-height:1;white-space:nowrap}
.compressed-row>a:hover{background:#f2f7f3}
.compressed-action:hover{background:#cfe5d5}
.compressed-action:disabled{background:#e4eee7;color:#49605a;cursor:default}
.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}
@media(max-width:650px){.compressed-row{align-items:flex-start;padding:.6rem .7rem}.compressed-summary{gap:.25rem .45rem;line-height:1.35}.compressed-action{margin-top:.05rem}}
.status-confirmed{background:#d9f3df;color:#17613a}.status-request{background:#fff1c7;color:#805500}.status-wait{background:#e5f0ff;color:#185a9d}.status-invalid{background:#fff0ee;color:#a23a2b}.status-neutral{background:#edf1ed;color:#49605a}.compressed-row>.status{flex:0 0 auto}
.buddy-schedule-link{display:inline-flex;margin-top:.25rem;padding:.2rem .45rem;font-size:.8rem}
.buddy-blocked-date-list{display:grid;gap:.4rem;max-height:18rem;overflow-y:auto;margin:.5rem 0;padding:.25rem}
.buddy-blocked-date-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.55rem .7rem;border-bottom:1px solid #e3e9e4}
