/* ============================================================================
 * SendAPhoto Showcase Website — styles
 * ============================================================================
 * Every color / font-size / spacing / radius / shadow value below is a
 * var(--...) reference into design-tokens.css (loaded before this file in
 * BaseLayout.astro's <head>). No hardcoded hex, px spacing, border-radius,
 * or box-shadow literal is used here.
 *
 * Two categories of raw numbers ARE used directly, deliberately, since
 * neither is a "design value" tracked in design-tokens.css:
 *   - responsive breakpoints (@media max-width: 1024px / 720px) — structural,
 *     not a color/spacing/radius/shadow token
 *   - border-width (1px hairlines, 2px/4px emphasis borders) — line
 *     thickness, not covered by any token in design-tokens.css
 * Any other px/rem/hex value not explicitly called out above should be
 * treated as a bug — reuse the closest token via calc() instead of adding
 * a new literal.
 * ============================================================================ */

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-family);
  font-size: var(--text-body-md-size);
  font-weight: var(--text-body-md-weight);
  line-height: var(--text-body-md-line-height);
  background: var(--color-background);
  color: var(--color-on-surface);
}
img { max-width: 100%; display: block; }
a { color: var(--color-primary); text-decoration: none; }
a:hover { text-decoration: underline; }
.container {
  max-width: var(--spacing-container-max);
  margin: 0 auto;
  padding: 0 var(--spacing-margin-mobile);
}
@media (min-width: 1025px) {
  .container { padding: 0 var(--spacing-margin-desktop); }
}

h1, h2, h3 { color: var(--color-on-surface); }
h1 {
  font-size: var(--text-display-lg-mobile-size);
  font-weight: var(--text-display-lg-mobile-weight);
  line-height: var(--text-display-lg-mobile-line-height);
  letter-spacing: var(--text-display-lg-mobile-letter-spacing);
  margin: 0 0 var(--spacing-stack-unit);
}
@media (min-width: 1025px) {
  h1 {
    font-size: var(--text-display-lg-size);
    font-weight: var(--text-display-lg-weight);
    line-height: var(--text-display-lg-line-height);
    letter-spacing: var(--text-display-lg-letter-spacing);
  }
}
h2 {
  font-size: var(--text-headline-md-mobile-size);
  font-weight: var(--text-headline-md-mobile-weight);
  line-height: var(--text-headline-md-mobile-line-height);
  margin: var(--spacing-stack-unit) 0 calc(var(--spacing-stack-unit) * 2);
}
@media (min-width: 1025px) {
  h2 {
    font-size: var(--text-headline-md-size);
    font-weight: var(--text-headline-md-weight);
    line-height: var(--text-headline-md-line-height);
    letter-spacing: var(--text-headline-md-letter-spacing);
  }
}

.eyebrow {
  display: inline-block;
  background: var(--color-surface-container);
  color: var(--color-primary);
  padding: calc(var(--spacing-stack-unit) * 0.75) calc(var(--spacing-stack-unit) * 1.75);
  border-radius: var(--radius-full);
  font-size: var(--text-label-sm-size);
  font-weight: var(--text-label-sm-weight);
  letter-spacing: var(--text-label-sm-letter-spacing);
  margin-bottom: calc(var(--spacing-stack-unit) * 2);
}

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-stack-unit);
  padding: calc(var(--spacing-stack-unit) * 1.75) calc(var(--spacing-stack-unit) * 3.25);
  border-radius: var(--radius-full);
  font-family: var(--font-family);
  font-weight: var(--text-label-sm-weight);
  font-size: var(--text-body-md-size);
  cursor: pointer;
  border: 1px solid transparent;
  transition: transform var(--transition-fast) ease, box-shadow var(--transition-fast) ease, background var(--transition-fast) ease, filter var(--transition-fast) ease;
}
.btn-primary { background: var(--color-primary); color: var(--color-on-primary) !important; }
.btn-primary:hover { transform: translateY(-4px); box-shadow: var(--shadow-xl); text-decoration: none; }
.btn-outline { background: var(--color-surface); color: var(--color-primary) !important; border-color: var(--color-outline-variant); }
.btn-outline:hover { background: var(--color-surface-container); text-decoration: none; }
.btn-final-cta {
  background: var(--color-primary);
  color: var(--color-on-primary) !important;
  border-radius: var(--radius-2xl);
}
.btn-final-cta:hover { transform: scale(1.05); text-decoration: none; }
.btn-free-cta {
  background: var(--color-surface-container-lowest);
  color: var(--color-primary) !important;
  border-color: var(--color-outline-variant);
  width: 100%;
  justify-content: center;
}
.btn-free-cta:hover { background: var(--color-primary-fixed); text-decoration: none; }
.btn-pro-cta {
  background: var(--color-primary);
  color: var(--color-on-primary) !important;
  box-shadow: var(--shadow-primary-tint);
  width: 100%;
  justify-content: center;
}
.btn-pro-cta:hover { filter: brightness(1.1); text-decoration: none; }

/* ---------- Header ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-outline-variant);
  height: var(--spacing-header-height);
  display: flex;
  align-items: center;
}
.nav {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: calc(var(--spacing-stack-unit) * 2);
}
.logo {
  font-weight: var(--text-headline-md-weight);
  font-size: calc(var(--text-headline-md-mobile-size) * 0.6);
  color: var(--color-primary);
}
.nav-links {
  list-style: none;
  display: flex;
  gap: calc(var(--spacing-stack-unit) * 3.5);
  margin: 0;
  padding: 0;
}
.nav-links a {
  color: var(--color-on-surface);
  font-weight: var(--text-label-sm-weight);
  transition: color var(--transition-fast) ease;
}
.nav-links a:hover { color: var(--color-primary); }
.nav-right { display: flex; align-items: center; gap: calc(var(--spacing-stack-unit) * 2); }
.nav-cta {
  background: var(--color-primary);
  color: var(--color-on-primary) !important;
  padding: calc(var(--spacing-stack-unit) * 1.25) calc(var(--spacing-stack-unit) * 2.5);
  border-radius: var(--radius-full);
  font-weight: var(--text-label-sm-weight);
  font-size: var(--text-label-sm-size);
  white-space: nowrap;
  transform: scale(0.95);
  transition: transform var(--transition-fast) ease;
}
.nav-cta:hover { text-decoration: none; }
.nav-cta:active { transform: scale(0.90); }
.nav-cta-mobile { display: none; text-align: center; }

.nav-toggle {
  display: none;
  flex-direction: column;
  gap: calc(var(--spacing-stack-unit) * 0.5);
  background: none;
  border: none;
  cursor: pointer;
  padding: var(--spacing-stack-unit);
}
.nav-toggle-bar {
  width: calc(var(--spacing-stack-unit) * 2.75);
  height: 2px; /* hairline thickness, not a spacing token — see file header */
  background: var(--color-on-surface);
  border-radius: var(--radius-default);
}

.nav-lang-desktop .lang-switcher { gap: calc(var(--spacing-stack-unit) * 0.75); }
.nav-lang-mobile { display: none; }

/* ---------- Hero ---------- */
.hero {
  background: var(--hero-gradient);
  padding: var(--spacing-section-y-compact) 0;
}
.hero-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: calc(var(--spacing-stack-unit) * 5);
  align-items: center;
  text-align: center;
}
@media (min-width: 1025px) {
  .hero-grid {
    grid-template-columns: 1.1fr 0.9fr;
    text-align: left;
  }
}
.hero-sub {
  font-size: var(--text-body-lg-size);
  line-height: var(--text-body-lg-line-height);
  color: var(--color-on-surface-variant);
  margin: 0 0 calc(var(--spacing-stack-unit) * 3.5);
}
.hero-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: calc(var(--spacing-stack-unit) * 1.75);
  margin-bottom: calc(var(--spacing-stack-unit) * 3);
}
@media (min-width: 1025px) {
  .hero-actions { justify-content: flex-start; }
}
.trust-row { display: flex; flex-direction: column; align-items: center; gap: var(--spacing-stack-unit); }
@media (min-width: 1025px) {
  .trust-row { align-items: flex-start; }
}
.trust-item { display: flex; align-items: center; gap: var(--spacing-stack-unit); color: var(--color-on-surface-variant); font-size: var(--text-body-md-size); }
.dot { width: calc(var(--spacing-stack-unit) * 0.75); height: calc(var(--spacing-stack-unit) * 0.75); border-radius: var(--radius-full); background: var(--color-primary); display: inline-block; flex-shrink: 0; }

.hero-visual { display: flex; justify-content: center; }
.hero-image-float {
  max-width: 320px;
  border-radius: var(--radius-3xl);
  box-shadow: var(--shadow-2xl);
  animation: float 6s ease-in-out infinite;
}
.hero-image-float img { border-radius: var(--radius-3xl); }
@keyframes float {
  0% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
  100% { transform: translateY(0); }
}

/* ---------- Sections ---------- */
section { padding: var(--spacing-section-y) 0; }
.hero, #download { padding: var(--spacing-section-y-compact) 0; }
.section-alt { background: var(--color-surface-container-low); }
.section-head { text-align: center; max-width: calc(var(--spacing-container-max) * 0.5); margin: 0 auto calc(var(--spacing-stack-unit) * 5); }
.section-head p { color: var(--color-on-surface-variant); font-size: var(--text-body-lg-size); margin: 0; }

/* ---------- How it works ---------- */
.steps {
  display: grid;
  grid-template-columns: 1fr;
  gap: calc(var(--spacing-stack-unit) * 4);
}
@media (min-width: 1025px) {
  .steps { grid-template-columns: repeat(3, 1fr); }
}
.step { text-align: center; }
.step-icon {
  width: calc(var(--spacing-stack-unit) * 10);
  height: calc(var(--spacing-stack-unit) * 10);
  border-radius: var(--radius-full);
  background: var(--color-primary-fixed);
  color: var(--color-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: calc(var(--text-headline-md-size) * 0.7);
  margin: 0 auto calc(var(--spacing-stack-unit) * 2.5);
  transition: background var(--transition-shadow-hover) ease, color var(--transition-shadow-hover) ease;
}
.step:hover .step-icon { background: var(--color-primary); color: var(--color-on-primary); }
.step h3 { margin: 0 0 var(--spacing-stack-unit); font-size: calc(var(--text-body-lg-size) * 1.1); }
.step p { color: var(--color-on-surface-variant); margin: 0; }

/* ---------- Bento / differentiators ---------- */
.bento-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(2, auto);
  gap: var(--spacing-gutter);
}
.bento-card {
  background: var(--glass-card-bg);
  backdrop-filter: blur(var(--glass-card-blur));
  border: 1px solid var(--glass-card-border-desktop);
  border-radius: var(--radius-3xl);
  padding: var(--spacing-card-padding-sm);
  transition: box-shadow var(--transition-shadow-hover) ease;
}
.bento-card-large {
  grid-column: span 2;
  grid-row: span 2;
  padding: var(--spacing-card-padding-lg);
  display: flex;
  flex-direction: column;
  justify-content: center;
  transition: border-color var(--transition-shadow-hover) ease;
}
.bento-card:not(.bento-card-large):hover { box-shadow: var(--shadow-md); }
.bento-card-large:hover { border-color: var(--color-primary); }
.feature-icon { font-size: calc(var(--text-headline-md-size) * 0.75); margin-bottom: calc(var(--spacing-stack-unit) * 1.5); }
.bento-card h3 { margin: 0 0 var(--spacing-stack-unit); font-size: calc(var(--text-body-lg-size) * 1.05); }
.bento-card-large h3 { font-size: var(--text-headline-md-mobile-size); }
.bento-card p { color: var(--color-on-surface-variant); margin: 0; }
@media (max-width: 1024px) {
  .bento-grid { grid-template-columns: 1fr; }
  .bento-card-large { grid-column: auto; grid-row: auto; }
}

/* ---------- Pricing ---------- */
.pricing-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: calc(var(--spacing-stack-unit) * 4);
  max-width: 780px;
  margin: 0 auto;
}
@media (min-width: 1025px) {
  .pricing-grid { grid-template-columns: repeat(2, 1fr); align-items: center; }
}
.price-card {
  background: var(--color-surface-container-lowest);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-3xl);
  padding: var(--spacing-card-padding-md);
  position: relative;
  transition: box-shadow var(--transition-shadow-hover) ease;
}
.price-card:not(.highlight):hover { box-shadow: var(--shadow-xl); }
.price-card.highlight {
  border: 4px solid var(--color-primary);
  box-shadow: var(--shadow-2xl);
  z-index: 10;
}
@media (min-width: 1025px) {
  .price-card.highlight { transform: scale(1.05); }
}
.price-badge {
  position: absolute;
  top: calc(var(--spacing-stack-unit) * -2.5);
  left: 50%;
  transform: translateX(-50%);
  background: var(--color-primary);
  color: var(--color-on-primary);
  padding: calc(var(--spacing-stack-unit) * 0.75) calc(var(--spacing-stack-unit) * 1.75);
  border-radius: var(--radius-full);
  font-size: var(--text-label-sm-size);
  font-weight: var(--text-label-sm-weight);
  white-space: nowrap;
}
.price-card h3 { margin: 0 0 var(--spacing-stack-unit); }
.price {
  font-size: calc(var(--text-headline-md-size) * 1.1);
  font-weight: 800;
  margin: var(--spacing-stack-unit) 0;
}
.price-note { color: var(--color-on-surface-variant); font-size: var(--text-body-md-size); margin: 0 0 calc(var(--spacing-stack-unit) * 2.5); }
.price-list { list-style: none; padding: 0; margin: 0 0 calc(var(--spacing-stack-unit) * 3); display: flex; flex-direction: column; gap: calc(var(--spacing-stack-unit) * 1.25); }
.price-list li { display: flex; align-items: center; gap: var(--spacing-stack-unit); color: var(--color-on-surface-variant); }
.icon-yes { color: var(--color-primary); font-weight: 700; }
.pricing-note { text-align: center; color: var(--color-on-surface-variant); max-width: 560px; margin: calc(var(--spacing-stack-unit) * 3) auto 0; font-size: var(--text-body-md-size); }

/* ---------- Final CTA banner ---------- */
.final-cta {
  text-align: center;
  background: var(--color-inverse-surface);
  background-image: linear-gradient(
    color-mix(in srgb, var(--color-primary) 15%, transparent),
    color-mix(in srgb, var(--color-primary) 15%, transparent)
  );
  border-radius: var(--radius-hero-banner);
  padding: calc(var(--spacing-stack-unit) * 7) var(--spacing-gutter);
  color: var(--color-inverse-on-surface);
}
.final-cta h2 { margin-top: 0; color: var(--color-inverse-on-surface); }
.final-cta p { color: var(--color-inverse-on-surface); margin-bottom: calc(var(--spacing-stack-unit) * 3.5); }

/* ---------- FAQ page ---------- */
.faq-page { padding: var(--spacing-section-y-compact) var(--spacing-margin-mobile); }
.faq-header { max-width: 720px; margin: 0 auto calc(var(--spacing-stack-unit) * 5); text-align: center; }
.faq-header p { color: var(--color-on-surface-variant); font-size: var(--text-body-lg-size); }
.faq-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: calc(var(--spacing-stack-unit) * 4);
  max-width: var(--spacing-container-max);
  margin: 0 auto;
}
@media (min-width: 1025px) {
  .faq-layout { grid-template-columns: 4fr 8fr; align-items: start; }
}
.faq-sidebar-card {
  background: var(--color-surface-container-low);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-3xl);
  padding: var(--spacing-card-padding-md);
}
@media (min-width: 1025px) {
  .faq-sidebar-card { position: sticky; top: calc(var(--spacing-header-height) + var(--spacing-gutter)); }
}
.faq-sidebar-card h3 { margin-top: 0; }
.faq-sidebar-card p { color: var(--color-on-surface-variant); }
.faq-sidebar-email { display: inline-block; font-weight: var(--text-label-sm-weight); margin-top: var(--spacing-stack-unit); }

.accordion { display: flex; flex-direction: column; gap: calc(var(--spacing-stack-unit) * 2); }
.accordion-item {
  background: var(--color-surface-container-lowest);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-xl);
  transition: box-shadow var(--transition-shadow-hover) ease, background var(--transition-shadow-hover) ease;
}
.accordion-item:hover { box-shadow: var(--shadow-lg); }
.accordion-item.active { background: var(--color-surface-container-low); }
.accordion-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-stack-unit);
  background: none;
  border: none;
  text-align: left;
  cursor: pointer;
  font-family: var(--font-family);
  font-size: var(--text-body-lg-size);
  font-weight: 600;
  color: var(--color-on-surface);
  padding: var(--spacing-card-padding-sm);
}
.accordion-chevron {
  flex-shrink: 0;
  color: var(--color-primary);
  font-size: calc(var(--text-headline-md-size) * 0.6);
  line-height: 1;
  transition: transform var(--transition-shadow-hover) ease;
}
.accordion-item.active .accordion-chevron { transform: rotate(180deg); }
.accordion-panel {
  max-height: 0;
  overflow: hidden;
  padding: 0 var(--spacing-card-padding-sm);
  transition: max-height var(--transition-accordion), padding-bottom var(--transition-accordion);
}
.accordion-item.active .accordion-panel {
  max-height: 500px;
  padding-bottom: var(--spacing-card-padding-sm);
}
.accordion-panel p { margin: 0; color: var(--color-on-surface-variant); }

/* ---------- Come funziona / long-form content pages ---------- */
.content-page { max-width: 760px; margin: 0 auto; padding: var(--spacing-section-y-compact) var(--spacing-margin-mobile) var(--spacing-section-y); }
.content-page h1 { font-size: var(--text-display-lg-mobile-size); }
.content-page h2 { font-size: var(--text-headline-md-mobile-size); margin-top: calc(var(--spacing-stack-unit) * 5); }
.content-page h3 { font-size: var(--text-body-lg-size); margin-top: calc(var(--spacing-stack-unit) * 3.5); }
.content-page p, .content-page li { color: var(--color-on-surface-variant); font-size: var(--text-body-md-size); }
.content-page .updated { color: var(--color-on-surface-variant); font-size: var(--text-label-sm-size); }
.content-page table { width: 100%; border-collapse: collapse; margin: calc(var(--spacing-stack-unit) * 2) 0; font-size: var(--text-body-md-size); }
.content-page th, .content-page td { text-align: left; padding: calc(var(--spacing-stack-unit) * 1.25) calc(var(--spacing-stack-unit) * 1.5); border: 1px solid var(--color-outline-variant); vertical-align: top; }
.content-page th { background: var(--color-surface-container-low); }
.disclaimer-box {
  background: var(--color-surface-container-low);
  border: 1px solid var(--color-outline-variant);
  border-radius: var(--radius-lg);
  padding: calc(var(--spacing-stack-unit) * 2) calc(var(--spacing-stack-unit) * 2.5);
  font-size: var(--text-body-md-size);
  color: var(--color-on-surface-variant);
  margin-bottom: calc(var(--spacing-stack-unit) * 3);
}
.step-block { margin-bottom: calc(var(--spacing-stack-unit) * 4); }
.step-block .phone-frame {
  background: var(--color-surface-container-lowest);
  border-radius: var(--radius-3xl);
  border: 1px solid var(--color-outline-variant);
  box-shadow: var(--shadow-soft);
  padding: var(--spacing-stack-unit);
}
.step-block .phone-frame img { border-radius: var(--radius-2xl); }
.phone-frame-sm { max-width: calc(var(--spacing-stack-unit) * 27.5); margin: 0 auto; }
.network-note {
  background: var(--color-surface-container-low);
  border-left: 4px solid var(--color-primary);
  border-radius: var(--radius-lg);
  padding: calc(var(--spacing-stack-unit) * 2.5) var(--spacing-card-padding-sm);
  margin-top: calc(var(--spacing-stack-unit) * 4);
}
.network-note-heading { margin-top: 0; }
.network-note-text { margin-bottom: 0; }

/* ---------- Footer ---------- */
.site-footer {
  background: var(--color-surface-container);
  border-top: 1px solid var(--color-outline-variant);
  padding: var(--spacing-section-y-compact) 0 calc(var(--spacing-stack-unit) * 3);
}
.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: calc(var(--spacing-stack-unit) * 4);
  margin-bottom: calc(var(--spacing-stack-unit) * 4);
}
@media (min-width: 1025px) {
  .footer-grid { grid-template-columns: 1.2fr 1fr; }
}
.footer-brand p { color: var(--color-on-surface-variant); max-width: 320px; }
.footer-stores { display: flex; flex-wrap: wrap; gap: var(--spacing-stack-unit); margin-top: calc(var(--spacing-stack-unit) * 2); }
.store-badge {
  display: inline-flex;
  align-items: center;
  background: var(--color-inverse-surface);
  color: var(--color-inverse-on-surface) !important;
  padding: calc(var(--spacing-stack-unit) * 1.25) calc(var(--spacing-stack-unit) * 2);
  border-radius: var(--radius-lg);
  font-size: var(--text-label-sm-size);
  font-weight: var(--text-label-sm-weight);
}
.store-badge:hover { text-decoration: none; opacity: 0.9; }
.footer-links { display: grid; grid-template-columns: repeat(2, 1fr); gap: calc(var(--spacing-stack-unit) * 3); }
.footer-col h4 { margin: 0 0 calc(var(--spacing-stack-unit) * 1.5); font-size: var(--text-body-md-size); color: var(--color-on-surface); }
.footer-col ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--spacing-stack-unit); }
.footer-col a { color: var(--color-on-surface-variant); transition: color var(--transition-fast) ease; }
.footer-col a:hover { color: var(--color-primary); text-decoration: underline; }
.footer-bottom {
  text-align: center;
  color: var(--color-on-surface-variant);
  font-size: var(--text-label-sm-size);
  border-top: 1px solid var(--color-outline-variant);
  padding-top: calc(var(--spacing-stack-unit) * 2.5);
}

/* ---------- Language switcher ---------- */
.lang-switcher { display: flex; flex-wrap: wrap; gap: calc(var(--spacing-stack-unit) * 1.25); }
.lang-link { color: var(--color-on-surface-variant); font-size: var(--text-label-sm-size); }
.lang-link.active { color: var(--color-primary); font-weight: 700; }

/* ---------- Scroll reveal ---------- */
.reveal {
  opacity: 0;
  transform: translateY(calc(var(--spacing-stack-unit) * 3));
  transition: opacity var(--transition-scroll-reveal) ease, transform var(--transition-scroll-reveal) ease;
}
.reveal.is-visible { opacity: 1; transform: none; }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
  .nav-links { display: none; }
  .nav-lang-desktop { display: none; }
  .nav-cta { display: none; }
  .nav-toggle { display: flex; }

  .nav-menu {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--color-surface);
    border-bottom: 1px solid var(--color-outline-variant);
    flex-direction: column;
    align-items: stretch;
    gap: calc(var(--spacing-stack-unit) * 2.5);
    padding: var(--spacing-margin-mobile);
    display: none;
  }
  .nav-menu.open { display: flex; }
  .nav-menu .nav-links { display: flex; flex-direction: column; gap: calc(var(--spacing-stack-unit) * 2); }
  .nav-lang-mobile { display: block; }
  .nav-cta-mobile { display: inline-flex; justify-content: center; }
}
@media (max-width: 720px) {
  .faq-sidebar-card { position: static; }
}
