:root{
  --color-charcoal-950:#0E0F0E;
  --color-charcoal-900:#171917;
  --color-charcoal-800:#222522;
  --color-felt-700:#1F4A3A;
  --color-felt-500:#2E6B52;
  --color-burgundy-700:#6E2A35;
  --color-burgundy-500:#8C3A47;
  --color-brass-400:#C6A15B;
  --color-wood-800:#2B1F17;
  --color-ivory-100:#F2EFE9;
  --color-ivory-300:#C9C4BA;
  --color-ink-900:#161815;
  --color-ivory-050:#F7F4EE;
  --color-success-500:#3E8E6E;
  --color-warning-500:#B07A2A;
  --color-error-500:#A33A3A;

  --font-heading:"Fraunces",Georgia,serif;
  --font-body:"Inter",system-ui,-apple-system,sans-serif;

  --text-display-size:clamp(2.25rem,1.6rem + 2.6vw,3.5rem);
  --text-display-line-height:1.05;
  --text-display-weight:600;
  --text-display-letter-spacing:-0.02em;
  --text-h1-size:clamp(1.875rem,1.4rem + 1.9vw,2.625rem);
  --text-h1-line-height:1.1;
  --text-h1-weight:600;
  --text-h1-letter-spacing:-0.015em;
  --text-h2-size:clamp(1.75rem,1.45rem + 1.2vw,2rem);
  --text-h2-line-height:1.15;
  --text-h2-weight:600;
  --text-h2-letter-spacing:-0.01em;
  --text-h3-size:1.5rem;
  --text-h3-line-height:1.2;
  --text-h3-weight:600;
  --text-h3-letter-spacing:0;
  --text-h4-size:1.25rem;
  --text-h4-line-height:1.25;
  --text-h4-weight:600;
  --text-h4-letter-spacing:0;
  --text-body-lg-size:1.125rem;
  --text-body-lg-line-height:1.6;
  --text-body-lg-weight:400;
  --text-body-size:1rem;
  --text-body-line-height:1.6;
  --text-body-weight:400;
  --text-body-sm-size:0.875rem;
  --text-body-sm-line-height:1.55;
  --text-body-sm-weight:400;
  --text-caption-size:0.75rem;
  --text-caption-line-height:1.4;
  --text-caption-weight:500;
  --text-caption-letter-spacing:0.06em;
  --text-label-size:0.8125rem;
  --text-label-line-height:1.3;
  --text-label-weight:600;
  --text-label-letter-spacing:0.08em;

  --space-1:0.25rem;
  --space-2:0.5rem;
  --space-3:0.75rem;
  --space-4:1rem;
  --space-5:1.5rem;
  --space-6:2rem;
  --space-7:3rem;
  --space-8:4rem;
  --space-9:6rem;
  --space-10:8rem;

  --container-default:75rem;
  --container-wide:85rem;
  --container-text:45rem;
  --container-padding-mobile:1.5rem;
  --container-padding-desktop:3rem;

  --surface-page:var(--color-charcoal-950);
  --surface-raised:var(--color-charcoal-900);
  --surface-secondary:var(--color-charcoal-800);
  --surface-felt:var(--color-felt-700);
  --surface-burgundy:var(--color-burgundy-700);
  --surface-wood:var(--color-wood-800);
  --surface-light:var(--color-ivory-050);

  --text-primary:var(--color-ivory-100);
  --text-secondary:var(--color-ivory-300);
  --text-on-light:var(--color-ink-900);
  --text-on-felt:var(--color-ivory-100);
  --text-on-burgundy:var(--color-ivory-100);
  --text-on-wood:var(--color-ivory-100);

  --border-brass-strong:1px solid rgba(198,161,91,0.4);
  --border-brass-subtle:1px solid rgba(198,161,91,0.2);
  --border-brass-faint:1px solid rgba(198,161,91,0.15);
  --border-charcoal:1px solid var(--color-charcoal-800);

  --shadow-raised:0 8px 24px rgba(0,0,0,0.35);
  --shadow-subtle:0 2px 8px rgba(0,0,0,0.25);

  --radius-0:0;
  --radius-1:0.25rem;
  --radius-2:0.5rem;
  --radius-3:0.75rem;
  --radius-4:999px;
  --radius-card-image:0.375rem;

  --focus-outline:2px solid var(--color-felt-500);
  --focus-outline-offset:2px;

  --transition-fast:160ms ease-out;
  --transition-drawer:200ms ease-out;
  --transition-reveal:300ms ease-out;

  --section-space-mobile:var(--space-8);
  --section-space-desktop:var(--space-9);
}

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

*{
  margin:0;
}

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

body{
  min-height:100vh;
  background-color:var(--surface-page);
  color:var(--text-primary);
  font-family:var(--font-body);
  font-size:var(--text-body-size);
  font-weight:var(--text-body-weight);
  line-height:var(--text-body-line-height);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}

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

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

p{
  overflow-wrap:break-word;
}

h1,h2,h3,h4,h5,h6{
  overflow-wrap:break-word;
}

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

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

ol,ul{
  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;
}

[hidden]{
  display:none !important;
}

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

::selection{
  background-color:var(--color-felt-500);
  color:var(--color-ivory-100);
}

h1,h2,h3,h4,h5,h6{
  font-family:var(--font-heading);
  color:var(--text-primary);
}

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

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

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

h4{
  font-size:var(--text-h4-size);
  line-height:var(--text-h4-line-height);
  font-weight:var(--text-h4-weight);
  letter-spacing:var(--text-h4-letter-spacing);
  margin-block-end:var(--space-3);
}

h5{
  font-size:var(--text-body-lg-size);
  line-height:var(--text-body-lg-line-height);
  font-weight:600;
  margin-block-end:var(--space-2);
}

h6{
  font-size:var(--text-body-size);
  line-height:var(--text-body-line-height);
  font-weight:600;
  margin-block-end:var(--space-2);
}

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

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

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

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

ul{
  list-style:disc;
}

ol{
  list-style:decimal;
}

.content-list li{
  margin-block-end:var(--space-2);
}

.content-list li:last-child{
  margin-block-end:0;
}

blockquote{
  margin-block-end:var(--space-4);
  padding-inline-start:var(--space-5);
  border-inline-start:var(--border-brass-strong);
  color:var(--text-secondary);
  font-size:var(--text-body-lg-size);
  line-height:var(--text-body-lg-line-height);
}

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

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

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

figcaption{
  font-size:var(--text-caption-size);
  line-height:var(--text-caption-line-height);
  font-weight:var(--text-caption-weight);
  letter-spacing:var(--text-caption-letter-spacing);
  text-transform:uppercase;
  color:var(--text-secondary);
  margin-block-start:var(--space-2);
}

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

address{
  font-style:normal;
}

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

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

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

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

.surface-raised{
  background-color:var(--surface-raised);
  border:var(--border-charcoal);
  border-radius:var(--radius-2);
}

.surface-secondary{
  background-color:var(--surface-secondary);
  border:var(--border-charcoal);
  border-radius:var(--radius-2);
}

.surface-felt{
  background-color:var(--surface-felt);
  color:var(--text-on-felt);
  border-radius:var(--radius-2);
}

.surface-burgundy{
  background-color:var(--surface-burgundy);
  color:var(--text-on-burgundy);
  border-radius:var(--radius-2);
}

.surface-wood{
  background-color:var(--surface-wood);
  color:var(--text-on-wood);
  border-radius:var(--radius-2);
}

.surface-light{
  background-color:var(--surface-light);
  color:var(--text-on-light);
  border-radius:var(--radius-2);
}

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  padding:0.75rem 1.25rem;
  border-radius:var(--radius-1);
  font-size:var(--text-label-size);
  line-height:var(--text-label-line-height);
  font-weight:var(--text-label-weight);
  letter-spacing:var(--text-label-letter-spacing);
  text-transform:uppercase;
  transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);
}

.btn-primary{
  background-color:var(--color-felt-700);
  color:var(--color-ivory-100);
  border:1px solid var(--color-felt-700);
}

.btn-primary:hover{
  background-color:var(--color-felt-500);
  border-color:var(--color-felt-500);
}

.btn-secondary{
  background-color:transparent;
  color:var(--color-ivory-100);
  border:1px solid rgba(198,161,91,0.5);
}

.btn-secondary:hover{
  background-color:rgba(198,161,91,0.1);
  border-color:var(--color-brass-400);
}

.btn-burgundy{
  background-color:var(--color-burgundy-700);
  color:var(--color-ivory-100);
  border:1px solid var(--color-burgundy-700);
}

.btn-burgundy:hover{
  background-color:var(--color-burgundy-500);
  border-color:var(--color-burgundy-500);
}

.badge{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:0.25rem 0.625rem;
  border-radius:var(--radius-1);
  font-size:var(--text-caption-size);
  line-height:var(--text-caption-line-height);
  font-weight:var(--text-caption-weight);
  letter-spacing:var(--text-caption-letter-spacing);
  text-transform:uppercase;
}

.badge-burgundy{
  background-color:var(--color-burgundy-700);
  color:var(--color-ivory-100);
}

.badge-felt{
  background-color:var(--color-felt-700);
  color:var(--color-ivory-100);
}

.badge-brass{
  background-color:rgba(198,161,91,0.15);
  color:var(--color-brass-400);
  border:1px solid rgba(198,161,91,0.3);
}

.badge-success{
  background-color:rgba(62,142,110,0.15);
  color:var(--color-success-500);
  border:1px solid rgba(62,142,110,0.3);
}

.badge-warning{
  background-color:rgba(176,122,42,0.15);
  color:var(--color-warning-500);
  border:1px solid rgba(176,122,42,0.3);
}

.badge-error{
  background-color:rgba(163,58,58,0.15);
  color:var(--color-error-500);
  border:1px solid rgba(163,58,58,0.3);
}

.label{
  font-size:var(--text-label-size);
  line-height:var(--text-label-line-height);
  font-weight:var(--text-label-weight);
  letter-spacing:var(--text-label-letter-spacing);
  text-transform:uppercase;
  color:var(--color-brass-400);
}

.label-ivory{
  color:var(--color-ivory-300);
}

.label-felt{
  color:var(--color-felt-500);
}

.label-burgundy{
  color:var(--color-burgundy-500);
}

.divider-brass{
  border:none;
  border-block-start:var(--border-brass-subtle);
  margin-block:var(--space-5);
}

.divider-brass-faint{
  border:none;
  border-block-start:var(--border-brass-faint);
  margin-block:var(--space-4);
}

.divider-charcoal{
  border:none;
  border-block-start:var(--border-charcoal);
  margin-block:var(--space-4);
}

.link-underline{
  color:var(--color-ivory-100);
  text-decoration:underline;
  text-decoration-color:var(--color-felt-500);
  text-decoration-thickness:1px;
  text-underline-offset:0.25em;
  transition:text-decoration-color var(--transition-fast),text-decoration-thickness var(--transition-fast),color var(--transition-fast);
}

.link-underline:hover{
  color:var(--color-ivory-100);
  text-decoration-color:var(--color-felt-500);
  text-decoration-thickness:2px;
}

.link-underline:visited{
  color:var(--color-ivory-300);
}

.link-felt{
  color:var(--color-felt-500);
  text-decoration:none;
  transition:color var(--transition-fast);
}

.link-felt:hover{
  color:var(--color-ivory-100);
  text-decoration:underline;
  text-decoration-color:var(--color-felt-500);
  text-decoration-thickness:1px;
  text-underline-offset:0.25em;
}

.card{
  background-color:var(--surface-raised);
  border:var(--border-charcoal);
  border-radius:var(--radius-2);
  box-shadow:var(--shadow-subtle);
  overflow:hidden;
}

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

.card-media{
  aspect-ratio:3 / 2;
  overflow:hidden;
  border-radius:var(--radius-card-image) var(--radius-card-image) 0 0;
}

.card-media img{
  width:100%;
  height:100%;
  object-fit:cover;
}

.card-body{
  padding:var(--space-5);
}

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

.card-body .btn{
  margin-block-start:var(--space-4);
}

.card-body .btn:first-child{
  margin-block-start:0;
}

.form-field{
  margin-block-end:var(--space-4);
}

.form-field:last-child{
  margin-block-end:0;
}

.form-label{
  display:block;
  font-size:var(--text-label-size);
  line-height:var(--text-label-line-height);
  font-weight:var(--text-label-weight);
  letter-spacing:var(--text-label-letter-spacing);
  text-transform:uppercase;
  color:var(--color-ivory-300);
  margin-block-end:var(--space-2);
}

.form-input,
.form-select,
.form-textarea{
  width:100%;
  background-color:var(--color-charcoal-900);
  border:1px solid var(--color-charcoal-800);
  border-radius:var(--radius-1);
  color:var(--color-ivory-100);
  padding:0.75rem 1rem;
  font-size:var(--text-body-size);
  line-height:var(--text-body-line-height);
  transition:border-color var(--transition-fast),box-shadow var(--transition-fast);
}

.form-input::placeholder,
.form-textarea::placeholder{
  color:var(--color-ivory-300);
  opacity:0.7;
}

.form-input:focus-visible,
.form-select:focus-visible,
.form-textarea:focus-visible{
  outline:none;
  border-color:var(--color-felt-500);
  box-shadow:0 0 0 2px var(--color-felt-500);
  outline-offset:0;
}

.form-textarea{
  min-height:120px;
  resize:vertical;
}

.form-select{
  appearance:none;
  -webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23C9C4BA' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 1rem center;
  padding-inline-end:2.5rem;
}

.form-hint{
  font-size:var(--text-body-sm-size);
  line-height:var(--text-body-sm-line-height);
  color:var(--color-ivory-300);
  margin-block-start:var(--space-1);
}

.form-error{
  font-size:var(--text-body-sm-size);
  line-height:var(--text-body-sm-line-height);
  color:var(--color-error-500);
  margin-block-start:var(--space-1);
}

.form-success{
  font-size:var(--text-body-sm-size);
  line-height:var(--text-body-sm-line-height);
  color:var(--color-success-500);
  margin-block-start:var(--space-1);
}

.status-dot{
  display:inline-block;
  width:0.5rem;
  height:0.5rem;
  border-radius:var(--radius-4);
  flex-shrink:0;
}

.status-dot-success{
  background-color:var(--color-success-500);
}

.status-dot-warning{
  background-color:var(--color-warning-500);
}

.status-dot-error{
  background-color:var(--color-error-500);
}

.status-dot-brass{
  background-color:var(--color-brass-400);
}

.overlay{
  background-color:rgba(14,15,14,0.8);
}

.reveal{
  opacity:0;
  transform:translateY(8px);
  transition:opacity var(--transition-reveal),transform var(--transition-reveal);
}

.reveal.is-visible{
  opacity:1;
  transform:translateY(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;
  top:var(--space-3);
  left:var(--space-3);
  z-index:1000;
  background-color:var(--color-felt-700);
  color:var(--color-ivory-100);
  padding:var(--space-3) var(--space-4);
  border-radius:var(--radius-1);
  font-size:var(--text-label-size);
  font-weight:var(--text-label-weight);
  letter-spacing:var(--text-label-letter-spacing);
  text-transform:uppercase;
  transform:translateY(-200%);
  transition:transform var(--transition-fast);
}

.skip-link:focus-visible{
  transform:translateY(0);
  outline:var(--focus-outline);
  outline-offset:var(--focus-outline-offset);
}

@media (min-width:48rem){
  .container,
  .container-wide,
  .container-text{
    padding-inline:var(--container-padding-desktop);
  }

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

@media (prefers-reduced-motion:reduce){
  html{
    scroll-behavior:auto;
  }

  *,
  *::before,
  *::after{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
  }

  .reveal{
    opacity:1;
    transform:none;
  }
}