/* The robot check: one card. On the left, the tick and its label ("I'm not
   a robot", then "Verified"), and the question when one is asked; on the
   right, a narrow panel with the site icon and the accessibility buttons.

   Colours and corners come from --gsy-captcha-* custom properties, which
   fall back to the site's theme tokens; the admin's sign-in sets them from
   the admin theme. Without JavaScript (no .gsy-captcha-js on the root) only
   the question shows, and its answer is posted with the form. */
.gsy-captcha{
  --_accent:var(--gsy-captcha-accent,var(--gsy-color-primary,#2b59c3));
  --_on-accent:var(--gsy-captcha-accent-text,#fff);
  --_bg:var(--gsy-captcha-background,var(--gsy-color-background,#fff));
  --_text:var(--gsy-captcha-text,var(--gsy-color-text,#1a1a1a));
  --_border:var(--gsy-captcha-border,color-mix(in srgb,var(--_text) 13%,var(--_bg)));
  --_radius:min(var(--gsy-captcha-radius,var(--gsy-button-radius,8px)),12px);
  --_muted:color-mix(in srgb,var(--_text) 60%,var(--_bg));
  --_aside:color-mix(in srgb,var(--_text) 3%,var(--_bg));
  --_ring:color-mix(in srgb,var(--_accent) 25%,transparent);
  --_bad:#b42318;
  position:relative;display:block;max-width:100%;color:var(--_text);font-family:var(--gsy-captcha-font,var(--gsy-font-body,inherit));font-size:1rem;line-height:1.35;text-align:left
}
.gsy-captcha *,.gsy-captcha *::before,.gsy-captcha *::after{box-sizing:border-box}
.gsy-captcha-sr,.gsy-captcha-trap{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
.gsy-captcha-trap{left:-10000px!important}
.gsy-captcha button{font:inherit;color:inherit;margin:0}

/* the card */
.gsy-captcha-card{display:flex;align-items:stretch;overflow:hidden;min-height:4rem;border:1px solid var(--_border);border-radius:var(--_radius);background:var(--_bg);box-shadow:0 1px 2px rgba(0,0,0,.05);transition:border-color .3s,background-color .3s}
.gsy-captcha-done .gsy-captcha-card{border-color:var(--_accent)}
.gsy-captcha-failed .gsy-captcha-card{border-color:var(--_bad)}
.gsy-captcha-main{display:flex;flex:1;min-width:0;flex-direction:column;justify-content:center;gap:.5rem;padding:.6rem .8rem}
.gsy-captcha-row{display:flex;align-items:center;gap:.75rem}

/* the tick: a real button with a checkbox role */
.gsy-captcha-tick{position:relative;flex:none;display:grid;place-items:center;width:1.5rem;height:1.5rem;padding:0;border:2px solid color-mix(in srgb,var(--_text) 22%,var(--_bg));border-radius:6px;background:var(--_bg);box-shadow:inset 0 1px 1px rgba(0,0,0,.06);cursor:pointer;transition:border-color .2s,background-color .2s,transform .2s}
.gsy-captcha-tick:hover{border-color:var(--_accent)}
.gsy-captcha-tick:active{transform:scale(.95)}
.gsy-captcha-tick:focus{outline:none}
.gsy-captcha-tick:focus-visible{box-shadow:0 0 0 2px var(--_bg),0 0 0 4px var(--_accent)}
.gsy-captcha-tick svg{width:1rem;height:1rem;display:none}
.gsy-captcha-spinner{color:var(--_accent);animation:gsy-captcha-spin .8s linear infinite}
.gsy-captcha-check{color:var(--_on-accent)}
.gsy-captcha-check path{stroke-dasharray:22;stroke-dashoffset:22;transition:stroke-dashoffset .35s ease .05s}
.gsy-captcha-busy .gsy-captcha-tick{cursor:progress;border-color:var(--_ring)}
.gsy-captcha-busy .gsy-captcha-spinner{display:block}
.gsy-captcha-done .gsy-captcha-tick{cursor:default;border-color:var(--_accent);background:var(--_accent)}
.gsy-captcha-done .gsy-captcha-check{display:block}
.gsy-captcha-done .gsy-captcha-check path{stroke-dashoffset:0}
.gsy-captcha-label{margin:0;min-width:0;font-size:.875rem;font-weight:500;color:color-mix(in srgb,var(--_text) 90%,var(--_bg))}
.gsy-captcha-label-idle{cursor:pointer;user-select:none}
.gsy-captcha-label-done,.gsy-captcha-done .gsy-captcha-label-idle{display:none}
.gsy-captcha-done .gsy-captcha-label-done{display:inline}

/* the question */
.gsy-captcha-question{display:flex;flex-direction:column;gap:.4rem}
.gsy-captcha-lead{margin:0;font-size:.78rem;color:var(--_muted)}
.gsy-captcha-q{margin:0;font-size:.875rem;font-weight:600}
.gsy-captcha-answer-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.gsy-captcha .gsy-captcha-answer-row input.gsy-captcha-answer{height:2rem;width:7.5rem;max-width:100%;padding:0 .7rem;border:1px solid color-mix(in srgb,var(--_text) 22%,var(--_bg));border-radius:6px;background:var(--_bg);color:var(--_text);font:inherit;font-size:.875rem;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.gsy-captcha .gsy-captcha-answer-row input.gsy-captcha-answer::placeholder{color:var(--_muted)}
.gsy-captcha .gsy-captcha-answer-row input.gsy-captcha-answer:focus{outline:none;border-color:var(--_accent);box-shadow:0 0 0 3px var(--_ring)}
.gsy-captcha .gsy-captcha-check-button{height:2rem;padding:0 .8rem;border:0;border-radius:6px;background:var(--_accent);color:var(--_on-accent);font-size:.875rem;font-weight:500;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.05);transition:filter .15s,opacity .15s}
.gsy-captcha .gsy-captcha-check-button:hover{filter:brightness(.95)}
.gsy-captcha .gsy-captcha-check-button:disabled{opacity:.4;cursor:default}
.gsy-captcha .gsy-captcha-check-button:focus-visible{outline:2px solid var(--_accent);outline-offset:2px}

/* icon buttons */
.gsy-captcha .gsy-captcha-icon{display:inline-grid;place-items:center;width:2rem;height:2rem;padding:0;border:0;border-radius:6px;background:none;color:var(--_muted);cursor:pointer;transition:background-color .15s,color .15s}
.gsy-captcha .gsy-captcha-icon:hover{background:color-mix(in srgb,var(--_text) 7%,transparent);color:var(--_text)}
.gsy-captcha .gsy-captcha-icon:focus-visible{outline:2px solid var(--_accent);outline-offset:1px}
.gsy-captcha .gsy-captcha-icon:disabled{opacity:.4;cursor:default}
.gsy-captcha-icon svg{width:1rem;height:1rem}
.gsy-captcha .gsy-captcha-icon-small{width:1.6rem;height:1.6rem}
.gsy-captcha-icon-small svg{width:.875rem;height:.875rem}
.gsy-captcha .gsy-captcha-icon[aria-expanded=true]{background:color-mix(in srgb,var(--_accent) 12%,transparent);color:var(--_accent)}

/* accessibility options */
.gsy-captcha-options{display:flex;flex-wrap:wrap;gap:.25rem .9rem;padding-top:.45rem;border-top:1px solid var(--_border)}
.gsy-captcha-options[hidden]{display:none}
.gsy-captcha .gsy-captcha-link{padding:0;border:0;background:none;font-size:.8rem;font-weight:500;color:var(--_accent);text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.gsy-captcha .gsy-captcha-link:focus-visible{outline:2px solid var(--_accent);outline-offset:2px;border-radius:2px}

/* the panel on the right */
.gsy-captcha-aside{display:flex;flex:none;width:5.5rem;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;padding:.4rem;border-inline-start:1px solid var(--_border);background:var(--_aside);text-align:center}
.gsy-captcha-logo{display:block;max-height:2.5rem;max-width:4.75rem;width:auto;border-radius:4px;object-fit:contain}
.gsy-captcha-shield{width:1.4rem;height:1.4rem;color:var(--_accent)}
.gsy-captcha-caption{font-size:.62rem;line-height:1.2;color:var(--_muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gsy-captcha-tools{display:flex;align-items:center}
.gsy-captcha-done .gsy-captcha-tools{display:none}

/* which parts show */
.gsy-captcha-js.gsy-captcha-view-tick .gsy-captcha-question{display:none}
.gsy-captcha-js.gsy-captcha-view-question:not(.gsy-captcha-done) .gsy-captcha-row{display:none}
.gsy-captcha-done .gsy-captcha-question,.gsy-captcha-done .gsy-captcha-options{display:none}
.gsy-captcha-js.gsy-captcha-view-question .gsy-captcha-options [data-act=question]{display:none}
.gsy-captcha-no-speech .gsy-captcha-needs-speech{display:none}
/* the lead-in is for Question mode, where the question is the only way */
.gsy-captcha-mode-tick .gsy-captcha-lead,.gsy-captcha-mode-quiet .gsy-captcha-lead{display:none}
/* without JavaScript: only the question, posted with the form */
.gsy-captcha:not(.gsy-captcha-js) .gsy-captcha-row,
.gsy-captcha:not(.gsy-captcha-js) .gsy-captcha-tools,
.gsy-captcha:not(.gsy-captcha-js) .gsy-captcha-check-button,
.gsy-captcha:not(.gsy-captcha-js) .gsy-captcha-new{display:none}
.gsy-captcha:not(.gsy-captcha-js):not([data-id]) .gsy-captcha-answer-row{display:none}

/* a failure, said in words as well as the red edge */
.gsy-captcha-error{margin:0;font-size:.8rem;color:var(--_bad)}
.gsy-captcha-error:empty{display:none}

/* compact */
.gsy-captcha-compact .gsy-captcha-card{min-height:3.25rem}
.gsy-captcha-compact .gsy-captcha-main{padding:.45rem .65rem}
.gsy-captcha-compact .gsy-captcha-aside{width:4.5rem}
.gsy-captcha-compact .gsy-captcha-logo{max-height:2rem;max-width:3.75rem}

@keyframes gsy-captcha-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  .gsy-captcha *{transition:none!important;animation:none!important}
}
@media (forced-colors:active){
  .gsy-captcha-tick{border-color:ButtonText}
  .gsy-captcha-done .gsy-captcha-tick{background:Highlight;border-color:Highlight}
  .gsy-captcha-check{color:HighlightText}
  .gsy-captcha-done .gsy-captcha-card{border-color:Highlight}
}
