@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,500;9..144,650&display=swap');

:root { --forest:#173a32; --forest-dark:#0d2b24; --cream:#f4eedf; --paper:#fbf8ee; --sun:#efad3f; --terracotta:#d86f4c; --sage:#8fab80; --sky:#a9cbd0; --mint:#c7d8be; --muted:#61736e; --line:rgba(23,58,50,.18); --serif:'Fraunces',Georgia,serif; --sans:'DM Sans',Arial,sans-serif; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--forest); font-family:var(--sans); line-height:1.6; }
a { color:inherit; }
button,input,select,textarea { font:inherit; }
.family-topbar { position:relative; z-index:5; display:flex; justify-content:space-between; align-items:center; gap:2rem; min-height:84px; padding:1.15rem max(5vw,calc((100vw - 1280px) / 2)); background:var(--forest-dark); color:var(--cream); }
.family-brand { display:flex; flex-wrap:wrap; align-items:baseline; gap:.15rem .35rem; color:inherit; font-size:1rem; letter-spacing:.1em; text-decoration:none; }
.family-brand > span { display:grid; width:2rem; height:2rem; margin-right:.3rem; border-radius:50%; background:var(--sun); color:var(--forest); font-size:.85rem; place-items:center; }
.family-brand small { font-size:.56rem; font-weight:650; letter-spacing:.075em; opacity:.72; text-transform:uppercase; }
.family-topbar nav { display:flex; align-items:center; gap:1.3rem; }
.family-topbar nav a,.family-topbar nav button { border:0; border-bottom:1px solid rgba(244,238,223,.38); padding:.2rem 0; background:transparent; color:inherit; font-size:.7rem; font-weight:700; letter-spacing:.07em; text-decoration:none; text-transform:uppercase; cursor:pointer; }
.family-topbar nav form { margin:0; }
.family-eyebrow { margin:0 0 .8rem; color:var(--terracotta); font-size:.72rem; font-weight:800; letter-spacing:.15em; text-transform:uppercase; }
h1,h2,h3 { margin-top:0; font-family:var(--serif); font-weight:500; line-height:1.03; }
h1 { font-size:clamp(3.2rem,6vw,6.5rem); letter-spacing:-.055em; }
h1 em,h2 em { color:var(--sun); font-weight:500; }
h2 { margin-bottom:1.4rem; font-size:clamp(2.5rem,4vw,4.4rem); letter-spacing:-.045em; }
h3 { font-size:1.55rem; }
.family-auth-shell { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(360px,.75fr); min-height:calc(100vh - 84px); }
.family-auth-intro { display:flex; flex-direction:column; justify-content:center; padding:clamp(4rem,9vw,9rem) max(6vw,calc((100vw - 1280px) / 2)); background:var(--forest); color:var(--cream); }
.family-auth-intro .family-eyebrow { color:var(--mint); }
.family-auth-intro h1 { max-width:760px; margin-bottom:1.6rem; }
.family-auth-intro > p:not(.family-eyebrow) { max-width:620px; color:rgba(244,238,223,.76); font-size:1.05rem; }
.family-auth-intro ol { display:grid; gap:.75rem; margin:2rem 0 0; padding:0; list-style:none; }
.family-auth-intro li { position:relative; padding-left:2rem; color:rgba(244,238,223,.86); }
.family-auth-intro li::before { position:absolute; left:0; display:grid; width:1.35rem; height:1.35rem; border-radius:50%; background:var(--sun); color:var(--forest); content:'✓'; font-size:.7rem; font-weight:900; place-items:center; }
.family-guide-button { align-self:flex-start; margin-top:2rem; }
.family-auth-card { align-self:center; width:min(100%,650px); padding:clamp(2rem,6vw,6rem); }
.family-auth-card h2 { margin-bottom:2rem; }
.family-install-card { width:min(100% - 2rem,840px); margin:3rem auto; border-radius:28px 7px 28px 7px; padding:clamp(2rem,7vw,5rem); background:var(--paper); box-shadow:0 24px 60px rgba(3,24,18,.25); }
.family-auth-page { min-height:100vh; padding:1px 0; background:var(--forest); }
.family-install-card h1 { font-size:clamp(3rem,7vw,5.5rem); }
.family-form { display:grid; gap:1rem; }
.family-form fieldset { display:grid; gap:1rem; margin:1rem 0; border:1px solid var(--line); border-radius:18px 5px 18px 5px; padding:1.35rem; }
.family-form legend { padding:0 .55rem; color:var(--terracotta); font-weight:800; }
.family-form label { display:grid; gap:.38rem; font-size:.76rem; font-weight:750; letter-spacing:.025em; }
.family-form input,.family-form select,.family-form textarea { width:100%; min-height:50px; border:1px solid rgba(23,58,50,.27); border-radius:11px 3px 11px 3px; padding:.75rem .9rem; background:#fffdf7; color:var(--forest); }
.family-form textarea { min-height:105px; resize:vertical; }
.family-form input:focus,.family-form select:focus,.family-form textarea:focus { border-color:var(--sun); outline:3px solid rgba(239,173,63,.28); }
.family-form small,.family-hint { color:var(--muted); font-size:.72rem; font-weight:500; }
.family-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.family-form-actions { display:flex; flex-wrap:wrap; gap:.8rem; }
.family-form-progress { display:grid; grid-template-columns:repeat(6,1fr); gap:.45rem; margin:1.5rem 0 1rem; }
.family-form-progress button { min-height:46px; border:1px solid var(--line); border-radius:12px 4px 12px 4px; padding:.55rem .35rem; background:var(--cream); color:var(--muted); font-size:.66rem; font-weight:800; cursor:pointer; }
.family-form-progress button.active { border-color:var(--forest); background:var(--sun); color:var(--forest); box-shadow:3px 3px 0 rgba(13,43,36,.12); }
.family-step-form [data-form-step][hidden],.family-step-form [hidden] { display:none; }
.family-summary-card { display:grid; gap:.35rem; border-left:5px solid var(--sky); border-radius:5px 15px 5px 15px; padding:1rem 1.15rem; background:var(--cream); }
.family-summary-card span { color:var(--muted); font-size:.78rem; }
.family-summary-card a { justify-self:start; margin-top:.4rem; border-bottom:1px solid currentColor; font-size:.7rem; font-weight:800; text-decoration:none; text-transform:uppercase; }
.family-documents { margin-top:2.5rem; border-top:1px solid var(--line); padding-top:2rem; }
.family-document-list { display:grid; gap:.65rem; margin-bottom:1rem; }
.family-document-list article { display:flex; justify-content:space-between; align-items:center; gap:1rem; border-radius:13px 4px 13px 4px; padding:1rem; background:var(--cream); }
.family-document-list article div { display:grid; gap:.15rem; }
.family-document-list a { font-size:.78rem; }
.family-document-list button { border:0; border-bottom:1px solid currentColor; background:transparent; color:#8b3525; font-size:.7rem; font-weight:800; cursor:pointer; }
.family-document-review { display:grid; grid-template-columns:130px minmax(180px,1fr) auto; gap:.55rem; align-items:center; width:min(100%,620px); }
.family-document-review select,.family-document-review input { min-height:42px; border:1px solid var(--line); border-radius:9px 3px 9px 3px; padding:.5rem .65rem; background:var(--paper); color:var(--forest); }
.family-document-review .family-button { border:0; color:var(--forest); }
.document-status { color:var(--muted); font-size:.68rem; font-weight:700; }
.document-status.verified { color:#255532; }
.document-status.rejected { color:#8b3525; }
.family-upload-form { border:2px dashed var(--line); border-radius:14px 4px 14px 4px; padding:1rem; }
.family-profile-form { margin-top:1rem; }
.family-profile-form fieldset { background:rgba(244,238,223,.5); }
.family-button { display:inline-flex; justify-content:center; align-items:center; min-height:52px; border:0; border-radius:999px; padding:.8rem 1.35rem; background:var(--sun); color:var(--forest-dark); font-size:.74rem; font-weight:850; letter-spacing:.06em; text-decoration:none; text-transform:uppercase; cursor:pointer; transition:transform .2s ease,box-shadow .2s ease; }
.family-button:hover { box-shadow:4px 5px 0 rgba(13,43,36,.18); transform:translateY(-2px) rotate(-.5deg); }
.family-button.secondary { border:1px solid var(--line); background:transparent; }
.family-button.family-guide-button { min-height:58px; border:2px solid var(--forest); padding:.9rem 1.55rem; background:#287da5; color:#fff; box-shadow:5px 6px 0 var(--forest); font-size:.8rem; }
.family-button.family-guide-button:hover,.family-button.family-guide-button:focus-visible { background:#1f6788; box-shadow:7px 8px 0 var(--forest); transform:translate(-2px,-2px) rotate(-.4deg); }
.family-button.small { justify-self:start; min-height:44px; padding:.65rem 1rem; }
.family-button:disabled { cursor:not-allowed; opacity:.45; transform:none; }
.family-message { margin:0 0 1.5rem; border-left:5px solid var(--sage); border-radius:4px 12px 4px 12px; padding:1rem 1.15rem; background:#e1eddf; font-weight:650; }
.family-message.error { border-color:var(--terracotta); background:#f6ded5; color:#7d3021; }
.family-message.warning { border-color:var(--sun); background:#fff0cd; }
.family-login-links,.family-switch { display:flex; justify-content:space-between; gap:1rem; margin-top:1.5rem; font-size:.78rem; font-weight:700; }
.family-dashboard,.family-admin-dashboard { width:min(100% - 3rem,1280px); margin:0 auto; padding:clamp(4rem,8vw,8rem) 0; }
.family-dashboard-heading { display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(2rem,7vw,7rem); align-items:end; margin-bottom:4rem; }
.family-dashboard-heading h1 { margin-bottom:0; }
.family-dashboard-heading > p { max-width:520px; margin-bottom:1rem; color:var(--muted); font-size:1.05rem; }
.family-dashboard-guide { display:grid; justify-items:start; gap:1rem; }
.family-dashboard-guide p { max-width:520px; margin:0; color:var(--muted); font-size:1.05rem; }
.family-actions-summary { margin-bottom:4rem; border:1px solid rgba(23,58,50,.2); border-radius:26px 7px 26px 7px; padding:clamp(1.4rem,4vw,2.4rem); background:#f2ead8; }
.family-actions-summary > header { display:flex; justify-content:space-between; gap:1.5rem; align-items:end; margin-bottom:1.4rem; }
.family-actions-summary h2 { margin:0; }
.family-actions-count { display:inline-flex; border-radius:999px; padding:.5rem .8rem; background:var(--sun); font-size:.76rem; font-weight:850; letter-spacing:.04em; text-transform:uppercase; }
.family-actions-groups { display:grid; gap:1rem; }
.family-actions-group { overflow:hidden; border:1px solid rgba(23,58,50,.16); border-left:6px solid var(--terracotta); border-radius:15px 4px 15px 4px; background:var(--paper); }
.family-actions-group.family-wide { border-left-color:var(--sky); }
.family-actions-group > header { display:flex; justify-content:space-between; gap:1rem; align-items:center; padding:1rem 1.15rem; background:rgba(238,230,211,.7); }
.family-actions-group > header strong,.family-actions-group > header span { display:block; }
.family-actions-group > header strong { font-family:var(--serif); font-size:1.35rem; }
.family-actions-group > header span { margin-top:.15rem; color:var(--muted); font-size:.82rem; }
.family-actions-group > header b { display:grid; flex:0 0 auto; width:2rem; height:2rem; border-radius:50%; background:var(--sun); font-size:.82rem; place-items:center; }
.family-actions-group ul { margin:0; padding:0; list-style:none; }
.family-actions-group li { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:1rem; align-items:center; padding:1rem 1.15rem; border-top:1px solid rgba(23,58,50,.12); }
.family-actions-group li strong,.family-actions-group li span { display:block; }
.family-actions-group li > div > strong { font-size:.95rem; }
.family-actions-group li span { margin-top:.18rem; color:var(--muted); font-size:.82rem; line-height:1.45; }
.family-actions-group li > a { border-bottom:1px solid currentColor; font-size:.72rem; font-weight:850; text-decoration:none; text-transform:uppercase; }
.family-actions-complete { display:flex; gap:1rem; align-items:center; border-left:6px solid var(--sage); border-radius:12px 4px 12px 4px; padding:1.1rem 1.2rem; background:#e1eddf; }
.family-actions-complete > span { display:grid; flex:0 0 auto; width:2.1rem; height:2.1rem; border-radius:50%; background:var(--sage); font-weight:900; place-items:center; }
.family-actions-complete strong,.family-actions-complete p { display:block; margin:0; }
.family-actions-complete p { margin-top:.2rem; color:var(--muted); font-size:.86rem; }
.family-payment-history { scroll-margin-top:1rem; }
.family-payment-table { overflow:hidden; border:1px solid var(--line); border-radius:18px 5px 18px 5px; background:var(--cream); }
.family-payment-table-head,.family-payment-table-row { display:grid; grid-template-columns:.65fr 1.15fr 1.4fr .75fr .8fr; gap:1rem; align-items:center; padding:.9rem 1.1rem; }
.family-payment-table-head { background:var(--forest); color:#fff8eb; font-size:.76rem; font-weight:800; letter-spacing:.045em; text-transform:uppercase; }
.family-payment-table-row { border-top:1px solid var(--line); font-size:.9rem; }
.family-payment-table-row:first-of-type { border-top:0; }
.family-payment-table-row > strong { font-family:var(--serif); font-size:1.02rem; }
.family-payment-table-row span small { display:block; margin-top:.12rem; color:var(--muted); font-size:.78rem; }
.family-section { margin-top:4rem; border-top:1px solid var(--line); padding-top:3rem; }
.family-section-heading { display:flex; justify-content:space-between; gap:2rem; align-items:end; margin-bottom:1.8rem; }
.family-section-heading h2 { margin:0; }
.family-section-heading > a { border-bottom:2px solid var(--forest); font-size:.74rem; font-weight:800; letter-spacing:.06em; text-decoration:none; text-transform:uppercase; }
.family-application-list { display:grid; gap:1.4rem; }
.family-application-card { position:relative; overflow:hidden; border:1px solid rgba(23,58,50,.2); border-radius:26px 7px 26px 7px; padding:clamp(1.4rem,4vw,2.7rem); background:#eee6d3; box-shadow:0 14px 34px rgba(13,43,36,.09); }
.family-application-card > header { display:flex; justify-content:space-between; gap:2rem; align-items:start; }
.family-application-card h3 { margin:.15rem 0 .65rem; font-size:clamp(2.1rem,3.5vw,3.35rem); line-height:1; overflow-wrap:normal; word-break:normal; hyphens:none; text-wrap:balance; }
.family-application-card header p { margin:0; color:var(--muted); }
.family-application-card header > a { border-bottom:1px solid currentColor; font-size:.72rem; font-weight:800; text-decoration:none; text-transform:uppercase; }
.family-application-labels { display:flex; flex-wrap:wrap; gap:.45rem; align-items:center; }
.family-application-reference { display:inline-flex; width:max-content; border:1px solid rgba(23,58,50,.25); border-radius:999px; padding:.32rem .62rem; background:rgba(255,255,255,.55); color:var(--forest); font-family:var(--sans); font-size:.68rem; font-weight:850; letter-spacing:.035em; line-height:1.2; }
.family-side-card .family-application-reference { display:grid; gap:.2rem; margin:1.2rem 0; border-color:rgba(255,255,255,.45); background:rgba(255,255,255,.14); color:inherit; }
.family-side-card .family-application-reference strong { font-size:.82rem; overflow-wrap:anywhere; }
.family-application-card .family-application-kicker { margin:1rem 0 .25rem; color:var(--terracotta); font-size:.65rem; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.family-application-camp { display:flex; flex-wrap:wrap; gap:.3rem .8rem; align-items:baseline; }
.family-application-camp strong { font-size:1.02rem; }
.family-application-camp span { position:relative; color:var(--muted); font-size:.82rem; }
.family-application-camp span + span::before { margin-right:.8rem; color:var(--terracotta); content:'·'; }
.family-status { display:inline-flex; border-radius:999px; padding:.34rem .62rem; background:var(--sky); font-size:.63rem; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.status-confirmed { background:#cfe3cd; color:#255532; }
.status-needs_info,.status-cancelled,.status-refused { background:#f3d3c9; color:#8b3525; }
.status-waitlist { background:#f9df9d; }
.family-progress { display:grid; grid-template-columns:repeat(7,1fr); gap:.4rem; margin:2rem 0; padding:0; list-style:none; }
.family-progress li { position:relative; padding-top:2.2rem; color:var(--muted); font-size:.8rem; font-weight:750; line-height:1.35; text-align:center; }
.family-progress li::before { position:absolute; top:.72rem; right:50%; left:-50%; z-index:0; border-top:2px dashed rgba(23,58,50,.2); content:''; }
.family-progress li:first-child::before { display:none; }
.family-progress li span { position:absolute; z-index:1; top:0; left:50%; display:grid; width:1.7rem; height:1.7rem; border:2px solid rgba(23,58,50,.25); border-radius:50%; background:var(--paper); transform:translateX(-50%); place-items:center; }
.family-progress li.done { color:var(--forest); }
.family-progress li.done span { border-color:var(--forest); background:var(--sun); font-weight:900; }
.family-progress li.done::before { border-color:var(--sage); }
.family-finance { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:.75rem; border-radius:14px 4px 14px 4px; padding:1rem; background:var(--paper); }
.family-finance div { border-left:3px solid var(--sun); padding-left:.75rem; }
.family-finance small { display:block; color:var(--muted); font-size:.66rem; font-weight:700; text-transform:uppercase; }
.family-finance strong { display:block; margin-top:.2rem; font-family:var(--serif); font-size:1.2rem; }
.family-admin-note { margin:1rem 0 0; border-left:5px solid var(--sky); padding:1rem; background:rgba(169,203,208,.23); white-space:normal; }
.family-admin-note strong { display:block; margin-bottom:.3rem; }
.family-pdf-action { display:flex; justify-content:space-between; gap:1.2rem; align-items:center; margin-top:1.2rem; border-left:6px solid var(--sun); border-radius:5px 16px 5px 16px; padding:1.2rem 1.3rem; background:#fff0c9; }
.family-pdf-action.complete { border-color:var(--sage); background:#e1eddf; }
.family-pdf-action.draft { border-color:var(--line); background:rgba(255,255,255,.45); }
.family-pdf-action strong,.family-pdf-action p { display:block; margin:0; }
.family-pdf-action p { margin-top:.25rem; color:var(--muted); font-size:.78rem; }
.family-pdf-address { margin:.75rem 0 0; color:var(--forest); font-style:normal; font-weight:750; line-height:1.5; }
.family-pdf-warning { margin-top:.8rem!important; color:#9b3527!important; font-weight:750; }
.family-pdf-warning strong { display:inline; }
.family-pdf-action .family-button { flex:0 0 auto; background:var(--forest); color:#fff8eb; }
.family-pdf-reminder { display:grid; gap:.25rem; margin:-.4rem 0 1.3rem; border-left:5px solid var(--sun); border-radius:4px 12px 4px 12px; padding:1rem 1.15rem; background:#fff0c9; }
.family-pdf-reminder.complete { border-color:var(--sage); background:#e1eddf; }
.family-pdf-reminder span { color:var(--muted); font-size:.78rem; }
.family-pdf-reminder p { margin:.25rem 0 0; color:var(--muted); font-size:.78rem; }
.family-camp-grid,.family-camp-admin-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }
.family-camp-grid article { display:flex; flex-direction:column; min-height:285px; border-radius:20px 5px 20px 5px; padding:1.5rem; background:var(--sage); }
.family-camp-grid article:nth-child(3n+2) { background:var(--sky); }
.family-camp-grid article:nth-child(3n+3) { background:var(--sun); }
.family-camp-grid article p { margin:0; font-size:.72rem; font-weight:750; }
.family-camp-grid article h3 { margin:1.2rem 0 auto; font-size:2.1rem; }
.family-camp-grid article > span { margin-bottom:1rem; font-family:var(--serif); font-size:1.5rem; }
.family-account-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; }
.family-account-grid .family-section { border:1px solid var(--line); border-radius:20px 5px 20px 5px; padding:1.8rem; }
.family-child-list,.family-admin-team { display:grid; gap:.7rem; }
.family-child-list article,.family-admin-team article { border-radius:12px 3px 12px 3px; padding:1rem; background:var(--cream); }
.family-child-list strong,.family-child-list span,.family-admin-team strong,.family-admin-team span,.family-admin-team small { display:block; }
.family-child-list span,.family-admin-team span,.family-admin-team small { color:var(--muted); font-size:.75rem; }
.family-child-list details { margin-top:.5rem; }
.family-child-list summary,.family-add-card summary { font-size:.72rem; font-weight:800; cursor:pointer; }
.family-form.compact { grid-template-columns:1fr 1fr; margin-top:1rem; }
.family-add-card { margin-top:1rem; border:2px dashed rgba(23,58,50,.2); border-radius:14px 4px 14px 4px; padding:1rem; }
.family-add-card[open] summary { margin-bottom:1rem; }
.family-empty { grid-column:1/-1; border:2px dashed rgba(23,58,50,.22); border-radius:22px 6px 22px 6px; padding:3rem; text-align:center; }
.family-empty > span { color:var(--terracotta); font-size:2.5rem; }
.family-empty h3 { margin:.5rem 0; }
.family-empty p { margin:0; color:var(--muted); }
.family-workspace,.family-admin-detail { display:grid; grid-template-columns:minmax(300px,.55fr) minmax(0,1.45fr); min-height:calc(100vh - 84px); }
.family-side-card { position:sticky; top:0; align-self:start; min-height:calc(100vh - 84px); padding:clamp(3rem,7vw,7rem) clamp(1.5rem,3vw,3rem) 5rem; background:var(--sky); }
.family-side-card.admin { background:var(--terracotta); color:#fff9ed; }
.family-side-card h1 { margin:1rem 0 1.5rem; font-size:clamp(3rem,5vw,5rem); }
.family-application-page .family-side-card h1 { max-width:100%; font-size:clamp(1.9rem,2.25vw,2.8rem); line-height:1.08; letter-spacing:-.025em; overflow-wrap:normal; word-break:normal; hyphens:none; text-wrap:balance; }
.family-side-card.admin h1 { max-width:100%; font-size:clamp(2rem,2.5vw,3rem); line-height:1.05; overflow-wrap:normal; word-break:normal; hyphens:none; text-wrap:balance; }
.family-side-card.admin p,.family-side-card.admin a { max-width:100%; overflow-wrap:normal; word-break:normal; hyphens:none; }
.family-side-card > strong { display:block; margin:2rem 0; font-family:var(--serif); font-size:2.2rem; }
.family-side-card > a { display:inline-block; margin-bottom:2rem; border-bottom:1px solid currentColor; font-size:.72rem; font-weight:800; text-decoration:none; text-transform:uppercase; }
.family-camp-information { margin:0 0 2rem; border-left:4px solid var(--terracotta); padding:1rem; background:rgba(251,248,238,.35); font-size:.82rem; }
.family-camp-information strong { display:block; margin-bottom:.45rem; font-size:.7rem; letter-spacing:.06em; text-transform:uppercase; }
.family-main-card { border-radius:22px 6px 22px 6px; padding:clamp(1.7rem,4vw,3rem); background:var(--cream); }
.family-application-page .family-main-card { margin:clamp(2rem,6vw,6rem) max(5vw,calc((100vw - 1280px) / 2)) clamp(4rem,7vw,7rem) clamp(2rem,5vw,5rem); }
.family-application-page .family-main-card > h2 { font-size:clamp(2.2rem,3vw,3.4rem); }
.family-check { display:flex!important; grid-template-columns:auto 1fr; flex-direction:row; gap:.7rem!important; align-items:flex-start; }
.family-check input { flex:0 0 auto; width:20px; min-height:20px; margin-top:.15rem; accent-color:var(--terracotta); }
.family-check a { color:var(--terracotta); }
.family-footer { display:flex; justify-content:space-between; gap:1rem; padding:1.4rem max(5vw,calc((100vw - 1280px) / 2)); background:var(--forest-dark); color:rgba(244,238,223,.72); font-size:.68rem; letter-spacing:.06em; text-transform:uppercase; }
.family-stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:.8rem; }
.family-stat-grid article { min-height:145px; border-radius:18px 5px 18px 5px; padding:1.25rem; background:var(--sky); }
.family-stat-grid article:nth-child(2) { background:var(--sun); }
.family-stat-grid article:nth-child(3) { background:var(--sage); }
.family-stat-grid article:nth-child(4) { background:var(--terracotta); color:#fff8eb; }
.family-stat-grid span,.family-stat-grid strong { display:block; }
.family-stat-grid span { font-size:.68rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.family-stat-grid strong { margin-top:1.5rem; font-family:var(--serif); font-size:clamp(2rem,3.5vw,3.3rem); line-height:1; }
.family-camp-jump { display:flex; gap:.65rem; overflow-x:auto; margin:-.4rem 0 1rem; padding:.35rem 0 .65rem; scroll-behavior:smooth; scrollbar-width:thin; }
.family-camp-jump a { flex:0 0 min(250px,75vw); display:grid; gap:.18rem; border:1px solid var(--line); border-radius:16px 5px 16px 5px; padding:.85rem 1rem; background:var(--cream); color:var(--forest); text-decoration:none; transition:transform .2s ease,background .2s ease,border-color .2s ease; }
.family-camp-jump a:hover,.family-camp-jump a:focus-visible { border-color:var(--forest); background:var(--sky); transform:translateY(-3px); }
.family-camp-jump a.is-all { background:var(--forest); color:#fff8eb; }
.family-camp-jump span { overflow:hidden; font-family:var(--serif); font-size:1.04rem; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.family-camp-jump strong { font-size:.63rem; letter-spacing:.045em; opacity:.75; text-transform:uppercase; }
.family-admin-filters { display:grid; grid-template-columns:1.3fr 1fr 1fr auto; gap:.7rem; align-items:end; margin:0 0 1.2rem; border-radius:16px 4px 16px 4px; padding:1rem; background:var(--cream); }
.family-admin-filters label { display:grid; gap:.3rem; color:var(--muted); font-size:.68rem; font-weight:800; text-transform:uppercase; }
.family-admin-filters input,.family-admin-filters select { min-height:44px; border:1px solid var(--line); border-radius:9px 3px 9px 3px; padding:.55rem .7rem; background:var(--paper); color:var(--forest); }
.family-admin-groups { display:grid; gap:1.5rem; }
.family-admin-camp { scroll-margin-top:1rem; border:1px solid var(--line); border-radius:24px 7px 24px 7px; padding:clamp(1rem,2.3vw,1.7rem); background:rgba(255,255,255,.34); box-shadow:0 16px 40px rgba(20,57,48,.06); }
.family-admin-camp-header { display:flex; justify-content:space-between; gap:1rem; align-items:flex-end; margin-bottom:1rem; border-bottom:1px solid var(--line); padding-bottom:1rem; }
.family-admin-camp-header h3 { margin:.25rem 0 0; font-size:clamp(1.75rem,3vw,2.65rem); }
.family-admin-camp-summary { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:.35rem .65rem; align-items:center; text-align:right; }
.family-admin-camp-summary > strong { font-family:var(--serif); font-size:1.15rem; }
.family-admin-camp-summary > small { color:var(--terracotta); font-size:.66rem; font-weight:800; text-transform:uppercase; }
.family-camp-state { border-radius:999px; padding:.38rem .6rem; font-size:.58rem; font-weight:900; letter-spacing:.04em; text-transform:uppercase; }
.family-camp-state.is-open { background:#d7ead4; color:#285a3c; }
.family-camp-state.is-closed { background:#e7e4dc; color:#666f6b; }
.family-admin-list { display:grid; gap:.65rem; }
.family-admin-row { display:grid; grid-template-columns:minmax(195px,.72fr) minmax(290px,1.25fr) minmax(135px,.42fr) auto; gap:1rem; align-items:center; border-left:7px solid var(--sky); border-radius:4px 14px 4px 14px; padding:1rem 1.1rem; background:var(--cream); color:var(--forest); text-decoration:none; transition:transform .2s ease,box-shadow .2s ease; }
.family-admin-row:hover,.family-admin-row:focus-visible { transform:translateX(4px); box-shadow:0 10px 25px rgba(20,57,48,.09); }
.family-admin-identity { min-width:0; }
.family-admin-identity strong,.family-admin-identity small { display:block; overflow-wrap:normal; word-break:normal; hyphens:none; }
.family-admin-identity .family-application-reference { margin-left:.35rem; vertical-align:middle; }
.family-admin-identity strong { margin:.45rem 0 .1rem; font-family:var(--serif); font-size:1.35rem; }
.family-admin-row small,.family-admin-money span { color:var(--muted); font-size:.68rem; }
.family-admin-meta { display:flex; flex-wrap:wrap; gap:.38rem; align-content:center; }
.family-admin-flag { border-radius:999px; padding:.36rem .55rem; font-size:.58rem; font-weight:850; line-height:1.15; }
.family-admin-flag.ok { background:#d7ead4; color:#285a3c; }
.family-admin-flag.warning { background:#ffedbd; color:#78530c; }
.family-admin-flag.danger { background:#f6d1c5; color:#8b3425; }
.family-admin-flag.neutral { background:#e3e9e6; color:#50615c; }
.family-admin-money { min-width:135px; }
.family-admin-money span,.family-admin-money strong,.family-admin-money small { display:block; }
.family-admin-money strong { margin:.1rem 0; font-family:var(--serif); font-size:1.15rem; }
.family-admin-money.is-settled span,.family-admin-money.is-settled strong { color:#27733d; }
.family-admin-money.is-due span,.family-admin-money.is-due strong { color:#b34332; }
.family-empty.compact { min-height:0; padding:1.3rem; }
.family-empty.compact span { font-size:1.3rem; }
.family-empty.compact h3 { margin:.2rem 0 0; font-size:1rem; }
.family-camp-admin-grid { grid-template-columns:repeat(2,1fr); }
.family-account-settings-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.family-account-settings-grid h3 { margin-bottom:1.2rem; font-size:2rem; }
.family-camp-admin-grid h3 { margin-bottom:1.4rem; font-size:2rem; }
.family-camp-count { margin:-.6rem 0 1rem; color:var(--muted); font-size:.78rem; }
.family-camp-count strong { color:var(--terracotta); font-family:var(--serif); font-size:1.35rem; }
.family-admin-detail-main { display:grid; gap:1.2rem; padding:clamp(2rem,6vw,6rem) max(5vw,calc((100vw - 1280px) / 2)) 6rem clamp(2rem,4vw,4rem); }
.family-admin-checks { display:flex; flex-wrap:wrap; gap:1.5rem; border-radius:12px; padding:1rem; background:var(--paper); }
.family-finance.large { margin:1.2rem 0; }
.family-payment-list { display:grid; gap:.55rem; margin-bottom:1rem; }
.family-payment-list article { display:flex; justify-content:space-between; gap:1rem; align-items:center; border-radius:12px; padding:.8rem 1rem; background:var(--paper); }
.family-payment-list span,.family-payment-list small { display:block; color:var(--muted); font-size:.7rem; }
.family-payment-list button { border:0; background:transparent; color:#9b3828; font-size:.68rem; font-weight:800; cursor:pointer; }
.family-generated-reference { display:grid; gap:.18rem; border-left:5px solid var(--sky); border-radius:5px 13px 5px 13px; padding:1rem 1.1rem; background:rgba(169,203,208,.25); }
.family-generated-reference span { color:var(--muted); font-size:.78rem; font-weight:800; text-transform:uppercase; }
.family-generated-reference strong { font-size:.95rem; }
.family-generated-reference small { font-size:.8rem; }
.family-admin-primary-action { display:flex; flex-wrap:wrap; gap:.8rem 1.1rem; align-items:center; margin-top:1.2rem; }
.family-admin-primary-action span { color:var(--muted); font-size:.88rem; }
.family-payment-filters { display:grid; grid-template-columns:1.4fr repeat(3,1fr) .8fr .8fr auto auto; gap:.65rem; align-items:end; margin-bottom:1.25rem; border-radius:17px 5px 17px 5px; padding:1rem; background:var(--cream); }
.family-payment-filters label { display:grid; gap:.3rem; color:var(--muted); font-size:.78rem; font-weight:800; }
.family-payment-filters input,.family-payment-filters select { width:100%; min-height:44px; border:1px solid var(--line); border-radius:9px 3px 9px 3px; padding:.55rem .65rem; background:var(--paper); color:var(--forest); }
.family-filter-reset { align-self:center; border-bottom:1px solid currentColor; font-size:.78rem; font-weight:800; text-decoration:none; }
.family-ledger-scroll { overflow-x:auto; border:1px solid var(--line); border-radius:18px 5px 18px 5px; background:var(--cream); }
.family-ledger-table { width:100%; min-width:1180px; border-collapse:collapse; font-size:.86rem; }
.family-ledger-table th { padding:.85rem .75rem; background:var(--forest); color:#fff8eb; font-size:.76rem; letter-spacing:.035em; text-align:left; text-transform:uppercase; }
.family-ledger-table td { border-top:1px solid var(--line); padding:.9rem .75rem; vertical-align:top; }
.family-ledger-table tbody tr:hover { background:rgba(169,203,208,.16); }
.family-ledger-table td > strong,.family-ledger-table td > small,.family-ledger-table td > span { display:block; }
.family-ledger-table td > small { margin-top:.2rem; color:var(--muted); font-size:.78rem; }
.family-ledger-table td:last-child a { white-space:nowrap; font-size:.76rem; font-weight:800; }
.family-ledger-amount { color:var(--forest); font-family:var(--serif); font-size:1.05rem; font-weight:650; white-space:nowrap; }
.family-payment-kind { display:inline-flex!important; width:max-content; border-radius:999px; padding:.25rem .5rem; background:var(--sky); font-size:.76rem; font-weight:800; }
.family-payment-kind.membership { background:#d7ead4; color:#285a3c; }
.family-answers { display:grid; gap:0; margin:0; }
.family-answers div { border-top:1px solid var(--line); padding:1rem 0; }
.family-answers dt { color:var(--muted); font-size:.68rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.family-answers dd { margin:.35rem 0 0; white-space:normal; }
.family-answers .sensitive { border-left:4px solid var(--terracotta); padding-left:1rem; }
.family-danger-zone { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(290px,.85fr); gap:clamp(1.4rem,4vw,3rem); align-items:start; border:2px solid #b34332; border-radius:22px 6px 22px 6px; padding:clamp(1.5rem,4vw,2.5rem); background:#fff1ec; }
.family-danger-zone h2 { margin:.2rem 0 .8rem; color:#8b3425; font-size:clamp(1.8rem,3vw,2.7rem); }
.family-danger-zone p { max-width:720px; }
.family-danger-zone .family-eyebrow { color:#b34332; }
.family-danger-zone .family-form { border-left:1px solid rgba(179,67,50,.24); padding-left:clamp(1rem,3vw,2rem); }
.family-danger-zone .family-form small { color:#8b3425; }
.family-button.danger { border-color:#8b3425; background:#b34332; color:#fff; box-shadow:none; }
.family-button.danger:hover,.family-button.danger:focus-visible { background:#8b3425; transform:translateY(-2px); }
.family-code-input { font-size:2rem!important; font-weight:800; letter-spacing:.35em; text-align:center; }
.family-preview-banner { padding:.7rem 1rem; background:var(--sun); color:var(--forest-dark); font-size:.75rem; font-weight:800; text-align:center; }

.family-notice-main { background:var(--paper); }
.family-notice-hero { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr); gap:clamp(2rem,7vw,7rem); align-items:center; min-height:620px; padding:clamp(4rem,8vw,8rem) max(5vw,calc((100vw - 1280px) / 2)); background:var(--forest); color:var(--cream); }
.family-notice-hero .family-eyebrow { color:var(--mint); }
.family-notice-hero h1 { max-width:850px; margin-bottom:1.5rem; }
.family-notice-hero-copy > p:not(.family-eyebrow) { max-width:720px; color:rgba(244,238,223,.78); font-size:1.08rem; }
.family-notice-actions { display:flex; flex-wrap:wrap; gap:.75rem; margin-top:2rem; }
.family-notice-actions .secondary { border-color:rgba(244,238,223,.45); color:var(--cream); }
.family-notice-prepare { border-radius:26px 7px 26px 7px; padding:clamp(1.5rem,4vw,2.5rem); background:var(--cream); color:var(--forest); }
.family-notice-prepare h2 { margin-bottom:1.2rem; font-size:clamp(2rem,3vw,3rem); }
.family-notice-prepare ul { display:grid; gap:.8rem; margin:0; padding:0; list-style:none; }
.family-notice-prepare li { border-top:1px solid var(--line); padding-top:.8rem; }
.family-notice-content { width:min(100% - 3rem,1120px); margin:0 auto; padding:clamp(4rem,8vw,8rem) 0; }
.family-notice-heading { max-width:780px; margin-bottom:3rem; }
.family-notice-heading > p:last-child { color:var(--muted); font-size:1.05rem; }
.family-notice-steps { display:grid; gap:1rem; margin:0; padding:0; list-style:none; counter-reset:notice-step; }
.family-notice-step { position:relative; display:grid; grid-template-columns:74px minmax(0,1fr); gap:1.4rem; border:1px solid var(--line); border-radius:22px 6px 22px 6px; padding:clamp(1.35rem,3vw,2.2rem); background:var(--cream); counter-increment:notice-step; }
.family-notice-step::before { display:grid; width:58px; height:58px; border-radius:50%; background:var(--sun); color:var(--forest-dark); content:counter(notice-step,decimal-leading-zero); font-family:var(--serif); font-size:1.35rem; font-weight:650; place-items:center; }
.family-notice-step:nth-child(4n+2)::before { background:var(--sky); }
.family-notice-step:nth-child(4n+3)::before { background:var(--sage); }
.family-notice-step:nth-child(4n+4)::before { background:var(--terracotta); color:#fff8eb; }
.family-notice-step h3 { margin:.15rem 0 .55rem; font-size:clamp(1.5rem,2.4vw,2.15rem); }
.family-notice-step p { max-width:850px; margin:.3rem 0; color:var(--muted); }
.family-notice-step strong { color:var(--forest); }
.family-notice-callout { display:grid; grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr); gap:clamp(1.5rem,5vw,5rem); margin-top:3rem; border-radius:26px 7px 26px 7px; padding:clamp(1.7rem,4vw,3rem); background:var(--sky); }
.family-notice-callout h2 { margin:0; font-size:clamp(2.2rem,4vw,3.8rem); }
.family-notice-callout ul { display:grid; gap:.65rem; margin:0; padding-left:1.2rem; }
.family-notice-post { margin-top:2rem; border-left:6px solid var(--sun); border-radius:5px 16px 5px 16px; padding:1.4rem; background:#fff0c9; }
.family-notice-post h3 { margin-bottom:.5rem; }
.family-notice-post p { margin:.35rem 0; }
.family-notice-post address { margin:.8rem 0; font-style:normal; font-weight:750; line-height:1.5; }
.family-notice-post strong { color:#9b3527; }
.family-notice-closing { display:flex; justify-content:space-between; gap:2rem; align-items:center; margin-top:3rem; border-top:1px solid var(--line); padding-top:2rem; }
.family-notice-closing p { max-width:650px; margin:0; color:var(--muted); }
.back-to-top { position:fixed; z-index:45; right:clamp(1rem,2.2vw,2rem); bottom:clamp(1rem,2.2vw,2rem); display:grid; width:52px; height:52px; border:2px solid var(--forest-dark); border-radius:50%; padding:0; background:var(--sun); color:var(--forest-dark); box-shadow:5px 6px 0 rgba(13,43,36,.2); font:700 1.35rem/1 var(--sans); cursor:pointer; opacity:0; visibility:hidden; transform:translateY(14px) rotate(7deg); transition:opacity .22s ease,visibility .22s ease,transform .22s ease,box-shadow .22s ease; place-items:center; pointer-events:none; }
.back-to-top.is-visible { opacity:1; visibility:visible; transform:translateY(0) rotate(3deg); pointer-events:auto; }
.back-to-top:hover { box-shadow:2px 3px 0 rgba(13,43,36,.24); transform:translateY(-3px) rotate(-4deg); }

@media (max-width:1050px) {
  .family-auth-shell,.family-workspace,.family-admin-detail { grid-template-columns:1fr; }
  .family-side-card { position:relative; min-height:0; padding:4rem max(5vw,calc((100vw - 900px) / 2)); }
  .family-dashboard-heading { grid-template-columns:1fr; }
  .family-progress { grid-template-columns:repeat(4,1fr); gap:1rem .4rem; }
  .family-progress li::before { display:none; }
  .family-camp-grid { grid-template-columns:repeat(2,1fr); }
  .family-stat-grid { grid-template-columns:repeat(2,1fr); }
  .family-admin-row { grid-template-columns:minmax(190px,.8fr) minmax(260px,1.2fr) auto; }
  .family-admin-money { grid-column:2; }
  .family-admin-row > b { grid-column:3; grid-row:1 / span 2; }
  .family-notice-hero { grid-template-columns:1fr; }
  .family-payment-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:720px) {
  .family-topbar { align-items:flex-start; padding:1rem; }
  .family-brand small { display:none; }
  .family-topbar nav { flex-wrap:wrap; justify-content:flex-end; gap:.5rem .8rem; }
  .family-auth-card { padding:2.2rem 1.25rem; }
  .family-auth-intro { padding:4rem 1.25rem; }
  .family-dashboard,.family-admin-dashboard { width:min(100% - 2rem,1280px); padding:3rem 0; }
  .family-form-grid,.family-account-grid,.family-camp-grid,.family-camp-admin-grid,.family-account-settings-grid { grid-template-columns:1fr; }
  .family-admin-filters { grid-template-columns:1fr; }
  .family-payment-table-head { display:none; }
  .family-payment-table { border:0; background:transparent; }
  .family-payment-table-row { grid-template-columns:1fr 1fr; margin-bottom:.75rem; border:1px solid var(--line); border-radius:14px 4px 14px 4px; padding:1rem; background:var(--cream); }
  .family-payment-table-row > *::before { display:block; margin-bottom:.15rem; color:var(--muted); content:attr(data-label); font-size:.76rem; font-weight:800; text-transform:uppercase; }
  .family-payment-filters { grid-template-columns:1fr; }
  .family-application-card > header,.family-section-heading { flex-direction:column; align-items:flex-start; }
  .family-actions-summary > header { align-items:flex-start; flex-direction:column; }
  .family-actions-group li { grid-template-columns:1fr; }
  .family-actions-group li > a { justify-self:start; }
  .family-pdf-action { align-items:flex-start; flex-direction:column; }
  .family-progress { grid-template-columns:1fr; }
  .family-progress li { min-height:1.7rem; padding:.15rem 0 .15rem 2.3rem; text-align:left; }
  .family-progress li span { top:0; left:0; transform:none; }
  .family-finance { grid-template-columns:1fr 1fr; }
  .family-stat-grid { grid-template-columns:1fr 1fr; }
  .family-admin-camp { padding:1rem; }
  .family-admin-camp-header { align-items:flex-start; flex-direction:column; }
  .family-admin-camp-summary { justify-content:flex-start; text-align:left; }
  .family-admin-row { grid-template-columns:minmax(0,1fr) auto; }
  .family-admin-meta,.family-admin-money { grid-column:1 / -1; }
  .family-admin-row > b { grid-column:2; grid-row:1; }
  .family-footer { flex-direction:column; }
  .family-notice-hero { min-height:0; padding:4rem 1.25rem; }
  .family-notice-content { width:min(100% - 2rem,1120px); padding:3rem 0; }
  .family-notice-step { grid-template-columns:1fr; }
  .family-notice-callout { grid-template-columns:1fr; }
  .family-notice-closing { align-items:flex-start; flex-direction:column; }
  .family-form-progress { display:flex; overflow-x:auto; padding-bottom:.35rem; scroll-snap-type:x proximity; }
  .family-form-progress button { flex:0 0 118px; scroll-snap-align:start; }
  .family-document-list article { align-items:flex-start; flex-direction:column; }
  .family-document-review { grid-template-columns:1fr; width:100%; }
  .family-danger-zone { grid-template-columns:1fr; }
  .family-danger-zone .family-form { border-top:1px solid rgba(179,67,50,.24); border-left:0; padding-top:1.2rem; padding-left:0; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; } }
