:root {
    --site-text: #182235;
    --site-line: #e2e8f0;
    --site-surface: #f5f7fa;
    --site-accent: #285487;
    --site-accent-hover: #1c3e68;
    --bs-link-color-rgb: 40, 84, 135;
    --bs-link-hover-color-rgb: 28, 62, 104;
}
body { min-height: 100vh; display: flex; flex-direction: column; color: var(--site-text); }
.site-header { border-bottom: 1px solid var(--site-line); }
.site-footer { border-top: 1px solid var(--site-line); background: var(--site-surface); }
.site-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .75rem 1.5rem; padding-block: 1rem; }
.site-name { display: inline-flex; align-items: center; gap: .65rem; font-weight: 700; color: inherit; text-decoration: none; }
.site-logo { display: block; object-fit: cover; border: 1px solid #b48749; border-radius: 50%; }
.site-links { display: flex; flex-wrap: wrap; gap: .5rem 1rem; list-style: none; padding: 0; margin: 0; }
.site-links [aria-current="page"] { font-weight: 700; }
.site-main { flex: 1; padding-block: 2rem; }
.site-main > * + * { margin-top: 1.5rem; }
.catalog-list { list-style: none; padding: 0; }
.catalog-list li { padding-block: 1rem; border-bottom: 1px solid var(--site-line); }
.catalog-list h2 { font-size: 1.25rem; }
.contact-form { display: grid; gap: 1rem; max-width: 36rem; }
.contact-form .btn-primary {
    background-color: var(--site-accent);
    border-color: var(--site-accent);
}
.contact-form .btn-primary:hover,
.contact-form .btn-primary:focus,
.contact-form .btn-primary:active {
    background-color: var(--site-accent-hover);
    border-color: var(--site-accent-hover);
}

.prose img, .image img { max-width: 100%; height: auto; }
.prose pre { overflow-x: auto; padding: 1rem; background: var(--site-surface); }

.content-parts, .cms-banner {
    --content-ink: #2c2119;
    --content-muted: #695444;
    --content-paper: #faf5eb;
    --content-linen: #f0e5d4;
    --content-border: #d9c7ad;
    --content-gold: #b48749;
    --content-accent: #775019;
    --content-dark: #302218;
    --content-serif: "Baskervville", Georgia, serif;
    --bs-link-color-rgb: 119, 80, 25;
    --bs-link-hover-color-rgb: 76, 49, 23;
    color: var(--content-ink);
}

.content-parts > .row { --bs-gutter-y: clamp(1.25rem, 3vw, 2rem); }
.content-parts .container { max-width: none; padding-inline: 0; }
.content-parts :where(.prose, .catalog-list), .cms-banner .prose { line-height: 1.75; overflow-wrap: anywhere; }
.content-parts .prose > :last-child, .cms-banner .prose > :last-child { margin-bottom: 0; }
.content-parts :where(h1, h2, h3, h4, h5, h6), .cms-banner-body > .content-heading {
    font-family: var(--content-serif);
    color: var(--content-ink);
    line-height: 1.16;
    overflow-wrap: anywhere;
}
.content-heading { margin-block: 0; }
.content-parts h1 { font-size: clamp(2.25rem, 5vw, 3.75rem); }
.content-parts h2, .cms-banner-body > .content-heading { font-size: clamp(1.8rem, 4vw, 2.75rem); }
.content-parts h3 { font-size: clamp(1.45rem, 3vw, 2rem); }

.content-parts :where(ul, ol):not(.catalog-list) { padding-inline-start: 1.4em; }
.content-parts :where(.content-list, .prose li) { line-height: 1.65; }
.content-parts .content-list { display: inline-block; margin: 0; text-align: start; }
.content-parts :where(ul, ol) li::marker { color: var(--content-accent); font-weight: 700; }
.content-parts :where(.content-list, .prose ul, .prose ol) > li + li { margin-top: .4rem; }
.content-parts hr {
    margin: .4rem 0;
    border: 0;
    border-top: 1px solid var(--content-gold);
    opacity: 1;
}

.content-quote, .content-parts .prose blockquote {
    margin: 0;
    padding: clamp(1rem, 3vw, 1.75rem);
    border-inline-start: 3px solid var(--content-gold);
    background: var(--content-paper);
    font: italic clamp(1.15rem, 2.6vw, 1.6rem)/1.5 var(--content-serif);
    overflow-wrap: anywhere;
}
.content-quote blockquote { margin: 0; white-space: pre-line; }
.content-image figcaption, .content-quote figcaption {
    margin-top: .6rem;
    color: var(--content-muted);
    font: normal .875rem/1.5 system-ui, sans-serif;
}
.content-parts .prose pre {
    margin-bottom: 0;
    border: 1px solid var(--content-gold);
    border-radius: .3rem;
    background: var(--content-dark);
    color: var(--content-paper);
    text-align: start;
    white-space: pre;
}
.content-parts .prose :not(pre) > code {
    padding: .1em .25em;
    background: var(--content-linen);
    color: var(--content-ink);
}

.content-table-wrap, .content-parts .prose table {
    border: 1px solid var(--content-border);
    border-radius: .3rem;
}
.content-table, .content-parts .prose table {
    width: 100%;
    margin: 0;
    text-align: start;
    --bs-table-color: var(--content-ink);
    --bs-table-bg: var(--content-paper);
    --bs-table-border-color: var(--content-border);
    overflow-wrap: anywhere;
}
.content-parts .prose table { display: block; overflow-x: auto; border-collapse: collapse; }
.content-table :where(th, td), .content-parts .prose table :where(th, td) {
    padding: .7rem clamp(.65rem, 2vw, 1.15rem);
    border-bottom: 1px solid var(--content-border);
}
.content-table thead th, .content-parts .prose thead th {
    background: var(--content-dark);
    color: var(--content-paper);
    font-weight: 600;
}
.content-table tbody tr:nth-child(even) td, .content-parts .prose tbody tr:nth-child(even) td {
    background: var(--content-linen);
}
.content-table tbody tr:last-child td { border-bottom: 0; }

.content-parts .content-link, .content-parts .prose a {
    color: var(--content-accent);
    text-decoration-thickness: 1px;
    text-underline-offset: .23em;
}
.content-button, .content-parts .contact-form .btn-primary {
    --bs-btn-color: var(--content-paper);
    --bs-btn-bg: var(--content-dark);
    --bs-btn-border-color: var(--content-dark);
    --bs-btn-hover-color: var(--content-paper);
    --bs-btn-hover-bg: var(--content-accent);
    --bs-btn-hover-border-color: var(--content-accent);
    --bs-btn-active-color: var(--content-paper);
    --bs-btn-active-bg: var(--content-accent);
    --bs-btn-active-border-color: var(--content-accent);
    --bs-btn-border-radius: .25rem;
    --bs-btn-padding-x: 1.25rem;
    --bs-btn-padding-y: .65rem;
    --bs-btn-font-weight: 600;
}
.content-parts :is(a, button, audio, iframe):focus-visible, .cms-banner a:focus-visible {
    outline: 2px solid var(--content-accent);
    outline-offset: 3px;
}

.content-image { margin: 0; }
.content-image img { display: block; max-width: 100%; height: auto; border-radius: .3rem; }
.content-image-sized img { display: inline-block; vertical-align: top; }
.content-image-fallback {
    display: grid;
    place-items: center;
    aspect-ratio: 16 / 9;
    border: 1px solid var(--content-border);
    border-radius: .3rem;
    overflow: hidden;
    background: var(--content-linen);
}
.content-image-fallback img { width: 100%; height: 100%; min-width: 0; min-height: 0; object-fit: contain; }
.text-start .content-image-fallback img { object-position: left center; }
.text-end .content-image-fallback img { object-position: right center; }
.text-center .content-image-fallback img { object-position: center; }
.content-frame, .content-video, .content-frame-placeholder {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    border: 1px solid var(--content-border);
    border-radius: .3rem;
    background: var(--content-dark);
}
.content-video { object-fit: contain; }
.content-frame-placeholder {
    display: grid;
    place-items: center;
    padding: 1rem;
    background: var(--content-linen);
    color: var(--content-muted);
    text-align: center;
}
.content-audio {
    vertical-align: middle;
    width: min(100%, 36rem);
    color-scheme: dark;
}

.cms-banner {
    margin-block: 1rem;
    border: 1px solid var(--content-border);
    border-block-start: 3px solid var(--content-gold);
    border-radius: .35rem;
    background: var(--content-paper);
    overflow: hidden;
}
.cms-banner > .content-image-fallback { border: 0; border-radius: 0; }
.cms-banner-body { padding: clamp(1rem, 4vw, 2.5rem); }
.cms-banner-body > * + * { margin-top: 1rem; }
.cms-banner-body > :last-child { margin-bottom: 0; }
.content-parts .catalog-list li { border-color: var(--content-border); }
.content-parts > :is(.content-image, .prose, .carpet-price, .carpet-specs, section, .content-parts, .content-button) { margin-top: 1rem; }
.carpet-price del { margin-inline-end: .65em; color: var(--content-muted); }
.carpet-price strong { color: var(--content-accent); }
.carpet-specs { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: .75rem; }
.carpet-specs > div { padding: .75rem; background: var(--content-paper); border: 1px solid var(--content-border); }
.carpet-specs dd { margin: .25rem 0 0; overflow-wrap: anywhere; }
.content-parts .contact-form .form-control { border-color: var(--content-border); }
.content-parts .contact-form .form-control:focus { border-color: var(--content-accent); box-shadow: 0 0 0 .2rem var(--content-linen); }
.content-parts .contact-form .btn-primary { background-color: var(--bs-btn-bg); border-color: var(--bs-btn-border-color); }
.content-parts .contact-form .btn-primary:is(:hover, :focus, :active) {
    background-color: var(--bs-btn-hover-bg);
    border-color: var(--bs-btn-hover-border-color);
}
