/* PD V2 · 18+ age gate (SPEC-age-gate.md). Ported from handover/v2/pages/_shared/age-gate.css,
 * swapping the prototype's own .btn/.btn--1/.btn--3 for this theme's real .pd-v2-action system.
 * Always dark in both color modes (a brand moment) — .pd-v2-action--3's border/text normally
 * follow --tx/--tx-faint, which flip in light mode, so they're force-overridden to the fixed
 * light-on-dark colors here; .pd-v2-action--1 already uses the fixed --act brand pink and needs
 * no override.
 */
html.ag-open,html.ag-open body{overflow:hidden}
html.ag-open body>*:not(.ag){filter:blur(26px) brightness(.45);pointer-events:none;user-select:none}
.ag{position:fixed;inset:0;z-index:999;display:grid;place-items:center;padding:20px;
  background:rgba(14,8,16,.55)}
.ag[hidden]{display:none}
.ag__card{position:relative;width:min(100%,460px);padding:clamp(28px,5vw,44px) clamp(22px,4.4vw,40px) 26px;border-radius:18px;
  color:#FFF7F1;text-align:center;overflow:hidden;
  background:radial-gradient(70% 55% at 0% 0%,rgba(254,3,115,.34),transparent 70%),
             radial-gradient(70% 55% at 100% 100%,rgba(197,39,243,.34),transparent 70%),#1A1118;
  border:1px solid rgba(255,247,241,.16);box-shadow:0 30px 80px -20px rgba(0,0,0,.75);
  animation:agIn .5s cubic-bezier(.16,1,.3,1)}
@keyframes agIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.ag__card{animation:none}}
.ag__lg{height:52px;width:auto;margin:0 auto 22px}
.ag__cap{display:block;font:700 12px/1 var(--ui);letter-spacing:.22em;text-transform:uppercase;color:var(--main2)}
/* 32-36px 全程 Display(--fr-display token · 650),不加字距——同 SPEC-typography.md 的规则 14,
   >30px 不加 0.02em。 */
.ag h2{margin:12px 0 0;font-family:var(--disp);font-variation-settings:var(--fr-display);font-weight:650;
  font-size:clamp(32px,4.4vw,36px);line-height:1.08;letter-spacing:-.015em;color:#FFF7F1}
.ag p{margin:12px auto 0;max-width:34ch;font-size:15px;line-height:1.6;color:rgba(255,247,241,.76)}
.ag__btns{display:grid;grid-template-columns:1.4fr 1fr;gap:10px;margin-top:24px}
.ag .pd-v2-action{width:100%}
.ag .pd-v2-action--3{background:transparent;color:#FFF7F1;border-color:rgba(255,247,241,.5)}
@media (hover:hover) and (pointer:fine){.ag .pd-v2-action--3:hover{border-color:#FFF7F1;background:rgba(255,247,241,.08);color:#FFF7F1}}
.ag .pd-v2-action:focus-visible,.ag__back:focus-visible,.ag a:focus-visible{outline:2px solid #FFF7F1;outline-offset:3px}
/* font-weight:400 overrides theme.css's bare label{font-weight:600} (same normalize-layer
   leak as the Nunito-bold bug fixed in pd-v2-base.css) — the prototype's label is normal
   weight, not bold. */
.ag__rem{display:inline-flex;align-items:center;gap:10px;margin-top:18px;font-size:14px;font-weight:400;color:rgba(255,247,241,.86);cursor:pointer}
.ag__rem input{position:absolute;opacity:0;width:1px;height:1px}
.ag__box{width:18px;height:18px;border-radius:5px;border:1.5px solid rgba(255,247,241,.55);display:grid;place-items:center;flex:none}
.ag__box::after{content:"";width:9px;height:5px;border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px);opacity:0}
.ag__rem input:checked+.ag__box{background:var(--act);border-color:var(--act)}
.ag__rem input:checked+.ag__box::after{opacity:1}
.ag__rem input:focus-visible+.ag__box{outline:2px solid #FFF7F1;outline-offset:2px}
.ag__back{margin-top:22px;padding:0;border:0;background:none;color:#FFF7F1;font:700 14px/1.4 var(--ui);
  text-decoration:underline;text-decoration-color:rgba(255,247,241,.45);text-underline-offset:4px;cursor:pointer}
.ag__fine{margin:24px 0 0!important;padding-top:16px;border-top:1px solid rgba(255,247,241,.12);font-size:12.5px!important;color:rgba(255,247,241,.62)!important;max-width:none!important}
.ag__fine a{color:#FFF7F1;text-decoration:underline;text-decoration-color:rgba(255,247,241,.4);text-underline-offset:3px}
@media (max-width:420px){.ag__btns{grid-template-columns:1fr}}
