/* components.css — shared controls and overlays/dialogs */

.vl-btn{min-height:44px;border-radius:var(--r-md);border:1px solid transparent;padding:11px 18px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-h);font-size:var(--fs-btn);font-weight:700;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .18s,border-color .18s,color .18s,transform .18s}
.vl-btn.vl-btn--accent{background:var(--accent-action);color:#fff}
.vl-btn.vl-btn--accent:hover,.vl-btn.vl-btn--accent:focus-visible{background:var(--accent-hover);color:#fff}
.vl-btn.vl-btn--primary{background:var(--ink);color:#fff}
.vl-btn.vl-btn--primary:hover,.vl-btn.vl-btn--primary:focus-visible{background:var(--accent-action);color:#fff}
.vl-btn--outline{background:#fff;color:var(--ink);border-color:var(--border-strong)}
.vl-btn--outline:hover{border-color:var(--accent-action);color:var(--accent-action)}
.vl-btn--ghost{background:var(--surface-soft);color:var(--ink)}
.vl-btn--full{width:100%}
.vl-btn:disabled,.vl-btn[aria-disabled="true"]{opacity:.42;cursor:not-allowed}
.vl-btn--loading{position:relative;color:transparent}
.vl-btn--loading::after{content:"";position:absolute;width:1rem;height:1rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;color:#fff;animation:vl-spin .7s linear infinite}

.vl-input,input.vl-input,select.vl-input,textarea.vl-input{width:100%;min-height:44px;border:1px solid var(--border-strong);border-radius:var(--r-md);background:#fff;padding:10px 12px;color:var(--ink);font-family:var(--font-b);font-size:var(--fs-body)}
textarea.vl-input{min-height:110px;resize:vertical}
.vl-input:focus{border-color:var(--accent-action);outline:3px solid rgba(201,54,61,.12)}
.vl-input--invalid,.vl-form-row--error .vl-input{border-color:var(--error)!important;box-shadow:0 0 0 1px rgba(180,35,24,.18)!important}

@keyframes vl-spin{to{transform:rotate(360deg)}}

/* ── Age gate ── */
.vl-age-gate{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem;opacity:1;transition:opacity .25s ease}
.vl-age-gate--hidden{opacity:0;pointer-events:none;visibility:hidden}
.vl-age-gate__overlay{position:absolute;inset:0;background:rgba(18,18,18,.72);backdrop-filter:blur(4px)}
.vl-age-gate__panel{position:relative;background:var(--card);border-radius:var(--r-xl);padding:2.5rem 2rem;max-width:26rem;width:100%;text-align:center;box-shadow:0 1rem 3rem rgba(18,18,18,.16)}
.vl-age-gate__logo{display:flex;justify-content:center;margin:0 auto 1.5rem;background:var(--ink);border-radius:var(--r-md);padding:.75rem 1.25rem;width:fit-content}
.vl-age-gate__logo img,.vl-age-gate__logo svg{height:2rem;width:auto;display:block;filter:brightness(0) invert(1)}
.vl-age-gate__heading{font-family:var(--font-h);font-size:var(--fs-h3);font-weight:700;color:var(--ink);margin:0 0 .5rem}
.vl-age-gate__subheading{font-family:var(--font-b);font-size:var(--fs-body);color:var(--text);margin:0 0 1.5rem}
.vl-age-gate__confirm{width:100%}
.vl-age-gate__reject{width:100%;margin-top:.75rem}
.vl-age-gate__legal{font-family:var(--font-b);font-size:var(--fs-small);color:var(--text-muted);margin:1rem 0 0}
@media (prefers-reduced-motion:reduce){.vl-btn,.vl-age-gate{transition:none}.vl-btn--loading::after{animation:none}}
