/*
 * This is a manifest file that'll be compiled into application.css.
 *
 * With Propshaft, assets are served efficiently without preprocessing steps. You can still include
 * application-wide styles in this file, but keep in mind that CSS precedence will follow the standard
 * cascading order, meaning styles declared later in the document or override earlier ones,
 * depending on specificity.
 *
 * Consider organizing styles into separate files for maintainability.
 */

/*
 * Inter, self-hosted (latin subset, app/assets/fonts). Served same-origin with
 * the 1-year digest cache instead of the render-blocking Google Fonts chain.
 * Weights 300/800 were declared but unused in any view/component, so only
 * 400/500/600/700 ship. Propshaft rewrites the relative url()s to digests.
 */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/assets/inter-400-1e94a563.woff2") format("woff2");
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/assets/inter-500-5949f5fc.woff2") format("woff2");
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/assets/inter-600-a957bd0d.woff2") format("woff2");
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 700;
  /* `optional` (not `swap`) on the hero weight: the LCP element is the bold H1.
     `swap` paints it in a fallback then re-paints when Inter-700 arrives, and
     that late re-paint is what Lighthouse records as LCP. `optional` keeps the
     fallback if 700 isn't ready within the ~100ms block period (no swap →
     LCP locks at the first paint). The 700 preload below is fetchpriority:high
     so most visitors still get Inter inside that window. */
  font-display: optional;
  src: url("/assets/inter-700-cbc762c0.woff2") format("woff2");
}

/* Range slider styling for simple logo tool */
.slider {
  appearance: none;
  cursor: pointer;
  width: 100%;
  height: 0.5rem;
  border-radius: 0.5rem;
  background: var(--color-bg-secondary, #f3f4f6);
  outline: none;
}

/* WebKit browsers (Chrome, Safari, Edge) */
.slider::-webkit-slider-thumb {
  appearance: none;
  width: 1rem;
  height: 1rem;
  border-radius: 9999px;
  background: var(--color-blue, #3b82f6);
  cursor: pointer;
  transition: all 0.2s ease;
}

.slider::-webkit-slider-thumb:hover {
  transform: scale(1.1);
  box-shadow: 0 0 10px rgba(59, 130, 246, 0.3);
}

/* Firefox */
.slider::-moz-range-thumb {
  width: 1rem;
  height: 1rem;
  border-radius: 9999px;
  background: var(--color-blue, #3b82f6);
  cursor: pointer;
  border: none;
  transition: all 0.2s ease;
}

.slider::-moz-range-thumb:hover {
  transform: scale(1.1);
  box-shadow: 0 0 10px rgba(59, 130, 246, 0.3);
}

/* Firefox track */
.slider::-moz-range-track {
  background: transparent;
  border: none;
}

/* Dialog/Modal styling */
dialog::backdrop {
  background-color: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(4px);
}

dialog {
  border: none;
  border-radius: 0.5rem;
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
}

dialog[open] {
  animation: slideUp 0.2s ease-out;
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Disable focus border on newsletter modal input */
#newsletter_form .input-bordered:focus {
  outline: none;
  ring: none;
  box-shadow: none;
  border-color: inherit;
}
