/* Deal Intelligence — SHARED CORE. Faces, palette, reset, sheet, motion.
   Loaded first, then ONE page layer: deal-radar.css (landing) or deal-report.css (report / property / feed).
   Kept thin on purpose — buttons, badges and source rows are report furniture and live in deal-report.css,
   because the landing renders none of them and must not download them.
   Palette mirrored in C# (Services/Deal/DealBrand.cs): Gmail drops var(), so the email needs literal hex.
   A test pins the two together. Where a mockup disagreed with the live landing, the landing won. */

/* Subset variable woff2 (wwwroot/fonts/deal-radar/subset-fonts.py). One file per style, no font CDN. */
@font-face {
    font-family: 'Fraunces';
    font-style: normal;
    font-weight: 400 600;
    font-display: swap;
    src: url('/fonts/deal-radar/fraunces.woff2') format('woff2');
}

@font-face {
    font-family: 'Fraunces';
    font-style: italic;
    font-weight: 400 600;
    font-display: swap;
    src: url('/fonts/deal-radar/fraunces-italic.woff2') format('woff2');
}

@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400 600;
    font-display: swap;
    src: url('/fonts/deal-radar/inter.woff2') format('woff2');
}

:root {
    --ink: #0C1714;          /* deep petrol-black */
    --ink-panel: #132520;    /* lifted panel on dark */
    --paper: #ECE7DB;        /* warm cool sand */
    --paper-2: #E4DECF;
    --paper-line: #CDC6B4;   /* the one hairline on paper */
    --wash: #F4F1E8;         /* alternating section */
    --brass: #BE9B5B;        /* restrained metallic accent */
    --brass-soft: #C9AE78;   /* brass on ink */
    --brass-dk: #8A6F3E;     /* brass legible on paper */
    --emerald: #2E6B50;      /* good number on paper */
    --mint: #84BDA1;         /* good number on ink */
    --amber: #B97C33;        /* distress signal */
    --rose: #9C5E5A;         /* one more categorical hue (POI) */
    --text-dark: #1A2723;
    --muted-dark: #6C7A72;
    --soft: #A7AA9E;         /* "not stated" — quieter than muted, on purpose */
    --text-light: #EFEADD;
    --muted-light: #9AACA2;
    --hairline: #294138;     /* rule on ink */
    --sheet-max: 880px;      /* the landing's measure; report pages widen it */
}

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

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

body {
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: #070F0C;
    color: var(--text-dark);
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    padding: 34px 18px;
}

.sheet {
    max-width: var(--sheet-max);
    margin: 0 auto;
    background: var(--paper);
    box-shadow: 0 40px 90px -30px rgba(0, 0, 0, .7);
    overflow: hidden;
}

a { color: inherit; }

/* Keyboard-navigable end to end. */
a:focus-visible,
button:focus-visible {
    outline: 2px solid var(--brass);
    outline-offset: 3px;
}

.eyebrow {
    font-size: 11px;
    letter-spacing: .24em;
    text-transform: uppercase;
    font-weight: 600;
    color: var(--brass);
}

.serif {
    font-family: 'Fraunces', Georgia, serif;
    font-weight: 500;
    line-height: 1.04;
    letter-spacing: -.01em;
}

h2.serif { font-size: clamp(24px, 3.2vw, 33px); }

/* A token that must stay whole. "2-izbové" otherwise breaks AFTER the hyphen and strands a lone "2" at the end
   of the line. */
.nb { white-space: nowrap; }

.fade {
    opacity: 0;
    transform: translateY(10px);
    animation: rise .7s cubic-bezier(.2, .7, .2, 1) forwards;
}

.d1 { animation-delay: .05s; }
.d2 { animation-delay: .15s; }
.d3 { animation-delay: .25s; }

@keyframes rise {
    to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
    .fade { animation: none; opacity: 1; transform: none; }
}

/* Investors print these and take them to viewings. */
@media print {
    body { background: #fff; padding: 0; }
    .sheet { box-shadow: none; max-width: 100%; }
    .fade { animation: none; opacity: 1; transform: none; }
}
