/* Certificate designs — rendered when a number/QR is looked up. */
:root{--cc-teal:#0C3B42;--cc-brass:#B0842F;--cc-ink:#14232B;--cc-muted:#5D6B6E;
  --cc-line:#dce4e3;--cc-surface:#F3F6F5;--cc-green:#1C7A4E;--cc-red:#B23A2E;--cc-amber:#B0842F}

.ca-cert-stage{position:relative;max-width:920px;margin:0 auto;font-family:"IBM Plex Sans",system-ui,sans-serif}
.ca-cert{position:relative;background:#fff;overflow:hidden}
.ca-cert-qr{width:104px;height:104px}
.ca-cert-qr svg{width:100%;height:100%;display:block}
.ca-cert-num{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--cc-muted);letter-spacing:.02em}
.ca-cert-fp{margin-top:14px;font-family:"IBM Plex Mono",monospace;font-size:11px;color:#9aa7a6;text-align:center}

/* branded CertAttestor "Verified" seal — in-flow beneath the record, never covers content */
.ca-cert-vseal{display:flex;justify-content:center;margin:18px auto 0}
.ca-cert-vseal svg{width:100%;max-width:268px;height:auto;filter:drop-shadow(0 2px 10px rgba(12,59,66,.10))}

/* revoked/invalid: a stamp printed ACROSS the document */
.ca-cert-stamp{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;
  align-items:center;justify-content:center;pointer-events:none;transform:rotate(-13deg)}
.ca-cert-stamp-t{font-family:"Archivo",sans-serif;font-weight:800;text-transform:uppercase;
  font-size:clamp(2.2rem,9vw,4.6rem);letter-spacing:.06em;color:rgba(178,58,46,.92);
  border:6px solid rgba(178,58,46,.85);border-radius:14px;padding:.06em .3em;background:rgba(255,255,255,.35)}
.ca-cert-stamp-s{margin-top:12px;font:800 clamp(.8rem,2.4vw,1.05rem)/1 "IBM Plex Sans",system-ui,sans-serif;
  text-transform:uppercase;letter-spacing:.08em;color:rgba(178,58,46,.92)}

.ca-cert-actions{margin-top:1.35rem;display:flex;gap:.55rem;justify-content:center;align-items:center;flex-wrap:wrap}
.ca-act{display:inline-flex;align-items:center;gap:.5rem;height:42px;padding:0 1.05rem;border-radius:9px;font:600 .92rem/1 "IBM Plex Sans",system-ui,sans-serif;cursor:pointer;text-decoration:none;border:1.5px solid transparent;transition:background-color .15s,border-color .15s,color .15s}
.ca-act svg{width:17px;height:17px;flex:0 0 auto}
.ca-act:focus-visible{outline:3px solid var(--cc-brass);outline-offset:2px}
.ca-act--primary{background:var(--cc-teal);color:#fff;border-color:var(--cc-teal)}
.ca-act--primary:hover{background:#0a323a;border-color:#0a323a}
.ca-act--secondary{background:#fff;color:var(--cc-teal);border-color:var(--cc-line)}
.ca-act--secondary:hover{border-color:var(--cc-teal);background:var(--cc-surface)}
.ca-act--ghost{background:transparent;color:var(--cc-teal);border-color:transparent;padding:0 .7rem}
.ca-act--ghost:hover{background:var(--cc-surface)}

/* ---------- Classic ---------- */
.ca-cert-classic{border:2px solid var(--cc-teal);padding:14px}
.ca-cert-classic::after{content:"";position:absolute;inset:22px;border:1px solid var(--cc-brass);pointer-events:none}
.ca-cert-classic{text-align:center;padding:48px 56px}
.ca-cert-classic .cc-mark{display:flex;justify-content:center;margin-bottom:10px}
.ca-cert-classic .cc-brand{font-family:"Archivo",sans-serif;font-weight:800;color:var(--cc-teal);letter-spacing:.02em}
.ca-cert-classic .cc-kicker{font-family:"IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.18em;
  font-size:12px;color:var(--cc-brass);margin:14px 0 22px}
.ca-cert-classic .cc-intro{color:var(--cc-muted);font-size:.95rem}
.ca-cert-classic .cc-holder{font-family:"Archivo",sans-serif;font-weight:800;font-size:clamp(1.8rem,4vw,2.8rem);
  color:var(--cc-ink);margin:.35rem 0}
.ca-cert-classic .cc-body{color:var(--cc-muted);font-size:.95rem}
.ca-cert-classic .cc-type{font-size:1.3rem;font-weight:600;color:var(--cc-teal);margin:.35rem 0 30px}
.ca-cert-classic .cc-foot{display:flex;justify-content:space-between;align-items:flex-end;text-align:left;margin-top:10px}
.ca-cert-classic .cc-meta{display:grid;grid-template-columns:auto 1fr;gap:2px 14px;font-size:.85rem;color:var(--cc-ink)}
.ca-cert-classic .cc-meta span{color:var(--cc-muted)}
.ca-cert-classic .cc-qr{text-align:center}

/* ---------- Modern ---------- */
.ca-cert-modern{border:1px solid var(--cc-line);border-radius:14px}
.ca-cert-modern .cm-band{background:linear-gradient(135deg,var(--cc-teal),#0a323a);color:#fff;
  padding:24px 32px;display:flex;align-items:center;gap:16px}
.ca-cert-modern .cm-brand{font-family:"Archivo",sans-serif;font-weight:800;font-size:1.2rem}
.ca-cert-modern .cm-kicker{font-family:"IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.16em;
  font-size:11px;color:#d8b064}
.ca-cert-modern .cm-body{display:flex;gap:32px;padding:36px 32px}
.ca-cert-modern .cm-main{flex:1}
.ca-cert-modern .cm-intro{color:var(--cc-muted);font-size:.9rem}
.ca-cert-modern .cm-holder{font-family:"Archivo",sans-serif;font-weight:800;font-size:clamp(1.7rem,3.6vw,2.5rem);color:var(--cc-ink);margin:.2rem 0}
.ca-cert-modern .cm-type{font-size:1.2rem;color:var(--cc-teal);font-weight:600;margin-bottom:20px}
.ca-cert-modern .cm-meta{display:flex;flex-wrap:wrap;gap:8px 22px;color:var(--cc-muted);font-size:.88rem}
.ca-cert-modern .cm-side{width:150px;text-align:center;border-left:1px solid var(--cc-line);padding-left:24px;display:flex;flex-direction:column;align-items:center;gap:8px}

/* ---------- Elegant ---------- */
.ca-cert-elegant{background:#fbf8f1;border:1px solid #e6dcc4;padding:52px 56px;text-align:center}
.ca-cert-elegant .ce-corner{position:absolute;width:34px;height:34px;border:2px solid var(--cc-brass)}
.ca-cert-elegant .ce-corner.tl{top:16px;left:16px;border-right:0;border-bottom:0}
.ca-cert-elegant .ce-corner.tr{top:16px;right:16px;border-left:0;border-bottom:0}
.ca-cert-elegant .ce-corner.bl{bottom:16px;left:16px;border-right:0;border-top:0}
.ca-cert-elegant .ce-corner.br{bottom:16px;right:16px;border-left:0;border-top:0}
.ca-cert-elegant .ce-mark{display:flex;justify-content:center}
.ca-cert-elegant .ce-brand{font-family:"Archivo",sans-serif;font-weight:700;color:var(--cc-teal);margin-top:6px}
.ca-cert-elegant .ce-rule{width:64px;height:2px;background:var(--cc-brass);margin:14px auto}
.ca-cert-elegant .ce-kicker{font-family:"IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.2em;font-size:12px;color:var(--cc-brass)}
.ca-cert-elegant .ce-intro{color:var(--cc-muted);margin-top:18px}
.ca-cert-elegant .ce-holder{font-family:"Archivo",sans-serif;font-weight:800;font-size:clamp(1.9rem,4.2vw,3rem);color:var(--cc-ink);margin:.3rem 0}
.ca-cert-elegant .ce-type{font-size:1.25rem;color:var(--cc-teal);font-weight:600;margin-bottom:28px}
.ca-cert-elegant .ce-foot{display:flex;justify-content:space-between;align-items:flex-end;text-align:left}
.ca-cert-elegant .ce-meta{display:flex;flex-direction:column;font-size:.9rem;color:var(--cc-ink)}
.ca-cert-elegant .ce-meta span{color:var(--cc-muted)}

/* ---------- Minimal ---------- */
.ca-cert-minimal{border:1px solid var(--cc-line);border-radius:12px;padding:40px 40px}
.ca-cert-minimal .cn-top{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--cc-line);padding-bottom:14px}
.ca-cert-minimal .cn-brand{font-family:"Archivo",sans-serif;font-weight:800;color:var(--cc-teal)}
.ca-cert-minimal .cn-kicker{font-family:"IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.16em;font-size:11px;color:var(--cc-muted)}
.ca-cert-minimal .cn-holder{font-family:"Archivo",sans-serif;font-weight:800;font-size:clamp(1.7rem,3.6vw,2.4rem);color:var(--cc-ink);margin:26px 0 4px}
.ca-cert-minimal .cn-type{font-size:1.15rem;color:var(--cc-teal);margin-bottom:26px}
.ca-cert-minimal .cn-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:24px}
.ca-cert-minimal .cn-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px 26px;font-size:.88rem}
.ca-cert-minimal .cn-meta span{display:block;color:var(--cc-muted);font-size:.78rem}
.ca-cert-minimal .cn-meta b{color:var(--cc-ink)}

@media(max-width:640px){
  .ca-cert-stage,.ca-cert-stage *{box-sizing:border-box}
  .ca-cert-stage{max-width:100%}
  .ca-cert-classic{padding:32px 20px}
  .ca-cert-elegant{padding:34px 22px}
  .ca-cert-modern .cm-body{flex-direction:column;padding:24px 20px;gap:20px}
  .ca-cert-minimal{padding:26px 20px}
  .ca-cert-classic .cc-holder,.ca-cert-elegant .ce-holder,.ca-cert-modern .cm-holder,.ca-cert-minimal .cn-holder{font-size:1.6rem;word-break:break-word}
  .ca-cert-modern .cm-side{width:auto;border-left:0;border-top:1px solid var(--cc-line);padding:20px 0 0;flex-direction:row;justify-content:center;gap:20px}
  .ca-cert-minimal .cn-foot{flex-direction:column;align-items:flex-start}
  .ca-cert-actions{flex-wrap:wrap;gap:.5rem}
  .ca-act{height:40px;font-size:.88rem;padding:0 .85rem}
  .ca-act--ghost{padding:0 .55rem}
}
@media print{
  body *{visibility:hidden!important}
  .ca-cert-stage,.ca-cert-stage *{visibility:visible!important}
  .ca-cert-stage{position:absolute;left:0;top:0;width:100%;margin:0}
  .ca-cert-anchor,.ca-cert-actions,.no-print{display:none!important}
  .ca-cert-vseal svg{filter:none}
  .ca-cert{border-color:#000 !important;box-shadow:none!important}
  @page{margin:12mm}
}
/* transcript / details table */
.ca-cert-details{max-width:920px;margin:18px auto 0}
.ca-tor-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid #e3e9e8;border-radius:8px}
.ca-tor{width:100%;border-collapse:collapse;font-size:14px;background:#fff}
.ca-tor th,.ca-tor td{padding:8px 12px;border-bottom:1px solid #eef2f1;text-align:left;vertical-align:top}
.ca-tor thead th{background:#f3f6f5;font-weight:700;color:#14232B;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid #dce4e3}
.ca-tor tbody tr:last-child td{border-bottom:0}
.ca-tor-note{max-width:920px;margin:8px auto 0;color:#5D6B6E;font-size:12.5px;font-style:italic}
/* printable blockchain-anchor identity block */
.ca-cert-anchor{max-width:640px;margin:20px auto 0;padding:14px 18px;border:1px solid #dce4e3;border-left:3px solid var(--ca-brass,#B0842F);border-radius:10px;background:#fafcfb}
.ca-anchor-h{display:flex;align-items:center;gap:8px;font-family:"Archivo",sans-serif;font-weight:700;font-size:13px;letter-spacing:.02em;color:#0C3B42;text-transform:uppercase;margin-bottom:10px}
.ca-anchor-h svg{width:16px;height:16px;flex:0 0 auto;color:var(--ca-brass,#B0842F)}
.ca-anchor-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 22px;margin:0}
.ca-anchor-row{display:flex;flex-direction:column;gap:1px;min-width:0}
.ca-anchor-row dt{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:#6a787b;font-weight:600}
.ca-anchor-row dd{margin:0;font-size:13px;color:#14232B;overflow-wrap:anywhere}
.ca-anchor-row .mono,.ca-cert-anchor .mono{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px}
.ca-anchor-row a{color:#0C3B42;text-decoration:none;border-bottom:1px solid rgba(12,59,66,.25)}
.ca-anchor-row a:hover{color:var(--ca-brass,#B0842F)}
.ca-anchor-note{margin:11px 0 0;font-size:11px;line-height:1.5;color:#6a787b}
@media (max-width:560px){.ca-anchor-grid{grid-template-columns:1fr}}
/* client-side proof verification panel */
.ca-proof{margin:16px auto 0;max-width:520px;padding:14px 16px;background:#fff;border:1px solid var(--cc-line);border-radius:12px;font:500 13.5px/1.5 "IBM Plex Sans",system-ui,sans-serif;color:var(--cc-ink);box-shadow:0 1px 2px rgba(20,35,43,.05)}
.ca-proof.checking{color:var(--cc-muted)}
.ca-proof.done{border-color:#cfe6da;background:linear-gradient(180deg,#fff,#f6fbf8)}
.ca-proof.proof-bad{border-color:#f0d6d2;background:linear-gradient(180deg,#fff,#fdf6f5)}
.ca-proof-head{display:flex;align-items:center;gap:8px;margin-bottom:9px;font-weight:700;font-size:13px;color:var(--cc-ink)}
.ca-proof-head svg{width:18px;height:18px;color:var(--cc-green);flex:0 0 auto}
.ca-proof.proof-bad .ca-proof-head svg{color:var(--cc-red)}
.ca-proof-row{display:flex;gap:8px;align-items:center;padding:3px 0;overflow-wrap:anywhere}
.ca-proof-row svg{width:16px;height:16px;flex:0 0 auto}
.ca-proof-row.ok{color:var(--cc-green)}.ca-proof-row.bad{color:var(--cc-red)}.ca-proof-row.warn{color:#8a5a00}.ca-proof-row.muted{color:var(--cc-muted)}
.ca-proof-foot{margin-top:9px;padding-top:9px;border-top:1px solid var(--cc-line);font-size:12px;color:var(--cc-muted)}
.ca-proof-foot.bad{color:var(--cc-red);font-weight:600;border-top-color:#f0d6d2}
.ca-docfile{margin:12px auto 0;max-width:520px;padding:12px 16px;background:var(--cc-surface);border:1px solid var(--cc-line);border-radius:12px;font:500 13px/1.5 "IBM Plex Sans",system-ui,sans-serif;color:var(--cc-ink)}
.ca-docfile-h{font-weight:700;font-size:12px;letter-spacing:.02em;color:var(--cc-ink);margin-bottom:4px}
.ca-docfile-hash{font-size:11.5px;color:var(--cc-muted);overflow-wrap:anywhere}
.ca-docfile-hash code{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--cc-teal)}
.ca-docfile-badge{margin-top:6px;font-size:12.5px;font-weight:600}
.ca-docfile-ok{color:var(--cc-green)}.ca-docfile-bad{color:var(--cc-red)}.ca-docfile-muted{color:var(--cc-muted);font-weight:500}
.ca-cert-stage.proof-unverified{outline:2px solid #B23A2E;outline-offset:6px}

/* ---- Membership / ID card (tpl_card) ---- */
.ca-cert-card{max-width:520px;margin:0 auto;background:#fff;border:1px solid #e4ebea;border-radius:16px;overflow:hidden;box-shadow:0 20px 50px -30px rgba(12,59,66,.5);font-family:'IBM Plex Sans',system-ui,sans-serif}
.ca-cert-card .cd-head{display:flex;align-items:center;gap:12px;background:radial-gradient(140% 120% at 100% 0%,#12525b,#0C3B42);color:#fff;padding:16px 20px;border-bottom:3px solid #B0842F}
.ca-cert-card .cd-mark{width:38px;height:38px;flex:0 0 auto}
.ca-cert-card .cd-mark svg{width:100%;height:100%}
.ca-cert-card .cd-brand{font-family:'Archivo',sans-serif;font-weight:800;font-size:16px;line-height:1.1}
.ca-cert-card .cd-kicker{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#e3ba6e;margin-top:2px}
.ca-cert-card .cd-body{display:flex;gap:18px;align-items:flex-start;padding:20px}
.ca-cert-card .cd-main{flex:1;min-width:0}
.ca-cert-card .cd-label{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#5D6B6E}
.ca-cert-card .cd-holder{font-family:'Archivo',sans-serif;font-weight:800;font-size:26px;line-height:1.1;color:#14232B;margin:2px 0 4px;word-break:break-word}
.ca-cert-card .cd-type{font-size:14px;font-weight:600;color:#0C3B42;margin-bottom:12px}
.ca-cert-card .cd-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
.ca-cert-card .cd-meta>div{display:flex;flex-direction:column}
.ca-cert-card .cd-meta span{font-family:'IBM Plex Mono',monospace;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:#8a999b}
.ca-cert-card .cd-meta b{font-size:13px;color:#14232B;font-weight:600}
.ca-cert-card .cd-qr{flex:0 0 auto;width:104px;text-align:center}
.ca-cert-card .cd-qr .ca-cert-qr,.ca-cert-card .cd-qr canvas,.ca-cert-card .cd-qr svg,.ca-cert-card .cd-qr img{width:104px;height:104px}
.ca-cert-card .cd-loyalty{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch;margin:0 0 14px}
.ca-cert-card .cd-loy-cell{flex:1 1 0;min-width:92px;display:flex;flex-direction:column;justify-content:center;padding:10px 14px;border-radius:12px;background:radial-gradient(140% 120% at 100% 0%,#12525b,#0C3B42);color:#fff}
.ca-cert-card .cd-loy-cell b{font-family:'Archivo',sans-serif;font-weight:800;font-size:24px;line-height:1}
.ca-cert-card .cd-loy-cell span{font-family:'IBM Plex Mono',monospace;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:#e3ba6e;margin-top:4px}
.ca-cert-card .cd-loy-tier{background:#fff;border:1px solid #e4ebea}
.ca-cert-card .cd-loy-tier b{color:#0C3B42}
.ca-cert-card .cd-loy-tier span{color:#8a999b}
.ca-cert-card .cd-loy-note{flex:1 1 100%;font-family:'IBM Plex Mono',monospace;font-size:9.5px;letter-spacing:.06em;color:#8a999b}
@media(max-width:460px){.ca-cert-card .cd-body{flex-direction:column;align-items:center;text-align:center}.ca-cert-card .cd-meta{text-align:left}.ca-cert-card .cd-loyalty{justify-content:center}}

/* ---- Event ticket (tpl_ticket) ---- */
.ca-cert-ticket{max-width:560px;margin:0 auto;background:#fff;border:1px solid #e4ebea;border-radius:14px;overflow:hidden;box-shadow:0 20px 50px -30px rgba(12,59,66,.5);font-family:'IBM Plex Sans',system-ui,sans-serif}
.ca-cert-ticket .ck-row{display:flex;align-items:stretch}
.ca-cert-ticket .ck-main{flex:1;min-width:0;padding:20px 22px;border-top:4px solid #B0842F}
.ca-cert-ticket .ck-kicker{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#B0842F}
.ca-cert-ticket .ck-event{font-family:'Archivo',sans-serif;font-weight:800;font-size:24px;line-height:1.12;color:#14232B;margin:4px 0 12px;word-break:break-word}
.ca-cert-ticket .ck-particulars{display:flex;flex-wrap:wrap;gap:8px 22px;margin-bottom:12px}
.ca-cert-ticket .ck-particulars>div{display:flex;flex-direction:column}
.ca-cert-ticket .ck-particulars span{font-family:'IBM Plex Mono',monospace;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:#8a999b}
.ca-cert-ticket .ck-particulars b{font-size:14px;color:#14232B;font-weight:600}
.ca-cert-ticket .ck-holder{display:flex;flex-direction:column;padding-top:10px;border-top:1px solid #eef2f1}
.ca-cert-ticket .ck-holder span{font-family:'IBM Plex Mono',monospace;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:#8a999b}
.ca-cert-ticket .ck-holder b{font-family:'Archivo',sans-serif;font-weight:700;font-size:17px;color:#0C3B42}
.ca-cert-ticket .ck-org{font-size:12.5px;color:#5D6B6E;margin-top:6px}
.ca-cert-ticket .ck-stub{flex:0 0 132px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:16px 12px;background:#F3F6F5;border-left:2px dashed #cfd9d8;text-align:center}
.ca-cert-ticket .ck-mark{width:30px;height:30px}
.ca-cert-ticket .ck-mark svg{width:100%;height:100%}
.ca-cert-ticket .ck-stub .ca-cert-qr,.ca-cert-ticket .ck-stub canvas,.ca-cert-ticket .ck-stub svg,.ca-cert-ticket .ck-stub img{width:100px;height:100px}
@media(max-width:480px){.ca-cert-ticket .ck-row{flex-direction:column}.ca-cert-ticket .ck-stub{flex-basis:auto;border-left:0;border-top:2px dashed #cfd9d8;flex-direction:row;gap:12px}}

.ca-cert-gwallet{display:inline-flex;align-items:center;text-decoration:none;line-height:0}
.ca-cert-gwallet img{height:44px;width:auto;display:block}
.ca-cert-actions{align-items:center}

.ca-cert-awallet{display:inline-flex;align-items:center;text-decoration:none;line-height:0}
.ca-cert-awallet img{height:44px;width:auto;display:block}

.ca-cert-calling .cc-org{font-size:14px;font-weight:600;color:#0C3B42;margin:2px 0 12px}
.ca-cert-calling .cd-holder{margin-bottom:2px}
.ca-cert-calling .cd-type{margin-bottom:0}
.ca-cert-calling .cc-contacts b{word-break:break-word}

/* verify-page: re-check your file against a proof */
.ca-proof-recheck{margin-top:12px}
.ca-proof-recheck .rc-drop{border:1.5px dashed #c3d2d0;border-radius:10px;padding:16px;text-align:center;cursor:pointer;color:#0C3B42;font-size:14px}
.ca-proof-recheck .rc-drop:hover,.ca-proof-recheck .rc-drop.over{border-color:#B0842F;background:#faf7f0}
.ca-proof-recheck .rc-out{margin-top:10px;font-size:14px;font-weight:600;display:none}
.ca-proof-recheck .rc-out.show{display:block}
.ca-proof-recheck .rc-out.match{color:#1C7A4E}
.ca-proof-recheck .rc-out.nomatch{color:#B23A2E}
