/* ============================================================================
   VoterBiz — case-study pages. Layers on top of site.css (same tokens/fonts).
   ============================================================================ */

/* ---------- Hero (built on .subhero) ---------- */
.chero{padding-bottom:clamp(48px,7vw,72px)}
.chero .facts{display:flex;flex-wrap:wrap;gap:36px;margin-top:38px}
.chero .fact .k{font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--blue-tint);margin-bottom:7px}
.chero .fact .v{font-size:.98rem;color:#fff;font-weight:700}
.chero .fact .v .live{display:inline-flex;align-items:center;gap:7px}
.chero .fact .v .live i{width:7px;height:7px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 4px rgba(74,222,128,.18)}

/* hero shot — browser/print frame */
.shotframe{margin-top:44px;border-radius:var(--radius-lg);overflow:hidden;border:1px solid rgba(255,255,255,.14);background:#fff;box-shadow:0 40px 90px -30px rgba(4,8,20,.55)}
.shotframe .bar{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line-hair);background:var(--paper-soft)}
.shotframe .bar i{width:10px;height:10px;border-radius:50%;background:#e2e5f3;border:1px solid #d7dbee}
.shotframe .bar .u{margin-left:10px;font-size:.78rem;color:var(--ink-4);font-weight:700;letter-spacing:.02em}
.shotframe img{width:100%;display:block}

/* ---------- Body: challenge / build lead-grid ---------- */
.lead-grid{display:grid;grid-template-columns:220px 1fr;gap:44px}
.lead-grid .label{font-size:.74rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--blue-dark);padding-top:6px}
.lead-grid h2{font-family:var(--f-display);font-weight:800;font-size:clamp(1.7rem,3.4vw,2.5rem);letter-spacing:-.02em;line-height:1.1;color:var(--ink-1);margin-bottom:18px}
.lead-grid h2 .serif{color:var(--blue-dark)}
.lead-grid p{font-size:1.02rem;color:var(--ink-3);margin:0 0 14px;max-width:62ch}
.lead-grid p b{color:var(--ink-1);font-weight:700}
@media(max-width:760px){.lead-grid{grid-template-columns:1fr;gap:14px}}

/* feature cards */
.feats{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:28px}
.feat{border:1px solid var(--line-hair);border-radius:var(--radius-lg);padding:22px 24px;background:#fff;box-shadow:var(--shadow-sm)}
.feat h4{font-family:var(--f-display);font-size:1.05rem;font-weight:700;letter-spacing:-.01em;margin:0 0 8px;display:flex;align-items:center;gap:10px;color:var(--ink-1)}
.feat h4 svg{width:19px;height:19px;color:var(--blue-dark);flex:0 0 19px}
.feat p{font-size:.92rem;color:var(--ink-3);margin:0}
@media(max-width:640px){.feats{grid-template-columns:1fr}}

/* secondary shots row */
.shots{display:grid;gap:20px;margin-top:10px}
.shots.two{grid-template-columns:1fr 1fr}
.shots .s{border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--line-hair);background:#fff;box-shadow:var(--shadow-sm)}
.shots .s img{width:100%;display:block}
.shots .s .cap{padding:14px 18px;font-size:.85rem;color:var(--ink-3);border-top:1px solid var(--line-hair)}
.shots .s .cap b{color:var(--ink-1);font-weight:700}
@media(max-width:760px){.shots.two{grid-template-columns:1fr}}

/* format-labeled grid (print pieces) */
.piece-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:28px}
.piece{background:#fff;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--line-hair)}
.piece .frame{height:230px;background:var(--paper-soft);display:flex;align-items:center;justify-content:center;padding:16px}
.piece .frame img{max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 6px 16px rgba(10,18,40,.14)}
.piece .meta{padding:13px 15px 15px;border-top:1px solid var(--line-hair)}
.piece .meta .fmt{display:block;font-size:.66rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--red);margin-bottom:5px}
.piece .meta b{display:block;font-family:var(--f-display);font-weight:700;font-size:.88rem;color:var(--ink-1)}
@media(max-width:900px){.piece-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.piece-grid{grid-template-columns:1fr}}

/* delivered list */
.delivs{list-style:none;margin:26px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:12px}
.delivs li{display:flex;align-items:flex-start;gap:11px;font-size:.94rem;color:var(--ink-3);border:1px solid var(--line-hair);border-radius:var(--radius-md);padding:15px 17px;background:#fff}
.delivs li::before{content:"";flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:var(--blue-dark);margin-top:6px}
.delivs li b{color:var(--ink-1);font-weight:700}
@media(max-width:640px){.delivs{grid-template-columns:1fr}}

/* ---------- Outcome band (navy, matches site's dark bands) ---------- */
.outcome{background:var(--navy);color:#fff;position:relative;overflow:hidden}
.outcome::before{content:"";position:absolute;inset:0;background:radial-gradient(800px 420px at 12% 0%,rgba(27,79,214,.32),transparent 60%);pointer-events:none}
.outcome .wrap{position:relative;z-index:1}
.outcome .big{font-family:var(--f-display);font-weight:700;font-size:clamp(1.4rem,3vw,2.1rem);line-height:1.32;max-width:30ch;letter-spacing:-.01em}
.outcome .big em{font-style:italic;color:var(--blue-tint)}
.outcome .tags{display:flex;flex-wrap:wrap;gap:9px;margin-top:30px}
.outcome .tags b{font-weight:700;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:#dbe1f5;border:1px solid rgba(255,255,255,.22);border-radius:100px;padding:8px 15px}

/* ---------- Next case ---------- */
.nextcase{padding:56px 0;border-top:1px solid var(--line-hair);background:var(--paper)}
.nextcase a{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.nextcase .l{font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4)}
.nextcase .t{font-family:var(--f-display);font-size:clamp(1.6rem,3.4vw,2.4rem);font-weight:800;letter-spacing:-.02em;color:var(--ink-1);transition:color .25s}
.nextcase a:hover .t{color:var(--blue-dark)}
.nextcase .arrow{width:46px;height:46px;border:1.5px solid var(--line-hair);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:.25s;flex:none}
.nextcase a:hover .arrow{background:var(--blue);border-color:var(--blue)}
.nextcase .arrow svg{width:20px;height:20px;color:var(--ink-3)}
.nextcase a:hover .arrow svg{color:#fff}

/* reveal-on-scroll (same safe-by-default pattern as the homepage) */
.obs{opacity:1;transform:none}
.obs.pre{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1)}
.obs.pre.in{opacity:1;transform:none}
