@layer reset, base, primitives;

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

  html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    scroll-behavior: smooth;
  }

  body {
    min-height: 100vh;
    min-height: 100dvh;
    line-height: 1;
  }

  img, picture, video, canvas, svg {
    display: block;
    max-width: 100%;
    height: auto;
  }

  input, button, textarea, select {
    font: inherit;
    color: inherit;
  }

  button {
    background: none;
    border: none;
    cursor: pointer;
  }

  a {
    color: inherit;
    text-decoration: none;
  }

  ul, ol {
    list-style: none;
  }

  table {
    border-collapse: collapse;
    border-spacing: 0;
  }

  blockquote, q {
    quotes: none;
  }

  blockquote::before, blockquote::after,
  q::before, q::after {
    content: "";
    content: none;
  }

  h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd {
    margin: 0;
  }

  hr {
    border: none;
    border-top: 1px solid currentColor;
    opacity: 0.2;
  }

  [hidden] {
    display: none !important;
  }
}

@layer base {
  :root {
    --color-white: #FFFFFF;
    --color-cobalt: #0047AB;
    --color-dark-chocolate: #3E2723;
    --color-warm-beige: #D2B48C;
    --color-cream: #F9F6F0;
    --color-poker-green: #1B5E20;
    --color-leather-brown: #5D4037;
    --color-text-on-dark: #FFFFFF;

    --color-bg: var(--color-white);
    --color-surface: var(--color-cream);
    --color-surface-dark: var(--color-leather-brown);
    --color-primary: var(--color-cobalt);
    --color-accent: var(--color-poker-green);
    --color-secondary-bg: var(--color-warm-beige);
    --color-text-primary: var(--color-dark-chocolate);
    --color-text-on-primary: var(--color-white);
    --color-text-on-dark: var(--color-text-on-dark);
    --color-border: var(--color-warm-beige);
    --color-border-strong: var(--color-cobalt);

    --font-heading: "Playfair Display", Georgia, "Times New Roman", serif;
    --font-body: "Lato", "Segoe UI", Helvetica, Arial, sans-serif;

    --text-display: 56px;
    --text-h1: 40px;
    --text-h2: 32px;
    --text-h3: 24px;
    --text-body: 16px;
    --text-small: 14px;
    --text-caption: 12px;

    --leading-display: 1.1;
    --leading-h1: 1.2;
    --leading-h2: 1.3;
    --leading-h3: 1.4;
    --leading-body: 1.6;
    --leading-small: 1.5;
    --leading-caption: 1.4;

    --weight-heading: 700;
    --weight-heading-secondary: 600;
    --weight-body: 400;

    --space-1: 4px;
    --space-2: 8px;
    --space-3: 16px;
    --space-4: 24px;
    --space-5: 32px;
    --space-6: 48px;
    --space-7: 64px;
    --space-8: 96px;

    --container-max: 1200px;
    --container-padding: var(--space-4);

    --radius-none: 0;
    --radius-sm: 4px;
    --radius-md: 8px;
    --radius-round: 50%;

    --shadow-card: 0 2px 8px rgba(0, 0, 0, 0.1);
    --shadow-card-hover: 0 6px 16px rgba(0, 0, 0, 0.15);
    --shadow-dark-card: 0 4px 16px rgba(0, 0, 0, 0.3);
    --shadow-dark-card-hover: 0 8px 24px rgba(0, 0, 0, 0.4);

    --border-thin: 1px;
    --border-style: solid;

    --focus-ring-color: var(--color-cobalt);
    --focus-ring-width: 2px;
    --focus-ring-offset: 2px;
  }

  body {
    font-family: var(--font-body);
    font-size: var(--text-body);
    font-weight: var(--weight-body);
    line-height: var(--leading-body);
    color: var(--color-text-primary);
    background-color: var(--color-bg);
    overflow-x: hidden;
  }

  h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: var(--weight-heading);
    color: var(--color-text-primary);
    line-height: var(--leading-h2);
    margin-block-end: var(--space-4);
  }

  h1 {
    font-size: var(--text-h1);
    line-height: var(--leading-h1);
    margin-block-end: var(--space-5);
  }

  h2 {
    font-size: var(--text-h2);
    line-height: var(--leading-h2);
    margin-block-end: var(--space-4);
  }

  h3 {
    font-size: var(--text-h3);
    font-weight: var(--weight-heading-secondary);
    line-height: var(--leading-h3);
    margin-block-end: var(--space-3);
  }

  h4, h5, h6 {
    font-size: var(--text-body);
    line-height: var(--leading-body);
    margin-block-end: var(--space-3);
  }

  p {
    font-size: var(--text-body);
    line-height: var(--leading-body);
    margin-block-end: var(--space-4);
  }

  p:last-child {
    margin-block-end: 0;
  }

  small {
    font-size: var(--text-small);
    line-height: var(--leading-small);
  }

  caption, figcaption {
    font-size: var(--text-caption);
    line-height: var(--leading-caption);
  }

  ul, ol {
    margin-block-end: var(--space-4);
    padding-inline-start: var(--space-4);
  }

  ul {
    list-style: disc;
  }

  ol {
    list-style: decimal;
  }

  ul:last-child, ol:last-child {
    margin-block-end: 0;
  }

  blockquote {
    margin-block-end: var(--space-4);
    padding-inline-start: var(--space-4);
    border-inline-start: 3px solid var(--color-cobalt);
    font-style: italic;
  }

  blockquote:last-child {
    margin-block-end: 0;
  }

  a {
    color: var(--color-cobalt);
    text-decoration: underline;
    text-decoration-color: transparent;
    text-underline-offset: 3px;
    transition: color 0.2s ease, text-decoration-color 0.2s ease;
  }

  a:hover {
    color: var(--color-cobalt);
    text-decoration-color: var(--color-cobalt);
  }

  a:focus-visible {
    outline: var(--focus-ring-width) solid var(--focus-ring-color);
    outline-offset: var(--focus-ring-offset);
    border-radius: var(--radius-sm);
  }

  img {
    border-radius: var(--radius-md);
  }

  hr {
    margin-block: var(--space-5);
    border-top: var(--border-thin) var(--border-style) var(--color-border);
    opacity: 1;
  }

  input, textarea, select {
    font-family: var(--font-body);
    font-size: var(--text-body);
    line-height: var(--leading-body);
    color: var(--color-text-primary);
    background-color: var(--color-white);
    border: var(--border-thin) var(--border-style) var(--color-border);
    border-radius: var(--radius-sm);
    padding: var(--space-2) var(--space-3);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
  }

  input:focus-visible, textarea:focus-visible, select:focus-visible {
    outline: none;
    border-color: var(--color-cobalt);
    box-shadow: 0 0 0 var(--focus-ring-width) rgba(0, 71, 171, 0.25);
  }

  input::placeholder, textarea::placeholder {
    color: rgba(62, 39, 35, 0.6);
  }

  textarea {
    resize: vertical;
    min-height: 100px;
  }

  select {
    appearance: auto;
    cursor: pointer;
  }

  label {
    display: inline-block;
    font-size: var(--text-small);
    font-weight: 600;
    margin-block-end: var(--space-1);
    color: var(--color-text-primary);
  }

  fieldset {
    border: var(--border-thin) var(--border-style) var(--color-border);
    border-radius: var(--radius-md);
    padding: var(--space-4);
    margin-block-end: var(--space-4);
  }

  legend {
    font-family: var(--font-heading);
    font-size: var(--text-h3);
    font-weight: var(--weight-heading-secondary);
    padding-inline: var(--space-2);
  }

  ::selection {
    background-color: var(--color-cobalt);
    color: var(--color-white);
  }

  @media (max-width: 768px) {
    :root {
      --text-display: clamp(36px, 8vw, 48px);
      --text-h1: clamp(30px, 6.5vw, 40px);
      --text-h2: clamp(26px, 5.5vw, 32px);
      --text-h3: clamp(21px, 4.5vw, 24px);
      --text-body: 16px;
      --text-small: 14px;
      --text-caption: 12px;
    }
  }

  @media (max-width: 480px) {
    :root {
      --text-display: clamp(30px, 9vw, 40px);
      --text-h1: clamp(26px, 7.5vw, 34px);
      --text-h2: clamp(23px, 6.5vw, 28px);
      --text-h3: clamp(19px, 5.5vw, 22px);
    }
  }
}

@layer primitives {
  .container {
    width: 100%;
    max-width: var(--container-max);
    margin-inline: auto;
    padding-inline: var(--container-padding);
  }

  .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    font-family: var(--font-body);
    font-size: var(--text-body);
    font-weight: 600;
    line-height: 1.2;
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-sm);
    border: var(--border-thin) var(--border-style) transparent;
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
    text-decoration: none;
    white-space: nowrap;
  }

  .btn:focus-visible {
    outline: var(--focus-ring-width) solid var(--focus-ring-color);
    outline-offset: var(--focus-ring-offset);
  }

  .btn-primary {
    background-color: var(--color-cobalt);
    color: var(--color-white);
    border-color: var(--color-cobalt);
  }

  .btn-primary:hover {
    background-color: #003a8c;
    border-color: #003a8c;
    box-shadow: 0 2px 8px rgba(0, 71, 171, 0.3);
  }

  .btn-secondary {
    background-color: var(--color-warm-beige);
    color: var(--color-dark-chocolate);
    border-color: var(--color-warm-beige);
  }

  .btn-secondary:hover {
    background-color: #c4a57a;
    border-color: #c4a57a;
    box-shadow: 0 2px 8px rgba(210, 180, 140, 0.4);
  }

  .btn-outline {
    background-color: transparent;
    color: var(--color-cobalt);
    border-color: var(--color-cobalt);
  }

  .btn-outline:hover {
    background-color: var(--color-cobalt);
    color: var(--color-white);
  }

  .btn-dark {
    background-color: var(--color-dark-chocolate);
    color: var(--color-white);
    border-color: var(--color-dark-chocolate);
  }

  .btn-dark:hover {
    background-color: #2c1b17;
    border-color: #2c1b17;
    box-shadow: 0 2px 8px rgba(62, 39, 35, 0.3);
  }

  .btn-accent {
    background-color: var(--color-poker-green);
    color: var(--color-white);
    border-color: var(--color-poker-green);
  }

  .btn-accent:hover {
    background-color: #144a18;
    border-color: #144a18;
    box-shadow: 0 2px 8px rgba(27, 94, 32, 0.3);
  }

  .card {
    background-color: var(--color-white);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
    padding: var(--space-4);
    transition: box-shadow 0.2s ease, transform 0.2s ease;
  }

  .card:hover {
    box-shadow: var(--shadow-card-hover);
    transform: translateY(-2px);
  }

  .card-dark {
    background-color: var(--color-leather-brown);
    color: var(--color-text-on-dark);
    box-shadow: var(--shadow-dark-card);
  }

  .card-dark:hover {
    box-shadow: var(--shadow-dark-card-hover);
  }

  .card > :last-child {
    margin-block-end: 0;
  }

  .surface-cream {
    background-color: var(--color-cream);
  }

  .surface-white {
    background-color: var(--color-white);
  }

  .surface-dark {
    background-color: var(--color-leather-brown);
    color: var(--color-text-on-dark);
  }

  .surface-cobalt {
    background-color: var(--color-cobalt);
    color: var(--color-white);
  }

  .surface-beige {
    background-color: var(--color-warm-beige);
    color: var(--color-dark-chocolate);
  }

  .text-primary {
    color: var(--color-text-primary);
  }

  .text-on-dark {
    color: var(--color-text-on-dark);
  }

  .text-cobalt {
    color: var(--color-cobalt);
  }

  .text-accent {
    color: var(--color-poker-green);
  }

  .text-beige {
    color: var(--color-warm-beige);
  }

  .text-small {
    font-size: var(--text-small);
    line-height: var(--leading-small);
  }

  .text-caption {
    font-size: var(--text-caption);
    line-height: var(--leading-caption);
  }

  .text-display {
    font-family: var(--font-heading);
    font-size: var(--text-display);
    font-weight: var(--weight-heading);
    line-height: var(--leading-display);
    margin-block-end: var(--space-4);
  }

  .text-display:last-child {
    margin-block-end: 0;
  }

  .flex {
    display: flex;
    gap: var(--space-3);
    min-width: 0;
  }

  .flex > * {
    min-width: 0;
  }

  .flex-wrap {
    flex-wrap: wrap;
  }

  .flex-nowrap {
    flex-wrap: nowrap;
  }

  .flex-column {
    flex-direction: column;
  }

  .flex-row {
    flex-direction: row;
  }

  .flex-center {
    align-items: center;
  }

  .flex-start {
    align-items: flex-start;
  }

  .flex-end {
    align-items: flex-end;
  }

  .flex-stretch {
    align-items: stretch;
  }

  .flex-justify-center {
    justify-content: center;
  }

  .flex-justify-between {
    justify-content: space-between;
  }

  .flex-justify-start {
    justify-content: flex-start;
  }

  .flex-justify-end {
    justify-content: flex-end;
  }

  .flex-gap-1 {
    gap: var(--space-1);
  }

  .flex-gap-2 {
    gap: var(--space-2);
  }

  .flex-gap-3 {
    gap: var(--space-3);
  }

  .flex-gap-4 {
    gap: var(--space-4);
  }

  .flex-gap-5 {
    gap: var(--space-5);
  }

  .flex-gap-6 {
    gap: var(--space-6);
  }

  .flex-1 {
    flex: 1 1 0%;
  }

  .flex-auto {
    flex: 0 0 auto;
  }

  .flex-grow {
    flex: 1 0 auto;
  }

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

  .grid {
    display: grid;
    gap: var(--space-4);
    min-width: 0;
  }

  .grid > * {
    min-width: 0;
  }

  .grid-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .grid-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .grid-gap-1 {
    gap: var(--space-1);
  }

  .grid-gap-2 {
    gap: var(--space-2);
  }

  .grid-gap-3 {
    gap: var(--space-3);
  }

  .grid-gap-4 {
    gap: var(--space-4);
  }

  .grid-gap-5 {
    gap: var(--space-5);
  }

  .grid-gap-6 {
    gap: var(--space-6);
  }

  .section {
    padding-block: var(--space-7);
  }

  .section-sm {
    padding-block: var(--space-5);
  }

  .section-lg {
    padding-block: var(--space-8);
  }

  .section > :last-child {
    margin-block-end: 0;
  }

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

  .radius-sm {
    border-radius: var(--radius-sm);
  }

  .radius-md {
    border-radius: var(--radius-md);
  }

  .radius-round {
    border-radius: var(--radius-round);
  }

  .shadow-card {
    box-shadow: var(--shadow-card);
  }

  .shadow-dark-card {
    box-shadow: var(--shadow-dark-card);
  }

  @media (max-width: 992px) {
    .grid-4 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }

  @media (max-width: 768px) {
    .grid-3 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .section {
      padding-block: var(--space-6);
    }

    .section-lg {
      padding-block: var(--space-7);
    }
  }

  @media (max-width: 576px) {
    .grid-2,
    .grid-3,
    .grid-4 {
      grid-template-columns: 1fr;
    }

    .flex-column-sm {
      flex-direction: column;
    }

    .flex-wrap-sm {
      flex-wrap: wrap;
    }

    .section {
      padding-block: var(--space-5);
    }

    .section-lg {
      padding-block: var(--space-6);
    }
  }
}