
:root {
    --ground:#4A1F22;
    --surface:#5B272B;
    --surface-2:#6F3337;
    --line:#915255;
    --ink-soft:#D0AEAE;
    --ink:#FCE0E0;
    --accent:#C2A262;
    --accent-ink:#111;

    --somo-f75:'Cormorant Garamond', "Cormorant Garamond Fallback", Garamond, "Times New Roman", Georgia, serif;
    --somo-25e:'EB Garamond', "EB Garamond Fallback", Garamond, Georgia, serif;
    --somo-762:'IBM Plex Mono', 'IBM Plex Mono Fallback', Menlo, Monaco, Consolas, monospace;

    --text-2xs:clamp(0.6875rem, 0.65rem + 0.12vw, 0.75rem);
    --text-xs:clamp(0.75rem, 0.72rem + 0.15vw, 0.8125rem);
    --text-sm:clamp(0.875rem, 0.84rem + 0.18vw, 0.9375rem);
    --text-base:clamp(1.0625rem, 1.02rem + 0.22vw, 1.1875rem);
    --text-md:clamp(1.25rem, 1.18rem + 0.35vw, 1.375rem);
    --text-lg:clamp(1.5rem, 1.38rem + 0.6vw, 1.75rem);
    --text-xl:clamp(1.875rem, 1.68rem + 0.95vw, 2.25rem);
    --text-2xl:clamp(2.25rem, 1.95rem + 1.5vw, 3rem);
    --text-3xl:clamp(2.75rem, 2.35rem + 2vw, 3.875rem);
    --text-display:clamp(3rem, 2.45rem + 2.75vw, 4.75rem);

    --leading-none:1.0;
    --leading-tight:1.15;
    --leading-snug:1.25;
    --leading-normal:1.55;
    --leading-loose:1.7;

    --tracking-tighter:-0.035em;
    --tracking-tight:-0.015em;
    --tracking-normal:0em;
    --tracking-wide:0.04em;
    --tracking-wider:0.08em;
    --tracking-widest:0.14em;

    --space-3xs:clamp(0.125rem, 0.1rem + 0.1vw, 0.25rem);
    --space-2xs:clamp(0.25rem, 0.22rem + 0.15vw, 0.375rem);
    --space-xs:clamp(0.5rem, 0.45rem + 0.25vw, 0.625rem);
    --space-sm:clamp(0.75rem, 0.68rem + 0.35vw, 1rem);
    --space-md:clamp(1.25rem, 1.12rem + 0.65vw, 1.625rem);
    --space-lg:clamp(2rem, 1.75rem + 1.25vw, 2.75rem);
    --space-xl:clamp(3rem, 2.6rem + 2vw, 4.25rem);
    --space-2xl:clamp(4.5rem, 3.8rem + 3.5vw, 6.5rem);
    --space-3xl:clamp(6rem, 5rem + 5vw, 9rem);

    --container-narrow:760px;
    --container-normal:1040px;
    --container-max:1360px;
    --reading-max:65ch;
    --inset-measure:48ch;

    --dock-height:64px;
    --header-height:80px;

    --ease-out-quint:cubic-bezier(0.22, 1, 0.36, 1);
    --ease-in-out-cubic:cubic-bezier(0.65, 0, 0.35, 1);
    --ease-sharp:cubic-bezier(0.4, 0, 0.2, 1);
    --dur-fast:140ms;
    --dur-med:240ms;
    --dur-slow:420ms;

    --shadow-subtle:0 4px 20px -2px rgba(17, 17, 17, 0.35);
    --shadow-elevated:0 12px 32px -4px rgba(17, 17, 17, 0.55);

    --ledger-rule:1px solid var(--line);
    --ledger-rule-soft:1px solid rgba(145, 82, 85, 0.4);
}

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

html {
    font-size:16px;
    scroll-behavior:smooth;
    scroll-padding-top:var(--header-height);
    -webkit-text-size-adjust:100%;
    text-size-adjust:100%;
    background-color:var(--ground);
    color:var(--ink);
    color-scheme:dark;
}

body {
    min-height:100vh;

    min-height:100dvh;
    font-family:var(--somo-25e);
    font-size:var(--text-base);
    line-height:var(--leading-normal);
    color:var(--ink);
    background-color:var(--ground);
    padding-bottom:var(--dock-height);
    -webkit-font-smoothing:antialiased;
    -moz-osx-font-smoothing:grayscale;
    overflow-x:hidden;
    text-rendering:optimizeLegibility;
}

@media (min-width: 980px) {
    body { padding-bottom:0; }
}

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

figure { margin:0; }

a {
    color:var(--ink);
    text-decoration-color:var(--line);
    text-underline-offset:0.25em;
    transition:color var(--dur-fast) ease, text-decoration-color var(--dur-fast) ease;
}

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

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:3px;
}

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

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

table {
    border-collapse:collapse;
    width:100%;
}

ul,
ol { list-style-position:inside; }

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family:var(--somo-f75);
    font-weight:600;
    line-height:var(--leading-tight);
    color:var(--ink);
    text-wrap:balance;
    letter-spacing:var(--tracking-tight);
}

h1 {
    font-size:var(--text-3xl);
    font-weight:600;
    letter-spacing:var(--tracking-tighter);
}

h2 {
    font-size:var(--text-2xl);
    letter-spacing:var(--tracking-tight);
}

h3 { font-size:var(--text-xl); }

h4 { font-size:var(--text-lg); }

h5 { font-size:var(--text-md); }

h6 {
    font-size:var(--text-base);
    text-transform:uppercase;
    letter-spacing:var(--tracking-wider);
}

p {
    max-width:var(--reading-max);
    text-wrap:pretty;
    font-size:var(--text-base);
    line-height:var(--leading-loose);
    color:var(--ink);
}

p + p { margin-top:1.25em; }

strong,
b {
    font-weight:600;
    color:var(--ink);
}

em,
i { font-style:italic; }

small {
    font-size:var(--text-sm);
    color:var(--ink-soft);
}

blockquote {
    font-family:var(--somo-f75);
    font-size:var(--text-lg);
    font-style:italic;
    line-height:var(--leading-snug);
    border-left:2px solid var(--accent);
    padding-left:var(--space-md);
    margin-block:var(--space-lg);
    color:var(--ink);
    max-width:var(--reading-max);
}

cite {
    display:block;
    font-family:var(--somo-762);
    font-size:var(--text-xs);
    font-style:normal;
    letter-spacing:var(--tracking-wide);
    color:var(--ink-soft);
    margin-top:var(--space-xs);
    text-transform:uppercase;
}

code,
pre,
kbd,
samp {
    font-family:var(--somo-762);
    font-size:0.9em;
    font-variant-numeric:tabular-nums;
}

.tabular-numbers,
.price,
.figure-number {
    font-family:var(--somo-762);
    font-variant-numeric:tabular-nums;
    letter-spacing:-0.02em;
}

.meta-label {
    font-family:var(--somo-762);
    font-size:var(--text-xs);
    letter-spacing:var(--tracking-widest);
    text-transform:uppercase;
    color:var(--ink-soft);
}

.site-wrap {
    width:100%;
    max-width:var(--container-max);
    margin-inline:auto;
    padding-inline:clamp(1rem, 0.6rem + 2vw, 3rem);
}

.site-wrap-narrow {
    width:100%;
    max-width:var(--container-narrow);
    margin-inline:auto;

    padding-inline:clamp(1rem, 0.6rem + 2vw, 2.5rem);
}

.lede {
    font-size:var(--text-md);
    line-height:var(--leading-normal);
    color:var(--ink);
    max-width:var(--reading-max);
}

.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:-100px;
    left:1rem;
    z-index:1000;
    padding:0.75rem 1.25rem;
    background-color:var(--accent);
    color:var(--accent-ink);
    font-family:var(--somo-762);
    font-size:var(--text-sm);
    font-weight:500;
    text-decoration:none;
    transition:top var(--dur-fast) ease;
}

.skip-link:focus { top:1rem; }

.ledger-rule {
    border:0;
    border-top:var(--ledger-rule);
    margin-block:var(--space-lg);
}

.ledger-rule-fine {
    border:0;
    border-top:var(--ledger-rule-soft);
    margin-block:var(--space-md);
}

.ledger-grid-background {
    background-image:linear-gradient(to bottom, var(--line) 1px, transparent 1px);
    background-size:100% 2.5rem;
    background-position:top center;
}

.ledger-border-top { border-top:var(--ledger-rule); }

.ledger-border-bottom { border-bottom:var(--ledger-rule); }

.ledger-border-left { border-left:var(--ledger-rule); }

.ledger-border-right { border-right:var(--ledger-rule); }

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

.flow-column {
    display:flex;
    flex-direction:column;
    gap:var(--space-md);
}

.split-pair {
    display:grid;
    grid-template-columns:1fr;
    gap:var(--space-lg);
}

@media (min-width: 768px) {
    .split-pair { grid-template-columns:1fr 1fr; }
}

.icon {
    display:inline-block;
    width:1.25rem;
    height:1.25rem;
    stroke-width:0;
    stroke:currentColor;
    fill:currentColor;
    vertical-align:middle;
    flex-shrink:0;
}

@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;

    }
}

@media print {
    body {
        background-color:#FFF;
        color:#111;
        padding-bottom:0;
    }
    .site-header,
    .dock,
    .cookie-banner,
    .chat-launcher,
    .chat-panel { display:none !important; }
    a {
        color:#111;
        text-decoration:underline;
    }
}
