/**
 * Appily Fortyeight — global responsive overrides
 * Complements page-specific bloom CSS media queries.
 */

html { -webkit-text-size-adjust: 100%; }
img, video, svg { max-width: 100%; height: auto; }
.page-wrap, .page-main { overflow-x: clip; }

/* ── Tablet / small laptop ── */
@media (max-width: 960px) {
  .container { width: min(1200px, 94vw); }

  .a48-header-shell { padding: 0.75rem 0; }
  .a48-footer-grid { grid-template-columns: 1fr 1fr; gap: 1.5rem; }
  .a48-newsletter-form { flex-direction: column; border-radius: 16px; }
  .a48-newsletter-form input,
  .a48-newsletter-form button { width: 100%; border-left: none; border-top: 1px dashed var(--a48-border); }
  .a48-footer-base-inner { flex-direction: column; text-align: center; }

  /* Home */
  .a48-hero > .container.a48-hero-grid,
  .a48-story-grid,
  .a48-top-grid { grid-template-columns: 1fr; }
  .a48-hero-visual { min-height: 280px; order: -1; }
  .a48-hero-float { display: none; }
  .a48-carousel-nav { display: none; }
  .a48-carousel-wrap::before,
  .a48-carousel-wrap::after { display: none; }
  .a48-banner-grid { grid-template-columns: 1fr; }
  .a48-top-products-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  /* Legacy / shared layouts */
  .catalog-layout { grid-template-columns: 1fr; }
  .filter-panel { display: none; }
  .product-detail-grid { grid-template-columns: 1fr; }
  .page-hero { padding: 1.75rem 0 1.25rem; }

  /* Policy & payment */
  .a48-policy-nav { gap: 0.35rem; flex-wrap: wrap; }
  .a48-policy-nav a { font-size: 0.74rem; padding: 0.42rem 0.75rem; }
  .a48-policy-stage { grid-template-columns: 1fr !important; }
  .a48-policy-nav { position: static; }
  .a48-pay-actions { flex-direction: column; align-items: stretch; }
  .a48-pay-btn { width: 100%; }

  /* Bloom heroes — stack copy + side cards */
  [class*="-hero-grid"]:not(.a48-header-shell) {
    grid-template-columns: 1fr !important;
  }

  [class*="-hero"]:not(.a48-header) {
    padding-top: 2rem;
    padding-bottom: 2rem;
  }

  /* Bloom docks — two columns on tablet */
  .a48-bloom-dock,
  .a48-lounge-bento,
  .a48-petal-dock-grid,
  .a48-ledger-bento,
  .a48-pulse-pings,
  .a48-florist-dock,
  .a48-signal-bento,
  .a48-relay-pings,
  .a48-celebrate-dock,
  .a48-cleared-bento,
  .a48-lift-pings,
  .a48-studio-bento,
  .a48-atlas-pings,
  .a48-beacon-dock,
  .a48-trace-bento,
  .a48-path-pings,
  .a48-dispatch-bento,
  .a48-specimen-dock,
  .a48-atelier-perks,
  .a48-lot-perks,
  .a48-lot-sheets,
  .a48-lanes-dock-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .a48-lanes-dock {
    flex-direction: column;
    text-align: center;
  }

  .a48-seal-dock-inner,
  .a48-co-dock-inner,
  .a48-pad-dock-inner {
    flex-direction: column;
    align-items: stretch;
    text-align: center;
  }

  /* Checkout sticky summary */
  .a48-seal-layout,
  .a48-co-workspace,
  .a48-pad-runway,
  .a48-trace-workspace,
  .a48-path-deck,
  .a48-atelier-workspace,
  .a48-lot-stage-inner,
  .a48-signal-workspace,
  .a48-cleared-workspace,
  .a48-lift-pass,
  .a48-studio-workspace,
  .a48-studio-registry-wrap,
  .a48-atlas-dossier,
  .a48-lounge-stage,
  .a48-bloom-stage,
  .a48-petal-stage,
  .a48-ledger-stage,
  .a48-basket-stage,
  .a48-hold-stage,
  .a48-bay-console-grid {
    grid-template-columns: 1fr !important;
  }

  /* Side rails become static on tablet */
  [class*="-rail"],
  .a48-lanes-rail,
  .a48-lounge-rail,
  .a48-bloom-rail,
  .a48-petal-rail,
  .a48-ledger-rail,
  .a48-pulse-lifecycle,
  .a48-specimen-rail,
  .a48-atelier-rail,
  .a48-signal-rail,
  .a48-trace-rail,
  .a48-path-deck,
  .a48-co-rail,
  .a48-seal-rail {
    position: static !important;
    top: auto !important;
  }

  /* Shop grid */
  .a48-shop-grid,
  .a48-shop-products,
  .product-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  /* Home garden layout */
  .a48g-hero-grid,
  .a48g-promos-grid,
  .a48g-midhero-inner {
    grid-template-columns: 1fr !important;
  }
  .a48g-cats-row { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
  .a48g-features-row { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .a48g-card-buy {
    flex-wrap: wrap;
  }
  .a48g-card-buy input,
  .a48g-card-buy button {
    min-height: 44px;
  }

  /* Bay / pad / lot mobile docks */
  .a48-bay-dock,
  .a48-pad-dock,
  .a48-lot-dock {
    padding-bottom: env(safe-area-inset-bottom, 0);
  }
}

/* ── Phone landscape / large phone ── */
@media (max-width: 640px) {
  .container { width: min(1200px, 92vw); }

  .a48-promo-inner {
    justify-content: center;
    text-align: center;
    padding: 0.5rem 0;
  }
  .a48-promo-inner p { font-size: 0.72rem; line-height: 1.45; }

  .a48-passport-medallion { --med-size: 34px; }
  .a48-passport-medallion--sm { --med-size: 30px; }
  .a48-util-acct-meta { display: none; }

  .a48-footer { margin-top: 2rem; padding-top: 2rem; }
  .a48-footer-grid { grid-template-columns: 1fr; }
  .a48-footer-base { font-size: 0.72rem; padding: 0.85rem 0; }
  .a48-scroll-top { bottom: 1rem; right: 1rem; width: 40px; height: 40px; }

  .a48-top-products-grid,
  .a48-shop-grid,
  .a48-shop-products,
  .product-grid {
    grid-template-columns: 1fr !important;
  }

  .a48-section-head { margin-bottom: 1.35rem; }
  .a48-section-head h2 { font-size: clamp(1.45rem, 6vw, 1.85rem); }

  /* Forms — prevent iOS zoom on focus */
  .a48-bloom-field input,
  .a48-bloom-field textarea,
  .a48-bloom-field select,
  .a48-lounge-field input,
  .a48-lounge-field textarea,
  .a48-lounge-field select,
  .a48-specimen-form input,
  .a48-specimen-form select,
  .a48-atelier-form input,
  .a48-atelier-form select,
  .a48-lot-form input,
  .a48-lot-form select,
  .a48-petal-form input,
  .a48-petal-form select,
  .a48-basket-form input,
  .a48-hold-form input,
  .a48-hold-qty input,
  .a48-bay-form input,
  .a48-bay-qty input,
  .a48-seal-form input,
  .a48-seal-form select,
  .a48-co-form input,
  .a48-co-form select,
  .a48-co-form textarea,
  .a48-pad-form input,
  .a48-pad-form select,
  .a48-pad-form textarea,
  .a48-trace-form input,
  .a48-trace-form textarea,
  .a48-trace-form select,
  .a48-path-form input,
  .a48-path-form textarea,
  .a48-path-form select,
  .a48-florist-form input,
  .a48-florist-form textarea,
  .a48-signal-form input,
  .a48-signal-form textarea,
  .a48-relay-form input,
  .a48-relay-form textarea,
  .a48-mobile-search input,
  input[type="email"],
  input[type="password"],
  input[type="tel"],
  input[type="search"],
  select,
  textarea {
    font-size: 16px;
  }

  /* Tables scroll on small screens */
  .a48-specimen-spec-table,
  .a48-atelier-spec-table,
  table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* Bloom docks single column */
  .a48-bloom-dock,
  .a48-lounge-bento,
  .a48-petal-dock-grid,
  .a48-ledger-bento,
  .a48-pulse-pings,
  .a48-florist-dock,
  .a48-signal-bento,
  .a48-relay-pings,
  .a48-celebrate-dock,
  .a48-cleared-bento,
  .a48-lift-pings,
  .a48-studio-bento,
  .a48-atlas-pings,
  .a48-beacon-dock,
  .a48-trace-bento,
  .a48-path-pings,
  .a48-dispatch-bento,
  .a48-specimen-dock,
  .a48-atelier-perks,
  .a48-lot-perks,
  .a48-lot-sheets,
  .a48-lanes-dock-grid {
    grid-template-columns: 1fr !important;
  }

  .a48-petal-dock-tile--wide,
  .a48-ledger-tile--wide,
  .a48-pulse-ping,
  .a48-dispatch-tile--wide,
  .a48-dispatch-tile--email,
  .a48-lounge-tile--wide {
    grid-column: span 1 !important;
  }

  /* Stage overlap tighten on phones */
  .a48-bloom-stage.auth-page,
  .a48-lounge-stage.auth-page,
  [class*="-stage"] {
    margin-top: -1.25rem;
    padding-left: 0;
    padding-right: 0;
  }

  /* Ribbon / sticky bars */
  .a48-specimen-ribbon-inner,
  .a48-atelier-dock-inner,
  .a48-lanes-masthead-inner,
  .a48-shop-masthead-inner {
    flex-direction: column;
    align-items: stretch;
    gap: 0.65rem;
  }
  .a48-specimen-ribbon-actions,
  .a48-atelier-dock-actions,
  .a48-lanes-masthead-actions,
  .a48-shop-toolbar {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
  }
  .a48-specimen-ribbon-actions .a48-specimen-btn,
  .a48-atelier-dock-actions .a48-atelier-btn,
  .a48-lanes-masthead-actions .a48-btn,
  .a48-shop-toolbar .a48-btn { width: 100%; }

  /* Help / FAQ accordions */
  .a48-help-grid,
  .a48-help-lanes {
    grid-template-columns: 1fr !important;
  }

  /* Catalog lanes deck */
  .a48-lanes-deck {
    grid-template-columns: 1fr !important;
  }
  .a48-lanes-rail-nav {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 0.45rem;
  }

  /* Company atlas stats */
  .a48-atlas-stats,
  .a48-studio-stats,
  .a48-atlas-stats,
  .a48-lanes-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* Order timeline */
  .a48-petal-vine-item {
    grid-template-columns: auto 1fr;
  }

  /* Cart line items */
  .a48-basket-line,
  .a48-hold-line,
  .a48-bay-slot {
    grid-template-columns: 72px 1fr;
    gap: 0.75rem;
  }
  .a48-basket-line-actions,
  .a48-hold-line-controls,
  .a48-bay-slot-controls {
    grid-column: 1 / -1;
    justify-content: flex-start;
  }

  /* Product gallery */
  .a48-specimen-gallery-main {
    aspect-ratio: 1;
  }
  .a48-specimen-buy-row,
  .a48-specimen-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .a48-specimen-buy-row .a48-specimen-btn,
  .a48-specimen-actions .a48-specimen-btn {
    width: 100%;
  }

  /* Payment / policy cards */
  .a48-policy-card,
  .a48-pay-card,
  .a48-policy-contact-grid {
    padding: 1.25rem;
    border-radius: 18px;
    grid-template-columns: 1fr !important;
  }

  /* Contact / studio forms */
  .a48-signal-grid,
  .a48-florist-grid,
  .a48-dispatch-grid,
  .a48-studio-contact-grid {
    grid-template-columns: 1fr !important;
  }

  /* Checkout & cart summaries */
  .a48-co-summary,
  .a48-seal-summary,
  .a48-basket-summary,
  .a48-hold-summary {
    position: static !important;
    top: auto !important;
  }

  /* Auth tabs */
  .a48-lounge-tabs,
  .auth-tabs {
    flex-direction: column;
  }
}

/* ── Small phone ── */
@media (max-width: 480px) {
  .a48-atlas-stats,
  .a48-studio-stats,
  .a48-atlas-stats,
  .a48-lanes-stats,
  .a48-folio-stats { grid-template-columns: 1fr; }

  .a48-specimen-ribbon-actions,
  .a48-atelier-dock-actions,
  .a48-lanes-masthead-actions,
  .a48-shop-toolbar {
    grid-template-columns: 1fr;
  }

  .a48-lounge-sidebar-actions {
    flex-direction: column;
  }
  .a48-lounge-sidebar-actions .a48-lounge-btn { width: 100%; }

  .page-account-lounge .profile-grid.a48-lounge-profile {
    grid-template-columns: 1fr;
  }

  .a48g-cats-row { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .a48g-features-row { grid-template-columns: 1fr !important; }
  .a48g-hero-copy h1 { font-size: clamp(1.7rem, 8vw, 2.4rem); }
  .a48g-sec-head { flex-wrap: wrap; gap: .65rem; }

  .a48-mobile-tile,
  .a48-mobile-tool {
    min-height: 44px;
  }

  .a48-btn,
  .a48-specimen-btn,
  .a48-atelier-btn,
  .a48-lot-btn,
  .a48-petal-btn,
  .a48-ledger-btn,
  .a48-pulse-btn,
  .a48-bloom-btn,
  .a48-lounge-btn,
  .a48-basket-btn,
  .a48-hold-btn,
  .a48-bay-btn,
  .a48-seal-btn,
  .a48-co-btn,
  .a48-pad-btn {
    width: 100%;
    justify-content: center;
  }
}

/* Touch targets */
@media (max-width: 960px) {
  .a48-btn,
  .a48-specimen-btn,
  .a48-atelier-btn,
  .a48-lot-btn,
  .a48-petal-btn,
  .a48-ledger-btn,
  .a48-pulse-btn,
  .a48-bloom-btn,
  .a48-lounge-btn,
  .a48-basket-btn,
  .a48-hold-btn,
  .a48-bay-btn,
  .a48-seal-btn,
  .a48-co-btn,
  .a48-pad-btn,
  .a48-signal-submit,
  .a48-relay-btn,
  .a48-cleared-btn,
  .a48-lift-btn,
  .a48-studio-tile,
  .a48-signal-topic,
  .a48-pay-btn,
  .a48-mobile-link,
  .a48-mobile-tile,
  .a48-mobile-tool,
  .a48-mobile-quick-btn,
  .a48-mobile-acct,
  .a48-menu-toggle,
  .a48-tool,
  button {
    min-height: 44px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .a48-mobile-panel,
  .a48-mobile-backdrop,
  .a48-menu-toggle span,
  .a48-mobile-tile,
  .a48-mobile-tool {
    transition: none !important;
  }
  .a48-mobile-nav.is-open .a48-mobile-tile,
  .a48-mobile-nav.is-open .a48-mobile-tool {
    opacity: 1;
    transform: none;
    transition-delay: 0s !important;
  }
  .a48-mobile-tile:hover,
  .a48-mobile-link:hover {
    transform: none;
  }
}
