/* DNI Core, front-end forms and portals.
   Uses the theme's tokens when present and falls back to its own. */
.dni-form,.dni-portal{--dni-ink:#07090A;--dni-panel:#11171A;--dni-hair:rgba(255,255,255,.10);--dni-lime:#C1FF72;--dni-mut:#8E9A94;
  color:#EDF1EC;font-family:Inter,Helvetica,Arial,sans-serif;max-width:840px}
.dni-form p{margin:0 0 18px}
.dni-form label{display:block;font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--dni-mut);margin-bottom:8px}
.dni-form input,.dni-form select,.dni-form textarea{
  width:100%;background:#0B0F10;border:1px solid var(--dni-hair);border-radius:12px;
  padding:15px 16px;font-size:16px;color:inherit}
.dni-form input:focus,.dni-form select:focus,.dni-form textarea:focus{outline:none;border-color:var(--dni-lime)}
.dni-form .dni-hint{display:block;font-size:12.5px;color:var(--dni-mut);margin-top:7px;letter-spacing:0;text-transform:none;font-weight:400}
.dni-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:620px){.dni-row{grid-template-columns:1fr}}
.dni-form hr{border:0;border-top:1px solid var(--dni-hair);margin:26px 0}
.dni-btn{display:inline-flex;align-items:center;justify-content:center;background:var(--dni-lime);color:var(--dni-ink);
  border:0;border-radius:999px;padding:15px 28px;font-weight:700;font-size:15px;cursor:pointer}
.dni-btn:hover{background:#D3FF95}
.dni-code{letter-spacing:.35em;text-transform:uppercase;font-size:22px;text-align:center}
.dni-hp{position:absolute;left:-9999px}
.dni-notice{border-radius:12px;padding:16px 18px;margin-bottom:22px;font-size:15px}
.dni-notice--ok{background:rgba(193,255,114,.10);border:1px solid rgba(193,255,114,.4);color:#DFF7B8}
.dni-notice--err{background:rgba(255,128,128,.08);border:1px solid rgba(255,128,128,.35);color:#FFC9C9}
.dni-disclosure{border:1px solid var(--dni-hair);border-radius:14px;padding:20px;margin:22px 0;background:rgba(255,255,255,.02)}
.dni-disclosure h3{margin:0 0 10px;font-size:16px}
.dni-disclosure p{margin:0;font-size:14.5px;color:var(--dni-mut)}
.dni-opt{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--dni-hair);border-radius:12px;padding:16px;margin-bottom:12px;cursor:pointer}
.dni-opt input{width:18px;height:18px;margin-top:3px;accent-color:var(--dni-lime);flex:0 0 auto}
.dni-opt small{display:block;color:var(--dni-mut);font-size:13px;margin-top:4px}
.dni-opt em{color:var(--dni-lime);font-style:normal;font-size:12px;margin-left:6px}
.dni-portal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px}
.dni-portal h2{font-size:clamp(28px,4vw,42px);margin:6px 0}
.dni-k{font-size:10.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--dni-lime)}
.dni-signout{color:var(--dni-mut);font-size:13.5px;text-decoration:underline}
.dni-prog{display:grid;grid-template-columns:repeat(23,1fr);gap:3px;margin:20px 0 28px}
.dni-prog i{height:32px;border-radius:3px;background:rgba(255,255,255,.10)}
.dni-prog i.is-done{background:rgba(193,255,114,.55)}
.dni-prog i.is-now{background:var(--dni-lime)}
.dni-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.dni-card{border:1px solid var(--dni-hair);border-radius:16px;background:var(--dni-panel);padding:22px}
.dni-card h3{margin:10px 0 8px;font-size:20px}
.dni-card p{margin:0;font-size:14px;color:var(--dni-mut)}
.dni-meter{height:10px;border-radius:999px;background:rgba(255,255,255,.10);overflow:hidden;margin:12px 0}
.dni-meter i{display:block;height:100%;background:var(--dni-lime)}
.dni-docs{list-style:none;margin:8px 0 0;padding:0}
.dni-docs li{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--dni-hair);font-size:14px}
.dni-docs li span{color:var(--dni-mut);font-size:12.5px}
.dni-attn{border:1px solid rgba(255,176,58,.4);background:rgba(255,176,58,.07);border-radius:16px;padding:22px;margin-bottom:20px}
.dni-attn h3{margin:0 0 12px;color:#FFB03A;font-size:17px}
.dni-attn p{margin:0 0 12px;font-size:14.5px}
.dni-attn small{color:var(--dni-mut)}
.dni-table{width:100%;border-collapse:collapse;font-size:14px}
.dni-table th{text-align:left;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--dni-mut);padding:14px 12px;border-bottom:1px solid var(--dni-hair)}
.dni-table td{padding:15px 12px;border-bottom:1px solid var(--dni-hair)}

/* ------------------------------------------------------------ accessibility */
.dni-form :focus-visible,.dni-portal :focus-visible{outline:2px solid var(--dni-lime);outline-offset:3px;border-radius:6px}
.dni-form button,.dni-btn{min-height:48px}
.dni-form input,.dni-form select{min-height:48px}
.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}
.dni-form fieldset{border:0;padding:0;margin:0 0 8px}
.dni-form legend{font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--dni-mut);margin-bottom:12px;padding:0}
.dni-required{color:var(--dni-lime);margin-left:4px}
.dni-notice[role=alert]{border-left-width:4px}
@media (prefers-reduced-motion: reduce){.dni-form *,.dni-portal *{transition:none!important;animation:none!important}}
@media (prefers-contrast: more){
  .dni-form input,.dni-form select,.dni-form textarea,.dni-card,.dni-opt{border-color:#fff}
  .dni-form .dni-hint,.dni-card p{color:#D6DED8}
}


/* ============================================================ LIGHT CONTEXT
   The referral form is placed inside a light section on the officers page.
   Without this the muted label colour lands on paper and fails contrast, the
   form still worked, it just could not be read by anybody who needed it to be
   readable. */
.paper .dni-form,.paper .dni-portal{color:#0A0D0E;--dni-mut:#4A544F;--dni-hair:rgba(0,0,0,.16)}
.paper .dni-form label{color:#3C4640}
.paper .dni-form .dni-hint{color:#4A544F}
.paper .dni-form input,.paper .dni-form select,.paper .dni-form textarea{background:#fff;border-color:rgba(0,0,0,.18);color:#0A0D0E}
.paper .dni-form input:focus,.paper .dni-form select:focus,.paper .dni-form textarea:focus{border-color:#2F6B12;box-shadow:0 0 0 3px rgba(58,138,27,.18)}
.paper .dni-form hr{border-top-color:rgba(0,0,0,.14)}
.paper .dni-btn{background:#0A0D0E;color:#fff}
.paper .dni-btn:hover{background:#1A2124}
.paper .dni-opt{border-color:rgba(0,0,0,.16)}
.paper .dni-notice--ok{background:rgba(58,138,27,.10);border-color:rgba(58,138,27,.4);color:#26520E}
.paper .dni-notice--err{background:rgba(179,45,46,.08);border-color:rgba(179,45,46,.35);color:#8A1F20}
.paper .dni-disclosure{border-color:rgba(0,0,0,.16);background:rgba(0,0,0,.02)}
.paper .dni-k{color:#2F6B12}

/* Inline links in the plugin's own copy need the same treatment. */
.dni-form a,.dni-notice a,.dni-card p a{text-decoration:underline;text-underline-offset:3px}

/* ------------------------------------------------------------- form space */
.dni-forms{display:grid;gap:12px;max-width:840px}
.dni-formcard{border:1px solid var(--dni-hair);border-radius:16px;background:var(--dni-panel);overflow:hidden;
  transition:border-color .2s,background .2s}
.dni-formcard[open]{border-color:rgba(193,255,114,.45);background:#141B1E}
.dni-formcard > summary{list-style:none;cursor:pointer;padding:22px 24px;display:flex;align-items:center;gap:16px;
  font-family:Archivo,Helvetica,Arial,sans-serif;font-weight:700;font-size:18px;min-height:48px}
.dni-formcard > summary::-webkit-details-marker{display:none}
.dni-formcard > summary:hover .dni-formcard-t{color:var(--dni-lime)}
.dni-formcard-a{margin-left:auto;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dni-mut);
  border:1px solid var(--dni-hair);border-radius:999px;padding:6px 12px;white-space:nowrap}
.dni-formcard-arw{width:24px;height:24px;border-radius:50%;border:1px solid rgba(255,255,255,.2);flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;transition:transform .25s}
.dni-formcard-arw::before{content:"";width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;
  transform:rotate(45deg) translate(-2px,-2px)}
.dni-formcard[open] .dni-formcard-arw{transform:rotate(180deg);color:var(--dni-lime);border-color:var(--dni-lime)}
.dni-formcard-body{padding:4px 24px 26px}
.dni-formcard-intro{color:var(--dni-mut);font-size:15px;margin:0 0 22px}
.dni-agreement{border:1px solid var(--dni-hair);border-radius:14px;padding:20px;margin:6px 0 22px;background:rgba(255,255,255,.02)}
.dni-agreement h4{margin:0 0 12px;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--dni-lime)}
.dni-agreement p{margin:0 0 12px;font-size:14.5px;color:#C7D0CA;line-height:1.65}
.dni-agreement p:last-child{margin-bottom:0}
.dni-sig{border-top:1px solid var(--dni-hair);padding-top:22px;margin-top:6px}
.dni-siginput{font-family:"Segoe Script","Brush Script MT",cursive;font-size:26px!important;letter-spacing:.02em}
.dni-pad-wrap{position:relative;margin:0 0 18px}
.dni-pad-label{display:block;font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--dni-mut);margin-bottom:8px}
.dni-pad{width:100%;height:150px;border:1px dashed rgba(255,255,255,.25);border-radius:12px;background:#0B0F10;touch-action:none;cursor:crosshair}
.dni-pad-clear{position:absolute;right:10px;bottom:10px;background:rgba(255,255,255,.08);border:1px solid var(--dni-hair);
  color:var(--dni-mut);border-radius:999px;padding:8px 14px;font-size:12px;cursor:pointer;min-height:36px}
.dni-pad-clear:hover{color:#fff}
.dni-receipt{border:1px solid rgba(193,255,114,.45);background:rgba(193,255,114,.06);border-radius:16px;padding:24px;margin-bottom:14px}
.dni-receipt h3{margin:6px 0 8px;font-size:21px}
.dni-receipt-meta{font-size:13.5px;color:var(--dni-mut);margin:0 0 14px}
.dni-receipt-sig{max-width:280px;background:#fff;border-radius:8px;padding:6px;margin-bottom:14px}
.dni-receipt-doc summary{cursor:pointer;font-size:13.5px;color:var(--dni-lime);margin-bottom:10px}
.dni-receipt-doc pre{white-space:pre-wrap;font-family:inherit;font-size:13.5px;line-height:1.6;color:#C7D0CA;
  background:rgba(0,0,0,.25);padding:16px;border-radius:10px;margin:10px 0 0}
.dni-signform.is-busy{opacity:.55;pointer-events:none}
@media(max-width:560px){
  .dni-formcard > summary{padding:18px;font-size:16px;flex-wrap:wrap}
  .dni-formcard-a{margin-left:0;order:3;flex-basis:100%}
  .dni-formcard-body{padding:4px 18px 22px}
}

/* --------------------------------------------------------------- the gate */
.dni-gate{border:1px solid var(--dni-hair);border-radius:18px;padding:clamp(22px,3vw,32px);margin-bottom:26px;background:var(--dni-panel)}
.dni-gate.is-locked{border-color:rgba(255,176,58,.45);background:linear-gradient(160deg,rgba(255,176,58,.08),transparent 60%)}
.dni-gate.is-clear{border-color:rgba(193,255,114,.4);background:linear-gradient(160deg,rgba(193,255,114,.07),transparent 60%)}
.dni-gate h2{font-size:clamp(24px,3.2vw,34px);margin:8px 0 12px}
.dni-gate-why{color:var(--dni-mut);font-size:15px;max-width:62ch;margin:0 0 22px}
.dni-checklist{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:10px;counter-reset:step}
.dni-checklist li{display:flex;align-items:flex-start;gap:14px;padding:16px 18px;border:1px solid var(--dni-hair);border-radius:12px;background:rgba(255,255,255,.02)}
.dni-checklist b{display:block;font-size:15.5px}
.dni-checklist span{display:block;color:var(--dni-mut);font-size:13.4px;margin-top:3px}
.dni-check-mark{width:22px;height:22px;border-radius:50%;border:2px solid rgba(255,255,255,.25);flex:0 0 auto;margin-top:2px;position:relative}
.dni-checklist li.is-done .dni-check-mark{border-color:var(--dni-lime);background:var(--dni-lime)}
.dni-checklist li.is-done .dni-check-mark::after{content:"";position:absolute;left:6px;top:2px;width:5px;height:10px;border-right:2px solid #07090A;border-bottom:2px solid #07090A;transform:rotate(45deg)}
.dni-check-status{margin-left:auto;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dni-mut);white-space:nowrap;padding-top:3px}
.dni-checklist li.is-done .dni-check-status{color:var(--dni-lime)}
.dni-gate-form{margin-top:18px}
.dni-gate-guardian{margin-top:22px;padding-top:20px;border-top:1px solid var(--dni-hair)}
.dni-gate-guardian h3{font-size:17px;margin:0 0 8px}
.dni-gate-guardian p{font-size:14.5px;color:#C7D0CA;margin:0 0 14px}
.dni-btn--quiet{background:transparent;border:1px solid var(--dni-hair);color:var(--dni-fg,#EDF1EC)}
.dni-btn--quiet:hover{border-color:var(--dni-lime);color:var(--dni-lime);background:transparent}

/* ------------------------------------------------------------- scheduling */
.dni-booking{margin-top:26px;border-top:1px solid var(--dni-hair);padding-top:24px}
.dni-booking h3{font-size:18px;margin:22px 0 12px}
.dni-booked,.dni-bookable{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}
.dni-booked li,.dni-bookable li{display:flex;gap:16px;align-items:center;padding:16px 18px;border:1px solid var(--dni-hair);border-radius:12px}
.dni-booked b,.dni-bookable b{display:block;font-size:15.5px}
.dni-booked span,.dni-bookable span{display:block;color:var(--dni-mut);font-size:13.4px;margin-top:2px}
.dni-booked em{margin-left:auto;font-style:normal;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dni-lime)}
.dni-bookable form{margin-left:auto}

/* --------------------------------------------------------- the four paths */
.dni-paths{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;max-width:900px}
.dni-path{display:block;padding:24px;border:1px solid var(--dni-hair);border-radius:16px;background:var(--dni-panel);
  transition:transform .2s cubic-bezier(.2,.7,.3,1),border-color .2s;text-decoration:none}
.dni-path:hover{transform:translateY(-4px);border-color:rgba(193,255,114,.5)}
.dni-path h3{margin:12px 0 8px;font-size:19px}
.dni-path p{color:var(--dni-mut);font-size:14px;margin:0}
.dni-path-go{display:block;margin-top:16px;color:var(--dni-lime);font-weight:600;font-size:14px}
.dni-backlink{margin:0 0 18px}
.dni-backlink a{color:var(--dni-mut);font-size:13.5px}
.dni-backlink a:hover{color:var(--dni-lime)}
.dni-next-up{border-left:2px solid var(--dni-lime);padding:6px 0 6px 16px;color:var(--dni-mut);font-size:14.5px;margin:8px 0 20px;max-width:66ch}
.dni-guardian-more{margin:34px 0 6px;font-size:19px}
