@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Libre+Baskerville:wght@400;700&display=swap";:root{--color-navy: #1e2a44;--color-gold: #c89b2d;--color-ivory: #f6f4ef;--color-charcoal: #1a1a1a;--color-muted: #5b6472;--color-border: #d8d4cc;--color-success: #2f6b45;--color-warning: #8a5a12;--color-error: #8b2e2e;--color-white: #ffffff;--shadow-soft: 0 18px 40px rgba(30, 42, 68, .12);--shadow-panel: 0 24px 48px rgba(30, 42, 68, .1);--radius-panel: 24px;--radius-card: 20px;--radius-pill: 999px;--space-section: clamp(32px, 4vw, 56px);--space-card: 24px;font-family:Inter,sans-serif;line-height:1.6;font-weight:400;color:var(--color-charcoal);background:radial-gradient(circle at top left,rgba(200,155,45,.12),transparent 28%),linear-gradient(180deg,#f6f4effa,#f0ece3f5),url(/images/backgrounds/bg-ivory-paper.png);background-color:var(--color-ivory);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;color:var(--color-charcoal)}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at bottom right,rgba(30,42,68,.08),transparent 32%),url(/images/backgrounds/seal-watermark.png) right 4% bottom 6% / 360px no-repeat;opacity:.9}a{color:inherit}button,input,select,textarea{font:inherit}#root{position:relative;z-index:1}.app-shell,.auth-shell,.voter-shell{width:min(960px,calc(100% - 32px));margin:0 auto;padding:32px 0 64px}.auth-shell{min-height:100vh;display:grid;place-items:center}.voter-shell{display:grid;gap:24px}.admin-shell{display:grid;grid-template-columns:320px minmax(0,1fr);gap:28px;width:min(1320px,calc(100% - 32px));margin:0 auto;padding:24px 0 64px}.panel{background:linear-gradient(180deg,#fffffffa,#fcfaf5fa);border:1px solid rgba(216,212,204,.92);border-radius:var(--radius-panel);padding:clamp(22px,3vw,34px);box-shadow:var(--shadow-panel)}.page-title,.ballot-title,.admin-title,.brand-mark-title,.metric-card-value,.position-title,.admin-card-title{font-family:Libre Baskerville,serif}.page-title,.ballot-title{margin:0;color:var(--color-navy);line-height:1.2}.page-title{font-size:clamp(2rem,3vw,3.1rem)}.ballot-title{font-size:clamp(1.7rem,2vw,2.4rem)}.admin-title{margin:0;font-size:1.85rem;color:var(--color-white)}.admin-eyebrow,.brand-mark-subtitle,.admin-section-label,.metric-card-label{margin:0 0 10px;font-size:.82rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--color-gold)}.intro-text,.ballot-description,.status-message,.candidate-church,.page-header-description,.admin-card-meta,.confirmation-message{color:var(--color-muted)}.page-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:start;gap:16px}.page-header-description{max-width:66ch;margin:14px 0 0;font-size:1.05rem}.page-header-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.brand-mark{display:inline-flex;align-items:center;gap:18px}.brand-mark.compact{gap:14px}.brand-mark-logo{width:84px;height:84px;object-fit:contain;flex:0 0 auto}.brand-mark.compact .brand-mark-logo{width:52px;height:52px}.brand-mark-copy{display:grid;gap:4px}.brand-mark-title{margin:0;font-size:1.25rem;color:inherit;line-height:1.25}.field-label{display:block;margin:0;font-size:1rem;font-weight:700;color:var(--color-navy)}.code-input,.admin-textarea,select,input[type=file]{width:100%;min-height:52px;margin-top:10px;padding:14px 16px;border:1px solid var(--color-border);border-radius:16px;background:#fffffff5;color:var(--color-charcoal);font-size:1.05rem;line-height:1.4;box-shadow:inset 0 1px 2px #1a1a1a0a}.code-input{max-width:100%;letter-spacing:.08em;text-transform:uppercase}.admin-text-input{text-transform:none;letter-spacing:normal}.admin-textarea{min-height:120px;resize:vertical}.code-input:focus-visible,.admin-textarea:focus-visible,.primary-button:focus-visible,.secondary-button:focus-visible,.candidate-option:focus-within,.admin-nav-link:focus-visible,.admin-election-tool-link:focus-visible{outline:3px solid rgba(200,155,45,.42);outline-offset:2px}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 20px;border-radius:14px;font-size:1rem;font-weight:700;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease}.primary-button{border:1px solid rgba(200,155,45,.92);background:linear-gradient(180deg,#d8ae49 0%,var(--color-gold) 100%);color:var(--color-charcoal);box-shadow:0 10px 24px #c89b2d3d}.primary-button:hover:not(:disabled){background:linear-gradient(180deg,#e0b85a,#d5a53a)}.secondary-button{border:1px solid rgba(200,155,45,.88);background:#ffffffd6;color:var(--color-navy)}.primary-button:disabled,.secondary-button:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.status-message{margin:0;font-size:1rem}.alert-banner{padding:16px 18px;border-radius:18px;border:1px solid var(--color-border);background:#ffffffeb;color:var(--color-charcoal)}.alert-banner.info{border-color:#1e2a4429;background:#1e2a440f}.alert-banner.success{border-color:#2f6b4538;background:#2f6b4514}.alert-banner.warning{border-color:#8a5a1242;background:#8a5a1214}.alert-banner.error{border-color:#8b2e2e47;background:#8b2e2e14}.confirmation-message{font-size:1.15rem;margin:0}.admin-sidebar{display:flex;flex-direction:column;gap:24px;align-self:start;min-height:calc(100vh - 48px);padding:28px 24px;border:1px solid rgba(30,42,68,.08);border-radius:28px;background:linear-gradient(180deg,#172137fa,#1e2a44f7),url(/images/backgrounds/bg-navy-texture.png);color:var(--color-white);box-shadow:0 28px 54px #131c2f47}.admin-sidebar .brand-mark-title,.admin-sidebar .brand-mark-subtitle,.admin-sidebar .admin-card-meta,.admin-sidebar .admin-section-label{color:var(--color-white)}.admin-sidebar-copy{padding-bottom:18px;border-bottom:1px solid rgba(255,255,255,.16)}.admin-sidebar-section{display:grid;gap:14px}.admin-sidebar-chip-list{display:flex;flex-wrap:wrap;gap:10px}.admin-sidebar-chip{display:inline-flex;align-items:center;min-height:36px;padding:8px 12px;border:1px solid rgba(255,255,255,.18);border-radius:var(--radius-pill);color:#ffffffd6;font-size:.94rem}.admin-nav{display:grid;gap:10px}.admin-nav-link{display:block;min-height:48px;padding:12px 14px;border-radius:16px;color:#ffffffe0;text-decoration:none;font-weight:700}.admin-nav-link.active,.admin-nav-link:hover{background:#ffffff1a;color:var(--color-white)}.admin-main{min-width:0}.admin-page-panel,.admin-login-panel,.ballot-panel{text-align:left}.admin-page-stack,.admin-list,.admin-summary-grid,.admin-form-grid,.admin-candidate-grid,.positions-list{display:grid;gap:18px}.admin-summary-grid{margin-top:20px}.admin-summary-grid--three{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-card-link{text-decoration:none}.admin-card,.admin-summary-card,.metric-card,.position-card,.empty-state,.voter-access-card{padding:20px;border:1px solid rgba(216,212,204,.9);border-radius:var(--radius-card);background:#ffffffe6}.metric-card{background:linear-gradient(180deg,#fffffff5,#faf7f0f5)}.metric-card.accent{border-color:#c89b2d6b}.metric-card.success{border-color:#2f6b453d}.metric-card.warning{border-color:#8a5a1247}.metric-card-value{margin:0;font-size:clamp(1.4rem,1.8vw,1.9rem);color:var(--color-navy)}.admin-card-with-actions{display:grid;gap:14px}.admin-card-title{margin:0;color:var(--color-navy);line-height:1.3}.admin-card-meta{margin:8px 0 0;font-size:.99rem}.admin-card-header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;align-items:start}.status-badge,.admin-badge{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:6px 12px;border-radius:var(--radius-pill);font-size:.8rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.status-badge{background:#1e2a4414;color:var(--color-navy)}.admin-status-badge--large{min-height:40px;padding:10px 16px;font-size:.92rem}.status-badge.open,.status-badge.certified{background:#2f6b451a;color:var(--color-success)}.status-badge.closed{background:#8a5a121a;color:var(--color-warning)}.status-badge.draft,.admin-badge.test{background:#c89b2d24;color:#6e5310}.admin-badge.official{background:#1e2a4414;color:var(--color-navy)}.admin-status-explainer{margin:12px 0 0;font-size:1.02rem;font-weight:700;color:var(--color-navy)}.admin-checkbox-row{display:inline-flex;align-items:center;gap:10px;color:var(--color-navy);font-weight:700}.admin-checkbox-row input{width:20px;height:20px}.admin-bullet-list{margin:0;padding-left:20px;color:var(--color-muted)}.admin-action-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px}.admin-section-header,.admin-election-nav-header,.admin-voter-row,.voter-hero-grid{display:grid;gap:18px}.admin-section-header{grid-template-columns:minmax(0,1fr) minmax(280px,360px);align-items:start}.admin-compact-summary-card{min-width:0}.admin-action-panel,.admin-delete-modal,.admin-credential-reveal,.admin-inline-banner,.admin-inline-edit{padding:20px;border-radius:var(--radius-card);border:1px solid rgba(216,212,204,.9);background:#ffffffe0}.admin-delete-modal{background:#8b2e2e0d}.admin-inline-banner{background:#1e2a440f;color:var(--color-navy);font-weight:700}.admin-credential-code{margin:12px 0 0;font-size:1.4rem;font-weight:800;letter-spacing:.08em;color:var(--color-navy)}.admin-voter-card{display:grid;gap:16px}.voter-import-review{display:grid;gap:12px;overflow:hidden}.voter-import-table-wrap{max-width:100%;overflow-x:auto;overflow-y:auto;max-height:min(68vh,760px);border:1px solid rgba(216,212,204,.9);border-radius:18px;background:#fffffff0}.voter-import-toolbar,.voter-import-action-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.voter-import-toolbar__summary{display:grid;gap:8px}.voter-import-toolbar__banner,.voter-import-action-bar__summary{margin:0}.voter-import-metrics{display:flex;flex-wrap:wrap;gap:8px}.voter-import-metric{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border-radius:999px;background:#1e2a4414;color:var(--color-navy);font-size:.82rem;font-weight:800}.voter-import-metric--review{background:#8b2e2e1a;color:#8b2e2e}.voter-import-metric--ready{background:#2f6b451f;color:#27593a}.voter-import-filter{display:inline-flex;align-items:center;gap:8px;color:var(--color-navy);font-size:.9rem;font-weight:700}.voter-import-table{width:100%;border-collapse:collapse;min-width:1180px;table-layout:fixed;font-size:.9rem}.voter-import-col--status{width:148px}.voter-import-col--first-name,.voter-import-col--last-name{width:168px}.voter-import-col--church{width:420px}.voter-import-col--district,.voter-import-col--email{width:220px}.voter-import-table th,.voter-import-table td{padding:8px 10px;vertical-align:top;border-top:1px solid rgba(216,212,204,.9);text-align:left}.voter-import-table thead th{border-top:none;position:sticky;top:0;z-index:1;background:#fbf8f1fa;box-shadow:inset 0 -1px #d8d4cce6;color:var(--color-navy);font-size:.76rem;letter-spacing:.04em;text-transform:uppercase}.voter-import-table__row-number{margin:8px 0 0;font-weight:700;color:var(--color-muted);font-size:.76rem}.voter-import-table__status-cell{position:sticky;left:0;z-index:1;background:inherit}.voter-import-table__row--review td{background:#8b2e2e0a}.voter-import-table__row--review .voter-import-table__status-cell{background:#8b2e2e0f}.voter-import-input{width:100%;min-width:0;font-size:.86rem}.voter-import-input--dense{min-height:34px;padding:7px 10px;border-radius:12px;line-height:1.2}.voter-import-input--error{border-color:#8b2e2eb3;box-shadow:inset 0 0 0 1px #8b2e2e14}.voter-import-input--warning{border-color:#c89b2dcc;box-shadow:inset 0 0 0 1px #c89b2d14}.voter-import-field-message{margin:4px 0 0;font-size:.74rem;line-height:1.35;overflow-wrap:anywhere}.voter-import-field-message--error{color:#8b2e2e;font-weight:700}.voter-import-field-message--warning{color:#8a6510;font-weight:700}.voter-import-field-options .admin-bullet-list{margin-top:4px;font-size:.74rem}.voter-import-status{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:4px 8px;border-radius:999px;font-size:.72rem;font-weight:800;text-align:center}.voter-import-status--ready{background:#2f6b451f;color:#27593a}.voter-import-status--needs_review{background:#8b2e2e1f;color:#8b2e2e}.voter-import-status--suggested_match{background:#c89b2d2e;color:#8a6510}.voter-import-server-errors{margin-top:6px;font-size:.74rem}.voter-import-action-bar{position:sticky;bottom:0;z-index:1;margin:0 -20px -20px;padding:12px 20px;border-top:1px solid rgba(216,212,204,.9);background:#fbf8f1f5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.admin-voter-row{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-election-nav-panel{background:linear-gradient(180deg,#1e2a44fa,#22314cf5),url(/images/backgrounds/bg-navy-texture.png);color:var(--color-white)}.admin-election-nav-panel .admin-card-meta,.admin-election-nav-panel .brand-mark-title,.admin-election-nav-panel .brand-mark-subtitle{color:var(--color-white)}.admin-election-tool-nav{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}.admin-election-tool-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px solid rgba(255,255,255,.18);border-radius:var(--radius-pill);background:#ffffff0f;color:#fffffff0;text-decoration:none;font-weight:700}.admin-election-tool-link.active{background:#c89b2d2e;border-color:#c89b2d8a;color:#fff4d3}.roster-card-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.roster-card{break-inside:avoid}.roster-cards-print-area{margin-top:0}.hero-image-frame{display:grid;gap:12px;align-content:start}.hero-image{min-height:240px;border-radius:24px;border:1px solid rgba(216,212,204,.88);background-color:#1e2a4424;background-position:center;background-size:cover}.hero-image--voter{background-image:linear-gradient(180deg,#1e2a4429,#1e2a4442),url(/images/heroes/voter-welcome-hero.jpg)}.confirmation-image{background-image:linear-gradient(180deg,#1e2a4424,#1e2a4438),url(/images/heroes/vote-confirmation.jpg)}.hero-image-caption{padding:14px 16px;border-radius:16px;background:#ffffffe0}.admin-hero-panel{background:linear-gradient(180deg,#1e2a44f5,#283856ed),url(/images/heroes/admin-governance-hero.jpg) center/cover;color:var(--color-white)}.admin-hero-panel .page-title,.admin-hero-panel .intro-text{color:var(--color-white)}.admin-hero-panel .metric-card{background:#ffffff24;border-color:#ffffff24}.voter-hero-panel{background:linear-gradient(180deg,#fffffffa,#fbf8f1fa)}.voter-hero-grid{grid-template-columns:minmax(0,1.35fr) minmax(280px,.85fr);align-items:start}.voter-access-card{margin-top:24px}.progress-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:24px 0 0;padding:0;list-style:none}.progress-step{display:grid;gap:8px;padding:14px;border:1px solid rgba(216,212,204,.9);border-radius:18px;background:#ffffffc2}.progress-step-index{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#1e2a441a;color:var(--color-navy);font-weight:800}.progress-step-label{font-weight:700;color:var(--color-navy)}.progress-step.current{border-color:#c89b2d8a;background:#c89b2d14}.progress-step.complete{border-color:#2f6b454d;background:#2f6b4514}.positions-list{margin-top:12px}.position-card{margin:0}.position-title{padding:0;font-size:1.25rem;color:var(--color-navy)}.candidate-option{display:flex;align-items:flex-start;gap:14px;padding:16px 0;font-size:1.08rem;color:var(--color-charcoal)}.candidate-option+.candidate-option{border-top:1px solid rgba(216,212,204,.9)}.candidate-option input{width:24px;height:24px;margin-top:2px}.candidate-text{display:flex;flex-direction:column;gap:4px}.candidate-name{font-weight:700}.review-card{display:grid;gap:8px}.compact-button,.inline-button,.submit-button{margin-top:0}.empty-state{text-align:center}@media(max-width:1080px){.admin-shell{grid-template-columns:1fr}.admin-sidebar{min-height:auto}}@media(max-width:900px){.admin-summary-grid--three,.voter-hero-grid,.admin-section-header,.admin-voter-row{grid-template-columns:1fr}.progress-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.app-shell,.auth-shell,.voter-shell,.admin-shell{width:min(100% - 20px,100%);padding:16px 0 40px}.panel{padding:20px 18px}.primary-button,.secondary-button,.page-header-actions,.admin-action-row{width:100%}.progress-steps{grid-template-columns:1fr}}@media print{body{background:#fff}.admin-sidebar,.admin-election-nav-panel,.roster-cards-screen-controls,.status-message,.admin-action-row,.secondary-button,.primary-button{display:none!important}.admin-shell,.admin-main,.roster-cards-page,.roster-cards-print-area{display:block!important;width:100%!important;margin:0!important;padding:0!important}.roster-cards-print-area{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.roster-card{border:1px solid rgba(30,42,68,.2);box-shadow:none;page-break-inside:avoid;break-inside:avoid}}
