/* Wellbeing Planner — monthly planner + approval workflow */

.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;border-radius:10px;background:#B04141;color:#fff;font-size:10.5px;font-weight:700;line-height:18px;vertical-align:middle}
.mobile-nav-btn .nav-badge{position:absolute;top:2px;right:calc(50% - 22px);margin-left:0}
.mobile-nav-btn{position:relative}

#wp-home-filter{width:100%;max-width:320px;border:1px solid var(--border-md);border-radius:12px;padding:9px 14px;font-size:13px;font-family:'DM Sans',sans-serif;background:var(--surface);color:var(--text);box-shadow:var(--shadow);cursor:pointer;transition:border-color .12s}
#wp-home-filter:focus{outline:none;border-color:var(--green)}

.wp-month-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.wp-month-label{font-size:15px;font-weight:700;color:var(--text)}

.wp-display-toggle{display:flex;border:1px solid var(--border-md);border-radius:20px;padding:2px;background:var(--surface)}
.wp-display-btn{border:none;background:transparent;font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;color:var(--text-muted);padding:5px 14px;border-radius:18px;cursor:pointer;transition:all .12s}
.wp-display-btn.active{background:var(--fortava-navy);color:#fff}

/* ── Calendar (month-grid) view ─────────────────────────────── */
.wp-cal-header{position:relative;border-radius:var(--radius);padding:16px 20px 18px;margin-bottom:14px;border:1px solid var(--border-md);overflow:hidden;
  background:
    radial-gradient(circle at 4% 12%, rgba(140,198,63,.16) 0, transparent 40%),
    radial-gradient(circle at 96% 10%, rgba(29,158,117,.14) 0, transparent 38%),
    radial-gradient(circle at 92% 92%, rgba(140,198,63,.12) 0, transparent 42%),
    radial-gradient(circle at 6% 94%, rgba(6,27,79,.07) 0, transparent 40%),
    linear-gradient(135deg,#f4f9ec 0%,#ffffff 55%,#eef7fb 100%);
}
.wp-cal-bg-controls{position:absolute;top:10px;right:12px;display:flex;gap:4px;z-index:2}
.wp-cal-bg-btn{border:1px solid var(--border-md);background:rgba(255,255,255,.85);color:var(--text-muted);font-size:13px;width:26px;height:26px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}
.wp-cal-bg-btn:hover{background:#fff;color:var(--fortava-navy)}
.wp-cal-title{font-size:20px;font-weight:700;color:var(--fortava-navy);margin-bottom:12px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;position:relative;z-index:1}
.wp-cal-year{font-weight:400;color:var(--text-muted);font-size:15px}
.wp-cal-title-sub{font-size:12px;font-weight:500;font-style:italic;color:var(--text-muted);margin-left:auto}
.wp-cal-theme-emoji{font-size:.85em;line-height:1;opacity:.75;user-select:none}
.wp-cal-wrap{overflow-x:auto;border-radius:var(--radius-sm)}
.wp-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(116px,1fr));gap:7px;min-width:850px}
.wp-cal-weekday{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle);text-align:center;padding:2px 0 7px}
.wp-cal-cell{border:1px solid var(--border-md);border-radius:var(--radius-sm);background:var(--surface);padding:7px 8px 8px;min-height:112px;display:flex;flex-direction:column;gap:5px;transition:box-shadow .15s}
.wp-cal-cell:hover{box-shadow:var(--shadow)}
.wp-cal-cell--pad{background:transparent;border-color:transparent}
.wp-cal-cell--today{border-color:var(--green);box-shadow:0 0 0 1px var(--green) inset}
.wp-cal-grid>.wp-cal-cell:nth-child(7n+6),
.wp-cal-grid>.wp-cal-cell:nth-child(7n){background:var(--bg)}
.wp-cal-grid>.wp-cal-cell--pad:nth-child(7n+6),
.wp-cal-grid>.wp-cal-cell--pad:nth-child(7n){background:transparent}
.wp-cal-daynum{font-size:11px;font-weight:700;color:var(--text-muted);display:flex;align-items:center;justify-content:space-between;padding-bottom:5px;border-bottom:1px solid var(--border)}
.wp-cal-daynum>span:first-child{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;border-radius:50%;transition:background .12s}
.wp-cal-cell--today .wp-cal-daynum>span:first-child{background:var(--green);color:#fff}
.wp-cal-add{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;font-size:13px;line-height:1;color:var(--green-dark);cursor:pointer;opacity:.4;border-radius:50%;transition:opacity .12s,background .12s}
.wp-cal-cell:hover .wp-cal-add{opacity:.85}
.wp-cal-add:hover{opacity:1!important;background:var(--green-light)}
.wp-cal-items{display:flex;flex-direction:column;gap:4px;overflow-y:auto;max-height:160px;scrollbar-width:thin}
.wp-cal-items::-webkit-scrollbar{width:5px}
.wp-cal-items::-webkit-scrollbar-thumb{background:var(--border-md);border-radius:4px}
.wp-cal-item{font-size:10.5px;line-height:1.4;padding:4px 7px;border-radius:6px;background:var(--bg);cursor:default;border-left:3px solid var(--border-md);transition:background .12s,transform .12s}
.wp-cal-item--clickable{cursor:pointer}
.wp-cal-item--clickable:hover{background:var(--green-light);transform:translateX(1px)}
.wp-cal-item-time{font-family:'DM Mono',monospace;color:var(--text-muted);margin-right:3px}
.wp-cal-item-title{font-weight:600;color:var(--text);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wp-cal-item-loc{color:var(--text-muted);font-style:italic;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.wp-status-banner{border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:14px;font-size:13px;border:1px solid var(--border-md);background:var(--surface)}
.wp-status-banner.wp-status--submitted{background:var(--fortava-blue-soft,#eef5ff);border-color:#bcd7f7}
.wp-status-banner.wp-status--approved{background:var(--green-light);border-color:var(--green)}
.wp-status-banner.wp-status--rejected{background:#fdecec;border-color:#e4a3a3}
.wp-status-comment{margin-top:6px;color:var(--text-muted);white-space:pre-wrap}

.wp-empty-hint{color:var(--text-muted);font-size:13px;padding:18px 4px}

.wp-day-list{display:flex;flex-direction:column;gap:16px}
.wp-day-group{display:flex;flex-direction:column;gap:8px}
.wp-day-heading{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-subtle)}

.wp-item-card{border:1px solid var(--border-md);border-radius:var(--radius-sm);background:var(--surface);padding:10px 12px;box-shadow:var(--shadow)}
.wp-item-card--editable{cursor:pointer;transition:border-color .12s}
.wp-item-card--editable:hover{border-color:var(--green)}
.wp-item-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wp-item-time{font-family:'DM Mono',monospace;font-size:12px;color:var(--text-muted);min-width:44px}
.wp-item-title{font-weight:600;font-size:13.5px;color:var(--text)}
.wp-item-domain{margin-left:auto;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;border-radius:10px;background:var(--fortava-purple-soft,#f5efff);color:#6d28d9}
.wp-item-meta{font-size:12px;color:var(--text-muted);margin-top:3px}
.wp-item-purpose{font-size:12px;color:var(--text-muted);margin-top:4px;font-style:italic}
.wp-item-title--cancelled{text-decoration:line-through;color:var(--text-muted)}

.wp-dup-btn{border:none;background:transparent;color:var(--text-subtle);font-size:13px;cursor:pointer;padding:2px 5px;border-radius:6px;transition:background .12s,color .12s;line-height:1;flex-shrink:0}
.wp-dup-btn:hover{background:var(--green-light);color:var(--green-dark)}
.wp-edit-btn{border:none;background:transparent;color:var(--text-subtle);font-size:13px;cursor:pointer;padding:2px 5px;border-radius:6px;transition:background .12s,color .12s;line-height:1;flex-shrink:0}
.wp-edit-btn:hover{background:var(--fortava-blue-soft,#eef5ff);color:#1d4ed8}
.wp-cal-edit-btn{border:none;background:transparent;color:var(--text-subtle);font-size:9px;cursor:pointer;padding:0 3px;border-radius:4px;line-height:1;float:right}
.wp-cal-edit-btn:hover{background:var(--fortava-blue-soft,#eef5ff);color:#1d4ed8}

/* ── Chip groups: main goal / engagement / outcome / templates ─── */
.wp-req{color:#B04141}
.wp-optional{font-weight:400;color:var(--text-subtle);font-size:11px}
.wp-chip-group{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}
.wp-chip{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--border-md);background:var(--bg);color:var(--text-muted);font-family:'DM Sans',sans-serif;font-size:12.5px;font-weight:600;padding:8px 14px;border-radius:20px;cursor:pointer;transition:all .12s;user-select:none}
.wp-chip:hover{border-color:var(--green);color:var(--text)}
.wp-chip--selected{background:var(--green-light);border-color:var(--green);color:var(--green-dark)}
.wp-chip--template{position:relative;padding-right:46px;background:var(--fortava-purple-soft,#f5efff);border-color:transparent;color:#6d28d9}
.wp-chip--template:hover{border-color:#6d28d9}
.wp-chip-x,.wp-chip-edit{position:absolute;top:50%;transform:translateY(-50%);width:16px;height:16px;line-height:14px;border:none;border-radius:50%;background:rgba(0,0,0,.08);color:inherit;font-size:11px;cursor:pointer;padding:0}
.wp-chip-x{right:5px}
.wp-chip-edit{right:23px}
.wp-chip-x:hover{background:rgba(220,38,38,.18);color:#dc2626}
.wp-chip-edit:hover{background:rgba(109,40,217,.18)}

/* ── Quick-start panel: Recent / Templates / Frequently planned / Inspiration ─── */
.wp-quickstart{border:1px solid var(--border-md);border-radius:var(--radius);background:linear-gradient(135deg,#f4f9ec 0%,#ffffff 60%);padding:14px 16px;margin-bottom:16px}
.wp-quickstart-hdr-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.wp-quickstart-hdr{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--green-dark)}
.wp-quickstart-row{margin-bottom:10px}
.wp-quickstart-row:last-child{margin-bottom:0}
.wp-quickstart-row label{display:block;font-size:11px;font-weight:600;color:var(--text-subtle);margin-bottom:5px;text-transform:uppercase;letter-spacing:.03em}
.wp-inspire-btn{border:1.5px solid #6d28d9;background:#fff;color:#6d28d9;font-family:'DM Sans',sans-serif;font-size:11.5px;font-weight:700;padding:5px 12px;border-radius:16px;cursor:pointer;transition:all .12s;white-space:nowrap}
.wp-inspire-btn:hover{background:#6d28d9;color:#fff}
.wp-chip--suggest{background:var(--fortava-blue-soft,#eef5ff);border-color:transparent;color:#1d4ed8}
.wp-chip--suggest:hover{border-color:#1d4ed8}
.wp-chip-wrap{display:inline-flex;align-items:center;gap:3px}
.wp-chip-link{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--fortava-blue-soft,#eef5ff);color:#1d4ed8;font-size:12px;text-decoration:none;flex-shrink:0}
.wp-chip-link:hover{background:#1d4ed8;color:#fff}

/* ── Resident picker: preference snippets from This Is Me ─── */
.wp-checkbox-label.wp-resident-row{align-items:flex-start}
.wp-resident-row input{margin-top:3px;flex-shrink:0}
.wp-resident-text{display:flex;flex-direction:column;gap:1px;min-width:0}
.wp-resident-name{font-weight:500}
.wp-resident-noconsent{display:inline-flex;align-items:center;gap:3px;align-self:flex-start;font-size:10.5px;font-weight:700;color:#991b1b;background:#fef2f2;border:1px solid #fca5a5;border-radius:8px;padding:1px 6px;margin-top:2px}
.wp-resident-snips{font-size:10.5px;color:var(--text-subtle);font-style:italic}

/* ── Planning Insights: lightweight, supportive coverage summary ─── */
.wp-insights-panel{border:1px solid var(--border-md);border-radius:var(--radius);background:var(--surface);padding:9px 14px;margin-bottom:12px}
.wp-insights-hdr{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle);margin-bottom:10px}
.wp-insights-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:7px}
.wp-insights-top .wp-insights-hdr{margin-bottom:0}
.wp-cov-score{font-size:12.5px;color:var(--text-muted);font-family:'DM Mono',monospace}
.wp-cov-score strong{color:var(--text)}
/* One small pill per THRIVE domain, showing what IS covered. A domain with
   nothing in it yet is simply muted with a dash — absent, not wrong. */
.wp-cov-pills{display:flex;flex-wrap:wrap;gap:7px}
.wp-cov-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;border:1px solid var(--border-md);background:var(--bg);font-size:14px;line-height:1;opacity:.45}
.wp-cov-pill.is-on{opacity:1;background:#f0fdf4;border-color:#86efac}
.wp-cov-pill-n{font-size:12px;font-weight:700;color:var(--text-muted);font-family:'DM Mono',monospace}
.wp-cov-pill.is-on .wp-cov-pill-n{color:#166534}
/* The gaps, stated once and quietly. Turns amber only once the plan has been
   submitted or approved — at which point it is a finding rather than work
   still in progress. */
.wp-cov-note{margin-top:10px;font-size:12.5px;color:var(--text-muted);line-height:1.5}
.wp-cov-note--ok{color:#15803d}
.wp-insights-panel--flag{border-color:#fcd34d;background:#fffdf5}
.wp-insights-panel--flag .wp-cov-note{color:#92400e;font-weight:600}

/* ── Cross-home QA Dashboard ─── */
.wp-dash-monthnav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.wp-dash-summary{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.wp-dash-stat{flex:1;min-width:130px;border:1px solid var(--border-md);border-radius:var(--radius-sm);background:var(--surface);padding:10px 14px;font-size:12px;color:var(--text-muted);box-shadow:var(--shadow)}
.wp-dash-stat strong{display:block;font-size:20px;color:var(--fortava-navy);font-weight:700}
.wp-dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.wp-dash-card{border:1px solid var(--border-md);border-radius:var(--radius);background:var(--surface);padding:14px 16px;box-shadow:var(--shadow);cursor:pointer;transition:all .12s}
.wp-dash-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);border-color:var(--green)}
.wp-dash-card-hdr{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.wp-dash-badge{font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:10px;background:var(--bg);color:var(--text-muted);white-space:nowrap}
.wp-dash-badge.wp-status--submitted{background:var(--fortava-blue-soft,#eef5ff);color:#1d4ed8}
.wp-dash-badge.wp-status--approved{background:var(--green-light);color:var(--green-dark)}
.wp-dash-badge.wp-status--rejected{background:#fdecec;color:#B04141}
.wp-dash-card-stats{font-size:12px;color:var(--text-muted);line-height:1.5}
.wp-dash-card-gap{font-size:11.5px;color:#92400e;margin-top:6px}

.wp-item-completion{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;margin-top:5px;background:var(--bg);color:var(--text-muted)}
.wp-item-completion--completed{background:var(--green-light);color:var(--green-dark)}
.wp-item-completion--adapted{background:var(--fortava-gold-soft,#fff7e6);color:#92400e}
.wp-item-completion--cancelled{background:#fdecec;color:#B04141}
.wp-item-completion--postponed{background:var(--fortava-blue-soft,#eef5ff);color:#1d4ed8}

.wp-cal-item--cancelled .wp-cal-item-title{text-decoration:line-through;opacity:.65}

.wp-photo-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.wp-photo-thumb{position:relative;width:72px;height:72px;border-radius:var(--radius-sm);overflow:hidden;background:var(--bg);border:1px solid var(--border-md)}
.wp-photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.wp-photo-uploading{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--text-muted);text-align:center;padding:4px}
.wp-photo-remove{position:absolute;top:2px;right:2px;width:18px;height:18px;line-height:16px;border-radius:50%;border:none;background:rgba(0,0,0,.55);color:#fff;font-size:13px;cursor:pointer;padding:0}

.wp-resident-checks{display:flex;flex-direction:column;gap:4px;max-height:140px;overflow-y:auto;border:1px solid var(--border-md);border-radius:var(--radius-sm);padding:8px;background:var(--bg)}
.wp-checkbox-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:400;color:var(--text)}
.wp-checkbox-label input{width:auto}

.wp-item-modal{max-width:560px;max-height:88dvh;overflow-y:auto}

.wp-approvals-list{display:flex;flex-direction:column;gap:16px}
.wp-approval-card{border:1px solid var(--border-md);border-radius:var(--radius);background:var(--surface);padding:14px;box-shadow:var(--shadow)}
.wp-approval-hdr{font-size:13px;color:var(--text-muted);margin-bottom:10px}

/* ── Monthly evidence report (photo album) ──────────────────── */
.wp-album{display:flex;flex-direction:column;gap:22px}
.wp-album-cover{text-align:center;padding:44px 20px;border-radius:var(--radius);border:1px solid var(--border-md);
  background:
    radial-gradient(circle at 6% 15%, rgba(140,198,63,.16) 0, transparent 40%),
    radial-gradient(circle at 94% 12%, rgba(29,158,117,.14) 0, transparent 38%),
    radial-gradient(circle at 90% 90%, rgba(140,198,63,.12) 0, transparent 42%),
    linear-gradient(135deg,#f4f9ec 0%,#ffffff 55%,#eef7fb 100%);
}
/* Family album cover: warmer, more playful palette than the evidence
   report's cover -- this is a keepsake families take away, not a CQC
   document, so it's allowed to look like one. */
.wp-family-cover{
  background:
    radial-gradient(circle at 8% 18%, rgba(230,140,180,.18) 0, transparent 40%),
    radial-gradient(circle at 92% 15%, rgba(240,196,60,.16) 0, transparent 38%),
    radial-gradient(circle at 88% 88%, rgba(91,180,209,.14) 0, transparent 42%),
    linear-gradient(135deg,#fdf0f6 0%,#ffffff 55%,#fff9e6 100%);
}
.wp-album-cover-home{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}
.wp-album-cover-title{font-size:30px;font-weight:700;color:var(--fortava-navy);margin:8px 0 4px}
.wp-album-cover-month{font-size:16px;color:var(--text-muted)}
.wp-album-cover-count{font-size:13px;color:var(--text-subtle);margin-top:12px}

/* A book face for the family album's printed pages. System serifs only: no
   new webfont dependency (the app vendors its libraries deliberately), and
   these render correctly in print even with no network. */
.wp-family-album{--album-serif:'Iowan Old Style','Palatino Linotype',Palatino,'Book Antiqua',Georgia,'Times New Roman',serif}
/* Cover rule and closing leaf are page furniture -- they exist to close the
   printed book. The on-screen view is a scrolling browse, not a paginated
   one, so neither has a job there. */
.wp-album-cover-rule,
.wp-album-closing{display:none}

.wp-album-entry{border:1px solid var(--border-md);border-radius:var(--radius);background:var(--surface);overflow:hidden;box-shadow:var(--shadow)}
.wp-album-photos{display:grid;gap:2px;background:var(--border-md)}
.wp-album-photos img{width:100%;object-fit:cover;display:block;background:var(--bg)}
.wp-album-photos--1{grid-template-columns:1fr}
.wp-album-photos--1 img{height:340px}
.wp-album-photos--2{grid-template-columns:1fr 1fr}
.wp-album-photos--2 img{height:240px}
.wp-album-photos--3{grid-template-columns:2fr 1fr}
.wp-album-photos--3 img:first-child{grid-row:span 2;height:100%}
.wp-album-photos--3 img{height:120px}
.wp-album-photos--4{grid-template-columns:1fr 1fr}
.wp-album-photos--4 img{height:170px}

.wp-album-body{padding:16px 20px 20px}
.wp-album-title{font-size:18px;font-weight:700;color:var(--text)}
.wp-album-meta{font-size:12px;color:var(--text-muted);margin-top:3px}
.wp-album-why{font-size:13px;color:var(--text);margin-top:12px;line-height:1.5}
.wp-album-narrative{font-size:13px;color:var(--text);margin-top:8px;line-height:1.5}
/* Curating a caption from inside the album. Quiet by default — the album is
   something people look at, not a form — and only steps forward on hover. */
.wp-album-caption-btn{margin-top:9px;border:1px dashed var(--border-md);background:transparent;
  color:var(--text-muted);font-family:inherit;font-size:11.5px;font-weight:600;
  padding:5px 12px;border-radius:16px;cursor:pointer;transition:all .12s}
.wp-album-caption-btn:hover{border-style:solid;border-color:var(--green);color:var(--green-dark)}
.wp-album-caption-btn:focus-visible{outline:2px solid var(--green-dark);outline-offset:2px}
/* Guidance under a field, where the wording matters as much as the input —
   used for the "don't name other residents" note on the album caption. */
.wp-field-hint{font-size:11.5px;line-height:1.45;color:var(--text-muted);margin-top:6px}
/* Sits on the field's own label, so the offer is where the writing happens. */
.wp-suggest-btn{margin-left:10px;border:1px solid var(--border-md);background:var(--bg);
  color:var(--green-dark);font-family:inherit;font-size:11px;font-weight:600;
  padding:3px 10px;border-radius:14px;cursor:pointer;text-transform:none;
  letter-spacing:0;transition:all .12s}
.wp-suggest-btn:hover{border-color:var(--green);background:var(--green-light)}
.wp-suggest-btn:focus-visible{outline:2px solid var(--green-dark);outline-offset:2px}

@media(max-width:700px){
  .wp-item-modal{max-width:94vw}
  .wp-month-label{font-size:13.5px}
}

/* ── Print ──────────────────────────────────────────────── */
/* Landscape gives a 7-column month grid far more usable width than portrait.
   Named page + `page:` property (best-effort — unsupported browsers just
   fall back to whatever the print dialog is set to, which is harmless). */
@page wp-landscape{size:landscape;margin:8mm}
body.printing-planner{page:wp-landscape}
@media print{
  body.printing-planner .sidebar,
  body.printing-planner .mobile-bottom-nav,
  body.printing-planner .header,
  body.printing-planner .wp-month-nav button,
  body.printing-planner #wp-approvals-toggle-btn,
  body.printing-planner .page-hdr .btn,
  body.printing-planner .wp-item-card--editable{cursor:default}
  body.printing-planner .sidebar,
  body.printing-planner .mobile-bottom-nav,
  body.printing-planner .header,
  body.printing-planner .wp-month-nav,
  body.printing-planner .wp-action-row,
  body.printing-planner .wp-insights-panel,
  body.printing-planner .wp-status-banner,
  body.printing-planner .wp-dup-btn,
  body.printing-planner .wp-edit-btn,
  body.printing-planner .wp-cal-edit-btn,
  body.printing-planner .page-hdr{display:none!important}
  body.printing-planner .layout{height:auto!important;overflow:visible!important;display:block!important}
  body.printing-planner .main{padding:0;height:auto!important;overflow:visible!important}
  body.printing-planner .panel{display:none!important}
  body.printing-planner #panel-wellbeing{display:block!important}
  body.printing-planner .wp-item-card{break-inside:avoid;box-shadow:none}
  body.printing-planner .wp-cal-add{display:none!important}
  body.printing-planner .wp-cal-wrap{overflow:visible!important}
  body.printing-planner .wp-cal-item{cursor:default}
  /* Compact everything hard enough that a typical month (~60 activities)
     fits on the single landscape page set above — this is the one view
     families and inspectors see, so nothing here should spill to page 2. */
  body.printing-planner .wp-cal-header{padding:5px 10px 7px!important;margin-bottom:5px!important;box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing-planner .wp-cal-title{font-size:15px!important;margin-bottom:3px!important;gap:5px!important}
  body.printing-planner .wp-cal-year{font-size:11px!important}
  body.printing-planner .wp-cal-title-sub{font-size:9px!important}
  body.printing-planner .wp-cal-theme-emoji{opacity:.6!important}
  body.printing-planner .wp-cal-grid{min-width:0!important;grid-template-columns:repeat(7,1fr)!important;gap:2px!important}
  body.printing-planner .wp-cal-weekday{font-size:8px!important;padding:1px 0 3px!important}
  body.printing-planner .wp-cal-cell{padding:2px 3px!important;min-height:0!important;gap:1px!important;break-inside:avoid}
  body.printing-planner .wp-cal-daynum{font-size:8px!important;padding-bottom:1px!important;margin-bottom:1px}
  body.printing-planner .wp-cal-daynum>span:first-child{min-width:12px!important;height:12px!important}
  body.printing-planner .wp-cal-items{gap:1px!important;max-height:none!important;overflow:visible!important}
  body.printing-planner .wp-cal-item{font-size:7px!important;line-height:1.15!important;padding:1px 2px!important;border-left-width:2px!important}
  /* Nothing should be lost: no truncated text even at this size */
  body.printing-planner .wp-cal-item-title,
  body.printing-planner .wp-cal-item-loc{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
  body.printing-planner .wp-cal-bg-controls{display:none!important}

  body.printing-album .sidebar,
  body.printing-album .mobile-bottom-nav,
  body.printing-album .header,
  body.printing-album .wp-month-nav,
  body.printing-album .wp-action-row,
  body.printing-album .page-hdr > div:last-child{display:none!important}
  /* .layout/.main are a fixed-height flex+scroll pair (see styles.css) so
     the report renders inside the browser's own scroll viewport by default
     -- without resetting both to height:auto/overflow:visible here, print
     silently truncates the report to a single page no matter how many
     entries wp-album-entry's break-after:page below would otherwise spread
     across. */
  body.printing-album .layout{height:auto!important;overflow:visible!important;display:block!important}
  body.printing-album .main{padding:0;height:auto!important;overflow:visible!important}
  body.printing-album .panel{display:none!important}
  body.printing-album #panel-wellbeing{display:block!important}
  body.printing-album .wp-album-cover{-webkit-print-color-adjust:exact;print-color-adjust:exact;break-after:page}
  /* One page per activity was the previous behaviour -- fine for 2-3
     activities but wasteful (and hard to skim) for a busy month, so
     entries now just flow multiple-to-a-page like the rest of the report;
     break-inside:avoid still stops a single entry splitting across the
     page boundary. Photos/padding/type are shrunk here (print-only) so a
     typical entry takes a fraction of a page instead of most of one. */
  body.printing-album .wp-album{gap:10px}
  body.printing-album .wp-album-entry{break-inside:avoid;box-shadow:none}
  /* On screen these crop to fill the grid cell (object-fit:cover), which
     is fine for browsing but crops faces/context out of a printed record --
     so print shows the whole photo (object-fit:contain, letterboxed on
     whichever axis doesn't match the cell) even though that means the
     boxes below are sized a little taller than the cropped on-screen ones. */
  body.printing-album .wp-album-photos img{object-fit:contain}
  body.printing-album .wp-album-photos--1 img{height:190px}
  body.printing-album .wp-album-photos--2 img{height:150px}
  body.printing-album .wp-album-photos--3 img:first-child{height:100%}
  body.printing-album .wp-album-photos--3 img{height:100px}
  body.printing-album .wp-album-photos--4 img{height:110px}
  body.printing-album .wp-album-body{padding:10px 14px 12px}
  body.printing-album .wp-album-title{font-size:14px}
  body.printing-album .wp-album-meta{font-size:10.5px;margin-top:2px}
  body.printing-album .wp-album-why,
  body.printing-album .wp-album-narrative{font-size:11px;margin-top:6px;line-height:1.4}
  /* ── Family album ─────────────────────────────────────────────
     A keepsake, not a document -- printed straight off with no editing, so
     nothing app-chrome (the page title, action buttons) should ever reach
     the page. .page-hdr's first child (the "Wellbeing Planner" h2 +
     subtitle) was previously left visible here by mistake -- only its button
     row was hidden -- so every printout led with the app's own title bar
     instead of the album itself.

     The design problem this block solves: photographs print with
     object-fit:contain (see the evidence-report note above -- cropping faces
     out of a record is not acceptable), which leaves empty bars around any
     photo whose aspect ratio does not match its box. Rather than fight that,
     the bars ARE the design: each photo sits on a warm paper mount whose
     padding is generous enough that uneven ratios read as deliberate matting
     rather than a broken image fit. Everything else follows -- the mount is
     the object on the page, and the caption is a quiet label beneath it, not
     a heading above a paragraph. */
  @page wp-family{margin:16mm 15mm}
  @page wp-family-cover{margin:0}
  body.printing-family{page:wp-family;margin:0;background:#fff;
    -webkit-print-color-adjust:exact;print-color-adjust:exact}

  body.printing-family .sidebar,
  body.printing-family .mobile-bottom-nav,
  body.printing-family .header,
  body.printing-family .wp-month-nav,
  body.printing-family .wp-action-row,
  body.printing-family .page-hdr{display:none!important}
  body.printing-family .layout{height:auto!important;overflow:visible!important;display:block!important}
  body.printing-family .main{padding:0;height:auto!important;overflow:visible!important}
  body.printing-family .panel{display:none!important}
  body.printing-family #panel-wellbeing{display:block!important}

  /* Cover: full bleed. A zero-margin named page lets the wash run to the
     paper edge, which is most of what separates an album cover from a card
     printed on a page. Browsers that ignore named pages keep the default
     margin and still get a perfectly good cover. */
  body.printing-family .wp-album-cover{
    page:wp-family-cover;break-after:page;
    border:none;border-radius:0;box-shadow:none;
    min-height:297mm;box-sizing:border-box;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    padding:0 24mm;
    -webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing-family .wp-album-cover-home{font-size:11px;font-weight:600;
    letter-spacing:.22em;color:var(--fortava-navy);opacity:.6}
  body.printing-family .wp-album-cover-title{font-family:var(--album-serif);
    font-size:44px;font-weight:500;line-height:1.12;letter-spacing:-.01em;text-wrap:balance;
    margin:10mm 0 0;color:var(--fortava-navy)}
  body.printing-family .wp-album-cover-rule{display:block;width:26mm;height:1px;
    margin:9mm auto;background:var(--fortava-navy);opacity:.28}
  body.printing-family .wp-album-cover-month{font-family:var(--album-serif);
    font-size:18px;font-style:italic;color:var(--fortava-navy);opacity:.78}
  body.printing-family .wp-album-cover-count{font-size:10px;font-weight:500;
    text-transform:uppercase;letter-spacing:.1em;color:var(--fortava-navy);
    opacity:.5;margin-top:6mm}

  /* Plates */
  body.printing-family .wp-album{display:block}
  body.printing-family .wp-album-entry{break-inside:avoid;border:none;
    background:transparent;box-shadow:none;border-radius:0;margin:0 0 14mm}
  /* The mount. Its padding is what turns contain's empty bars into a mat, so
     it has to be generous -- a thin one just reads as a mistake. */
  body.printing-family .wp-album-photos{background:#FBF7F1;padding:7mm;gap:4mm;
    border-radius:2px;border:1px solid rgba(6,27,79,.10);
    box-shadow:0 1.5px 7px rgba(6,27,79,.10);
    align-items:center;justify-items:center;
    -webkit-print-color-adjust:exact;print-color-adjust:exact}
  /* Photographs size to their own proportions within a cap, rather than to a
     fixed box. This is the difference between a mount and a letterbox: with
     object-fit:contain a fixed box pads out whatever does not match its ratio,
     so a panoramic shot in a 170mm-tall box floats in an acre of mount and a
     tall portrait gets bars down both sides. Capping one dimension instead
     keeps the mat an even border on every photograph, whatever shape it is --
     which is what a mount is supposed to be. */
  body.printing-family .wp-album-photos img{width:auto;height:auto;max-width:100%;
    object-fit:contain;background:transparent}
  body.printing-family .wp-album-photos--1{grid-template-columns:1fr}
  body.printing-family .wp-album-photos--1 img{max-height:104mm}
  body.printing-family .wp-album-photos--2{grid-template-columns:1fr 1fr}
  body.printing-family .wp-album-photos--2 img{max-height:78mm}
  /* Three reads best as a hero across the top with a pair beneath, rather
     than the screen view's tall-left-plus-stack, which needs a fixed height
     to work and so cannot survive natural sizing. */
  body.printing-family .wp-album-photos--3{grid-template-columns:1fr 1fr}
  body.printing-family .wp-album-photos--3 img{max-height:52mm}
  body.printing-family .wp-album-photos--3 img:first-child{grid-column:1/-1;
    grid-row:auto;height:auto;max-height:78mm}
  body.printing-family .wp-album-photos--4{grid-template-columns:1fr 1fr}
  body.printing-family .wp-album-photos--4 img{max-height:58mm}

  /* Opening plate: the first session gets the whole page, centred on it, so
     the album opens on a photograph rather than on a list of them. Centring
     matters because natural sizing means the plate's height depends on the
     photo -- a panorama would otherwise sit marooned at the top of a blank
     page. */
  body.printing-family .wp-album-entry--opening{margin-bottom:0;break-after:page;
    min-height:250mm;display:flex;flex-direction:column;justify-content:center}
  body.printing-family .wp-album-entry--opening .wp-album-photos{padding:10mm}
  body.printing-family .wp-album-entry--opening .wp-album-photos--1 img{max-height:170mm}
  body.printing-family .wp-album-entry--opening .wp-album-photos--2 img{max-height:112mm}
  body.printing-family .wp-album-entry--opening .wp-album-photos--3 img{max-height:70mm}
  body.printing-family .wp-album-entry--opening .wp-album-photos--3 img:first-child{max-height:110mm}
  body.printing-family .wp-album-entry--opening .wp-album-photos--4 img{max-height:82mm}
  body.printing-family .wp-album-entry--opening .wp-album-title{font-size:21px}

  /* Caption */
  body.printing-family .wp-album-body{padding:5mm 4mm 0;text-align:center}
  body.printing-family .wp-album-title{font-family:var(--album-serif);font-size:16px;text-wrap:balance;
    font-weight:500;letter-spacing:0;color:var(--fortava-navy)}
  body.printing-family .wp-album-meta{font-size:8.5px;font-weight:500;
    text-transform:uppercase;letter-spacing:.15em;color:var(--text-subtle);margin-top:2.5mm}
  /* Other residents are named on screen, where the line helps staff check the
     album is right, but never in the printed copy. One family's keepsake must
     not disclose other families' relatives by name -- the album is per-home,
     so every recipient would read all of them. The caption prints as the date
     alone. */
  body.printing-family .wp-album-with{display:none}
  body.printing-family .wp-album-narrative{font-family:var(--album-serif);
    font-size:12.5px;font-style:italic;line-height:1.6;color:var(--text-muted);text-wrap:balance;
    margin:4mm auto 0;max-width:112mm}
  body.printing-family .wp-album-narrative::before{content:'\201C'}
  body.printing-family .wp-album-narrative::after{content:'\201D'}

  /* Closing leaf */
  body.printing-family .wp-album-closing{display:flex;flex-direction:column;
    align-items:center;justify-content:center;break-before:page;
    min-height:150mm;text-align:center}
  body.printing-family .wp-album-closing-rule{width:20mm;height:1px;
    background:var(--fortava-navy);opacity:.25;margin-bottom:8mm;
    -webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing-family .wp-album-closing-line{font-family:var(--album-serif);
    font-size:15px;font-style:italic;color:var(--fortava-navy);opacity:.8}
  body.printing-family .wp-album-closing-month{font-size:9px;text-transform:uppercase;
    letter-spacing:.18em;color:var(--text-subtle);margin-top:5mm}
}

/* ── Tribute: "Their time with us" ─────────────────────────────
   Two halves in one view: the curation controls, and a live preview of the
   book itself. Only the preview prints. */
.wp-trib-intro{background:var(--surface);border:1px solid var(--border-md);border-radius:var(--radius-sm);padding:18px 20px;margin-bottom:14px}
.wp-trib-intro h3{margin:0 0 6px;font-size:17px}
.wp-trib-intro p{margin:0 0 14px;font-size:13px;color:var(--text-muted);line-height:1.55;max-width:64ch}
.wp-trib-picker{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700;color:var(--text-muted);max-width:320px}
.wp-trib-picker select{padding:9px 11px;border:1px solid var(--border-md);border-radius:var(--radius-sm);font-size:13.5px;background:var(--bg);color:var(--text);font-family:inherit}

.wp-trib-summary{display:flex;flex-wrap:wrap;gap:8px 22px;padding:12px 16px;margin-bottom:16px;background:var(--fortava-blue-soft);border-radius:var(--radius-sm);font-size:13px;color:var(--text-muted)}
.wp-trib-summary strong{color:var(--text);font-size:15px}
.wp-trib-chosen{margin-left:auto}

.wp-trib-section{margin-bottom:22px}
.wp-trib-section-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.wp-trib-section h4,.wp-trib-section-hd h4{margin:0;font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}
.wp-trib-bulk{display:flex;gap:6px}

.wp-trib-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.wp-trib-photo{position:relative;display:flex;flex-direction:column;border:2px solid var(--border-md);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface);cursor:pointer;transition:border-color .12s,box-shadow .12s}
.wp-trib-photo.is-on{border-color:var(--fortava-green);box-shadow:0 0 0 3px rgba(140,198,63,.15)}
.wp-trib-photo input{position:absolute;top:9px;left:9px;z-index:2;width:19px;height:19px;cursor:pointer}
.wp-trib-photo img{width:100%;height:150px;object-fit:cover;display:block;background:var(--bg)}
.wp-trib-noimg{height:150px;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-subtle);font-size:12px}
.wp-trib-photo-body{padding:9px 11px;display:flex;flex-direction:column;gap:3px}
.wp-trib-photo-title{font-size:13px;font-weight:700;color:var(--text)}
.wp-trib-photo-date{font-size:11px;color:var(--text-subtle)}
.wp-trib-photo-note{font-size:12px;color:var(--text-muted);line-height:1.4;font-style:italic}
.wp-trib-with{font-size:11px;color:var(--text-subtle);margin-top:2px}
/* Consent warning. Amber, not red: it is a prompt to check, not a block --
   the person curating may well know the photo shows only this resident. */
.wp-trib-warn{font-size:11px;color:#92400e;background:#fff7ed;border-radius:6px;padding:5px 7px;margin-top:4px;line-height:1.4}

.wp-trib-moments{display:flex;flex-direction:column;gap:8px}
.wp-trib-moment{display:flex;gap:11px;align-items:flex-start;padding:11px 13px;border:2px solid var(--border-md);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;transition:border-color .12s}
.wp-trib-moment.is-on{border-color:var(--fortava-green)}
.wp-trib-moment input{width:18px;height:18px;margin-top:2px;flex-shrink:0;cursor:pointer}
.wp-trib-moment-text{font-size:13.5px;color:var(--text);line-height:1.5}
.wp-trib-moment-meta{font-size:11px;color:var(--text-subtle);margin-top:3px}

.wp-trib-dedication{width:100%;min-height:80px;padding:11px 13px;border:1px solid var(--border-md);border-radius:var(--radius-sm);font-family:inherit;font-size:13.5px;line-height:1.5;background:var(--bg);color:var(--text);resize:vertical}

/* ── The book ── */
.wp-trib-book{margin-top:4px}
.wp-trib-cover{text-align:center}
.wp-trib-cover-ded{margin-top:14px;font-size:14px;font-style:italic;line-height:1.6;max-width:44ch;margin-left:auto;margin-right:auto;opacity:.92}
.wp-trib-page{background:var(--surface);border:1px solid var(--border-md);border-radius:var(--radius-sm);padding:20px 22px;margin-bottom:14px}
.wp-trib-page h5{margin:0 0 14px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle)}
.wp-trib-story{margin-bottom:12px}
.wp-trib-story span{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle);margin-bottom:3px}
.wp-trib-story p{margin:0;font-size:14px;line-height:1.6;color:var(--text)}
.wp-trib-acts{display:flex;flex-wrap:wrap;gap:9px}
.wp-trib-act{border:1px solid var(--border-md);border-radius:999px;padding:7px 15px;display:flex;flex-direction:column;background:var(--bg)}
.wp-trib-act strong{font-size:13.5px;color:var(--text)}
.wp-trib-act span{font-size:11px;color:var(--text-subtle)}
.wp-trib-book-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.wp-trib-book-photos figure{margin:0}
.wp-trib-book-photos img{width:100%;height:190px;object-fit:cover;border-radius:12px;box-shadow:0 6px 22px rgba(6,27,79,.14);display:block}
.wp-trib-book-photos figcaption{margin-top:7px;font-size:11.5px;color:var(--text-subtle);text-align:center}
.wp-trib-quote{margin:0 0 14px;padding:0 0 0 16px;border-left:3px solid var(--fortava-green);font-size:14.5px;line-height:1.65;font-style:italic;color:var(--text)}
.wp-trib-quote cite{display:block;margin-top:6px;font-size:11.5px;font-style:normal;color:var(--text-subtle)}

@media print{
  /* Everything that helped assemble the book comes off; only the book
     prints. The curation grid, the checkboxes, the consent warnings and the
     summary counts are scaffolding, and scaffolding in a keepsake handed to
     a bereaved family would be worse than no keepsake. */
  body.printing-tribute .sidebar,
  body.printing-tribute .mobile-bottom-nav,
  body.printing-tribute .header,
  body.printing-tribute .wp-action-row,
  body.printing-tribute .wp-trib-intro,
  body.printing-tribute .wp-trib-summary,
  body.printing-tribute .wp-trib-photos,
  body.printing-tribute .wp-trib-moments,
  body.printing-tribute .wp-trib-dedication,
  body.printing-tribute .wp-trib-bulk,
  body.printing-tribute .page-hdr{display:none!important}
  /* The preview section keeps its heading row hidden but the book inside it
     shown -- hiding .wp-trib-section wholesale would take the book with it. */
  body.printing-tribute .wp-trib-section-hd{display:none!important}
  body.printing-tribute .wp-trib-section h4{display:none!important}
  body.printing-tribute .layout{height:auto!important;overflow:visible!important;display:block!important}
  body.printing-tribute .main{padding:0;height:auto!important;overflow:visible!important}
  body.printing-tribute .panel{display:none!important}
  body.printing-tribute #panel-wellbeing{display:block!important}
  body.printing-tribute .wp-trib-cover{-webkit-print-color-adjust:exact;print-color-adjust:exact;break-after:page}
  body.printing-tribute .wp-album-cover-title{font-size:40px}
  body.printing-tribute .wp-trib-page{break-inside:avoid;border:none;background:transparent;padding:0;margin-bottom:26px}
  body.printing-tribute .wp-trib-book-photos figure{break-inside:avoid}
  body.printing-tribute .wp-trib-quote{break-inside:avoid}
}

/* Usual-time chips under the time field. Small and quiet — a shortcut for the
   common case, not a constraint; the time picker still takes anything. */
.wp-time-presets{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:7px}
.wp-time-presets-lbl{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle);margin-right:2px}
.wp-time-chip{padding:4px 11px;border-radius:999px;border:1px solid var(--border-md);background:var(--surface);font-family:'DM Mono',monospace;font-size:12px;color:var(--text-muted);cursor:pointer;transition:background .12s,color .12s,border-color .12s}
.wp-time-chip:hover{border-color:var(--fortava-green);color:var(--text)}
.wp-time-chip.is-on{background:var(--fortava-navy);border-color:var(--fortava-navy);color:#fff}
.wp-time-chip:focus-visible{outline:2px solid var(--fortava-green);outline-offset:2px}

/* ── Approval record ────────────────────────────────────────────
   On screen a status card; in print the signature block at the head of the
   plan. It exists to be shown to someone, so it has to read as a record with
   a name and a date on it rather than a coloured chip. */
/* Compact on screen: one line stating who signed it off and when. It only
   grows into a full signature block in print, where it is the artefact rather
   than a status line. */
.wp-appr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:9px 14px}
.wp-appr-title{font-size:12.5px}
.wp-appr-sig{padding:0;border:none;background:transparent;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.wp-appr-sig-line{font-size:13px;color:var(--text)}
.wp-appr-sig-meta{font-size:12px;color:var(--text-muted)}
.wp-appr-rereview{margin-left:auto;font-size:12px}

/* Changes after the baseline. Deliberately neutral rather than alarming —
   a plan changing during the month is normal, and the list is evidence, not
   a fault report. */
.wp-chg{width:100%;font-size:13px}
.wp-chg summary{cursor:pointer;padding:6px 0;color:var(--text-muted)}
.wp-chg summary strong{color:var(--text)}
.wp-chg-list{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:5px}
.wp-chg-list li{padding:6px 10px;border-radius:8px;background:rgba(255,255,255,.6);border-left:3px solid var(--border-md);font-size:12.5px}
.wp-chg-add{border-left-color:#16a34a}
.wp-chg-edit{border-left-color:#d97706}
.wp-chg-del{border-left-color:#dc2626}
.wp-chg-when{color:var(--text-subtle);font-size:11.5px}
.wp-chg-note{font-size:11.5px;color:var(--text-muted);margin-top:8px;line-height:1.5}

@media print{
  /* The signature block leads the printed plan — it is the reason the
     printout exists. The re-review button and the disclosure arrow are
     screen furniture and come off. */
  body.printing-planner .wp-appr{border:1px solid #061b4f;background:#fff;padding:14px 16px;border-radius:10px;-webkit-print-color-adjust:exact;print-color-adjust:exact;break-inside:avoid}
  body.printing-planner .wp-appr-rereview{display:none!important}
  body.printing-planner .wp-chg summary{list-style:none}
  body.printing-planner .wp-chg summary::-webkit-details-marker{display:none}
  body.printing-planner .wp-appr-sig{background:transparent;border:none;padding:0}
}

/* Approval summary: the three facts that decide a yes, so a reviewer with
   several homes can judge from the list rather than opening each one. */
.wp-appr-summary{display:flex;flex-wrap:wrap;gap:8px 18px;margin:8px 0 12px;padding:9px 12px;border-radius:10px;background:var(--fortava-blue-soft);font-size:12.5px;color:var(--text-muted)}
.wp-appr-summary strong{color:var(--text)}
.wp-appr-gap{color:#b45309;font-weight:600}
.wp-appr-ok{color:#15803d;font-weight:600}
.wp-appr-waiting{margin-left:auto;color:var(--text-subtle)}

/* ── Planner tabs ───────────────────────────────────────────────
   These replaced seven header buttons that were really view switches. As a
   tab strip the current view is obvious, which is what made the old "Back to
   planner" buttons necessary in the first place. */
.wp-tabs{display:flex;gap:2px;flex-wrap:wrap;margin:2px 0 16px;border-bottom:1px solid var(--border-md)}
.wp-tab{position:relative;display:inline-flex;align-items:center;gap:7px;padding:10px 16px;border:none;background:transparent;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .12s,border-color .12s}
.wp-tab:hover{color:var(--text)}
.wp-tab.is-active{color:var(--fortava-navy);border-bottom-color:var(--fortava-green)}
.wp-tab:focus-visible{outline:2px solid var(--fortava-green);outline-offset:-2px;border-radius:6px}
.wp-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#dc2626;color:#fff;font-size:11px;font-weight:700}

/* Segmented control inside Albums & Reports — same month, same print action,
   different reader, so they belong together rather than as separate tabs. */
.wp-seg{display:inline-flex;gap:2px;padding:3px;margin-bottom:14px;border:1px solid var(--border-md);border-radius:999px;background:var(--bg);flex-wrap:wrap}
.wp-seg-btn{padding:7px 15px;border:none;border-radius:999px;background:transparent;font-family:inherit;font-size:12.5px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:background .12s,color .12s}
.wp-seg-btn:hover{color:var(--text)}
.wp-seg-btn.is-active{background:var(--fortava-navy);color:#fff;box-shadow:0 2px 8px rgba(6,27,79,.22)}
.wp-seg-btn:focus-visible{outline:2px solid var(--fortava-green);outline-offset:2px}
@media print{.wp-tabs,.wp-seg{display:none!important}}

/* ── Cross-home Resource Bank ─────────────────────────────────── */
.wp-resource-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.wp-resource-card{position:relative;border:1px solid var(--border-md);border-radius:var(--radius-sm);background:var(--surface);padding:12px 14px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px}
.wp-resource-del{position:absolute;top:8px;right:8px}
.wp-resource-domain{display:inline-block;align-self:flex-start;font-size:11px;font-weight:700;padding:2px 9px;border-radius:12px}
.wp-resource-title{font-size:14px;font-weight:700;color:var(--text);padding-right:20px}
.wp-resource-desc{font-size:12.5px;color:var(--text-muted);line-height:1.4}
.wp-resource-meta{font-size:11px;color:var(--text-subtle)}
.wp-resource-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
