:root{
  --tz-deep:#2B0F45; /* overlay deep purple */
  --tz-primary:#3C1566; /* royal purple */
  --tz-gold:#C8A74A; /* imperial gold */
  --tz-ivory:#F8F5EB; /* soft ivory */
  --tz-ink:#130825; /* near-black ink */
}

#taizi-age-gate-overlay.tz-hidden{ display:none; }

#taizi-age-gate-overlay{
  position:fixed; inset:0; z-index:999999;
  display:flex; align-items:center; justify-content:center;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";
}

#taizi-age-gate-overlay .tz-backdrop{
  position:absolute; inset:0; background:color-mix(in oklab, var(--tz-deep) 90%, black 0%);
  backdrop-filter: blur(3px);
}

#taizi-age-gate-overlay .tz-panel{
  position:relative; z-index:1;
  width:min(92vw, 640px);
  background:color-mix(in oklab, var(--tz-ivory) 95%, white 5%);
  color:var(--tz-ink);
  border-radius:16px;
  border:1px solid color-mix(in oklab, var(--tz-gold) 40%, transparent 60%);
  box-shadow: 0 10px 30px rgba(0,0,0,.25);
  padding:28px 28px 0 28px;
}

.tz-header{ display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.tz-crest{
  width:40px; height:40px; border-radius:999px; background:color-mix(in oklab, var(--tz-gold) 90%, #fff 10%);
  box-shadow:0 0 0 0 var(--tz-gold);
  animation: tzPulse 4s ease-in-out infinite;
}
@keyframes tzPulse { 0%,100%{ transform:scale(1); filter: drop-shadow(0 0 0 var(--tz-gold)); } 50%{ transform:scale(1.03); filter: drop-shadow(0 0 6px var(--tz-gold)); } }
.tz-wordmark{ font-weight:700; font-size:22px; letter-spacing:.08em; color:var(--tz-primary); }

.tz-title{ font-size:22px; font-weight:650; margin:6px 0 4px; }
.tz-subtitle{ color:color-mix(in oklab, var(--tz-ink) 70%, transparent 30%); margin:0 0 14px; }

.tz-form{ display:grid; gap:10px; }
.tz-label{ font-size:14px; color:color-mix(in oklab, var(--tz-ink) 80%, transparent 20%); }
.tz-input{
  width:100%; padding:12px 14px; border-radius:12px;
  border:1px solid color-mix(in oklab, var(--tz-primary) 20%, #0000 80%);
  outline:none; font-size:16px; background:white;
}
.tz-input:focus{ border-color: color-mix(in oklab, var(--tz-primary) 60%, #0000 40%); box-shadow: 0 1px 6px rgba(60,21,102,.2); }

.tz-error{ display:none; font-size:13px; color:#b91c1c; background:#fef2f2; border:1px solid #fecaca; padding:8px 10px; border-radius:10px; }

.tz-button{
  background: var(--tz-primary); color: var(--tz-ivory);
  border:0; border-radius:12px; padding:12px 14px; font-weight:700; font-size:16px;
  cursor:pointer; transition: filter .2s ease, transform .02s ease;
}
.tz-button:hover{ filter:brightness(1.06); }
.tz-button:active{ transform: translateY(1px); }
.tz-button[disabled]{ opacity:.45; cursor:not-allowed; }

.tz-note{ text-align:center; font-size:12px; color:color-mix(in oklab, var(--tz-ink) 55%, transparent 45%); }

.tz-links{ display:flex; gap:10px; align-items:center; justify-content:center; font-size:12px; margin:4px 0 0; }
.tz-links a{ color: var(--tz-primary); text-decoration:none; }
.tz-links a:hover{ text-decoration:underline; }
.tz-dot{ color: color-mix(in oklab, var(--tz-ink) 30%, transparent 70%); }

.tz-footer{
  margin-top:18px;
  background: linear-gradient(90deg, var(--tz-primary), var(--tz-ink));
  color: color-mix(in oklab, var(--tz-ivory) 80%, transparent 20%);
  text-align:center; font-size:12px; padding:10px; border-radius:0 0 16px 16px;
}
