/* AiBase theme — the clean, neutral design system for AI-generated sites. Shares the same token
   contract as the other themes: per-site colors/fonts are injected by the ThemeStyle view component,
   which overrides these :root defaults. Colors are space-separated RGB channels so they compose with
   Tailwind alpha utilities, e.g. rgb(var(--color-rust) / 0.9). */
:root {
    --color-rust: 193 68 14;
    --color-cream: 253 248 240;
    --font-serif: "Playfair Display";
    --font-sans: "Inter";
}

body {
    font-family: var(--font-sans), 'Inter', system-ui, sans-serif;
    background-color: rgb(var(--color-cream));
    color: #1c1917;
}

h1, h2, h3, h4 {
    font-family: var(--font-serif), 'Playfair Display', Georgia, serif;
}

.theme-logo-mark {
    font-family: var(--font-serif), 'Playfair Display', serif;
}

.theme-logo-mark--lg {
    font-size: 1.1rem;
}

/* Overlay used by the Hero component's background image. */
.hero-gradient {
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0.08) 0%, rgba(0, 0, 0, 0.55) 100%);
}

/* books-L19: legibility scrim for the book cover's title/subtitle/author, sitting over the cover
   photograph (BookPage.BackgroundImageUrl). Same purpose/mechanism as .hero-gradient — an opaque
   enough panel that white text stays readable on a busy photo (the house rule in
   pass-one-book-recipe-template.txt). book-print.css positions this element (margin-top:auto, inside
   the printed margin box); this file only owns colour/typography, matching its own header comment.
   books-L20: the owner called the first live result "unprofessional" — this is the redesign, aimed
   at reading like a printed jacket rather than a caption. Left-aligned (a dead-centred block read as
   generic/placeholder, not designed), a wider type scale between the three lines, and a taller
   gradient so a bigger title still sits on a fully opaque part of the scrim. */
.cover-text-scrim {
    position: relative;
    z-index: 1;
    padding: 3rem 2.25rem 2.25rem;
    text-align: left;
    color: #fff;
    background: linear-gradient(to top, rgba(15, 10, 8, 0.92) 0%, rgba(15, 10, 8, 0.6) 65%, rgba(15, 10, 8, 0) 100%);
}

/* Colour is set explicitly on each line, not just inherited from .cover-text-scrim: in EDIT mode
   these sit inside Syncfusion's .e-content (books-L19 CoverTextEdit), which sets its own dark text
   colour on its content — breaking inheritance from an ancestor two levels up. A direct rule here
   wins regardless (both by specificity and by _SyncfusionStylesLayered's cascade layer). */
.cover-text-scrim .cover-text-title {
    font-family: var(--font-serif), 'Playfair Display', Georgia, serif;
    font-size: 2.75rem;
    font-weight: 800;
    line-height: 1.05;
    letter-spacing: -0.01em;
    margin: 0 0 0.55em;
    padding-bottom: 0.5em;
    border-bottom: 1px solid rgba(255, 255, 255, 0.4);
    color: #fff;
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.45);
}

.cover-text-scrim .cover-text-subtitle {
    font-family: var(--font-serif), 'Playfair Display', Georgia, serif;
    font-size: 1.1rem;
    font-weight: 400;
    font-style: italic;
    letter-spacing: 0.01em;
    line-height: 1.3;
    opacity: 0.94;
    margin: 0 0 0.75em;
    color: #fff;
}

.cover-text-scrim .cover-text-author {
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    opacity: 0.85;
    margin: 0;
    color: #fff;
}

/* Test #3 (empty subtitle/author degrades gracefully): BuildContent already omits a blank field's
   tag entirely, but this is defense-in-depth against a manual edit that leaves an empty line. */
.cover-text-scrim h1:empty,
.cover-text-scrim p:empty {
    display: none;
}

input:focus, textarea:focus {
    outline: none;
    border-color: rgb(var(--color-rust));
    box-shadow: 0 0 0 3px rgb(var(--color-rust) / 0.15);
}
