/* ALTCHA 위젯 — 스킨과 무관한 독립 디자인.
 * altcha.min.js 는 shadow DOM 없이 `.altcha * { all: revert-layer }` 로 그리므로 스킨 전역 CSS
 * (label, input[type=checkbox], div, svg …) 가 위젯 안으로 샌다. 여기서 위젯이 쓰는 모든 속성을
 * !important 로 못 박아 어떤 스킨에 놓여도 같은 모양이 나오게 한다. 색·크기는 아래 변수만 바꾼다.
 * 셀렉터의 :not(#ac-n)×3 은 특이도를 (3,x,x) 로 올려 스킨의 `html:not(#x) body.skin .a .b input {…!important}` 같은 규칙도 이긴다.
 * 파일을 고치면 <link ?v=> 값을 올릴 것(CDN 캐시). */
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3){
  --ac-bg:#fff; --ac-bg-hover:#fafbfc; --ac-border:#d4d9e0; --ac-text:#252b34; --ac-muted:#697380; --ac-well:#eef3f8; --ac-success-well:#e2f3e7; --ac-danger:#a75f0b;
  --ac-accent:#3b82f6; --ac-ok:#29934c; --ac-err:#ef4444; --ac-radius:8px; --ac-size:22px; --ac-font:13px;
  all:initial!important; display:block!important; box-sizing:border-box!important; width:100%!important; max-width:100%!important;
  margin:8px 0!important; padding:0!important; font-family:-apple-system,BlinkMacSystemFont,"Malgun Gothic","Apple SD Gothic Neo","Noto Sans KR",sans-serif!important;
  font-size:var(--ac-font)!important; line-height:1.25!important; color:var(--ac-text)!important; text-align:left!important; direction:ltr!important;
}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) *{box-sizing:border-box!important;font-family:inherit!important;font-size:inherit!important;line-height:inherit!important;letter-spacing:0!important;text-shadow:none!important;float:none!important;text-transform:none!important;text-indent:0!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha{display:none!important;position:relative!important;width:100%!important;max-width:100%!important;margin:0!important;padding:0!important;background:none!important;border:0!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-visible]{display:block!important}
/* 본체 */altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;align-items:center!important;justify-content:flex-start!important;gap:6px 10px!important;
  width:100%!important;max-width:100%!important;min-height:44px!important;margin:0!important;padding:10px 12px!important;
  background:var(--ac-bg)!important;border:1px solid var(--ac-border)!important;border-radius:var(--ac-radius)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)!important;color:var(--ac-text)!important;transition:border-color .15s,background .15s!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main:hover{background:var(--ac-bg-hover)!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] .altcha-main{border-color:rgba(34,197,94,.55)!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=error] .altcha-main,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=expired] .altcha-main{border-color:rgba(239,68,68,.6)!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main>*{display:flex!important;width:100%!important;margin:0!important;padding:0!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main>*:first-child{flex:1 1 auto!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox-wrap{display:flex!important;flex-direction:row!important;align-items:center!important;gap:10px!important;width:100%!important}
/* 체크박스 */altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox{display:block!important;flex:0 0 var(--ac-size)!important;width:var(--ac-size)!important;height:var(--ac-size)!important;min-width:var(--ac-size)!important;
  position:relative!important;margin:0!important;padding:0!important;cursor:pointer!important;background:none!important;border:0!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]{appearance:none!important;-webkit-appearance:none!important;display:block!important;position:absolute!important;left:0!important;top:0!important;
  width:var(--ac-size)!important;height:var(--ac-size)!important;margin:0!important;padding:0!important;opacity:1!important;visibility:visible!important;transform:none!important;cursor:pointer!important;
  background:rgba(0,0,0,.35)!important;border:2px solid var(--ac-muted)!important;border-radius:5px!important;box-shadow:none!important;outline:none!important;transition:background .15s,border-color .15s!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]:hover{border-color:var(--ac-accent)!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]:focus-visible{box-shadow:0 0 0 3px rgba(59,130,246,.35)!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]:checked{background:var(--ac-ok)!important;border-color:var(--ac-ok)!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]:before,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]:after{display:none!important;content:none!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox svg{display:block!important;position:absolute!important;left:5px!important;top:5px!important;width:12px!important;height:12px!important;margin:0!important;
  fill:none!important;stroke:#fff!important;stroke-width:2.5!important;stroke-linecap:round!important;stroke-linejoin:round!important;opacity:0!important;pointer-events:none!important;transition:opacity .15s!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]:checked+svg{opacity:1!important;stroke-dashoffset:0!important;color:#fff!important}
/* 검증 중 스피너 */altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-spinner{display:block!important;position:absolute!important;left:0!important;top:0!important;width:var(--ac-size)!important;height:var(--ac-size)!important;margin:0!important;
  border:2px solid var(--ac-accent)!important;border-right-color:transparent!important;border-bottom-color:transparent!important;border-radius:50%!important;opacity:1!important;animation:altcha-rotate .6s linear infinite!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox-spinner{display:none!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox[data-loading=true] .altcha-checkbox-spinner,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verifying] .altcha-checkbox-spinner{display:block!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verifying] .altcha-checkbox input[type=checkbox]{border-color:transparent!important;background:transparent!important}
@keyframes altcha-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}
/* 문구 */altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) label{display:block!important;flex:1 1 auto!important;width:auto!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;position:static!important;
  color:var(--ac-text)!important;font-size:var(--ac-font)!important;font-weight:500!important;line-height:22px!important;text-align:left!important;white-space:normal!important;cursor:pointer!important;
  background:none!important;border:0!important;user-select:none!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) label:before,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) label:after{display:none!important;content:none!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] label{color:#86efac!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=error] label,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=expired] label{color:#fca5a5!important}
/* 오류 문구 / 푸터·로고 */altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-error{display:flex!important;width:100%!important;margin:0!important;padding:0!important;color:#fca5a5!important;font-size:12px!important;line-height:1.35!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-error svg{width:14px!important;height:14px!important;flex:0 0 14px!important;margin:0 6px 0 0!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-footer,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-logo{display:none!important}altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-hidden{display:none!important}
/* 팝오버(코드 챌린지 등, 기본 설정에선 안 씀) */altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-popover{position:absolute!important;z-index:9999!important;background:var(--ac-bg)!important;color:var(--ac-text)!important;border:1px solid var(--ac-border)!important;border-radius:var(--ac-radius)!important;padding:10px!important}

/* Shared light/dark presentation; the live ALTCHA controls remain interactive. */
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3){
  --ac-bg:#292c30;--ac-bg-hover:#303439;--ac-border:#555e68;--ac-text:#f1f3f5;--ac-muted:#b3bcc7;
  --ac-well:#353e48;--ac-success-well:#294936;--ac-ok:#64df7b;--ac-danger:#f1bb54;color-scheme:dark;
}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main{
  min-height:56px!important;padding:9px 58px 9px 10px!important;box-shadow:0 2px 5px rgba(20,30,40,.035)!important;
}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main>*:first-child{min-width:0!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox-wrap{display:grid!important;grid-template-columns:32px minmax(0,1fr)!important;grid-template-rows:auto auto!important;column-gap:8px!important;row-gap:0!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox{
  grid-row:1 / 3!important;width:32px!important;height:36px!important;min-width:32px!important;background:var(--ac-well)!important;border-radius:7px!important;
}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]{left:6px!important;top:8px!important;width:20px!important;height:20px!important;background:transparent!important;border-radius:4px!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] .altcha-checkbox{background:var(--ac-success-well)!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]:checked{background:var(--ac-ok)!important;border-color:var(--ac-ok)!important;border-radius:50%!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox svg{left:10px!important;top:12px!important}
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input:checked+svg{stroke:#183c24!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-spinner{left:6px!important;top:8px!important;width:20px!important;height:20px!important;border:3px solid #8ea5be!important;border-top-color:#388ae0!important;border-right-color:#c5d7eb!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) label,
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] label,
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=error] label,
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=expired] label{color:var(--ac-text)!important;font-size:12px!important;font-weight:650!important;line-height:18px!important;align-self:end!important;word-break:keep-all!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-detail{display:block!important;grid-column:2!important;color:var(--ac-muted)!important;font-size:10px!important;line-height:16px!important;text-align:left!important;word-break:keep-all!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main>.ac-brand{position:absolute!important;right:8px!important;top:50%!important;transform:translateY(-50%)!important;width:42px!important;height:32px!important;display:flex!important;flex-direction:column!important;justify-content:center!important;align-items:center!important;gap:3px!important;border-left:1px solid var(--ac-border)!important;padding-left:7px!important;color:var(--ac-muted)!important;pointer-events:none!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand svg{display:block!important;width:15px!important;height:17px!important;stroke:currentColor!important;stroke-width:1.5!important;fill:none!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand span{font-size:7px!important;line-height:9px!important;font-weight:500!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] .altcha-main{border-color:var(--ac-ok)!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=error] .altcha-main,
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=expired] .altcha-main{border-color:var(--ac-danger)!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-error{color:var(--ac-danger)!important;line-height:1.5!important}
@media(prefers-reduced-motion:reduce){altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) *{transition:none!important}}
/* Keep error messages in flow so they cannot cover the widget or login actions. */
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main{position:relative!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-popover[data-variant=error]{position:relative!important;inset:auto!important;transform:none!important;width:100%!important;max-width:100%!important;margin:6px 0 0!important;box-shadow:none!important;z-index:auto!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-popover[data-variant=error] .altcha-popover-arrow{display:none!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=error] .altcha-checkbox input,
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=expired] .altcha-checkbox input{border-color:var(--ac-danger)!important}

/* Proportions shared by both themes. */
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main{min-height:50px!important;padding:5px 62px 5px 9px!important;border-radius:6px!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox-wrap{grid-template-columns:43px minmax(0,1fr)!important;column-gap:14px!important;min-height:38px!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main>.ac-brand{right:14px!important;width:48px!important;height:33px!important;padding-left:14px!important}

/* Match status icon geometry. */
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox{width:43px!important;height:38px!important;min-width:43px!important;border-radius:8px!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]{left:10.5px!important;top:8px!important;width:22px!important;height:22px!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox svg{left:14.5px!important;top:12px!important;width:14px!important;height:14px!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-spinner{left:10.5px!important;top:8px!important;width:22px!important;height:22px!important}

/* Typography alignment. */
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) label,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] label,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=error] label,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=expired] label{font-size:11.5px!important;font-weight:700!important;transform:translateY(1.5px)!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-detail{font-size:9.5px!important;transform:translateY(1px)!important}

altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) label,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] label,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=error] label,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=expired] label{font-size:11.25px!important;transform:translate(-.25px,2px)!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-detail{font-size:9.25px!important;transform:translate(0,.5px)!important}
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) label,altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] label,altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=error] label,altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=expired] label{transform:translate(-1.75px,2.5px)!important}
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .ac-detail{transform:translate(-1px,1.5px)!important}

altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-detail{transform:translate(0,-1px)!important}
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .ac-detail{transform:translate(-1.5px,0)!important}

/* Align brand contents independently of the divider. */
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand svg,altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand span{transform:translate(.5px,1px)!important}

altcha-widget[data-altcha-theme=light]:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] .altcha-main{border-color:#78c98f!important}

/* Dark status icon palette and optical centering. */
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .altcha[data-state=verified] .altcha-checkbox{width:42.5px!important;transform:translate(-.5px,.5px)!important;background:#33513f!important}
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]:checked{left:9.5px!important;background:#65ec79!important;border-color:#65ec79!important}
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-checkbox input[type=checkbox]:checked+svg{left:13.5px!important;stroke:#225c31!important}

altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand span{font-size:7.25px!important;transform:translate(1px,1px)!important}

altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand span{transform:translate(1px,.5px)!important}
altcha-widget[data-altcha-theme=light]:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand svg{transform:translate(.5px,.5px)!important}
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand svg{transform:translate(1px,1px)!important}

@font-face{font-family:AltchaSans;src:url(/fonts/altcha/altcha-sans-kr.woff2?v=2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+AC00-D7A3}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3){font-family:AltchaSans,-apple-system,BlinkMacSystemFont,"Malgun Gothic","Apple SD Gothic Neo","Noto Sans KR",sans-serif!important}

/* Refined security emblem requested after the initial concept. */
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3){--ac-shield-face:#eaf0f6;--ac-shield-highlight:#fff;--ac-shield-stroke:#697b91;--ac-shield-key:#61748c}
altcha-widget[data-altcha-theme=dark]:not(#ac-1):not(#ac-2):not(#ac-3){--ac-shield-face:#354452;--ac-shield-highlight:#50647a;--ac-shield-stroke:#afc0d2;--ac-shield-key:#d1dce8}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand svg{width:17px!important;height:20px!important;transform:none!important;stroke-width:1.2!important;stroke-linejoin:round!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand .ac-shield-face{fill:var(--ac-shield-face)!important;stroke:var(--ac-shield-stroke)!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand .ac-shield-highlight{fill:var(--ac-shield-highlight)!important;stroke:none!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand .ac-shield-key{fill:var(--ac-shield-key)!important;stroke:none!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand span{font-weight:600!important;transform:translateY(.5px)!important}
/* Keep the security emblem readable in the narrow login panel. */
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .altcha-main>.ac-brand{height:36px!important}
altcha-widget:not(#ac-1):not(#ac-2):not(#ac-3) .ac-brand svg{width:20px!important;height:23px!important;flex-shrink:0!important}
