/* ==================================================
   RESET
================================================== */

*,
*::before,
*::after{
  box-sizing:border-box;
  margin:0;
  padding:0;
}


/* ==================================================
   DESIGN TOKENS
================================================== */

:root{

  /* colors */

  --color-bg:#0f172a;
  --color-text:#e2e8f0;
  --color-text-soft:#b8c8d8;
  --color-label:var(--color-text-soft);
  --color-placeholder:#94a3b8;

  --color-surface:rgba(255,255,255,.08);
  --color-surface-hover:rgba(255,255,255,.13);
  --color-surface-active:rgba(255,255,255,.22);

  --color-text-dim:rgba(255,255,255,.75);
  --color-footer-text:rgba(255,255,255,.6);

  --color-accent:#7c3aed;
  --color-accent-hover:#6d28d9;

  --color-danger:#ef4444;

  /* card background — used for glass cards, toast, cookie panel */
  --bg-card:rgba(15,23,42,.52);
  --bg-toast:rgba(15,23,42,.92);
  --bg-modal:rgba(15,23,42,.88);

  /* gradients */

  --gradient-bg:
    radial-gradient(circle at 20% 20%,#ff5fd2 0%,transparent 40%),
    radial-gradient(circle at 80% 30%,#a855f7 0%,transparent 40%),
    radial-gradient(circle at 50% 90%,#6366f1 0%,transparent 50%),
    var(--color-bg);

  --color-cta:#f59e0b;
  --color-cta-hover:#fbbf24;
  --color-cta-active:#d97706;

  --color-button-text:#3b0764;
  --color-toast-text:#fca5a5;

  /* radius */

  --radius-sm:12px;
  --radius-md:16px;
  --radius-lg:24px;
  --radius-qr:38px; /* matches QR canvas corners: QR_SIZE * QR_RADIUS = 1024 * 0.145 ≈ 148px → scaled to 256px preview = 37px */

  /* borders */

  --border-soft:1px solid rgba(255,255,255,.13);
  --border-glass:1px solid rgba(168,85,247,.30);

  /* shadows */

  --shadow-card:
    0 24px 64px rgba(0,0,0,.45),
    0 4px 16px rgba(0,0,0,.25);

  --shadow-button-hover:
    0 6px 14px rgba(99,102,241,.18),
    0 0 10px rgba(124,58,237,.18);

  --shadow-button-active:
    0 3px 8px rgba(99,102,241,.14),
    0 0 6px rgba(124,58,237,.14);

  /* typography */

  --font-main:'Figtree','Inter',system-ui,-apple-system,sans-serif;

  /* animation */

  --transition-fast:.15s ease;

}


/* ==================================================
   BASE
================================================== */

body{
  font-family:var(--font-main);
  min-height:100vh;
  display:flex;
  flex-direction:column;
  color:var(--color-text);
  background:var(--color-bg);
}

body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  background:var(--gradient-bg);
  animation:bgDrift 10s ease-in-out infinite alternate;
}

h1,h2,h3{ margin:0; }


/* ==================================================
   NAVIGATION
================================================== */

.navbar{
  padding:24px;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
}


.logo{
  font-family:'Figtree',sans-serif;
  font-size:28px;
  font-weight:700;
  letter-spacing:-0.01em;
  color:var(--color-text);
  text-decoration:none;
  grid-column:2;
  justify-self:center;
}

.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}


/* ==================================================
   INTRO
================================================== */

.intro{
  text-align:center;
  margin:32px auto 0;
  max-width:640px;
  padding:0 20px;
  animation:pageIn 500ms ease both;
}

.intro-title{
  font-family:'Inter',sans-serif;
  font-size:44px;
  font-weight:800;
  letter-spacing:-0.03em;
  color:var(--color-text);
}


/* ==================================================
   HOW IT WORKS
================================================== */

.steps{
  display:flex;
  justify-content:center;
  flex-wrap:wrap;
  column-gap:28px;
  row-gap:8px;
  list-style:none;
  max-width:560px;
  margin:24px auto 48px;
}

.step{
  display:flex;
  align-items:center;
  gap:8px;
  font-family:'Figtree',sans-serif;
  font-size:14px;
  font-weight:500;
  color:var(--color-text-dim);
}

.step-number{
  width:24px;
  height:24px;
  border-radius:50%;
  background:rgba(124,58,237,.2);
  border:1px solid rgba(124,58,237,.4);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:12px;
  font-weight:600;
  color:var(--color-text);
}


/* ==================================================
   LAYOUT
================================================== */

.generator{
  width:min(980px,92vw);
  margin:auto auto 32px;
  display:grid;
  grid-template-columns:1.15fr 0.85fr;
  gap:32px;
  animation:pageIn 500ms ease 120ms both;
}


/* ==================================================
   CARD
================================================== */

.generator-card,
.preview-card{

  position:relative;
  padding:28px;

  border-radius:var(--radius-lg);

  display:flex;
  flex-direction:column;

}

.generator-card{

  border:var(--border-glass);
  background:var(--bg-card);
  box-shadow:var(--shadow-card);
  backdrop-filter:blur(20px);

  gap:20px;

}

.preview-card{
  border:none;
  background:none;
  box-shadow:none;
  backdrop-filter:none;
  justify-content:center;
}

.generator-card::before,
.preview-card::before{

  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;

  background:linear-gradient(
    180deg,
    rgba(255,255,255,.08),
    rgba(255,255,255,0)
  );

  pointer-events:none;

}


/* ==================================================
   FORM
================================================== */

.form-group{
  display:flex;
  flex-direction:column;
  gap:8px;
}

.field-label{
  font-size:12px;
  font-weight:600;
  color:var(--color-label);
  letter-spacing:.05em;
  text-transform:uppercase;
}

input[type="url"]{

  width:100%;
  padding:12px 16px;

  border-radius:var(--radius-md);
  border:var(--border-soft);

  background:var(--color-surface);

  font-family:inherit;
  font-size:16px;
  letter-spacing:.01em;

  color:var(--color-text);

  outline:none;

  transition:
    border var(--transition-fast),
    box-shadow var(--transition-fast),
    background var(--transition-fast);

}

input[type="url"]::placeholder{
  color:var(--color-placeholder);
}

input[type="url"]:focus{
  background:rgba(255,255,255,.13);
  border-color:var(--color-accent);
  box-shadow:0 0 0 3px rgba(124,58,237,.18);
}


/* ==================================================
   LOGO UPLOAD
================================================== */

.upload-area{

  min-height:128px;
  flex:1;

  border-radius:var(--radius-md);
  border:1.5px dashed rgba(255,255,255,.22);

  background:var(--color-surface);

  display:flex;
  align-items:center;
  justify-content:center;

  cursor:pointer;

  transition:
    border var(--transition-fast),
    background var(--transition-fast),
    transform var(--transition-fast),
    box-shadow var(--transition-fast);

}

.upload-area:hover,
.upload-area.is-dragover{
  border-color:rgba(255,255,255,.35);
  background:var(--color-surface-hover);
}

.upload-area.is-dragover{
  transform:scale(1.02);
  box-shadow:0 0 0 3px rgba(124,58,237,.15);
}

.upload-area input[type="file"]{ display:none; }

.upload-placeholder{
  display:flex;
  justify-content:center;
  align-items:center;
  width:100%;
}

.upload-text{
  font-size:13px;
  color:var(--color-text-soft);
  text-align:center;
  line-height:1.5;
  transition:color var(--transition-fast);
}

.upload-area:hover .upload-text,
.upload-area.is-dragover .upload-text{
  color:var(--color-text);
}


/* ==================================================
   LOGO PREVIEW
================================================== */

.logo-preview{
  display:none;
  position:relative;
  align-items:center;
  justify-content:center;
}

.logo-preview.is-visible      { display:flex; }
.upload-placeholder.is-hidden { display:none; }

.logo-preview img{
  width:56px;
  height:56px;
  object-fit:cover;
  border-radius:var(--radius-sm);
}

.logo-remove{

  position:absolute;
  top:-8px;
  right:-8px;

  width:24px;
  height:24px;

  border-radius:50%;
  border:none;

  background:var(--color-danger);
  color:var(--color-text);

  font-size:14px;
  cursor:pointer;

  transition:filter var(--transition-fast);

}

.logo-remove:hover{ filter:brightness(1.15); }


/* ==================================================
   LOGO SIZE
================================================== */


.logo-size-presets{
  display:flex;
  gap:4px;
  background:rgba(255,255,255,.06);
  border-radius:var(--radius-sm);
  padding:4px;
  border:var(--border-soft);
}

.size-btn{
  flex:1;
  padding:8px 0;
  border-radius:var(--radius-sm);
  border:none;
  background:transparent;
  color:var(--color-placeholder);
  font-size:13px;
  font-weight:600;
  cursor:pointer;
  transition:background var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);
}

.size-btn:hover{
  color:var(--color-text);
}

.size-btn.is-active{
  background:var(--color-surface-active);
  color:var(--color-text);
  box-shadow:0 1px 6px rgba(0,0,0,0.35);
}


/* ==================================================
   LOGO COLOR PALETTE
================================================== */


.palette-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:4px;
}

.palette-header .field-label{
  margin-bottom:0;
}

.palette-swatches{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}

.palette-swatch,
.bg-swatch{
  width:32px;
  height:32px;
  border-radius:50%;
  border:2px solid transparent;
  cursor:pointer;
  padding:0;
  transition:border-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);
  outline:none;
}

.palette-swatch:hover{
  transform:scale(1.15);
  box-shadow:0 0 0 3px rgba(255,255,255,.25);
}

.palette-swatch:focus-visible{
  box-shadow:0 0 0 3px var(--color-accent);
}

.palette-swatch.is-active,
.bg-swatch.is-active{
  border-color:var(--color-text);
  box-shadow:0 0 0 3px rgba(226,232,240,.35);
  transform:scale(1.1);
}

.palette-swatch--separate{
  margin-left:8px;
}

.palette-swatch--black{
  border-color:rgba(255,255,255,.25);
}

.palette-swatch--black.is-active{
  border-color:var(--color-text);
}

.palette-swatch--white{
  border-color:rgba(0,0,0,.25);
}

.palette-swatch--white.is-active{
  border-color:var(--color-text);
}


/* ==================================================
   QR BACKGROUND COLOR SWATCHES
================================================== */

.bg-swatches{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}

.bg-swatch{
  flex-shrink:0;
}

.bg-swatch:disabled{
  opacity:.3;
  cursor:not-allowed;
  transform:none;
}

.bg-swatch:hover{
  transform:scale(1.15);
  box-shadow:0 0 0 3px rgba(255,255,255,.15);
}

.bg-swatch:focus-visible{
  box-shadow:0 0 0 2px var(--color-accent);
}


.bg-swatch.is-transparent{
  background-image:
    linear-gradient(45deg, #888 25%, transparent 25%),
    linear-gradient(-45deg, #888 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, #888 75%),
    linear-gradient(-45deg, transparent 75%, #888 75%);
  background-size:8px 8px;
  background-position:0 0, 0 4px, 4px -4px, -4px 0;
  background-color:#ccc;
}


/* ==================================================
   QR PREVIEW
================================================== */

.preview-area{
  position:relative;
  display:flex;
  justify-content:center;
  align-items:center;
  min-height:320px;
  flex:1;
}

.preview-placeholder{
  position:absolute;
  width:256px;
  height:256px;
  border-radius:var(--radius-qr);
  border:1.5px dashed rgba(255,255,255,.18);
  background:rgba(255,255,255,.03);
  pointer-events:none;

  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;

  font-size:13px;
  color:var(--color-text-soft);
  letter-spacing:.01em;
}

.generator.has-result .preview-placeholder{ display:none; }

#result{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:16px;
}


.qr-wrap{
  position:relative;
  display:flex;
  justify-content:center;
  align-items:center;
  opacity:0;
  transform:scale(0.96);
}

.generator.has-result .qr-wrap{
  animation:qrReveal 320ms ease-out forwards;
}

.qr-wrap::before{
  content:"";
  position:absolute;
  inset:-28px;

  background:radial-gradient(
    circle,
    rgba(124,58,237,.28),
    rgba(124,58,237,0)
  );

  filter:blur(36px);
  z-index:-1;
  opacity:.85;
}

.qr-wrap canvas{
  display:block;
  width:256px;
  height:256px;
  border-radius:var(--radius-qr);
  box-shadow:0 12px 28px rgba(0,0,0,.12);
}

.qr-wrap.is-transparent-bg canvas{
  box-shadow:
    0 12px 28px rgba(0,0,0,.12),
    0 0 0 1px rgba(168,85,247,.40);
}


.qr-animate{
  animation:qrLogoPop 260ms ease;
}

.qr-entry{
  animation:qrEntry 220ms ease both;
}


/* ==================================================
   DOWNLOAD BUTTON
================================================== */

.download-btn{

  margin-top:8px;
  padding:12px 20px;

  border-radius:var(--radius-md);
  border:none;

  background:var(--color-cta);
  box-shadow:0 2px 8px rgba(0,0,0,.25);

  font-family:inherit;
  font-size:16px;
  font-weight:700;

  letter-spacing:.01em;

  color:var(--color-button-text);
  cursor:pointer;

  opacity:0;
  transform:translateY(6px);
  pointer-events:none;

  transition:
    opacity 240ms ease,
    transform 240ms ease,
    box-shadow var(--transition-fast),
    background var(--transition-fast);

}

.download-btn.is-visible{
  opacity:1;
  transform:translateY(0);
  pointer-events:auto;
}

.download-btn:hover{
  background:var(--color-cta-hover);
  transform:translateY(-2px);
  box-shadow:var(--shadow-button-hover);
}

.download-btn:active{
  transform:translateY(0);
  box-shadow:var(--shadow-button-active);
  background:var(--color-cta-active);
}



/* ==================================================
   QR CONTRAST INDICATOR
================================================== */

.download-btn{ order:2; }

#qr-contrast{
  order:1;
  display:flex;
  align-items:center;
  gap:6px;
  font-size:12px;
  font-weight:600;
  padding:6px 12px;
  border-radius:999px;
  border:1px solid transparent;
  animation:pageIn 200ms ease both;
}

.qr-contrast-dot{
  width:7px;
  height:7px;
  border-radius:50%;
  flex-shrink:0;
}

#qr-contrast[data-level="good"]{
  background:rgba(34,197,94,.07);
  border-color:rgba(34,197,94,.20);
}
#qr-contrast[data-level="good"] .qr-contrast-dot  { background:#22c55e; }
#qr-contrast[data-level="good"] .qr-contrast-text { color:#22c55e; }

#qr-contrast[data-level="warn"]{
  background:rgba(245,158,11,.07);
  border-color:rgba(245,158,11,.20);
}
#qr-contrast[data-level="warn"] .qr-contrast-dot  { background:#f59e0b; }
#qr-contrast[data-level="warn"] .qr-contrast-text { color:#f59e0b; }

#qr-contrast[data-level="bad"]{
  background:rgba(248,113,113,.07);
  border-color:rgba(248,113,113,.20);
}
#qr-contrast[data-level="bad"] .qr-contrast-dot  { background:#f87171; }
#qr-contrast[data-level="bad"] .qr-contrast-text { color:#f87171; }

#qr-contrast[data-level="unknown"]{
  background:rgba(148,163,184,.07);
  border-color:rgba(148,163,184,.20);
}
#qr-contrast[data-level="unknown"] .qr-contrast-dot  { background:var(--color-placeholder); }
#qr-contrast[data-level="unknown"] .qr-contrast-text { color:var(--color-placeholder); }


/* ==================================================
   FOOTER
================================================== */

.footer-nav{
  text-align:center;
  padding:16px 24px 0;
}

.footer-nav a{
  color:var(--color-text);
  text-decoration:none;
  font-size:13px;
  font-weight:500;
  letter-spacing:0.03em;
  text-transform:uppercase;
  position:relative;
  padding-bottom:4px;
  transition:color var(--transition-fast);
}

.footer-nav a::after,
footer a::after{
  content:'';
  position:absolute;
  bottom:0;
  left:0;
  width:100%;
  height:2px;
  background:var(--color-cta);
  border-radius:1px;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .2s ease;
}

.footer-nav a:hover::after,
footer a:hover::after{
  transform:scaleX(1);
}

footer{
  text-align:center;
  padding:24px;
  font-size:13px;
  color:var(--color-footer-text);
}

footer a{
  color:inherit;
  font-weight:600;
  text-decoration:none;
  position:relative;
  padding-bottom:4px;
  transition:color var(--transition-fast);
}

footer a:visited,
footer a:hover,
footer a:active{
  color:inherit;
}


/* ==================================================
   ANIMATIONS
================================================== */

@keyframes pageIn{
  from{ opacity:0; }
  to  { opacity:1; }
}

@keyframes bgDrift{
  from{ filter:hue-rotate(0deg);  }
  to  { filter:hue-rotate(15deg); }
}

@keyframes qrReveal{
  from{ opacity:0; transform:scale(0.96); }
  to  { opacity:1; transform:scale(1);    }
}

@keyframes qrLogoPop{
  0%  { opacity:.6; }
  100%{ opacity:1;  }
}

@keyframes qrEntry{
  from{ opacity:0; transform:scale(.95); }
  to{   opacity:1; transform:scale(1);   }
}


@keyframes toastIn{
  from{ opacity:0; }
  to  { opacity:1; }
}

@keyframes toastOut{
  from{ opacity:1; }
  to  { opacity:0; }
}


/* ==================================================
   TOAST
================================================== */

#toast{
  position:fixed;
  bottom:24px;
  right:24px;
  z-index:9999;
  display:none;
  align-items:center;
  gap:8px;
  padding:12px 16px;
  border-radius:var(--radius-md);
  border:1px solid rgba(239,68,68,.25);
  background:var(--bg-toast);
  color:var(--color-toast-text);
  font-family:var(--font-main);
  font-size:14px;
  font-weight:500;
  box-shadow:var(--shadow-card);
  max-width:min(360px,90vw);
  line-height:1.4;
}

#toast.is-visible{
  display:flex;
  animation:toastIn .22s ease forwards;
}

#toast.is-hiding{
  display:flex;
  animation:toastOut .22s ease forwards;
}

#toast.is-gone{
  display:none;
}

.toast-icon{
  flex-shrink:0;
  display:flex;
  align-items:center;
}

.toast-icon img{
  width:16px;
  height:16px;
  display:block;
  filter:brightness(0) saturate(100%) invert(67%) sepia(49%) saturate(600%) hue-rotate(314deg) brightness(105%);
}


/* ==================================================
   COOKIE CONSENT
================================================== */

/* ---- Design tokens wired into the library's own var system ---- */
#cc-main{

  /* typography */
  --cc-font-family: var(--font-main);

  /* modal shape */
  --cc-modal-border-radius: var(--radius-lg);   /* 24px — matches glass cards */
  --cc-btn-border-radius:   var(--radius-md);   /* 16px — matches app buttons */
  --cc-modal-max-width:     min(360px, 90vw);

  /* surface */
  --cc-bg:          rgba(15,23,42,.85);  /* slightly more opaque than cards for readability */
  --cc-color-title: var(--color-text);
  --cc-color-text:  var(--color-text-soft);

  /* primary button — accent solid (gradient applied structurally below) */
  --cc-btn-primary-bg:          var(--color-accent);
  --cc-btn-primary-color:       #fff;
  --cc-btn-primary-hover-bg:    var(--color-accent-hover);
  --cc-btn-primary-hover-color: #fff;

  /* secondary button — surface style matching app's secondary pattern */
  --cc-btn-secondary-bg:          var(--color-surface);
  --cc-btn-secondary-color:       var(--color-text);
  --cc-btn-secondary-hover-bg:    var(--color-surface-hover);
  --cc-btn-secondary-hover-color: var(--color-text);

  /* separators and category blocks */
  --cc-separator-border-color:         rgba(255,255,255,.08);
  --cc-cookie-category-border:         rgba(255,255,255,.08);
  --cc-cookie-category-block-bg:       rgba(255,255,255,.05);
  --cc-cookie-category-block-border:   rgba(168,85,247,.18);
  --cc-cookie-category-block-bg-hover: rgba(255,255,255,.10);
  --cc-cookie-table-border:            rgba(255,255,255,.08);

  /* toggle: violet on, soft off, muted violet for readonly (Necessary) */
  --cc-toggle-on-bg:           var(--color-accent);
  --cc-toggle-off-bg:          rgba(255,255,255,.28);
  --cc-toggle-readonly-bg:     rgba(124,58,237,.45);
  --cc-toggle-knob-bg:         #fff;
  --cc-toggle-knob-icon-color: rgba(255,255,255,.80);

  /* overlay */
  --cc-overlay-bg: rgba(0,0,0,.60);

}

/* ---- Consent modal: full glass-morphism treatment ---- */
#cc-main .cm{
  background:var(--bg-modal);
  border:var(--border-soft);
  box-shadow:var(--shadow-card);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  font-size:14px;
  line-height:1.6;
  overflow:hidden;  /* clip the ::before overlay */
  bottom:1rem !important;
  left:1rem !important;
  top:auto !important;
}

/* top-fade overlay — mirrors the glass card ::before pattern */
#cc-main .cm::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  background:linear-gradient(
    180deg,
    rgba(255,255,255,.08),
    rgba(255,255,255,0)
  );
  pointer-events:none;
  z-index:0;
}

/* consent title */
#cc-main .cm__title{
  color:var(--color-text) !important;
  font-weight:700;
  letter-spacing:-.01em;
}

/* consent body text */
#cc-main .cm__desc{
  color:var(--color-text-soft) !important;
  font-size:13px;
  line-height:1.65;
}

/* consent button group */
#cc-main .cm__btns{
  gap:8px;
}

/* primary button: violet solid */
#cc-main .cm__btn.cm__btn--primary{
  background:var(--color-accent) !important;
  color:#fff !important;
  font-family:var(--font-main) !important;
  font-weight:600 !important;
  border:none !important;
  transition:
    transform var(--transition-fast),
    box-shadow var(--transition-fast),
    filter var(--transition-fast) !important;
}

#cc-main .cm__btn.cm__btn--primary:hover{
  background:var(--color-accent-hover) !important;
  transform:translateY(-2px) !important;
  box-shadow:0 4px 16px rgba(124,58,237,.35) !important;
}

#cc-main .cm__btn.cm__btn--primary:active{
  transform:translateY(0) !important;
  filter:brightness(.93) !important;
}

/* secondary button: ghost with violet border */
#cc-main .cm__btn.cm__btn--secondary{
  background:transparent !important;
  color:var(--color-text-soft) !important;
  font-family:var(--font-main) !important;
  font-weight:500 !important;
  border:1px solid rgba(168,85,247,.30) !important;
  transition:
    background var(--transition-fast),
    color var(--transition-fast),
    border-color var(--transition-fast),
    transform var(--transition-fast) !important;
}

#cc-main .cm__btn.cm__btn--secondary:hover{
  background:rgba(124,58,237,.12) !important;
  color:var(--color-text) !important;
  border-color:rgba(168,85,247,.55) !important;
  transform:translateY(-1px) !important;
}

#cc-main .cm__btn.cm__btn--secondary:active{
  transform:translateY(0) !important;
  background:rgba(124,58,237,.20) !important;
}

/* ---- Overlay: subtle blur to reinforce depth ---- */
#cc-main .cc-overlay{
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}


/* ==================================================
   PRIVACY PAGE
================================================== */

.back-link{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:14px;
  font-weight:500;
  color:var(--color-text-soft);
  text-decoration:none;
  margin-bottom:32px;
  transition:color var(--transition-fast);
}
.back-link::before{
  content:"<";
  color:var(--color-cta);
  font-weight:700;
  font-size:16px;
  line-height:1;
  transition:transform var(--transition-fast);
}
.back-link:hover{ color:var(--color-text); }
.back-link:hover::before{ transform:translateX(-3px); }

.privacy-page{
  width:min(640px,92vw);
  margin:48px auto 80px;
  animation:pageIn 500ms ease both;
}

.privacy-card{
  position:relative;
  background:var(--bg-card);
  border:var(--border-glass);
  border-radius:var(--radius-lg);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  box-shadow:var(--shadow-card);
  padding:40px;
  overflow:hidden;
}

.privacy-card::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  background:linear-gradient(
    180deg,
    rgba(255,255,255,.08),
    rgba(255,255,255,0)
  );
  pointer-events:none;
}

.privacy-page h1{
  font-family:'Inter',sans-serif;
  font-size:44px;
  font-weight:800;
  letter-spacing:-0.03em;
  color:var(--color-text);
  margin-bottom:12px;
}

.privacy-page .privacy-intro{
  font-size:16px;
  line-height:1.65;
  color:var(--color-text);
  margin-bottom:40px;
}

.privacy-item{
  margin-bottom:32px;
}

.privacy-item:last-child{
  margin-bottom:0;
}

.privacy-item h2{
  font-family:var(--font-main);
  font-size:16px;
  font-weight:600;
  color:var(--color-text);
  margin-bottom:8px;
}

.privacy-item p{
  font-size:15px;
  line-height:1.7;
  color:var(--color-text-soft);
}


/* ==================================================
   RESPONSIVE
================================================== */

/* Desktop: preview card sticks and stretches full column height */
@media (min-width:821px){
  .preview-card{
    position:sticky;
    top:1.5rem;
    align-self:stretch;
    justify-content:center;
  }
}

@media (max-width:820px){

  .generator{
    grid-template-columns:1fr;
    gap:24px;
  }

  .generator-card{
    padding:24px;
  }

  .preview-card{
    padding:24px;
  }

}
