:root{
  --color-cream:#F5F0E6;
  --color-natural-oak:#D9C7B0;
  --color-terracotta:#C06B3E;
  --color-forest-green:#2F4A3C;
  --color-dark-brown:#3E2F23;
  --color-muted-copper:#B87333;
  --color-soft-burgundy:#7B3F4F;
  --color-cream-rgb:245,240,230;
  --color-natural-oak-rgb:217,199,176;
  --color-terracotta-rgb:192,107,62;
  --color-forest-green-rgb:47,74,60;
  --color-dark-brown-rgb:62,47,35;
  --color-muted-copper-rgb:184,115,51;
  --color-soft-burgundy-rgb:123,63,79;
  --font-heading:"Playfair Display",Georgia,"Times New Roman",serif;
  --font-body:"Source Sans 3",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --text-display:clamp(2rem,4vw,2.5rem);
  --text-h1:clamp(1.75rem,3.5vw,2rem);
  --text-h2:clamp(1.375rem,2.5vw,1.5rem);
  --text-h3:clamp(1.125rem,2vw,1.25rem);
  --text-body:1rem;
  --text-small:0.875rem;
  --leading-display:1.2;
  --leading-h1:1.25;
  --leading-h2:1.333;
  --leading-h3:1.4;
  --leading-body:1.5;
  --leading-small:1.429;
  --space-xs:0.5rem;
  --space-sm:1rem;
  --space-md:1.5rem;
  --space-lg:2rem;
  --space-xl:3rem;
  --space-xxl:4rem;
  --container-max:1200px;
  --radius-sm:4px;
  --radius-md:8px;
  --radius-lg:16px;
  --border-subtle:1px solid rgba(var(--color-dark-brown-rgb),0.1);
  --shadow-soft:0 2px 8px rgba(var(--color-dark-brown-rgb),0.15);
  --shadow-lifted:0 6px 16px rgba(var(--color-dark-brown-rgb),0.18);
  --transition-smooth:200ms ease;
  --focus-ring:2px solid var(--color-terracotta);
  --focus-offset:2px;
}

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

html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  scroll-behavior:smooth;
}

body{
  min-height:100vh;
  background-color:var(--color-cream);
  color:var(--color-dark-brown);
  font-family:var(--font-body);
  font-size:var(--text-body);
  line-height:var(--leading-body);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}

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

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

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

a{
  color:var(--color-terracotta);
  text-decoration:none;
  transition:color var(--transition-smooth),text-decoration-color var(--transition-smooth);
}

a:hover{
  color:var(--color-forest-green);
  text-decoration:underline;
  text-decoration-color:var(--color-terracotta);
  text-underline-offset:3px;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible{
  outline:var(--focus-ring);
  outline-offset:var(--focus-offset);
}

h1,h2,h3,h4,h5,h6{
  font-family:var(--font-heading);
  color:var(--color-forest-green);
  letter-spacing:0.01em;
  line-height:var(--leading-h1);
  margin-block-end:var(--space-sm);
}

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

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

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

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

p{
  margin-block-end:var(--space-sm);
}

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

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

blockquote{
  margin-block-end:var(--space-sm);
  padding-inline-start:var(--space-md);
  border-inline-start:3px solid var(--color-terracotta);
  color:var(--color-forest-green);
  font-style:italic;
}

figure{
  margin-block-end:var(--space-sm);
}

figcaption{
  font-size:var(--text-small);
  line-height:var(--leading-small);
  color:var(--color-dark-brown);
  opacity:0.8;
  margin-block-start:var(--space-xs);
}

hr{
  border:none;
  border-block-start:var(--border-subtle);
  margin-block:var(--space-lg);
}

table{
  width:100%;
  border-collapse:collapse;
  margin-block-end:var(--space-sm);
}

th,td{
  padding:var(--space-xs) var(--space-sm);
  text-align:start;
  border-block-end:var(--border-subtle);
}

th{
  font-weight:600;
  color:var(--color-forest-green);
}

form{
  margin-block-end:var(--space-sm);
}

label{
  display:block;
  margin-block-end:var(--space-xs);
  font-weight:600;
  color:var(--color-forest-green);
}

input,textarea,select{
  width:100%;
  padding:var(--space-xs) var(--space-sm);
  background-color:var(--color-cream);
  border:1px solid rgba(var(--color-dark-brown-rgb),0.4);
  border-radius:var(--radius-sm);
  transition:border-color var(--transition-smooth),box-shadow var(--transition-smooth);
}

input:focus,textarea:focus,select:focus{
  outline:none;
  border-color:var(--color-terracotta);
  box-shadow:0 0 0 2px rgba(var(--color-terracotta-rgb),0.35);
}

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

select{
  appearance:auto;
}

.container{
  width:100%;
  max-width:var(--container-max);
  margin-inline:auto;
  padding-inline:var(--space-md);
}

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

@media (max-width:767px){
  .section{
    padding-block:var(--space-xl);
  }
  .container{
    padding-inline:var(--space-sm);
  }
}

.surface{
  background-color:var(--color-natural-oak);
  border-radius:var(--radius-md);
  padding:var(--space-md);
}

.card{
  background-color:var(--color-natural-oak);
  border-radius:var(--radius-md);
  padding:var(--space-md);
  box-shadow:var(--shadow-soft);
  transition:transform var(--transition-smooth),box-shadow var(--transition-smooth);
}

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

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

.panel{
  background-color:var(--color-cream);
  border:var(--border-subtle);
  border-radius:var(--radius-md);
  padding:var(--space-md);
}

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

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--space-xs);
  padding:var(--space-xs) var(--space-md);
  background-color:var(--color-terracotta);
  color:var(--color-cream);
  border-radius:var(--radius-sm);
  font-weight:600;
  font-size:var(--text-body);
  line-height:var(--leading-body);
  text-decoration:none;
  transition:background-color var(--transition-smooth),color var(--transition-smooth),transform var(--transition-smooth);
  border:none;
  cursor:pointer;
}

.btn:hover{
  background-color:var(--color-forest-green);
  color:var(--color-cream);
  text-decoration:none;
}

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

.btn-secondary{
  background-color:transparent;
  color:var(--color-terracotta);
  border:2px solid var(--color-terracotta);
}

.btn-secondary:hover{
  background-color:var(--color-terracotta);
  color:var(--color-cream);
}

.btn-ghost{
  background-color:transparent;
  color:var(--color-forest-green);
  border:2px solid var(--color-forest-green);
}

.btn-ghost:hover{
  background-color:var(--color-forest-green);
  color:var(--color-cream);
}

.flex-row{
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-sm);
  align-items:center;
}

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

.flex-col{
  display:flex;
  flex-direction:column;
  gap:var(--space-sm);
}

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

.flex-center{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:var(--space-sm);
}

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

.flex-between{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-sm);
  flex-wrap:wrap;
}

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

.grid-auto{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));
  gap:var(--space-md);
}

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

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

.skip-link{
  position:absolute;
  inset-block-start:var(--space-sm);
  inset-inline-start:var(--space-sm);
  z-index:1000;
  background-color:var(--color-forest-green);
  color:var(--color-cream);
  padding:var(--space-xs) var(--space-md);
  border-radius:var(--radius-sm);
  transform:translateY(-200%);
  transition:transform var(--transition-smooth);
}

.skip-link:focus{
  transform:translateY(0);
  color:var(--color-cream);
  text-decoration:none;
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
    scroll-behavior:auto !important;
  }
}