:root{
  --navy:#15314f; --burgundy:#a4161a; --gold:#b0884b; --gold-deep:#8a6a39;
  --ink:#101a28; --slate:#54647a; --line:#e6ebf1; --soft:#f6f8fc; --success:#1b8a4b;
  --radius:14px;
  --shadow:0 10px 30px rgba(16,26,40,.08), 0 2px 8px rgba(16,26,40,.05);
  --font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--font);color:var(--ink);background:linear-gradient(180deg,#fff,var(--soft));-webkit-font-smoothing:antialiased}
a{color:var(--burgundy);text-decoration:none}
a:hover{text-decoration:underline}

/* ---- auth layout ---- */
.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:32px}
.auth-card{width:100%;max-width:424px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:34px}
.brand{display:flex;justify-content:center;margin-bottom:6px}
.brand svg{height:38px;width:auto}
.auth-card h1{font-size:1.3rem;text-align:center;margin:16px 0 4px}
.sub{color:var(--slate);text-align:center;font-size:.93rem;margin:0 0 20px}
label{display:block;font-weight:600;font-size:.85rem;margin:14px 0 6px}
input[type=text],input[type=email],input[type=password]{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;font-size:1rem;font-family:inherit;background:#fff;transition:border-color .15s,box-shadow .15s}
input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(21,49,79,.12)}
.btn{width:100%;margin-top:22px;padding:12px 16px;border:none;border-radius:10px;background:var(--burgundy);color:#fff;font-weight:700;font-size:1rem;font-family:inherit;cursor:pointer;transition:filter .15s}
.btn:hover{filter:brightness(1.07)}
.btn:disabled{opacity:.6;cursor:default}
.msg{margin-top:16px;padding:11px 13px;border-radius:10px;font-size:.9rem;display:none}
.msg.err{display:block;background:#fdecec;color:#7d1417;border:1px solid #f5c9ca}
.msg.okk{display:block;background:#e8f5ee;color:#155f37;border:1px solid #bfe3cd}
.hint{color:var(--slate);font-size:.78rem;margin-top:6px}
.muted{color:var(--slate);font-size:.88rem;text-align:center;margin-top:20px}
.foot{margin-top:26px;text-align:center;font-size:.76rem;color:var(--slate)}
.endo .a{color:var(--navy);font-weight:700}.endo .m{color:var(--burgundy);font-weight:700}.endo .e{color:var(--gold-deep);font-weight:700}

/* ---- app shell ---- */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:15px 24px;border-bottom:1px solid var(--line);background:#fff}
.topbar .brand{margin:0}
.topbar svg{height:28px}
.topbar .right{display:flex;align-items:center;gap:14px;font-size:.9rem;color:var(--slate)}
.linkbtn{background:none;border:1px solid var(--line);border-radius:8px;padding:7px 12px;font-family:inherit;font-size:.85rem;color:var(--navy);cursor:pointer;font-weight:600}
.linkbtn:hover{border-color:var(--navy)}
.container{max-width:880px;margin:0 auto;padding:32px 24px}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;margin-bottom:20px}
.eyebrow{color:var(--gold-deep);font-weight:700;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}
h2.section{font-size:1.15rem;margin:6px 0 10px}
.next{color:var(--slate);font-size:.92rem;margin:0}
.pill{display:inline-block;font-size:.66rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gold-deep);background:#f6efe2;border:1px solid #ecdcc0;border-radius:999px;padding:3px 9px;margin-left:8px;vertical-align:middle}
.hi{font-size:1.4rem;margin:0 0 4px}

/* ---- organizer builder ---- */
.pagehead{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:16px}
.pagehead h1{font-size:1.4rem;margin:0}
.row{display:flex;gap:10px;align-items:center;margin-bottom:8px}
.row input{flex:1}
.btn-sec{background:#fff;color:var(--navy);border:1px solid var(--line);border-radius:9px;padding:9px 14px;font-weight:600;font-family:inherit;cursor:pointer;font-size:.9rem;white-space:nowrap}
.btn-sec:hover{border-color:var(--navy)}
.btn-sec:disabled{opacity:.6;cursor:default}
.btn-ghost{background:none;border:none;color:var(--burgundy);cursor:pointer;font-family:inherit;font-size:.85rem;font-weight:600;padding:4px 6px}
.btn-ghost:hover{text-decoration:underline}
.contest{border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px;background:#fcfdff}
.contest h4{margin:0 0 12px;font-size:1rem}
.field{margin-bottom:12px}
.field label{margin-top:0}
.inline{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.checks{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px}
.checks label{display:flex;gap:6px;align-items:center;font-weight:500;margin:0;font-size:.9rem}
.checks input{width:auto}
select{padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-family:inherit;font-size:.95rem;background:#fff;color:var(--ink)}
textarea{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;font-size:1rem;font-family:inherit;background:#fff;resize:vertical;min-height:64px}
textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(21,49,79,.12)}
.statusbadge{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:4px 10px;border-radius:999px}
.s-draft{background:#eef1f6;color:#54647a}
.s-scheduled{background:#eef1f6;color:#54647a}
.s-open{background:#e8f5ee;color:#155f37}
.s-closed{background:#fdecec;color:#7d1417}
.s-certified{background:#f6efe2;color:#8a6a39}
.muted-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);gap:12px}
.muted-row:last-child{border-bottom:none}
.muted-row a{font-weight:600}
.back{color:var(--slate);font-size:.85rem}
.sectlabel{font-weight:700;font-size:.95rem;margin:18px 0 8px}
.small{font-size:.8rem;color:var(--slate);margin:2px 0 10px}
.cand-row{display:flex;gap:8px;align-items:center;margin-bottom:6px}
/* ---- two-column ballot (mirrors the marketing live demo) ---- */
.muted{color:var(--slate)}
.contest .ch{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.contest .ch h4{margin:0}
.mini{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:4px 9px;border-radius:7px}
.mini.irv{background:#e9f0fb;color:#27508f}
.mini.stv{background:#efeaff;color:#6336b8}
.rank-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.rankbox{border:1px dashed var(--line);border-radius:12px;padding:14px;background:#fbfcfe;min-height:96px}
.rankbox h5{margin:0 0 10px;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--slate);font-weight:800}
.cand{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px 12px;margin-bottom:9px;user-select:none;-webkit-user-select:none}
.cand:last-child{margin-bottom:0}
.cand:not(.add){cursor:grab;touch-action:none}
.cand.dragging{opacity:.55;box-shadow:0 8px 20px rgba(16,26,40,.18);cursor:grabbing}
.cand .n{width:26px;height:26px;border-radius:8px;background:var(--navy);color:#fff;font-weight:800;font-size:13px;display:grid;place-items:center;flex:0 0 auto}
.cand .nm{flex:1;font-weight:600;font-size:14.5px}
.cand .ctrls{display:flex;gap:5px}
.ic{width:30px;height:30px;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer;color:var(--slate);font-size:13px}
.ic:hover{border-color:var(--navy);color:var(--navy)}
.cand.add{cursor:pointer}
.cand.add:hover{border-color:var(--navy);background:var(--soft)}
.cand.add .n{background:var(--burgundy)}
@media(max-width:640px){.rank-cols{grid-template-columns:1fr}}
/* ---- organizer results (mirrors the demo) ---- */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:6px 0 18px}
.kpi{background:#fbfcfe;border:1px solid var(--line);border-radius:13px;padding:15px;text-align:center}
.kpi .n{font-size:26px;font-weight:900;color:var(--navy)}
.kpi .l{font-size:12.5px;color:var(--slate);font-weight:600;text-transform:uppercase;letter-spacing:.03em;margin-top:2px}
.round{border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}
.round .rh{display:flex;justify-content:space-between;gap:10px;color:var(--slate);font-size:13px;font-weight:700;margin-bottom:9px}
.b{position:relative;height:34px;border-radius:9px;background:#f1f4f9;margin:7px 0;overflow:hidden}
.b .f{position:absolute;inset:0 auto 0 0;border-radius:9px;background:var(--navy);opacity:.9;transition:width .6s}
.b.elim .f{background:#cbd4df}
.b.win .f{background:var(--success)}
.b .l{position:absolute;left:12px;top:0;bottom:0;display:flex;align-items:center;font-weight:700;font-size:13.5px;color:#0c1830;z-index:2}
.b .v{position:absolute;right:12px;top:0;bottom:0;display:flex;align-items:center;font-weight:800;font-size:12.5px;color:#0c1830;z-index:2}
.winner{display:flex;align-items:center;gap:10px;background:#eafaf1;border:1px solid #c5e8d3;color:#0f6b39;border-radius:11px;padding:11px 14px;font-weight:800;margin-top:8px}
@media(max-width:640px){.kpis{grid-template-columns:repeat(2,1fr)}}
.cand-row input{flex:1}

/* ---- results ---- */
progress.bar{width:180px;height:12px;vertical-align:middle;accent-color:var(--navy)}
.tallyrow{display:flex;align-items:center;gap:10px;margin:5px 0;font-size:.9rem}
.tallyrow .nm{min-width:150px}
.tallyrow .vv{min-width:60px;text-align:right;color:var(--slate)}
.tallyrow.win .nm{font-weight:700;color:var(--success)}
.winnerbox{background:#e8f5ee;border:1px solid #bfe3cd;color:#155f37;border-radius:10px;padding:10px 13px;font-weight:600;margin:8px 0}
.tiebox{background:#f6efe2;border:1px solid #ecdcc0;color:#8a6a39;border-radius:10px;padding:10px 13px;font-weight:600;margin:8px 0}
.roundbox{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:8px 0;background:#fcfdff}
.roundbox h5{margin:0 0 8px;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:var(--slate)}
.elim{color:var(--burgundy);font-size:.85rem;margin-top:8px}
.elected{color:#155f37;font-size:.85rem;margin-top:8px}
.prelim{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#8a6a39;background:#f6efe2;border:1px solid #ecdcc0;border-radius:999px;padding:4px 10px;margin-left:8px}
.statcard{min-width:150px;flex:1;text-align:center}
.statcard .hi{font-size:1.8rem}

/* =========================================================================
   PREMIUM ELEVATION LAYER — carries the marketing site's look into the app.
   Overrides visual properties only; every class name above is preserved.
   ========================================================================= */
:root{
  --sh-1:0 1px 2px rgba(16,26,40,.06);
  --sh-2:0 2px 6px rgba(16,26,40,.06),0 14px 30px rgba(16,26,40,.09);
  --sh-3:0 18px 42px rgba(16,26,40,.14),0 50px 90px rgba(16,26,40,.13);
}

/* Ambient brand backdrop (same radial glows as the marketing hero) */
body{background:
  radial-gradient(820px 460px at 50% -14%, #e7f0fc 0, rgba(231,240,252,0) 62%),
  radial-gradient(560px 420px at 10% 6%, #f7efe2 0, rgba(247,239,226,0) 60%),
  radial-gradient(560px 420px at 90% 8%, #eaf0fb 0, rgba(234,240,251,0) 60%),
  linear-gradient(180deg,#ffffff,var(--soft))}

/* AUTH — premium focal card with an ambient glow + entrance motion */
.auth-wrap{padding:44px 24px}
.auth-card{position:relative;max-width:444px;padding:42px 40px;border-radius:22px;box-shadow:var(--sh-3)}
.auth-card::before{content:"";position:absolute;z-index:-1;inset:-12% -9% -16%;border-radius:34px;filter:blur(20px);pointer-events:none;
  background:radial-gradient(58% 56% at 50% 30%,rgba(21,49,79,.18),transparent 70%),radial-gradient(48% 50% at 76% 82%,rgba(176,136,75,.16),transparent 70%)}
.brand{margin-bottom:8px}
.brand svg{height:50px}
.auth-card h1{font-size:1.9rem;font-weight:800;letter-spacing:-.025em;margin:16px 0 5px}
.sub{font-size:1rem;margin-bottom:24px}
@media (prefers-reduced-motion:no-preference){
  .auth-card{animation:authIn .55s cubic-bezier(.2,.7,.2,1) both}
  @keyframes authIn{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
}

/* Inputs + labels */
label{text-transform:none;letter-spacing:.005em}
input[type=text],input[type=email],input[type=password],textarea,select{border:1.5px solid var(--line);border-radius:12px}
input[type=text],input[type=email],input[type=password]{padding:13px 14px}
input:focus,textarea:focus,select:focus{border-color:var(--navy);box-shadow:0 0 0 4px rgba(21,49,79,.12)}

/* Primary button — lift + shadow, matching the marketing CTA */
.btn{border-radius:12px;padding:14px 18px;box-shadow:0 8px 20px rgba(164,22,26,.26);transition:transform .14s ease,box-shadow .15s ease,filter .15s}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(164,22,26,.34);filter:none}
.btn:active{transform:translateY(0)}
.foot{margin-top:30px}

/* APP SHELL — sticky glass topbar, deeper cards, bigger confident headings */
.topbar{position:sticky;top:0;z-index:50;padding:14px 24px;background:rgba(255,255,255,.82);backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--line);box-shadow:var(--sh-1)}
.topbar svg{height:30px}
.linkbtn{border-radius:10px;transition:border-color .15s,box-shadow .15s,transform .14s}
.linkbtn:hover{transform:translateY(-1px);box-shadow:var(--sh-1)}
.card{border-radius:16px;box-shadow:var(--sh-2);padding:26px}
.pagehead h1{font-size:1.65rem;font-weight:800;letter-spacing:-.02em}
.hi{font-size:1.7rem;font-weight:800;letter-spacing:-.02em}
h2.section{font-size:1.25rem;font-weight:800;letter-spacing:-.012em}
.btn-sec{border-radius:11px;transition:transform .14s ease,border-color .15s,box-shadow .15s}
.btn-sec:hover{transform:translateY(-1px);box-shadow:var(--sh-1)}
.contest{border-radius:14px}
.kpi{border-radius:14px;box-shadow:var(--sh-1)}
@media (max-width:480px){
  .auth-wrap{padding:26px 16px}
  .auth-card{padding:30px 22px;border-radius:18px}
  .auth-card h1{font-size:1.6rem}
  .container{padding:24px 16px}
  .topbar{padding:12px 16px}
}

/* ---- admin: pitch-ready launchpad ---- */
.admin .container{max-width:1060px;padding-top:26px}
.admin-head{margin-bottom:16px}
.admin-head h1{font-size:1.7rem;letter-spacing:-.02em}
.headsub{color:var(--slate);font-size:.92rem;margin:3px 0 0}

/* compact KPI strip */
.astatbar{display:flex;flex-wrap:wrap;align-items:center;padding:20px 14px}
.astat{flex:1 1 110px;text-align:center;padding:6px 10px}
.astat .n{display:block;font-size:1.85rem;font-weight:800;letter-spacing:-.025em;color:var(--navy);line-height:1.05}
.astat .l{display:block;margin-top:6px;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--slate)}
@media (min-width:640px){ .astat + .astat{border-left:1px solid var(--line)} }

/* one-click demo launchers */
.demos .sectlabel{margin-bottom:14px}
.launchgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.launch{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:16px;min-height:116px;padding:18px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#fff,var(--soft));box-shadow:var(--sh-1);color:var(--navy);text-decoration:none;transition:transform .15s ease,box-shadow .16s ease,border-color .15s}
.launch:hover{transform:translateY(-4px);box-shadow:var(--sh-2);border-color:var(--navy);text-decoration:none}
.launch-ic{display:grid;place-items:center;width:46px;height:46px;border-radius:13px;color:var(--navy);background:radial-gradient(120% 120% at 30% 20%,#eef4fe,#e3ecfb)}
.launch-ic svg{width:23px;height:23px}
.launch-l{font-weight:800;font-size:1.02rem;letter-spacing:-.01em}
.launch-go{position:absolute;top:15px;right:16px;color:var(--slate);font-weight:700}
.launch:hover .launch-go{color:var(--burgundy)}
@media (max-width:620px){ .launchgrid{grid-template-columns:repeat(2,1fr)} }

/* ---- dashboard: org cards + archive + confirm modal ---- */
.who{color:var(--slate);font-size:.86rem;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orgcard{padding:22px 24px}
.orgcard-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:6px}
.orgtitle{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.orgname{font-size:1.15rem;font-weight:800;letter-spacing:-.01em;color:var(--navy)}
.orgcard-elections{margin-top:6px}
.archived .muted-row{opacity:.92}
.btn-danger{background:var(--burgundy);color:#fff;border:none;border-radius:9px;padding:9px 14px;font-weight:700;font-family:inherit;cursor:pointer;font-size:.9rem;transition:filter .15s,transform .14s}
.btn-danger:hover{filter:brightness(1.08);transform:translateY(-1px)}
.btn-danger:disabled{opacity:.6;cursor:default}
.btn-ghost.danger{color:var(--burgundy)}
.newog{margin-bottom:20px}
.modal-overlay{position:fixed;inset:0;z-index:200;background:rgba(16,26,40,.46);display:grid;place-items:center;padding:20px;animation:ovIn .15s ease both}
.modal{background:#fff;border-radius:16px;box-shadow:var(--sh-3);max-width:440px;width:100%;padding:26px 26px 22px;animation:mdIn .18s cubic-bezier(.2,.7,.2,1) both}
.modal h3{margin:0 0 8px;font-size:1.15rem;font-weight:800;letter-spacing:-.01em;color:var(--navy)}
.modal .next{margin:0 0 18px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px}
@keyframes ovIn{from{opacity:0}to{opacity:1}}
@keyframes mdIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}

/* ---- admin: people-view drill-down ---- */
.person{border-top:1px solid var(--line)}
.person:first-of-type{border-top:none}
.person-head{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;background:none;border:none;padding:14px 4px;font-family:inherit;cursor:pointer;text-align:left;border-radius:10px}
.person-head:hover{background:var(--soft)}
.person-id{display:flex;flex-direction:column;gap:2px;min-width:0}
.person-name{font-weight:700;color:var(--navy)}
.person-id .small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chev{color:var(--slate);transition:transform .15s;display:inline-block}
.person-head.open .chev{transform:rotate(180deg)}
.person-drawer{padding:4px 6px 18px}
.sub2{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-deep);margin:14px 0 8px}

/* ---- settings ---- */
.container.narrow{max-width:560px}

/* ---- signup name row + onboarding logo ---- */
.namerow{display:flex;gap:12px}
.namerow>div{flex:1;min-width:0}
input[type=file]{width:100%;font-size:.88rem;font-family:inherit;padding:9px 0;color:var(--slate)}
.logo-preview{display:flex;align-items:center;gap:12px;margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
.logo-preview img{height:66px;width:66px;object-fit:contain;border-radius:11px;background:#fff;border:1px solid var(--line);padding:6px}
.swatch{width:22px;height:22px;border-radius:6px;border:1px solid rgba(0,0,0,.12);display:inline-block;flex:none}
.onboard h1{margin-top:10px}

/* ---- dashboard org logo + branding/name settings ---- */
.orglogo{height:42px;width:42px;object-fit:contain;border-radius:9px;background:#fff;border:1px solid var(--line);padding:4px;flex:none}
.org-settings{margin:4px 0 10px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
.org-settings textarea{min-height:70px}
.namereq{padding:8px 12px;border-radius:9px;font-size:.86rem;margin:8px 0;font-weight:600}
.namereq.pending{background:#fff7e6;border:1px solid #f3dca6;color:#8a6a1f}
.namereq.declined{background:#fdecec;border:1px solid #f5c9ca;color:#7d1417}

/* ---- admin: name-change queue + alert badge ---- */
.alertbadge{display:inline-block;margin-top:8px;background:var(--burgundy);color:#fff;font-size:.74rem;font-weight:700;letter-spacing:.02em;padding:5px 11px;border-radius:999px}
.namereq-row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;padding:14px 0;border-top:1px solid var(--line)}
.namereq-row:first-of-type{border-top:none}
.namereq-body{min-width:0}
.namereq-body .reason{margin-top:6px;font-size:.9rem;color:var(--slate);background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 10px;max-width:520px}
.decline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;width:100%;margin-top:8px}
.decline-form input{flex:1;min-width:200px}

/* ---- voter-facing org branding (ballot + results) ---- */
:root{--brand:var(--navy)}
.topbar .brand{display:flex;align-items:center;gap:8px}
.orgbrandlogo{height:38px;width:auto;max-width:190px;object-fit:contain;display:block;border-radius:7px;padding:3px}
.viavoteify{font-size:.64rem;color:var(--slate);font-weight:600;letter-spacing:.02em;white-space:nowrap}
body.themed .btn{background:var(--brand)}
body.themed .btn:hover{filter:brightness(1.08)}
body.themed .cand .n{background:var(--brand)}
body.themed .pagehead h1{color:var(--brand)}

/* ---- dashboard: welcome hero + branded org card ---- */
.dash{padding-top:30px}
.dash-hero{margin:4px 0 24px}
.dash-hero .eyebrow{margin-bottom:4px}
.dash-hero h1{font-size:clamp(1.75rem,1rem + 2.6vw,2.45rem);font-weight:800;letter-spacing:-.03em;line-height:1.05;margin:2px 0 8px;color:var(--navy)}
.dash-hero .grad{background:linear-gradient(92deg,var(--navy),var(--burgundy));-webkit-background-clip:text;background-clip:text;color:transparent}
.dash-hero .sub{color:var(--slate);font-size:1.02rem;text-align:left;margin:0;max-width:580px}

.orghero{position:relative;padding:26px 26px 20px;overflow:hidden}
.orghero.hasaccent::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--orgaccent,var(--navy))}
.orghero-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.orghero-id{display:flex;align-items:center;gap:15px;min-width:0}
.orghero-logo{height:68px;width:68px;object-fit:contain;border-radius:15px;background:#fff;border:1px solid var(--line);padding:7px;flex:none;box-shadow:var(--sh-1)}
.orghero-logo.placeholder{display:grid;place-items:center;font-weight:800;font-size:1.95rem;color:var(--navy);background:radial-gradient(120% 120% at 30% 20%,#eef4fe,#e3ecfb);padding:0}
.orghero-meta{min-width:0}
.orghero-name{font-size:1.45rem;font-weight:800;letter-spacing:-.02em;color:var(--navy);line-height:1.12}
.newel{width:auto;margin:0;padding:11px 18px;white-space:nowrap;font-size:.94rem;box-shadow:0 8px 20px rgba(164,22,26,.26)}
.orghero-body{margin-top:18px}
.orgkpis{display:flex;flex-wrap:wrap;align-items:stretch;justify-content:center;margin:2px 0 18px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#fff,var(--soft));overflow:hidden}
.okpi{flex:1 1 90px;min-width:84px;text-align:center;padding:16px 10px}
.okpi + .okpi{border-left:1px solid var(--line)}
.okpi .n{display:block;font-size:1.7rem;font-weight:800;letter-spacing:-.02em;color:var(--navy);line-height:1}
.okpi .l{display:block;margin-top:6px;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--slate)}
@media (max-width:560px){ .okpi{flex-basis:45%} .okpi:nth-child(3){border-left:none} }
.sectheader{font-size:.74rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-deep);margin:24px 0 10px}
.sectheader:first-child{margin-top:2px}
.ellist{display:flex;flex-direction:column;gap:8px}
.elrow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;text-decoration:none;color:var(--navy);font-weight:600;transition:transform .14s ease,box-shadow .15s ease,border-color .15s}
.elrow:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--navy);text-decoration:none}
.elrow-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.elrow-go{color:var(--slate);font-weight:800}
.elrow:hover .elrow-go{color:var(--burgundy)}
.emptyel{text-align:center;padding:26px 16px;border:1px dashed var(--line);border-radius:14px;background:var(--soft)}
.emptyel-ic{font-size:2.1rem;margin-bottom:4px}
.orgcard-foot{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:16px;padding-top:13px;border-top:1px solid var(--line)}
@media (prefers-reduced-motion:no-preference){
  .reveal{animation:dashRise .5s cubic-bezier(.2,.7,.2,1) both}
  @keyframes dashRise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
}
@media (max-width:560px){ .orghero-head{align-items:flex-start} .newel{width:100%} }

/* ---- settings: read-first cards with edit / save ---- */
.setwrap{display:flex;flex-direction:column;gap:16px}
.setcard{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh-2);padding:22px 24px}
@media (prefers-reduced-motion:no-preference){
  .setcard{animation:setIn .5s cubic-bezier(.2,.7,.2,1) both}
  @keyframes setIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
}
.setcard-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.setcard-head h3{font-size:1.04rem;font-weight:800;letter-spacing:-.012em;margin:0;color:var(--navy)}
.setcard-sub{color:var(--slate);font-size:.86rem;margin:2px 0 0;line-height:1.5}
.setcard-body{margin-top:12px}
.setcard .msg{margin-top:12px}
.editbtn{background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 14px;font-family:inherit;font-size:.82rem;font-weight:700;color:var(--navy);cursor:pointer;white-space:nowrap;transition:transform .14s,box-shadow .15s,border-color .15s}
.editbtn:hover{transform:translateY(-1px);box-shadow:var(--sh-1);border-color:#cdd6e2}
.savebar{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:16px}
.btn-sec.primary{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn-sec.primary:hover{filter:brightness(1.09)}
.btn-ghost.danger{color:var(--burgundy)}

/* read-view values */
.bigval{font-size:1.18rem;font-weight:800;letter-spacing:-.01em;color:var(--navy)}
.emailrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.vbadge,.ubadge{display:inline-flex;align-items:center;font-size:.68rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:3px 9px;border-radius:999px}
.vbadge{background:#e8f5ee;color:#155f37;border:1px solid #bfe3cd}
.ubadge{background:#fff5e6;color:#8a5a00;border:1px solid #f3dcae}

/* edit-mode fields */
.editgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:520px){ .editgrid{grid-template-columns:1fr} }
.field label{display:block;font-size:.78rem;font-weight:700;color:var(--slate);margin:0 0 5px;text-transform:none;letter-spacing:.005em}

/* plan / tier */
.planhead{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;justify-content:space-between}
.plannow{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.plannow .tier{font-size:1.4rem;font-weight:800;letter-spacing:-.018em;color:var(--navy)}
.plannow .price{color:var(--slate);font-weight:700;font-size:.88rem}
.featlist{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}
.featlist li{position:relative;padding-left:26px;font-size:.93rem;color:var(--ink)}
.featlist li::before{content:"";position:absolute;left:0;top:1px;width:18px;height:18px;border-radius:50%;background:var(--success);
  -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='black' d='M9 16.2l-3.5-3.5L4 14.2l5 5 11-11-1.4-1.4z'/></svg>") center/12px no-repeat;
  mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='black' d='M9 16.2l-3.5-3.5L4 14.2l5 5 11-11-1.4-1.4z'/></svg>") center/12px no-repeat}
.plan-catalog{display:grid;grid-template-columns:repeat(auto-fill,minmax(218px,1fr));gap:12px;margin-top:14px}
.plancard{border:1px solid var(--line);border-radius:14px;padding:16px;background:linear-gradient(180deg,#fff,var(--soft));display:flex;flex-direction:column;gap:7px;box-shadow:var(--sh-1)}
.plancard.current{border-color:var(--gold);box-shadow:0 0 0 2px rgba(176,136,75,.2)}
.plancard .pc-name{font-weight:800;color:var(--navy);font-size:1rem}
.plancard .pc-tag{font-size:.7rem;font-weight:800;color:var(--gold-deep);text-transform:uppercase;letter-spacing:.05em}
.plancard .pc-price{font-size:1.45rem;font-weight:800;color:var(--ink);letter-spacing:-.02em}
.plancard .pc-price span{font-size:.76rem;font-weight:600;color:var(--slate);letter-spacing:0}
.plancard ul{list-style:none;margin:5px 0 0;padding:0;display:grid;gap:5px}
.plancard ul li{font-size:.82rem;color:var(--slate);padding-left:15px;position:relative;line-height:1.4}
.plancard ul li::before{content:"";position:absolute;left:2px;top:7px;width:5px;height:5px;border-radius:50%;background:var(--gold)}
.plancard .pc-cta{margin-top:auto;padding-top:10px}
.pc-btn{width:100%;background:var(--navy);color:#fff;border:none;border-radius:10px;padding:10px;font-weight:700;font-family:inherit;font-size:.85rem;cursor:pointer;transition:filter .15s,transform .14s}
.pc-btn:hover{filter:brightness(1.1);transform:translateY(-1px)}
.pc-btn:disabled{opacity:.6;cursor:default;transform:none}
.pc-current{width:100%;text-align:center;padding:10px;border-radius:10px;background:#eef2f7;color:var(--slate);font-weight:700;font-size:.8rem}

/* request status banners */
.reqbanner{padding:12px 14px;border-radius:11px;font-size:.9rem;font-weight:600;margin-top:14px;line-height:1.5}
.reqbanner.pending{background:#fff5e6;color:#8a5a00;border:1px solid #f3dcae}
.reqbanner.declined{background:#fdecec;color:#7d1417;border:1px solid #f5c9ca}

/* org grouping when there are several */
.orgname-divider{font-size:1rem;font-weight:800;color:var(--navy);letter-spacing:-.01em;margin:10px 2px 0;padding-top:8px}

/* free-tier branding nudge on the organizer's election page */
.brandnudge{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 18px;padding:11px 15px;border:1px solid #f3dcae;background:#fff8ec;border-radius:11px;font-size:.88rem;color:#8a5a00}
.brandnudge a{color:var(--burgundy);font-weight:700;text-decoration:none}
.brandnudge a:hover{text-decoration:underline}

/* admin: live demo activity (homepage-demo social proof) */
.demoact .livedot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--success);margin-right:8px;vertical-align:middle}
@media (prefers-reduced-motion:no-preference){
  .demoact .livedot{animation:lpulse 1.6s infinite}
  @keyframes lpulse{0%{box-shadow:0 0 0 0 rgba(27,138,75,.45)}70%{box-shadow:0 0 0 7px rgba(27,138,75,0)}100%{box-shadow:0 0 0 0 rgba(27,138,75,0)}}
}
.demo-cats{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
.demo-cat{font-size:.76rem;font-weight:800;letter-spacing:.02em;color:var(--gold-deep);background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:4px 11px}
.demoact .clead{margin-top:16px}
.demoact .ctitle{font-weight:800;color:var(--navy);font-size:.92rem;margin:0 0 9px}
.demobar-row{display:grid;grid-template-columns:150px 1fr 46px;align-items:center;gap:11px;margin:7px 0;font-size:.85rem}
.demobar-row .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.demobar{height:10px;background:#eef2f7;border-radius:6px;overflow:hidden}
.demobar > i{display:block;height:100%;background:linear-gradient(90deg,var(--navy),#2c5b8a);border-radius:6px;transition:width .5s ease}
.demobar-row .pct{text-align:right;color:var(--slate);font-weight:700;font-variant-numeric:tabular-nums}
.demobar-row.win .nm{font-weight:800;color:var(--navy)}
.demobar-row.win > .demobar > i{background:linear-gradient(90deg,#1b8a4b,#3bb36b)}
@media (max-width:520px){ .demobar-row{grid-template-columns:110px 1fr 40px;gap:8px} }

/* ---- organizer election page (premium) ---- */
.elhero{background:linear-gradient(180deg,#fff,var(--soft))}
.elhero-title{font-size:clamp(1.55rem,1rem + 2.3vw,2.25rem);font-weight:800;letter-spacing:-.02em;color:var(--navy);line-height:1.08;margin:0}
.elhero-desc{color:var(--slate);margin:12px 0 0;max-width:640px;line-height:1.55}
.btn-results{display:inline-block;background:linear-gradient(180deg,var(--navy),#0f2742);color:#fff;font-weight:700;font-size:.92rem;padding:12px 20px;border-radius:12px;text-decoration:none;box-shadow:0 8px 20px rgba(21,49,79,.22);transition:transform .14s ease,box-shadow .15s ease}
.btn-results:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(21,49,79,.3)}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.card-head h3{font-size:1.04rem;font-weight:800;letter-spacing:-.012em;color:var(--navy);margin:0}
.vcount{font-size:.8rem;font-weight:700;color:var(--gold-deep);background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:3px 11px;white-space:nowrap}
.togglerow{display:flex;gap:10px;align-items:flex-start;margin-top:14px;font-size:.86rem;color:var(--slate);line-height:1.45;cursor:pointer}
.togglerow input{margin-top:2px;flex:none}
.brandfold{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.brandfold summary{cursor:pointer;font-weight:600;color:var(--navy)}

/* categories + contests */
.catchip{display:inline-block;font-size:.82rem;font-weight:700;color:var(--navy);background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 13px;box-shadow:var(--sh-1)}
.contest{background:linear-gradient(180deg,#fff,#fcfdff)}
.contest-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.contest-top h4{margin:0;font-size:1.02rem;font-weight:800;color:var(--navy);letter-spacing:-.01em}
.methodtag{flex:none;font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--gold-deep);background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:4px 10px}
.candlist{display:grid;gap:7px}
.candrow{display:flex;align-items:center;gap:11px;font-size:.92rem;color:var(--ink)}
.candnum{flex:none;width:22px;height:22px;border-radius:7px;background:var(--soft);border:1px solid var(--line);display:grid;place-items:center;font-size:.74rem;font-weight:800;color:var(--slate)}

/* roster rows */
.vlist{margin-top:6px}
.vrow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 2px;border-top:1px solid var(--line);flex-wrap:wrap}
.vrow:first-child{border-top:none}
.vrow-id{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;min-width:0}
.vname{font-weight:700;color:var(--ink)}
.vemail{color:var(--slate);font-size:.9rem}
.vcat{font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--gold-deep)}

/* turnstile slot (bot check) on auth pages */
.ts-slot{margin:14px 0 4px;display:flex;justify-content:center;min-height:0}
.ts-slot:empty{display:none}
/* Federated sign-in (Google) — button + "or" divider above the email form */
.oauth{margin:6px 0 2px}
.btn-oauth{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:12px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;color:#1f2a37;font-weight:600;font-size:.98rem;font-family:inherit;text-decoration:none;transition:background .15s,border-color .15s,box-shadow .15s,transform .14s}
.btn-oauth:hover{background:#f8fafc;border-color:#cdd5df;box-shadow:0 6px 16px rgba(2,6,23,.07);transform:translateY(-1px)}
.btn-oauth:active{transform:translateY(0)}
.btn-oauth .g{flex:0 0 auto}
.oauth-or{display:flex;align-items:center;gap:12px;color:var(--slate);font-size:.8rem;letter-spacing:.02em;margin:16px 2px 6px}
.oauth-or::before,.oauth-or::after{content:"";flex:1;height:1px;background:var(--line)}
/* MFA: remember checkbox (challenge page) + security section in settings */
.remember{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--slate);margin:12px 0 2px}
.remember input{width:16px;height:16px}
.pk-list{display:flex;flex-direction:column;gap:8px}
.pk-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px}
.pk-name{font-weight:600}
.pk-meta{color:var(--slate);font-size:.82rem;margin-top:2px}
.btn-ghost.small,.btn-sec.small{padding:7px 13px;font-size:.85rem}
.seckey{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.seckey code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.02rem;letter-spacing:.06em;background:var(--wash,#f5f7fa);border:1px solid var(--line);border-radius:8px;padding:8px 12px;word-break:break-all}
.totp-setup{margin-top:6px}
.qrbox{display:inline-block;padding:12px;background:#fff;border:1px solid var(--line);border-radius:12px;line-height:0}
.qrbox svg{display:block}
.backupbox{margin-top:12px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--wash,#f7f9fc)}
.backupgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px;margin-bottom:12px}
.backupgrid code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.98rem;letter-spacing:.05em}
