/* NFP Membership Manager — extra styles (PROJECT FILE). Brand colours come from config.php via style.php. */
.stat.click:hover { outline: 2px solid rgba(0,0,0,.08); }
.pf { background: rgba(255,255,255,.55); }
.pf .card-row { margin-bottom: 4px; }
details summary { cursor: pointer; margin: 8px 0; }
.tbl.small th, .tbl.small td { padding: 5px 7px; font-size: .85rem; }
.ia-x { margin-top: 6px; }
#ib-results .card { margin: 4px 0; }
.linkbtn { background: none; border: 0; padding: 0; font: inherit; color: inherit; text-decoration: underline; cursor: pointer; text-align: left; }
.linkbtn:hover { opacity: .75; }
/* 1.2.1: From / to dates sit next to their words, on the left */
.date-range { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 6px 8px; margin-bottom: 8px; }
.date-range label { display: inline; margin: 0; }
.date-range input[type=date] { width: auto; flex: 0 0 auto; }
.date-range .k-datewrap { width: auto; flex: 0 0 auto; }
.date-range .k-date { width: 9.5em; min-width: 0; }
.date-range .btn { margin-left: 4px; }
.date-range select { width: auto; flex: 0 0 auto; padding: 8px 6px; }
.date-sel { display: inline-flex; gap: 4px; }
/* 1.2.1: Timesheet charts (GrantLog style) */
.chart { width: 100%; height: auto; display: block; }
.chart text { fill: currentColor; }
.hbar { display: grid; grid-template-columns: minmax(90px, 32%) 1fr 8.5em; gap: 8px; align-items: center; padding: 3px 0; font-size: .88rem; }
.hbar.click { cursor: pointer; border-radius: 6px; }
.hbar.click:hover { background: rgba(0,0,0,.04); }
.hbar-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hbar-track { background: rgba(128,128,128,.15); border-radius: 4px; height: 14px; overflow: hidden; }
.hbar-fill { height: 100%; border-radius: 4px; }
.hbar-val { white-space: nowrap; font-variant-numeric: tabular-nums; text-align: right; }
.donut-wrap { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; }
.donut-wrap svg { width: 190px; height: 190px; flex: 0 0 auto; }
.legend { flex: 1 1 200px; font-size: .88rem; }
.legend div { display: flex; align-items: center; gap: 8px; padding: 2px 0; }
.legend i { width: 12px; height: 12px; border-radius: 3px; flex: 0 0 auto; display: inline-block; }
.legend span:last-child { margin-left: auto; font-variant-numeric: tabular-nums; }
/* 1.3: TEST MODE banner — on every screen while Test mode is on */
.test-banner { position: sticky; top: 0; z-index: 21; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 4px 14px;
  padding: 10px 14px; color: #fff; font-size: .95rem; text-align: center;
  background: repeating-linear-gradient(135deg, #b03a2e 0 18px, #c0392b 18px 36px); box-shadow: 0 2px 6px rgba(0,0,0,.25); }
.test-banner strong { font-size: 1.15rem; letter-spacing: .06em; }
.test-banner b { color: #fff; text-decoration: underline; }
.test-banner .btn { background: #fff; color: #b03a2e; border-color: #fff; }
/* keep the menu bar and tabs just below the notice while scrolling (the notice's height is set by project.js) */
body.testmode .top { top: var(--tb-h, 0px); }
body.testmode .tabs { top: calc(var(--tb-h, 0px) + 58px + env(safe-area-inset-top)); }
@media print { .test-banner { display: none; } }
/* 1.5: Working With Children Check — a distinct box on the member card, the edit form and Renewals */
.wwcc-box { border: 2px solid #1f6fb2; border-left-width: 7px; background: rgba(31,111,178,.07); border-radius: 10px; padding: 10px 12px; margin: 8px 0; }
.wwcc-box.wwcc-soon { border-color: #C8951A; background: rgba(200,149,26,.11); }
.wwcc-box.wwcc-expired { border-color: #C0392B; background: rgba(192,57,43,.09); }
.wwcc-head { font-weight: 700; margin-bottom: 4px; }
.wwcc-box .grid2 { margin-top: 2px; }
.wwcc-box h3 { font-size: 1.02rem; }
.wwcc-box.wwcc-invalid { border-color: #C0392B; background: rgba(192,57,43,.09); }
.wwcc-row { display: grid; grid-template-columns: auto 1fr 1fr; gap: 8px 12px; align-items: end; margin-top: 6px; }
@media (max-width: 600px) { .wwcc-row { grid-template-columns: 1fr; } }
.wwcc-online { border-top: 1px dashed rgba(128,128,128,.4); margin-top: 8px; padding-top: 8px; }   /* 1.7 */
/* 1.6: organisation logo */
.org-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; margin: 0 0 12px; }
.org-head img { display: block; }
.org-name { font-size: 1.15rem; font-weight: 700; }
.logo-preview { background: #fff; border: 1px dashed rgba(128,128,128,.45); border-radius: 10px; padding: 12px; margin: 8px 0; text-align: center; }
.logo-preview img { display: inline-block; }
/* 1.8: documents */
.doc-pick { max-height: 220px; overflow-y: auto; border: 1px solid var(--line, #ddd); border-radius: 8px; padding: 4px 10px; background: var(--card, #fff); }
.doc-pick .check { margin: 6px 0; }
.doc-desc { white-space: pre-wrap; }
/* 1.9: Google Drive folder browser */
.gd-path { margin: 0 0 8px; }
.gd-list { border: 1px solid #e4dccb; border-radius: 10px; max-height: 55vh; overflow-y: auto; }
.gd-item { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-bottom: 1px solid #efe9dc; background: #fff; }
.gd-item:last-child { border-bottom: 0; }
.gd-item.click { cursor: pointer; }
.gd-item.click:hover { background: #f7f3ea; }
.gd-item.off { opacity: .55; }
.gd-ico { font-size: 1.2rem; flex: 0 0 auto; }
.gd-main { flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0; }
.gd-main strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
details.card > summary { cursor: pointer; }
details.card[open] > summary { margin-bottom: 8px; }
/* Westcountry.au 2026 (c) */
