:root{--ci-dark:#30302f;--ci-gold:#b58d58;--ci-white:#fff;--ci-gray:#474747;--ci-gray-light:#d5d6d6;--ci-green:#5c8046;--ci-green-dark:#4a6b38;--ci-green-light:#6f9557;--ci-coral:#ef6341;--ci-blue:#96bbc8;--ci-yellow:#f2b12e;--danger:#bd3a22;--font-body:"Mallory", "Segoe UI", system-ui, sans-serif;--font-display:"Empirica", "Mallory", "Segoe UI", system-ui, sans-serif;--bg:var(--ci-white);--ink:var(--ci-dark);--muted:var(--ci-gray);--line:#c4c5c5;--accent:var(--ci-green);--card:var(--ci-white);--tap:3rem;--radius:.75rem;--gap-stack:1rem;--shadow:0 8px 28px #30302f1f}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--ink);font-family:var(--font-body);-webkit-tap-highlight-color:transparent;margin:0;padding:0;line-height:1.4}button,input,select,textarea{font:inherit}a{color:var(--ink)}a:hover{color:var(--ci-gold)}.app-shell{flex-direction:column;min-height:100dvh;display:flex}.site-header{z-index:30;background:var(--ci-white);border-bottom:1px solid var(--line);align-items:center;padding:.65rem 1.1rem;display:flex;position:sticky;top:0}.site-logo{align-items:center;line-height:0;display:inline-flex}.site-logo:hover{opacity:.85}.site-logo img{width:auto;max-width:min(11rem,48vw);height:2.35rem;display:block}.page{flex:1;width:min(42rem,100%);margin:0 auto;padding:1.25rem 1.1rem 5rem}.page-wide{width:min(52rem,100%)}.brand-title{font-family:var(--font-display);letter-spacing:.01em;margin:0 0 .35rem;font-size:clamp(1.6rem,4vw,2.1rem);font-weight:700}.lede{color:var(--muted);margin:0 0 1.5rem;font-size:1.05rem}.stack{gap:var(--gap-stack);flex-direction:column;display:flex}.btn{appearance:none;border-radius:var(--radius);min-height:var(--tap);background:var(--accent);color:var(--ci-white);cursor:pointer;border:1px solid #0000;padding:.85rem 1.15rem;font-weight:700;transition:transform .15s,background .15s,opacity .15s}.btn:active{transform:scale(.98)}.btn:hover{background:var(--ci-green-light);color:var(--ci-white)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-secondary{background:var(--card);color:var(--ink);border-color:var(--line)}.btn-secondary:hover{color:var(--ink);background:#ececec}.btn-ghost{color:var(--ink);background:0 0;border-color:#0000}.btn-cancel{color:var(--ci-coral);border:2px solid var(--ci-coral);background:0 0;font-weight:700}.btn-cancel:hover{background:color-mix(in srgb, var(--ci-coral) 12%, white);color:var(--ci-coral)}.btn-block{text-align:center;width:100%}.signing-in-title{font-family:var(--font-body);color:var(--ink);margin:0;font-size:1.1rem;font-weight:700;line-height:1.35}.card-list{flex-direction:column;gap:.65rem;display:flex}.child-row{text-align:left;border-radius:var(--radius);width:100%;min-height:4.25rem;color:var(--ink);box-shadow:none;cursor:pointer;background:#f4f4f4;border:2px solid #cfcfcf;align-items:center;gap:.75rem;padding:.85rem 1rem;transition:border-color .15s,transform .15s,background .15s;display:flex}.child-row:active{transform:scale(.99)}.child-row.selected{border-color:var(--ci-green);color:var(--ink);background:#eef4ea}.child-row.checked-in-dim{opacity:.45}.child-row.display-only{cursor:default;pointer-events:none}.er-grid{flex-direction:column;gap:.5rem;display:flex}.er-row{grid-template-columns:minmax(0,1fr) 5.5rem 7.5rem;align-items:center;gap:.5rem;display:grid}@media (min-width:640px){.er-row{grid-template-columns:minmax(0,1fr) 7rem 9.5rem}}.er-card{min-width:0}.er-card .child-row{width:100%}.er-header{align-items:end;padding-bottom:.25rem}.er-header-label{color:var(--muted);padding-left:.25rem;font-size:.9rem;font-weight:700}.er-col-head{text-align:center;color:var(--ink);flex-direction:column;align-items:center;gap:.35rem;font-size:.78rem;font-weight:700;line-height:1.2;display:flex}.er-col-actions{flex-direction:column;gap:.25rem;width:100%;display:flex}.er-mini{min-height:2rem;padding:.35rem .4rem;font-size:.72rem;font-weight:600}.er-check-cell{cursor:pointer;place-items:center;min-height:4.25rem;display:grid}.er-checkbox{appearance:none;border:2px solid var(--line);background:var(--card);cursor:pointer;border-radius:.55rem;place-items:center;width:2.75rem;height:2.75rem;margin:0;display:grid}.er-checkbox:checked{border-color:var(--ci-green);background:#eef4ea}.er-checkbox:checked:after{content:"";border:solid var(--ci-green-dark);border-width:0 .28rem .28rem 0;width:.85rem;height:1.35rem;margin-bottom:.2rem;transform:rotate(45deg)}.er-row.so-row{grid-template-columns:minmax(0,1fr) 5.5rem}@media (min-width:640px){.er-row.so-row{grid-template-columns:minmax(0,1fr) 7rem}}.so-team-title{color:var(--ink);margin:.75rem 0 0;font-size:1.15rem;font-weight:700}.so-team:first-child .so-team-title{margin-top:0}.so-review-banner{border-color:var(--ci-coral);background:color-mix(in srgb, var(--ci-coral) 8%, white)}.list-controls{flex-wrap:nowrap;align-items:flex-end;gap:.65rem;max-width:26rem;display:flex}.list-controls .sort-field,.list-controls .grade-filter-field{flex:1 1 0;min-width:0;max-width:none;margin:0}.sort-field{max-width:16rem}.grade-filter-btn{appearance:none;border:1px solid var(--line);background:var(--card);width:100%;min-height:2.75rem;color:var(--ink);font:inherit;text-align:left;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;border-radius:.55rem;padding:.65rem .75rem;font-weight:600;overflow:hidden}.grade-filter-btn:hover{border-color:var(--ci-green);background:#eef4ea}.child-signed-in{color:var(--ci-gray);white-space:nowrap;flex-shrink:0;font-size:.95rem;font-weight:700}.child-meta{flex-direction:column;gap:.15rem;min-width:0;display:flex}.child-grade{color:var(--ci-gray);font-size:.95rem;font-weight:600}.child-name{color:var(--ink);font-size:1.1rem;font-weight:700}.child-sub{color:var(--ci-gray);font-size:.92rem}.bible-toggle{appearance:none;border-radius:var(--radius);border:2px solid var(--line);background:var(--card);cursor:pointer;text-align:left;justify-content:space-between;align-items:center;gap:.75rem;width:100%;min-height:4.25rem;padding:1rem 1.15rem;transition:border-color .15s,background .15s,transform .15s;display:flex}.bible-toggle:active{transform:scale(.99)}.bible-toggle.on{border-color:var(--ci-green);background:#eef4ea}.bible-toggle-label{font-size:1.1rem;font-weight:700}.bible-toggle-state{color:var(--muted);text-align:right;min-width:2.5rem;font-weight:700}.bible-toggle.on .bible-toggle-state{color:var(--ci-green-dark)}.accordion{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);overflow:hidden}.accordion-trigger{appearance:none;cursor:pointer;text-align:left;background:#fafafa;border:none;justify-content:space-between;align-items:center;gap:.75rem;width:100%;min-height:3.25rem;padding:.9rem 1rem;font-size:1.05rem;font-weight:700;display:flex}.accordion.open .accordion-trigger{border-bottom:1px solid var(--line)}.accordion-chevron{color:var(--muted);font-size:1.1rem}.accordion-body{flex-direction:column;gap:.75rem;padding:.85rem 1rem 1rem;display:flex}.topbar{z-index:20;background:var(--ci-white);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1.1rem;display:flex;position:sticky;top:3.65rem}.topbar-title{flex-direction:column;gap:.1rem;min-width:0;display:flex}.topbar-title strong{font-family:var(--font-display);font-size:1.15rem}.topbar-title span{color:var(--muted);font-size:.9rem}.icon-btn{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:.65rem;flex-shrink:0;place-items:center;width:2.75rem;height:2.75rem;display:grid}.icon-btn:hover{border-color:var(--ci-gold)}.menu-panel{z-index:40;background:#30302f8c;justify-content:flex-end;animation:.18s fadeIn;display:flex;position:fixed;inset:0}.menu-sheet{border-left:3px solid var(--ci-green);outline:1px solid var(--ci-dark);outline-offset:-1px;opacity:1;background:#f7f8f6;flex-direction:column;gap:.35rem;width:min(20rem,88vw);height:100%;padding:1rem;animation:.2s slideIn;display:flex;box-shadow:-8px 0 28px #30302f38}.menu-sheet h2{font-family:var(--font-display);margin:.25rem 0 .75rem;font-size:1.15rem}.menu-item{appearance:none;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.55rem;width:100%;padding:.95rem .75rem;font-weight:600}.menu-item:hover{background:#f3f3f3}.menu-sep{background:var(--line);height:1px;margin:.4rem 0}.field{flex-direction:column;gap:.35rem;display:flex}.field label{font-size:.92rem;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--card);border-radius:.55rem;min-height:2.75rem;padding:.65rem .75rem}.consent-row{cursor:pointer;align-items:center;gap:.75rem;display:flex}.consent-checkbox{appearance:none;border:2px solid var(--line);background:var(--card);cursor:pointer;border-radius:.55rem;flex-shrink:0;place-items:center;width:2.75rem;min-width:2.75rem;height:2.75rem;min-height:2.75rem;margin:0;display:grid}.consent-checkbox:checked{border-color:var(--ci-green);background:#eef4ea}.consent-checkbox:checked:after{content:"";border:solid var(--ci-green-dark);border-width:0 .28rem .28rem 0;width:.85rem;height:1.35rem;margin-bottom:.2rem;transform:rotate(45deg)}.chip-row{flex-wrap:wrap;gap:.45rem;display:flex}.chip{appearance:none;border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:999px;padding:.55rem .9rem;font-weight:600}.chip.active{border-color:var(--ci-green);color:var(--ci-green-dark);background:#eef4ea}.panel{background:var(--card);border-radius:var(--radius);border:1px solid var(--line);padding:1rem}.success-banner{background:color-mix(in srgb, var(--ci-green) 22%, white);border:1px solid var(--ci-green);border-radius:var(--radius);text-align:center;padding:1.25rem 1.1rem}.success-banner>p:first-child{font-family:var(--font-display);color:var(--ci-green-dark);margin:0;font-size:1.15rem;font-weight:700}.success-overlay{z-index:50;background:#30302f73;place-items:center;padding:1.25rem;animation:.18s fadeIn;display:grid;position:fixed;inset:0}.success-card{background:var(--card);text-align:center;width:min(26rem,100%);box-shadow:var(--shadow);border-top:6px solid var(--ci-green);border-radius:1rem;padding:1.5rem 1.25rem;animation:.22s popIn}.success-card.filled{background:color-mix(in srgb, var(--ci-green) 22%, white)}.success-card h2{font-family:var(--font-display);color:var(--ci-green-dark);margin:0 0 .5rem}.footer-bar{z-index:15;gap:var(--gap-stack);padding:.85rem 1.1rem calc(.85rem + env(safe-area-inset-bottom));background:var(--ci-white);border-top:1px solid var(--line);flex-direction:column;display:flex;position:sticky;bottom:0}.hint{color:var(--muted);font-size:.9rem}.dash-header{flex-direction:column;gap:.75rem;margin-bottom:1.25rem;display:flex}.dash-auth-note{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--ci-gold) 45%, var(--line));background:color-mix(in srgb, var(--ci-gold) 12%, white);color:var(--ci-dark);margin:0;padding:.65rem .85rem;font-size:.92rem;font-weight:600}.dash-filters{max-width:40rem;margin-bottom:.35rem}.dash-section{margin:1.35rem 0}.dash-section-title{font-family:var(--font-display);margin:0 0 .75rem;font-size:1.2rem;font-weight:700}.dash-hall-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}@media (min-width:40rem){.dash-hall-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.dash-hall-card{appearance:none;text-align:left;border-radius:var(--radius);border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;cursor:pointer;min-height:var(--tap);flex-direction:column;align-items:flex-start;gap:.2rem;padding:.85rem .9rem;display:flex}.dash-hall-card:hover{border-color:var(--ci-green);background:#eef4ea}.dash-hall-card.selected{border-color:var(--ci-green);box-shadow:inset 0 0 0 1px var(--ci-green);background:#eef4ea}.dash-hall-card-name{font-weight:700}.dash-hall-card-stat{font-size:1.05rem;font-weight:600}.dash-kpi-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;margin:1rem 0 1.25rem;display:grid}@media (min-width:40rem){.dash-kpi-row{grid-template-columns:repeat(4,minmax(0,1fr))}}.dash-kpi{border-radius:var(--radius);border:1px solid var(--line);background:color-mix(in srgb, var(--ci-green) 8%, white);flex-direction:column;gap:.25rem;padding:.9rem .95rem;display:flex}.dash-kpi-value{font-family:var(--font-display);color:var(--ci-green-dark);font-size:1.55rem;font-weight:700;line-height:1.1}.dash-kpi-label{color:var(--muted);font-size:.85rem;font-weight:600;line-height:1.3}.dash-table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);overflow-x:auto}.dash-table{border-collapse:collapse;width:100%;font-size:.92rem}.dash-table th,.dash-table td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:.65rem .75rem}.dash-table th{color:var(--ci-gray);background:#f3f4f4;font-weight:700}.dash-table tbody tr:last-child td{border-bottom:none}.dash-table .muted-row td{color:var(--muted);font-style:italic}.dash-table tr.dash-row-selected td{background:#eef4ea}.dash-pie{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);margin:0;padding:1.1rem 1.15rem}.dash-pie-body{flex-wrap:wrap;align-items:center;gap:1.25rem 1.75rem;display:flex}.dash-pie-svg{flex-shrink:0;display:block}.dash-pie-center-value{font-family:var(--font-display);fill:var(--ci-green-dark);font-size:1.5rem;font-weight:700}.dash-pie-center-label{fill:var(--muted);font-size:.8rem;font-weight:600}.dash-pie-legend{flex-direction:column;gap:.65rem;margin:0;padding:0;font-size:.95rem;font-weight:600;list-style:none;display:flex}.dash-pie-legend li{align-items:center;gap:.55rem;display:flex}.dash-pie-swatch{border-radius:.2rem;flex-shrink:0;width:.9rem;height:.9rem}.dash-pie-swatch.completed{background:var(--ci-green)}.dash-pie-swatch.not{background:var(--ci-gray-light);border:1px solid var(--line)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.dash-link-btn{appearance:none;font:inherit;color:var(--ci-green-dark);text-underline-offset:.15em;cursor:pointer;text-align:left;background:0 0;border:none;margin:0;padding:0;font-weight:700;text-decoration:underline}.dash-link-btn:hover{color:var(--ci-green)}.visitor-prefix{color:var(--ci-coral);margin-right:.35rem;font-weight:700}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:.6;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@keyframes popIn{0%{opacity:.5;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
