/* Wygląd sterowany zmiennymi --ab-*; motyw ab2b Panel ustawia je globalnie (jasny i ciemny tryb). */
.ab2bkey{max-width:1000px;margin:0 auto;color:var(--ab-ink,#1c2733);font-family:inherit}
.ab2bkey *{box-sizing:border-box}
.ab2bkey__title{margin:0 0 .25rem;font-size:1.35rem;line-height:1.25;font-weight:700;color:inherit}
.ab2bkey__lead{margin:0 0 1.25rem;font-size:.95rem;color:var(--ab-mut,#5f6b7a)}
.ab2bkey__grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
.ab2bkey__card{display:flex;flex-direction:column;background:var(--ab-card,#fff);border:1px solid var(--ab-line,#d5dbe2);border-radius:var(--ab-radius,12px);overflow:hidden;box-shadow:var(--ab-shadow,0 1px 2px rgba(16,24,40,.05))}
.ab2bkey__bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:.7rem 1rem;background:var(--ab-bar,#1c2733);color:var(--ab-bar-ink,#fff)}
.ab2bkey__bar h3{margin:0;font-size:1rem;font-weight:600;color:inherit;line-height:1.3}
.ab2bkey__type{flex:none;padding:.15rem .5rem;border:1px solid rgba(255,255,255,.35);border-radius:999px;font:600 .7rem/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.03em;color:inherit;opacity:.9}
.ab2bkey__body{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.6rem;min-height:128px;padding:1.25rem 1rem}
.ab2bkey__btn{min-height:44px;padding:.65rem 1.4rem;border:0;border-radius:8px;background:var(--ab-accent,#1f6fb5);color:var(--ab-accent-ink,#fff);font-weight:600;font-size:1rem;line-height:1;font-family:inherit;cursor:pointer;transition:filter .15s}
.ab2bkey__btn:hover{filter:brightness(1.08)}
.ab2bkey__btn[hidden],.ab2bkey__otp[hidden],.ab2bkey__err[hidden]{display:none}
.ab2bkey__otp{display:flex;align-items:center;justify-content:center;gap:14px;width:100%}
.ab2bkey__timer{position:relative;flex:none;width:44px;height:44px}
.ab2bkey__timer svg{display:block;width:100%;height:100%;transform:rotate(-90deg)}
.ab2bkey__track,.ab2bkey__arc{fill:none;stroke-width:3.2}
.ab2bkey__track{stroke:var(--ab-line,#d5dbe2)}
.ab2bkey__arc{stroke:var(--ab-ink,#1c2733);stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:0;transition:stroke-dashoffset .3s linear}
.ab2bkey__secs{position:absolute;inset:0;display:grid;place-items:center;font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--ab-mut,#5f6b7a)}
.ab2bkey__code{font:500 clamp(1.9rem,8vw,2.4rem)/1 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;letter-spacing:.06em;font-variant-numeric:tabular-nums;color:inherit;white-space:nowrap}
.ab2bkey__tools{display:flex;flex-direction:column;gap:2px;margin-left:auto}
.ab2bkey__icon{display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--ab-mut,#5f6b7a);cursor:pointer}
.ab2bkey__icon:hover{background:var(--ab-hover,rgba(127,127,127,.14));color:var(--ab-ink,#1c2733)}
.ab2bkey__icon.is-done{color:var(--ab-ok,#12a37f)}
.ab2bkey__btn:focus-visible,.ab2bkey__icon:focus-visible,.ab2bkey__login input:focus-visible{outline:3px solid var(--ab-focus,#6aa9e8);outline-offset:2px}
.ab2bkey__foot{padding:.5rem 1rem;border-top:1px solid var(--ab-line,#d5dbe2);font-size:.8rem;color:var(--ab-mut,#5f6b7a);text-align:center}
.ab2bkey__err{margin:0;color:var(--ab-danger,#c0392b);font-size:.95rem;text-align:center}
.ab2bkey__login{max-width:380px;margin:0 auto}
.ab2bkey__login form p{margin:0 0 .9rem}
.ab2bkey__login label{display:block;margin-bottom:.3rem;font-size:.85rem;color:var(--ab-mut,#5f6b7a)}
.ab2bkey__login input[type=text],.ab2bkey__login input[type=password]{width:100%;min-height:44px;padding:.55rem .75rem;border:1px solid var(--ab-line,#d5dbe2);border-radius:8px;background:var(--ab-card,#fff);color:var(--ab-ink,#1c2733);font:inherit}
.ab2bkey__login .login-remember label{display:flex;gap:.5rem;align-items:center;margin:0}
.ab2bkey__login input[type=submit]{width:100%;min-height:44px;border:0;border-radius:8px;background:var(--ab-accent,#1f6fb5);color:var(--ab-accent-ink,#fff);font-weight:600;font-size:1rem;font-family:inherit;cursor:pointer}
@media (prefers-reduced-motion:reduce){.ab2bkey__arc{transition:none}}
