/* ==========================================================================
   FrameRoute 2026 design system (source of truth: DESIGN.md)
   Loaded after site.css. New components use the "fr-" prefix to stay
   independent from legacy styles.
   ========================================================================== */

/* Geist and Newsreader: SIL Open Font License 1.1 (see wwwroot/fonts/OFL-*.txt), latin subset */
@font-face { font-family: "Geist"; src: url("../fonts/geist-300.woff2") format("woff2"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("../fonts/geist-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("../fonts/geist-500.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("../fonts/geist-600.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Newsreader"; src: url("../fonts/newsreader-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Newsreader"; src: url("../fonts/newsreader-600.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }

:root {
    /* Color */
    --fr-bg: #0D0C0A;
    --fr-surface: #171511;
    --fr-surface-2: #221F19;
    --fr-text: #F3EFE6;
    --fr-muted: #9A9385;
    --fr-line: rgba(243, 239, 230, .09);
    --fr-action: #F4D03F;
    --fr-sig: #B8A15A;
    --fr-sig-off: rgba(184, 161, 90, .28);
    --fr-danger: #E5484D;

    /* Type */
    --fr-font-ui: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --fr-font-film: "Newsreader", Georgia, serif;

    /* Shape */
    /* Buttons and fields: a small radius. Pills everywhere read as a generic template (see DESIGN.md) */
    --fr-radius-control: 6px;
    --fr-radius-card: 14px;
    --fr-radius-poster: 8px;

    /* Motion (motion.md) */
    --fr-ease-out: cubic-bezier(0.22, 1, 0.36, 1);

    /* Hand-drawn stroke from the logo, used as a mask so its color follows --fr-sig */
    --fr-stroke: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 6' preserveAspectRatio='none'%3E%3Cpath d='M2 4 C 30 1, 60 5.5, 98 2' stroke='black' stroke-width='2.2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* --------------------------------------------------------------------------
   Base
   -------------------------------------------------------------------------- */
body {
    background: var(--fr-bg);
    color: var(--fr-text);
}

body, p, .btn, .subtitle, h1, h2, h3, h4, h5, h6 {
    font-family: var(--fr-font-ui);
}

/* --------------------------------------------------------------------------
   Buttons and links
   -------------------------------------------------------------------------- */
.fr-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--fr-action);
    color: #000;
    font-weight: 500;
    font-size: 16px;
    line-height: 1;
    padding: 14px 24px;
    border: 0; /* <button class="fr-btn"> would otherwise get the browser's default border */
    border-radius: var(--fr-radius-control);
    text-decoration: none;
    transition: background-color .16s var(--fr-ease-out), transform .16s var(--fr-ease-out);
}

.fr-btn:hover,
.fr-btn:focus-visible {
    background: #F7DC6F;
    color: #000;
}

.fr-btn:active { transform: scale(.97); }

/* Secondary action: solid but quiet, so bright gold stays reserved for the main action */
.fr-btn--secondary {
    background: var(--fr-surface-2);
    color: var(--fr-text);
    box-shadow: inset 0 0 0 1px rgba(243, 239, 230, .14);
}

.fr-btn--secondary:hover,
.fr-btn--secondary:focus-visible {
    background: #2D2921;
    color: var(--fr-text);
}

.fr-link {
    color: var(--fr-text);
    font-size: 16px;
    text-decoration: none;
    border-bottom: 1px solid var(--fr-line);
    padding-bottom: 2px;
    transition: border-color .16s var(--fr-ease-out);
}

.fr-link:hover,
.fr-link:focus-visible {
    color: var(--fr-text);
    border-bottom-color: var(--fr-muted);
}

:where(.fr-btn, .fr-link, .fr-nav-link, .fr-step, .fr-footer a):focus-visible {
    outline: 2px solid var(--fr-action);
    outline-offset: 3px;
}

/* --------------------------------------------------------------------------
   Navigation
   -------------------------------------------------------------------------- */
.fr-header {
    position: sticky;
    top: 0;
    z-index: 1030;
    background: rgba(13, 12, 10, .86);
    backdrop-filter: saturate(140%) blur(12px);
    -webkit-backdrop-filter: saturate(140%) blur(12px);
    border-bottom: 1px solid var(--fr-line);
    margin-bottom: 24px;
}

.fr-nav {
    max-width: 1200px;
    margin: 0 auto;
    padding: 14px 24px;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
}

.fr-nav-brand { display: inline-flex; margin-right: 16px; }
.fr-nav-brand img { display: block; }

.fr-nav-links,
.fr-nav-account {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    gap: 28px;
}

.fr-nav-account { gap: 20px; }

.fr-nav-link {
    position: relative;
    color: var(--fr-muted);
    font-size: 14px;
    text-decoration: none;
    transition: color .16s var(--fr-ease-out);
}

.fr-nav-link:hover,
.fr-nav-link:focus-visible { color: var(--fr-text); }

.fr-nav-link.is-active,
.fr-nav-link--strong { color: var(--fr-text); }

.fr-nav-link--strong { font-weight: 500; }

/* FIX: Long names and emails must not push Log out off screen */
.fr-nav-name {
    display: block;
    max-width: 200px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Signature: hand-drawn underline on the active section */
.fr-nav-link.is-active::after {
    content: "";
    position: absolute;
    left: -2px;
    right: -2px;
    bottom: -8px;
    height: 6px;
    background: var(--fr-sig);
    -webkit-mask: var(--fr-stroke) center / 100% 100% no-repeat;
    mask: var(--fr-stroke) center / 100% 100% no-repeat;
}

.fr-nav-button {
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
}

.fr-nav-toggle {
    display: none;
    margin-left: auto;
    width: 40px;
    height: 40px;
    border: 0;
    background: none;
    padding: 0;
    position: relative;
    cursor: pointer;
}

.fr-nav-toggle span {
    position: absolute;
    left: 10px;
    right: 10px;
    height: 1.5px;
    background: var(--fr-text);
    border-radius: 2px;
    transition: transform .25s var(--fr-ease-out);
}

.fr-nav-toggle span:first-child { top: 15px; }
.fr-nav-toggle span:last-child { top: 23px; }
.fr-nav-toggle[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
.fr-nav-toggle[aria-expanded="true"] span:last-child { transform: translateY(-4px) rotate(-45deg); }

@media (min-width: 768px) {
    /* Desktop: the menu is always visible, Bootstrap collapse only acts on mobile */
    .fr-nav .fr-nav-menu {
        display: flex;
        flex: 1;
        align-items: center;
        justify-content: space-between;
        height: auto;
    }
}

@media (max-width: 767.98px) {
    .fr-nav-toggle { display: block; }

    .fr-nav .fr-nav-menu { flex-basis: 100%; }

    .fr-nav-links,
    .fr-nav-account {
        flex-direction: column;
        align-items: flex-start;
        gap: 0;
    }

    .fr-nav-links { padding-top: 8px; }

    .fr-nav-account {
        border-top: 1px solid var(--fr-line);
        margin-top: 8px;
        padding: 12px 0 8px;
        flex-direction: row;
        align-items: center;
        gap: 20px;
    }

    .fr-nav-links .fr-nav-link {
        display: block;
        font-size: 19px;
        padding: 10px 0;
    }

    .fr-nav-links .fr-nav-link.is-active::after {
        right: auto;
        width: 48px;
        bottom: 2px;
    }
}

/* --------------------------------------------------------------------------
   Home: hero
   -------------------------------------------------------------------------- */
.fr-hero {
    display: grid;
    grid-template-columns: 1.1fr 1fr;
    gap: 48px;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
    padding: 64px 0 48px;
}

.fr-hero-title {
    font-family: var(--fr-font-film);
    font-weight: 600;
    font-size: clamp(44px, 6.2vw, 72px);
    line-height: .98;
    letter-spacing: -0.035em;
    color: var(--fr-text);
    text-align: left;
    margin: 0;
    text-wrap: balance;
}

.fr-hero-title span {
    display: block;
    font-weight: 400;
    color: var(--fr-muted);
}

.fr-hero-sub {
    font-family: var(--fr-font-ui);
    font-size: 19px;
    line-height: 1.45;
    color: var(--fr-muted);
    text-align: left;
    max-width: 420px;
    margin: 24px 0 0;
}

.fr-hero-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 24px;
    margin-top: 36px;
}

.fr-hero-visual { position: relative; }

.fr-poster-fan {
    position: relative;
    height: 400px;
}

.fr-poster-fan img {
    position: absolute;
    width: 200px;
    height: auto;
    aspect-ratio: 2 / 3;
    object-fit: cover;
    border-radius: var(--fr-radius-poster);
    background: var(--fr-surface);
    box-shadow: 0 30px 70px rgba(0, 0, 0, .65);
}

/* Fan layout: the latest movie sits in the middle, on top */
.fr-poster-fan img:nth-child(1) { left: calc(50% - 100px); top: 0; z-index: 3; }
.fr-poster-fan img:nth-child(2) { left: calc(50% - 250px); top: 48px; transform: rotate(-4deg); z-index: 2; }
.fr-poster-fan img:nth-child(3) { left: calc(50% + 50px); top: 64px; transform: rotate(3deg); z-index: 1; }

/* Signature: film strip perforation */
.fr-perforation {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 24px;
}

.fr-perforation i {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--fr-sig-off);
}

/* --------------------------------------------------------------------------
   Home: how it works, one quiet line (a real sequence, dots show progress)
   -------------------------------------------------------------------------- */
.fr-steps {
    list-style: none;
    width: 100%;
    max-width: 1200px;
    margin: 16px auto 64px;
    padding: 24px 0 0;
    border-top: 1px solid var(--fr-line);
    display: flex;
    flex-wrap: wrap;
    gap: 12px 40px;
}

.fr-step {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    color: var(--fr-muted);
    font-size: 15px;
    text-decoration: none;
    transition: color .16s var(--fr-ease-out);
}

.fr-step:hover,
.fr-step:focus-visible { color: var(--fr-text); }

.fr-step-dots { display: inline-flex; gap: 4px; }

.fr-step-dots i {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--fr-sig-off);
}

.fr-step-dots i.on { background: var(--fr-sig); }

@media (max-width: 991.98px) {
    .fr-hero {
        grid-template-columns: 1fr;
        gap: 40px;
        padding-top: 32px;
    }

    .fr-poster-fan { height: 320px; }
    .fr-poster-fan img { width: 160px; }
    .fr-poster-fan img:nth-child(1) { left: calc(50% - 80px); }
    .fr-poster-fan img:nth-child(2) { left: calc(50% - 200px); top: 40px; }
    .fr-poster-fan img:nth-child(3) { left: calc(50% + 40px); top: 52px; }
}

@media (max-width: 575.98px) {
    .fr-poster-fan { height: 250px; }
    .fr-poster-fan img { width: 128px; }
    .fr-poster-fan img:nth-child(1) { left: calc(50% - 64px); }
    .fr-poster-fan img:nth-child(2) { left: calc(50% - 150px); top: 30px; }
    .fr-poster-fan img:nth-child(3) { left: calc(50% + 22px); top: 40px; }

    .fr-steps {
        flex-direction: column;
        margin-bottom: 48px;
    }

    /* Legacy .container leaves ~10px on phones; bring the gutter to ~18px */
    .fr-hero { padding-inline: 8px; }
    .fr-steps { margin-inline: 8px; }
}

/* --------------------------------------------------------------------------
   Shared pieces: film titles, tags, rating dots, "•••" menu, pagination, empty state
   -------------------------------------------------------------------------- */
.fr-film-title {
    font-family: var(--fr-font-film);
    font-weight: 600; /* bold serif reads warm; 400 at large sizes looked thin and cold */
    color: var(--fr-text);
    text-decoration: none;
    line-height: 1.2;
}

.fr-film-title:hover,
.fr-film-title:focus-visible { color: var(--fr-text); text-decoration: underline; text-decoration-color: var(--fr-muted); text-underline-offset: 3px; }

.fr-film-title-inline { font-family: var(--fr-font-film); color: var(--fr-text); }

.fr-tag {
    display: inline-block;
    font-family: var(--fr-font-ui);
    font-size: 12px;
    line-height: 1;
    color: var(--fr-sig);
    padding: 4px 8px;
    border-radius: 4px;
    background: rgba(184, 161, 90, .12);
    vertical-align: middle;
}

/* Signature: rating as five dots */
.fr-rating { display: inline-flex; gap: 5px; vertical-align: middle; }

.fr-rating i {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--fr-sig-off);
}

.fr-rating i.is-full { background: var(--fr-sig); }
.fr-rating i.is-half { background: linear-gradient(90deg, var(--fr-sig) 50%, var(--fr-sig-off) 50%); }

.fr-more { position: relative; }

.fr-more summary {
    list-style: none;
    cursor: pointer;
    color: var(--fr-muted);
    font-size: 14px;
    letter-spacing: 1px;
    padding: 6px 8px;
    border-radius: 8px;
    line-height: 1;
}

.fr-more summary::-webkit-details-marker { display: none; }

.fr-more summary:hover,
.fr-more[open] summary { color: var(--fr-text); background: var(--fr-surface-2); }

.fr-more summary:focus-visible { outline: 2px solid var(--fr-action); outline-offset: 2px; }

.fr-more-menu {
    position: absolute;
    right: 0;
    top: calc(100% + 6px);
    z-index: 20;
    min-width: 180px;
    padding: 6px;
    background: var(--fr-surface);
    border: 1px solid var(--fr-line);
    border-radius: 12px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .55);
    transform-origin: top right;
    animation: fr-menu-in .16s var(--fr-ease-out);
}

@keyframes fr-menu-in {
    from { opacity: 0; transform: scale(.96); }
    to { opacity: 1; transform: scale(1); }
}

.fr-more-menu a,
.fr-more-menu button {
    display: block;
    width: 100%;
    text-align: left;
    font-family: var(--fr-font-ui);
    font-size: 14px;
    color: var(--fr-text);
    background: none;
    border: 0;
    padding: 9px 12px;
    border-radius: 8px;
    text-decoration: none;
    cursor: pointer;
}

.fr-more-menu a:hover,
.fr-more-menu button:hover,
.fr-more-menu a:focus-visible,
.fr-more-menu button:focus-visible { background: var(--fr-surface-2); color: var(--fr-text); outline: none; }

.fr-more-menu .is-danger { color: var(--fr-danger); }
.fr-more-menu .is-danger:hover { color: var(--fr-danger); }

.fr-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
    margin: 48px 0 0;
    color: var(--fr-muted);
    font-size: 14px;
}

.fr-pagination .fr-btn { font-size: 14px; padding: 10px 18px; }

.fr-empty {
    padding: 72px 0;
    text-align: left;
}

.fr-empty p { text-align: left; margin: 0; }

.fr-empty .fr-empty-title {
    font-size: 23px;
    font-weight: 500;
    letter-spacing: -0.02em;
    color: var(--fr-text);
}

.fr-empty .fr-empty-text {
    font-size: 17px;
    color: var(--fr-muted);
    margin: 8px 0 0;
    max-width: 440px;
}

.fr-empty .fr-link { display: inline-block; margin-top: 16px; }

/* --------------------------------------------------------------------------
   My Movies: header and filters
   -------------------------------------------------------------------------- */
.fr-mm {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 32px 0 80px;
}

.fr-mm-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 20px 32px;
}

/* Page titles use the film voice (Newsreader), so they read like a magazine, not a dashboard */
.fr-mm .fr-mm-title {
    font-family: var(--fr-font-film);
    font-size: clamp(40px, 4.8vw, 52px);
    font-weight: 400;
    letter-spacing: -0.02em;
    line-height: 1;
    color: var(--fr-text);
    text-align: left;
    margin: 0;
}

.fr-mm-title span {
    font-family: var(--fr-font-ui);
    font-size: 15px;
    font-weight: 400;
    letter-spacing: 0;
    color: var(--fr-muted);
    margin-left: 14px;
    vertical-align: middle;
}

.fr-mm-head-actions {
    display: flex;
    align-items: center;
    gap: 16px;
}

.fr-mm-head-actions .fr-btn { font-size: 15px; padding: 11px 20px; }

/* Tabs as text: the active one gets the hand-drawn underline (same stroke as the nav) */
.fr-segmented {
    display: inline-flex;
    gap: 28px;
}

.fr-segmented a {
    position: relative;
    font-size: 15px;
    color: var(--fr-muted);
    text-decoration: none;
    padding: 6px 0;
    transition: color .16s var(--fr-ease-out);
}

.fr-segmented a:hover { color: var(--fr-text); }

.fr-segmented a.is-active { color: var(--fr-text); }

.fr-segmented a.is-active::after,
.fr-chip.is-active::after {
    content: "";
    position: absolute;
    left: -2px;
    right: -2px;
    bottom: -4px;
    height: 6px;
    background: var(--fr-sig);
    -webkit-mask: var(--fr-stroke) center / 100% 100% no-repeat;
    mask: var(--fr-stroke) center / 100% 100% no-repeat;
}

.fr-segmented a:focus-visible { outline: 2px solid var(--fr-action); outline-offset: 4px; border-radius: 2px; }

.fr-mm-tools {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 28px;
}

.fr-search {
    position: relative;
    flex: 1 1 240px;
    max-width: 360px;
}

.fr-search i {
    position: absolute;
    left: 2px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--fr-muted);
    font-size: 13px;
    pointer-events: none;
}

/* Fields are a line, not a box (editorial, like a form on paper) */
.fr-search input,
.fr-select select {
    font-family: var(--fr-font-ui);
    font-size: 15px;
    color: var(--fr-text);
    background-color: transparent;
    border: 0;
    border-bottom: 1px solid rgba(243, 239, 230, .18);
    border-radius: 0;
    height: 40px;
    transition: border-color .16s var(--fr-ease-out);
}

.fr-search input {
    width: 100%;
    padding: 0 4px 0 24px;
}

.fr-search input::placeholder { color: var(--fr-muted); }

.fr-select select {
    appearance: none;
    -webkit-appearance: none;
    padding: 0 24px 0 2px;
    cursor: pointer;
    color-scheme: dark; /* FIX: keeps the native dropdown dark and readable now that the field is transparent */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%239A9385' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 4px center;
}

.fr-select option { background: var(--fr-surface); color: var(--fr-text); }

.fr-search input:hover,
.fr-select select:hover { border-color: rgba(243, 239, 230, .2); }

.fr-search input:focus,
.fr-select select:focus {
    outline: none;
    border-color: var(--fr-muted);
}

.fr-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    color: var(--fr-muted);
    cursor: pointer;
    padding: 0 4px;
}

.fr-toggle input { accent-color: var(--fr-sig); width: 16px; height: 16px; }

.fr-mm-clear {
    font-size: 14px;
    color: var(--fr-muted);
    text-decoration: underline;
    text-underline-offset: 3px;
}

.fr-mm-clear:hover { color: var(--fr-text); }

.fr-mm .fr-mm-stats {
    font-size: 15px;
    color: var(--fr-muted);
    text-align: left;
    margin: 24px 0 0;
}

.fr-mm-stats b { color: var(--fr-text); font-weight: 500; }

/* --------------------------------------------------------------------------
   Page hero (film still) + bar (tabs and text filters): My Movies, Wishlist, Suggestions
   -------------------------------------------------------------------------- */
.fr-ph {
    position: relative;
    min-height: 340px;
    display: flex;
    align-items: flex-end;
    border-radius: var(--fr-radius-card);
    overflow: hidden;
    background: var(--fr-surface);
}

.fr-ph--plain { min-height: 0; background: none; border-radius: 0; overflow: visible; }

.fr-ph-img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 25%;
}

/* Exception to "no gradients": a functional scrim so the text over the still stays legible */
.fr-ph:not(.fr-ph--plain)::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, rgba(13, 12, 10, .25), rgba(13, 12, 10, .55) 55%, rgba(13, 12, 10, .92));
}

.fr-ph-in {
    position: relative;
    z-index: 1;
    flex: 1;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    padding: 28px 32px;
}

.fr-ph--plain .fr-ph-in { padding: 8px 0 0; }

p.fr-ph-kicker {
    font-size: 12px;
    font-weight: 500;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: #E7E0D1;
    text-align: left;
    margin: 0 0 12px;
}

h1.fr-ph-title {
    font-family: var(--fr-font-film);
    font-weight: 600;
    font-size: clamp(34px, 4.2vw, 48px);
    line-height: 1.08;
    letter-spacing: -0.01em;
    color: #fff;
    text-align: left;
    margin: 0;
}

.fr-ph-title a { color: inherit; text-decoration: none; }
.fr-ph-title a:hover { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 6px; }

p.fr-ph-sub {
    font-size: 15px;
    color: #E7E0D1;
    text-align: left;
    margin: 10px 0 0;
}

.fr-mm-bar {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px 24px;
    margin-top: 24px;
    border-bottom: 1px solid rgba(243, 239, 230, .18);
}

.fr-mm-tabs { display: flex; gap: 28px; }

.fr-mm-tabs a {
    position: relative;
    font-size: 15px;
    color: var(--fr-muted);
    text-decoration: none;
    padding: 4px 0 12px;
}

.fr-mm-tabs a:hover,
.fr-mm-tabs a.is-active { color: var(--fr-text); }

.fr-mm-tabs a.is-active::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -3px;
    height: 6px;
    background: var(--fr-sig);
    -webkit-mask: var(--fr-stroke) center / 100% 100% no-repeat;
    mask: var(--fr-stroke) center / 100% 100% no-repeat;
}

.fr-mm-tabs em {
    font-style: normal;
    font-size: 13px;
    color: var(--fr-muted);
    margin-left: 4px;
}

/* Suggestions: the starting points read as tabs on a bar, like the My Movies / Wishlist tabs */
.fr-chips--bar {
    margin-top: 24px;
    padding-bottom: 0;
    border-bottom: 1px solid rgba(243, 239, 230, .18);
}

.fr-chips--bar .fr-chip { padding: 4px 0 12px; }

.fr-chips--bar .fr-chip.is-active::after {
    left: 0;
    right: 0;
    bottom: -3px;
}

/* Small caps page label (Add, Edit): the content below is the protagonist, not the page title */
h1.fr-page-kicker,
p.fr-page-kicker {
    font-family: var(--fr-font-ui);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--fr-muted);
    text-align: left;
    margin: 0;
    padding-bottom: 10px;
    border-bottom: 1px solid rgba(243, 239, 230, .18);
}

.fr-mm-filters {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px 20px;
    padding-bottom: 8px;
}

/* Filters as small caps text with a caret, opening a menu below (no boxes, no native selects) */
.fr-filter summary,
.fr-filter-toggle {
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--fr-muted);
    text-decoration: none;
    padding: 6px 0;
    background: none;
    border-radius: 0;
}

.fr-filter summary::after {
    content: "";
    display: inline-block;
    width: 6px;
    height: 6px;
    margin-left: 6px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: translateY(-3px) rotate(45deg);
}

.fr-filter summary:hover,
.fr-filter[open] summary,
.fr-filter-toggle:hover { color: var(--fr-text); background: none; }

.fr-filter-toggle.is-on { color: var(--fr-text); }
.fr-filter-toggle.is-on::before { content: "✓ "; color: var(--fr-sig); }

.fr-filter-menu {
    min-width: 200px;
    max-height: 320px;
    overflow-y: auto;
    border-radius: var(--fr-radius-control);
    letter-spacing: 0;
    text-transform: none;
}

.fr-filter-menu a.is-current { color: var(--fr-text); }
.fr-filter-menu a.is-current::after { content: " ✓"; color: var(--fr-sig); }

.fr-mm-search {
    position: relative;
    display: flex;
    align-items: center;
}

.fr-mm-search i {
    position: absolute;
    left: 0;
    font-size: 12px;
    color: var(--fr-muted);
    pointer-events: none;
}

.fr-mm-search input {
    width: 150px;
    height: 30px;
    padding: 0 0 0 20px;
    font-family: var(--fr-font-ui);
    font-size: 13px;
    color: var(--fr-text);
    background: transparent;
    border: 0;
    border-bottom: 1px solid transparent;
    transition: border-color .16s var(--fr-ease-out), width .2s var(--fr-ease-out);
}

.fr-mm-search input::placeholder {
    font-size: 11px;
    font-weight: 500;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--fr-muted);
}

.fr-mm-search input:focus { outline: none; border-bottom-color: var(--fr-muted); width: 200px; }

.fr-mm p.fr-mm-searching {
    font-size: 14px;
    color: var(--fr-muted);
    text-align: left;
    margin: 16px 0 0;
}

.fr-mm-searching a { color: var(--fr-text); }

/* --------------------------------------------------------------------------
   My Movies: Diary (a table, like a film diary)
   -------------------------------------------------------------------------- */
.fr-diary-cols,
.fr-diary-row {
    display: grid;
    grid-template-columns: 56px 40px 36px minmax(0, 1fr) 72px 110px 32px;
    grid-template-areas: "mon day poster info year rating more";
    align-items: center;
    column-gap: 16px;
}

.fr-diary-cols {
    font-size: 10px;
    font-weight: 500;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: #6F695E;
    padding: 12px 0 8px;
    border-bottom: 1px solid var(--fr-line);
}

.fr-diary-cols span:nth-child(3) { grid-column: poster / info; }
.fr-diary-cols span:nth-child(4) { display: none; }

.fr-diary-row {
    padding: 10px 0;
    border-bottom: 1px solid var(--fr-line);
}

/* On desktop the month lives in the almanac badge; the heading stays for screen readers */
.fr-mm .fr-diary-month {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.fr-diary-mon { grid-area: mon; }

.fr-diary-mon b {
    display: block;
    width: 52px;
    padding: 6px 0 2px;
    text-align: center;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .06em;
    color: var(--fr-text);
    background: var(--fr-surface-2);
    border-radius: 4px 4px 0 0;
}

.fr-diary-mon small {
    display: block;
    width: 52px;
    padding: 0 0 5px;
    text-align: center;
    font-size: 10px;
    color: var(--fr-muted);
    background: var(--fr-surface-2);
    border-radius: 0 0 4px 4px;
}

.fr-diary-day { grid-area: day; text-align: left; }

.fr-diary-day b {
    display: block;
    font-size: 22px;
    font-weight: 300;
    line-height: 1;
    color: var(--fr-muted);
}

/* Day of week only matters when not grouped by month */
.fr-diary--months .fr-diary-day small { display: none; }

.fr-diary-day small {
    display: block;
    font-size: 11px;
    color: var(--fr-muted);
    margin-top: 4px;
}

.fr-diary-poster { grid-area: poster; display: block; }

.fr-diary-poster img,
.fr-diary-poster:empty {
    display: block;
    width: 36px;
    height: 54px;
    object-fit: cover;
    border-radius: 3px;
    background: var(--fr-surface);
}

.fr-diary-info { grid-area: info; min-width: 0; }

.fr-diary-info .fr-film-title { font-size: 20px; margin-right: 8px; }

.fr-mm .fr-diary-meta {
    font-size: 13px;
    color: var(--fr-muted);
    text-align: left;
    margin: 3px 0 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.fr-diary-year { grid-area: year; font-size: 13px; color: var(--fr-muted); }
.fr-diary-rating { grid-area: rating; }
.fr-diary-row .fr-more { grid-area: more; justify-self: end; }

/* --------------------------------------------------------------------------
   My Movies: Collection (poster wall)
   -------------------------------------------------------------------------- */
.fr-wall {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 32px 20px;
    margin-top: 32px;
}

.fr-wall-poster {
    display: block;
    aspect-ratio: 2 / 3;
    border-radius: var(--fr-radius-poster);
    overflow: hidden;
    background: var(--fr-surface);
    box-shadow: 0 14px 34px rgba(0, 0, 0, .45);
}

.fr-wall-poster img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .3s var(--fr-ease-out);
}

@media (hover: hover) and (pointer: fine) {
    .fr-wall-poster:hover img { transform: scale(1.03); }
}

.fr-wall-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 12px;
    text-align: center;
    font-family: var(--fr-font-film);
    color: var(--fr-muted);
}

.fr-wall-info {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 4px;
    margin-top: 12px;
}

.fr-wall-info .fr-film-title { font-size: 16px; padding-top: 4px; }
.fr-wall-info .fr-more summary { padding: 4px 6px; }

.fr-wall-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
    min-height: 20px;
}

.fr-wall-meta .fr-rating i { width: 6px; height: 6px; }

@media (max-width: 991.98px) {
    .fr-wall { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 767.98px) {
    .fr-mm { padding-top: 16px; }

    .fr-mm-head-actions {
        width: 100%;
        justify-content: space-between;
    }

    .fr-search { flex-basis: 100%; max-width: none; }

    .fr-diary-cols,
    .fr-diary-mon,
    .fr-diary-year { display: none; }

    .fr-diary-row {
        grid-template-columns: 32px 40px minmax(0, 1fr) 32px;
        grid-template-areas:
            "day poster info more"
            "day poster rating more";
        column-gap: 12px;
        row-gap: 6px;
    }

    .fr-mm .fr-diary-month {
        position: static;
        width: auto;
        height: auto;
        overflow: visible;
        clip: auto;
        font-size: 11px;
        font-weight: 500;
        letter-spacing: .12em;
        text-transform: uppercase;
        color: var(--fr-muted);
        margin: 28px 0 0;
        padding-bottom: 8px;
        border-bottom: 1px solid var(--fr-line);
    }

    .fr-diary-rating { align-self: start; }
    .fr-diary-info { align-self: end; }
    .fr-diary-poster img,
    .fr-diary-poster:empty { width: 40px; height: 60px; }
    .fr-diary-info .fr-film-title { font-size: 18px; }

    /* FIX: Without an image there is nothing to frame, so the plain hero must not keep this height */
    .fr-ph:not(.fr-ph--plain) { min-height: 260px; }
    .fr-ph-in { flex-direction: column; align-items: flex-start; padding: 20px; }
    .fr-mm-bar { align-items: stretch; }
    .fr-mm-filters { width: 100%; }

    .fr-wall {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 24px 12px;
    }

    .fr-wall-info .fr-film-title { font-size: 14px; }
}

@media (max-width: 575.98px) {
    .fr-mm { padding-inline: 8px; }
}

/* --------------------------------------------------------------------------
   Page titles (shared by inner pages)
   -------------------------------------------------------------------------- */
.fr-page-title {
    font-family: var(--fr-font-film);
    font-size: clamp(40px, 4.8vw, 52px);
    font-weight: 400;
    letter-spacing: -0.02em;
    line-height: 1;
    color: var(--fr-text);
    text-align: left;
    margin: 0;
}

p.fr-page-sub {
    font-family: var(--fr-font-ui);
    font-size: 19px;
    font-weight: 300;
    color: var(--fr-muted);
    text-align: left;
    margin: 12px 0 0;
}

.fr-btn--compact {
    font-size: 14px;
    padding: 10px 16px;
}

.fr-btn:disabled {
    cursor: default;
    opacity: .7;
}

/* --------------------------------------------------------------------------
   Chips (pick one option from a short list)
   -------------------------------------------------------------------------- */
.fr-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 28px;
    margin-top: 28px;
    padding-bottom: 6px; /* room for the underline when the row scrolls sideways on mobile */
}

/* Chips as text, like the tabs: the active one gets the hand-drawn underline */
.fr-chip {
    position: relative;
    font-family: var(--fr-font-ui);
    font-size: 15px;
    white-space: nowrap;
    color: var(--fr-muted);
    text-decoration: none;
    padding: 6px 0;
    background: none;
    border: 0;
    transition: color .16s var(--fr-ease-out);
}

.fr-chip:hover { color: var(--fr-text); }

.fr-chip.is-active { color: var(--fr-text); }

.fr-chip:focus-visible { outline: 2px solid var(--fr-action); outline-offset: 4px; border-radius: 2px; }

/* --------------------------------------------------------------------------
   Suggestions
   -------------------------------------------------------------------------- */
.fr-suggest {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 32px 0 80px;
}

#suggestion-results-slot { transition: opacity .2s var(--fr-ease-out); }
#suggestion-results-slot.is-loading { opacity: .4; }

.fr-suggest-results { scroll-margin-top: 96px; }

.fr-suggest-head {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-top: 48px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--fr-line);
}

.fr-suggest .fr-suggest-heading {
    flex: 1;
    font-family: var(--fr-font-ui);
    font-size: 23px;
    font-weight: 500;
    letter-spacing: -0.02em;
    color: var(--fr-text);
    text-align: left;
    margin: 0;
}

.fr-suggest-avatar {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}

.fr-suggest-avatar[hidden] { display: none; }

/* Server responses wrap cards in Bootstrap ".col" divs; let the grid ignore them */
.fr-suggest-grid .col { display: contents; }

.fr-suggest-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 32px 28px;
    margin-top: 28px;
}

/* A single result (Surprise me) sits in the middle column. Cards may come wrapped in ".col" from the server. */
.fr-suggest-grid > .fr-suggest-card:only-child,
.fr-suggest-grid > .col:only-child > .fr-suggest-card {
    grid-column: 2;
}

.fr-suggest-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    transition: opacity .25s var(--fr-ease-out), transform .25s var(--fr-ease-out);
}

.fr-suggest-card.is-leaving {
    opacity: 0;
    transform: scale(.97);
}

.fr-suggest-poster {
    display: block;
    aspect-ratio: 2 / 3;
    border-radius: 10px;
    overflow: hidden;
    background: var(--fr-surface);
    box-shadow: 0 18px 40px rgba(0, 0, 0, .5);
}

.fr-suggest-poster img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .3s var(--fr-ease-out);
}

@media (hover: hover) and (pointer: fine) {
    .fr-suggest-poster:hover img { transform: scale(1.03); }
}

.fr-suggest-title {
    font-size: 23px;
    margin-top: 16px;
}

.fr-suggest p.fr-suggest-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: var(--fr-font-ui);
    font-size: 14px;
    color: var(--fr-muted);
    text-align: left;
    margin: 6px 0 0;
    min-height: 22px;
}

.fr-suggest-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: auto;
    padding-top: 16px;
}

.fr-suggest-actions form { margin: 0; }

/* Empty / info messages still come from the server as Bootstrap alerts: make them quiet text */
.fr-suggest .alert {
    background: none;
    border: 0;
    border-top: 1px solid var(--fr-line);
    border-radius: 0;
    color: var(--fr-muted);
    font-size: 17px;
    text-align: left !important;
    padding: 32px 0;
    margin: 48px 0 0 !important;
}

.fr-suggest .fr-empty { padding: 40px 0 0; }
.fr-suggest .fr-empty .fr-btn { margin-top: 20px; }

@media (max-width: 767.98px) {
    .fr-suggest { padding-top: 16px; }

    /* Results slide sideways. FIX: chips wrap instead, because the user now has to see all the options to choose */
    .fr-suggest-grid {
        flex-wrap: nowrap;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scrollbar-width: none;
        margin-right: -26px;
        padding-right: 26px;
    }

    .fr-suggest-grid::-webkit-scrollbar { display: none; }

    .fr-chip { scroll-snap-align: start; }

    .fr-suggest-grid {
        display: flex;
        gap: 16px;
    }

    .fr-suggest-card {
        flex: 0 0 72%;
        scroll-snap-align: start;
    }

    .fr-suggest-head { margin-top: 32px; }
    .fr-suggest .fr-suggest-heading { font-size: 19px; }
    .fr-suggest-title { font-size: 20px; }
}

@media (max-width: 575.98px) {
    .fr-suggest { padding-inline: 8px; }
}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
.fr-footer {
    margin-top: auto;
    border-top: 1px solid var(--fr-line);
    background: var(--fr-bg);
    color: var(--fr-muted);
    font-size: 14px;
}

.fr-footer-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 40px 24px 32px;
}

.fr-footer a {
    color: var(--fr-muted);
    text-decoration: none;
    transition: color .16s var(--fr-ease-out);
}

.fr-footer a:hover,
.fr-footer a:focus-visible { color: var(--fr-text); }

.fr-footer-top {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 24px 40px;
}

.fr-footer-brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.fr-footer .fr-footer-brand span {
    color: var(--fr-text);
    font-weight: 500;
}

.fr-footer-links {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 8px 24px;
    flex: 1;
}

.fr-footer-social {
    display: flex;
    gap: 16px;
    font-size: 16px;
}

.fr-footer-bottom {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 16px 40px;
    margin-top: 32px;
    padding-top: 24px;
    border-top: 1px solid var(--fr-line);
    font-size: 12px;
}

.fr-footer-tmdb {
    display: flex;
    align-items: center;
    gap: 12px;
    max-width: 520px;
    line-height: 1.4;
}

.fr-footer-tmdb img {
    width: 60px;
    height: auto;
    opacity: .8;
    flex-shrink: 0;
}

@media (max-width: 575.98px) {
    .fr-footer-top {
        flex-direction: column;
        align-items: flex-start;
    }

    .fr-footer-links {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 12px 24px;
        width: 100%;
    }

    .fr-footer-tmdb { align-items: flex-start; }
}

/* --------------------------------------------------------------------------
   Wishlist page: Want to see (poster wall) / Not interested (compact list)
   -------------------------------------------------------------------------- */
.fr-segmented em {
    font-style: normal;
    font-size: 13px;
    color: var(--fr-muted);
    margin-left: 4px;
}

/* Year · director under the title; the year goes first so truncation only cuts the name */
.fr-mm .fr-wall-sub {
    font-size: 13px;
    color: var(--fr-muted);
    text-align: left;
    margin: 4px 0 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* A single result sits in the middle column (user preference) */
.fr-wall--single > .fr-wall-item {
    grid-column: 3 / 5;
    width: calc(50% - 10px);
    justify-self: center;
}

.fr-mm p.fr-lists-sub {
    font-size: 17px;
    font-weight: 300;
    color: var(--fr-muted);
    text-align: left;
    margin: 28px 0 0;
}

.fr-hidden-list {
    list-style: none;
    padding: 0;
    margin: 16px 0 0;
    max-width: 760px;
}

.fr-hidden-row {
    display: grid;
    grid-template-columns: 40px minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 16px;
    padding: 12px 0;
    border-bottom: 1px solid var(--fr-line);
}

.fr-hidden-poster {
    display: block;
    width: 40px;
    height: 60px;
    border-radius: 4px;
    overflow: hidden;
    background: var(--fr-surface);
}

/* Greyed out: these are films the user said no to */
.fr-hidden-poster img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(1);
    opacity: .7;
}

.fr-hidden-info { min-width: 0; }
.fr-hidden-info .fr-film-title { font-size: 19px; }

.fr-mm .fr-hidden-meta {
    font-size: 13px;
    color: var(--fr-muted);
    text-align: left;
    margin: 2px 0 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.fr-hidden-when {
    font-size: 13px;
    color: var(--fr-muted);
    white-space: nowrap;
}

@media (max-width: 767.98px) {
    .fr-mm-head-actions { flex-wrap: wrap; }

    .fr-wall--single > .fr-wall-item {
        grid-column: 2 / 3;
        width: auto;
    }

    .fr-hidden-row { grid-template-columns: 40px minmax(0, 1fr) auto; }
    .fr-hidden-when { display: none; }
    .fr-hidden-info .fr-film-title { font-size: 17px; }
}

/* --------------------------------------------------------------------------
   Log a movie (Add): search, then the log as a sentence (desktop) or chips (mobile)
   -------------------------------------------------------------------------- */
.fr-log-page {
    width: 100%;
    max-width: 1000px;
    margin: 0 auto;
    padding: 40px 0 96px;
}

/* Steps and the date field toggle with [hidden]; keep it winning over the display rules below */
.fr-log-page [hidden] { display: none !important; }

.fr-log-search-box {
    position: relative;
    max-width: 640px;
    margin-top: 28px;
}

.fr-log-search-field { position: relative; }

.fr-log-search-field i {
    position: absolute;
    left: 4px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--fr-muted);
    pointer-events: none;
}

.fr-log-search-field input {
    width: 100%;
    height: 60px;
    padding: 0 4px 0 36px;
    font-family: var(--fr-font-film);
    font-size: 28px;
    color: var(--fr-text);
    background: transparent;
    border: 0;
    border-bottom: 1px solid rgba(243, 239, 230, .3);
    border-radius: 0;
    transition: border-color .16s var(--fr-ease-out);
}

.fr-log-search-field input::placeholder { color: var(--fr-muted); }
.fr-log-search-field input::-webkit-search-cancel-button { -webkit-appearance: none; }
.fr-log-search-field input:focus { outline: none; border-color: var(--fr-muted); }

.fr-log-results {
    list-style: none;
    margin: 8px 0 0;
    padding: 6px;
    background: var(--fr-surface);
    border: 1px solid var(--fr-line);
    border-radius: var(--fr-radius-card);
    box-shadow: 0 18px 40px rgba(0, 0, 0, .5);
}

.fr-log-result {
    display: flex;
    align-items: center;
    gap: 14px;
    width: 100%;
    padding: 8px 10px;
    text-align: left;
    background: transparent;
    border: 0;
    border-radius: 10px;
    color: inherit;
    cursor: pointer;
}

.fr-log-result:hover,
.fr-log-result:focus-visible { background: var(--fr-surface-2); outline: none; }
.fr-log-result:disabled { opacity: .6; cursor: progress; }

.fr-log-result img,
.fr-log-result-blank {
    flex: none;
    width: 36px;
    height: 54px;
    border-radius: 4px;
    object-fit: cover;
    background: var(--fr-surface-2);
}

.fr-log-result-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
    overflow: hidden;
}

.fr-log-result-title {
    font-family: var(--fr-font-film);
    font-size: 18px;
    color: var(--fr-text);
}

.fr-log-result-meta {
    font-size: 13px;
    color: var(--fr-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.fr-log-results-msg {
    padding: 12px 10px;
    font-size: 14px;
    color: var(--fr-muted);
}

/* Step 2. Desktop: poster | sentence + meta + actions */
.fr-log {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    grid-template-areas:
        "poster sentence"
        "poster meta"
        "poster actions"
        "poster errors";
    grid-template-rows: auto auto auto 1fr;
    column-gap: 48px;
    align-content: center;
}

.fr-log-poster {
    grid-area: poster;
    display: block;
    border-radius: var(--fr-radius-poster);
    overflow: hidden;
    box-shadow: 0 18px 40px rgba(0, 0, 0, .5);
}

.fr-log-poster img {
    display: block;
    width: 100%;
    height: auto;
    transition: transform .3s var(--fr-ease-out);
}

@media (hover: hover) and (pointer: fine) {
    .fr-log-poster:hover img { transform: scale(1.03); }
}

.fr-log-poster:focus-visible { outline: 2px solid var(--fr-action); outline-offset: 3px; }

a.fr-log-sentence-film,
.fr-log-film a { color: var(--fr-text); text-decoration: none; }

a.fr-log-sentence-film:hover,
.fr-log-film a:hover {
    color: var(--fr-text);
    text-decoration: underline;
    text-decoration-color: var(--fr-muted);
    text-underline-offset: 4px;
}

.fr-log-head,
.fr-log-fields { display: none; }

div.fr-log-sentence {
    grid-area: sentence;
    font-family: var(--fr-font-ui);
    font-size: clamp(26px, 3vw, 34px);
    font-weight: 300;
    line-height: 1.6;
    letter-spacing: -0.02em;
    color: var(--fr-muted);
    text-align: left;
    margin: 0;
}

.fr-log-sentence-film {
    font-family: var(--fr-font-film);
    font-size: 1.05em;
    color: var(--fr-text);
}

.fr-log-inline input {
    field-sizing: content;
    appearance: none;
    -webkit-appearance: none;
    font: inherit;
    font-weight: 400;
    letter-spacing: inherit;
    color: var(--fr-text);
    background: transparent;
    border: 0;
    border-bottom: 2px solid var(--fr-sig);
    border-radius: 0;
    padding: 0 2px;
    cursor: pointer;
    color-scheme: dark;
}

.fr-log-inline input { font-size: .8em; margin-left: .3em; }
/* Sentence choices: the underlined word opens a text menu (same menu as "•••") */
.fr-log-pick { display: inline-block; }

.fr-log-pick summary {
    font: inherit;
    font-weight: 400;
    letter-spacing: inherit;
    line-height: 1.25;
    color: var(--fr-text);
    background: none;
    border-bottom: 2px solid var(--fr-sig);
    border-radius: 0;
    padding: 0 2px;
}

.fr-log-pick summary:hover,
.fr-log-pick[open] summary { color: var(--fr-text); background: none; border-bottom-color: var(--fr-text); }

.fr-log-pick .fr-more-menu { left: 0; right: auto; transform-origin: top left; }
.fr-log-pick .fr-more-menu button { font-size: 15px; letter-spacing: 0; }
.fr-log-pick .fr-more-menu button.is-current::after { content: " ✓"; color: var(--fr-sig); }

.fr-log-inline input:focus-visible,
.fr-log-dots:focus-visible {
    outline: 2px solid var(--fr-action);
    outline-offset: 3px;
}

.fr-log-dots {
    display: inline-flex;
    gap: 10px;
    vertical-align: middle;
    cursor: pointer;
    border-radius: 4px;
}

.fr-log-dots i {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--fr-sig-off);
    transition: background-color .12s var(--fr-ease-out);
}

.fr-log-dots i.is-full { background: var(--fr-sig); }
.fr-log-dots i.is-half { background: linear-gradient(90deg, var(--fr-sig) 50%, var(--fr-sig-off) 50%); }

.fr-log p.fr-log-meta {
    font-size: 15px;
    color: var(--fr-muted);
    text-align: left;
    margin: 8px 0 0;
}

.fr-log-meta--desktop { grid-area: meta; }

.fr-log-actions {
    grid-area: actions;
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 32px;
}

/* Edit: destructive action as red text, pushed away from Save / Cancel */
.fr-log-delete {
    margin-left: auto;
    padding: 0;
    font: inherit;
    font-size: 15px;
    color: var(--fr-danger);
    background: none;
    border: 0;
    cursor: pointer;
}

.fr-log-delete:hover,
.fr-log-delete:focus-visible { text-decoration: underline; text-underline-offset: 4px; }

/* Edit has no search step: the label sits above the log with some air */
p.fr-log-kicker { margin-bottom: 40px; }

.fr-log-errors {
    grid-area: errors;
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-top: 16px;
    font-size: 14px;
    color: var(--fr-danger);
}

/* Mobile: poster + title on top, chips in one column, full-width action */
@media (max-width: 767.98px) {
    .fr-log-page { padding: 16px 8px 80px; }

    .fr-log {
        grid-template-columns: 80px minmax(0, 1fr);
        grid-template-areas:
            "poster head"
            "fields fields"
            "actions actions"
            "errors errors";
        grid-template-rows: none;
        column-gap: 20px;
        align-content: start;
    }

    .fr-log-poster { align-self: end; border-radius: 6px; }
    .fr-log-poster img { width: 80px; }

    .fr-log-sentence,
    .fr-log-meta--desktop,
    .fr-log-change-desktop { display: none; }

    .fr-log-head { display: block; grid-area: head; align-self: end; }
    .fr-log-head .fr-btn { margin-top: 14px; }

    .fr-log h1.fr-log-film {
        font-family: var(--fr-font-film);
        font-weight: 400;
        font-size: 28px;
        line-height: 1.1;
        letter-spacing: -0.01em;
        color: var(--fr-text);
        text-align: left;
        margin: 0;
    }

    .fr-log-fields {
        display: block;
        grid-area: fields;
        margin-top: 28px;
        padding-top: 4px;
        border-top: 1px solid var(--fr-line);
    }

    .fr-log-field { margin-top: 24px; }

    .fr-log-label {
        display: block;
        font-size: 15px;
        color: var(--fr-text);
        margin-bottom: 12px;
    }

    .fr-log-chips { display: flex; flex-wrap: wrap; gap: 10px 24px; }
    .fr-log-chips .fr-chip { cursor: pointer; }

    .fr-log-date { display: block; margin-top: 12px; }

    .fr-log-date input {
        height: 44px;
        padding: 0 16px;
        font-family: var(--fr-font-ui);
        font-size: 16px;
        color: var(--fr-text);
        background: var(--fr-surface);
        border: 1px solid var(--fr-line);
        border-radius: var(--fr-radius-control);
        color-scheme: dark;
    }

    .fr-log-rating-text {
        font-size: 14px;
        color: var(--fr-muted);
        margin-left: 12px;
        vertical-align: middle;
    }

    .fr-log-actions { margin-top: 32px; flex-wrap: wrap; }
    .fr-log-actions .fr-btn { flex: 1; }
    p.fr-log-kicker { margin-bottom: 24px; }
    .fr-log-delete { flex: 1 1 100%; margin: 12px 0 0; padding: 8px 0; text-align: center; }
}

/* --------------------------------------------------------------------------
   Movie page (Preview and Details): poster left (sticky), everything else right
   -------------------------------------------------------------------------- */
.fr-movie {
    display: grid;
    grid-template-columns: 300px minmax(0, 1fr);
    gap: 56px;
    align-items: start;
    width: 100%;
    max-width: 1100px;
    margin: 0 auto;
    padding: 40px 0 96px;
}

.fr-movie-poster {
    position: sticky;
    top: 96px;
    aspect-ratio: 2 / 3;
    border-radius: var(--fr-radius-poster);
    overflow: hidden;
    background: var(--fr-surface);
    box-shadow: 0 18px 40px rgba(0, 0, 0, .5);
}

.fr-movie-poster img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.fr-movie-body { min-width: 0; }

.fr-movie h1.fr-movie-title {
    font-family: var(--fr-font-film);
    font-weight: 400;
    font-size: clamp(40px, 5vw, 60px);
    line-height: 1.02;
    letter-spacing: -0.02em;
    color: var(--fr-text);
    text-align: left;
    margin: 0;
}

.fr-movie p.fr-movie-meta {
    font-size: 15px;
    color: var(--fr-muted);
    text-align: left;
    margin: 14px 0 0;
}

.fr-movie p.fr-movie-tagline {
    font-family: var(--fr-font-film);
    font-style: italic;
    font-size: 19px;
    color: var(--fr-muted);
    text-align: left;
    margin: 16px 0 0;
}

.fr-movie p.fr-movie-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 20px 0 0;
}

/* The log read back: same underlined words as the Add sentence */
.fr-movie-log {
    max-width: 620px;
    margin-top: 24px;
    padding: 16px 20px;
    background: var(--fr-surface);
    border: 1px solid var(--fr-line);
    border-radius: var(--fr-radius-card);
}

.fr-movie-log p {
    font-size: 17px;
    line-height: 1.7;
    color: var(--fr-muted);
    text-align: left;
    margin: 0;
}

.fr-movie-log b {
    font-weight: 400;
    color: var(--fr-text);
    border-bottom: 2px solid var(--fr-sig);
}

.fr-movie-log .fr-rating { margin-left: 4px; }
.fr-movie-log .fr-rating i { width: 10px; height: 10px; }

.fr-movie-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin-top: 28px;
}

.fr-movie-actions form { margin: 0; }
.fr-movie-actions .fr-btn { font-size: 15px; padding: 12px 20px; gap: 6px; }
.fr-more-menu form { margin: 0; }

.fr-movie p.fr-movie-overview {
    font-size: 17px;
    line-height: 1.6;
    color: var(--fr-text);
    max-width: 62ch;
    text-align: left;
    margin: 36px 0 0;
}

.fr-movie-block { margin-top: 36px; }

.fr-movie h2.fr-movie-h {
    font-family: var(--fr-font-ui);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--fr-muted);
    text-align: left;
    margin: 0 0 14px;
}

.fr-movie-cast,
.fr-movie-providers {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 12px 24px;
}

.fr-movie-cast li,
.fr-movie-providers li {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 15px;
    color: var(--fr-text);
}

.fr-movie-cast img,
.fr-movie-face {
    display: block;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    object-fit: cover;
    background: var(--fr-surface-2);
}

.fr-movie-providers img { border-radius: 8px; }

.fr-movie p.fr-movie-text {
    font-size: 15px;
    color: var(--fr-text);
    text-align: left;
    margin: 0;
}

.fr-movie p.fr-movie-small {
    font-size: 13px;
    color: var(--fr-muted);
    text-align: left;
    margin: 12px 0 0;
}

@media (max-width: 767.98px) {
    .fr-movie {
        grid-template-columns: 1fr;
        gap: 28px;
        padding: 16px 8px 80px;
    }

    .fr-movie-poster { position: static; width: 180px; }
    .fr-movie h1.fr-movie-title { font-size: 36px; }
}

/* --------------------------------------------------------------------------
   Account access (Identity: log in, sign up, password reset, confirmations).
   One narrow column, no card: small caps label, fields as a line, one gold button.
   -------------------------------------------------------------------------- */
.fr-auth {
    width: 100%;
    max-width: 380px;
    margin: 0 auto;
    padding: 64px 0 96px;
}

.fr-auth h1.fr-page-kicker,
.fr-account-body h2.fr-page-kicker { margin-bottom: 28px; }

.fr-auth p.fr-auth-lead,
.fr-account-body p.fr-auth-lead {
    font-size: 15px;
    line-height: 1.55;
    color: var(--fr-muted);
    text-align: left;
    margin: -8px 0 28px;
}

.fr-auth p.fr-auth-lead strong { color: var(--fr-text); font-weight: 500; }

/* Field: label above, the input is a line (DESIGN.md: fields are a line, not a box) */
.fr-field { margin-bottom: 24px; }

.fr-field label {
    display: block;
    font-size: 13px;
    color: var(--fr-muted);
    margin-bottom: 4px;
}

.fr-field input {
    width: 100%;
    font-family: var(--fr-font-ui);
    font-size: 17px;
    color: var(--fr-text);
    background: transparent;
    border: 0;
    border-bottom: 1px solid rgba(243, 239, 230, .28);
    border-radius: 0;
    padding: 6px 0 8px;
    color-scheme: dark;
}

.fr-field input:focus { outline: none; border-bottom-color: var(--fr-sig); }
.fr-field input:disabled { color: var(--fr-muted); border-bottom-style: dashed; }
.fr-field input.input-validation-error { border-bottom-color: var(--fr-danger); }

/* Keep autofilled fields dark instead of the browser's light yellow */
.fr-field input:-webkit-autofill {
    -webkit-text-fill-color: var(--fr-text);
    -webkit-box-shadow: 0 0 0 1000px var(--fr-bg) inset;
    caret-color: var(--fr-text);
}

.fr-field-hint { display: block; font-size: 13px; color: var(--fr-muted); margin-top: 6px; }
.fr-field-error,
.fr-field .field-validation-error { display: block; font-size: 13px; color: var(--fr-danger); margin-top: 6px; }
.fr-field .field-validation-valid { display: none; }

.fr-field-pw { position: relative; }
.fr-field-pw input { padding-right: 36px; }

.fr-pw-toggle {
    position: absolute;
    right: 0;
    bottom: 6px;
    padding: 4px;
    color: var(--fr-muted);
    background: none;
    border: 0;
    cursor: pointer;
}

.fr-pw-toggle:hover { color: var(--fr-text); }

/* Server errors above the form */
.fr-form-errors { font-size: 14px; color: var(--fr-danger); margin-bottom: 20px; }
.fr-form-errors ul { list-style: none; margin: 0; padding: 0; }
.fr-form-errors.validation-summary-valid { display: none; }

.fr-auth-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    font-size: 14px;
    color: var(--fr-muted);
    margin: -4px 0 28px;
}

.fr-auth-row label { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }
.fr-auth-row input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--fr-sig); margin: 0; }

.fr-auth a.fr-auth-link,
.fr-account-body a.fr-auth-link {
    color: var(--fr-text);
    text-decoration: underline;
    text-decoration-color: rgba(243, 239, 230, .35);
    text-underline-offset: 3px;
}

.fr-auth a.fr-auth-link:hover,
.fr-account-body a.fr-auth-link:hover { text-decoration-color: var(--fr-text); }

.fr-btn--block { width: 100%; }
.fr-btn--block i { margin-right: 10px; }

.fr-auth-or {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 12px;
    color: var(--fr-muted);
    margin: 24px 0;
}

.fr-auth-or::before,
.fr-auth-or::after { content: ""; flex: 1; height: 1px; background: var(--fr-line); }

.fr-auth p.fr-auth-alt {
    font-size: 14px;
    color: var(--fr-muted);
    text-align: left;
    margin: 28px 0 0;
}

.fr-auth p.fr-auth-alt + p.fr-auth-alt { margin-top: 10px; }

/* Honeypot (Register): off screen for people, filled in by bots */
.fr-honeypot { position: absolute; left: -9999px; }

/* --------------------------------------------------------------------------
   Account (Identity Manage): title, tabs on a bar like My Movies, one narrow form
   -------------------------------------------------------------------------- */
.fr-account {
    width: 100%;
    max-width: 1000px;
    margin: 0 auto;
    padding: 48px 0 96px;
}

h1.fr-account-title {
    font-family: var(--fr-font-film);
    font-weight: 600;
    font-size: 44px;
    line-height: 1.1;
    letter-spacing: -0.01em;
    color: var(--fr-text);
    text-align: left;
    margin: 0;
}

.fr-account p.fr-account-sub {
    font-size: 15px;
    color: var(--fr-muted);
    text-align: left;
    margin: 6px 0 0;
}

.fr-account .fr-mm-bar { margin-top: 28px; }
/* FIX: The scrolling bar clips overflow, so it needs room for the hand-drawn underline */
.fr-account .fr-mm-tabs { overflow-x: auto; scrollbar-width: none; padding-bottom: 3px; }
.fr-account .fr-mm-tabs a { white-space: nowrap; }

.fr-account-body { max-width: 440px; padding-top: 40px; }

/* Status message after saving (Identity's _StatusMessage renders a Bootstrap alert) */
.fr-account-body .alert {
    position: relative;
    font-size: 14px;
    color: var(--fr-text);
    background: none;
    border: 0;
    border-left: 2px solid var(--fr-sig);
    border-radius: 0;
    padding: 2px 0 2px 12px;
    margin-bottom: 28px;
}

.fr-account-body .alert-danger { border-left-color: var(--fr-danger); }
.fr-account-body .alert .btn-close { display: none; }

.fr-account-body p.fr-account-text {
    font-size: 15px;
    line-height: 1.55;
    color: var(--fr-muted);
    text-align: left;
    margin: 0 0 20px;
}

.fr-account-list { list-style: none; margin: 0 0 32px; padding: 0; border-top: 1px solid var(--fr-line); }

.fr-account-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    font-size: 15px;
    color: var(--fr-text);
    padding: 14px 0;
    border-bottom: 1px solid var(--fr-line);
}

.fr-account-list form { margin: 0; }

.fr-account-body .fr-btn + .fr-btn { margin-left: 8px; }
.fr-account-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.fr-account-body p.fr-account-text strong { color: var(--fr-text); font-weight: 500; }

/* Destructive zone (Personal data): separated, red text action */
.fr-account-danger { margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--fr-line); }

.fr-btn--danger { background: var(--fr-danger); color: #fff; }
.fr-btn--danger:hover,
.fr-btn--danger:focus-visible { background: #F2555A; color: #fff; }

/* A form button that reads as a text link */
.fr-link-button {
    display: inline;
    padding: 0;
    margin-top: 6px;
    font: inherit;
    font-size: 14px;
    color: var(--fr-text);
    background: none;
    border: 0;
    text-decoration: underline;
    text-decoration-color: rgba(243, 239, 230, .35);
    text-underline-offset: 3px;
    cursor: pointer;
}

/* Fallback for Identity UI pages not rewritten here (2FA setup, recovery codes): Bootstrap markup
   in the account style. Legacy CSS sets these with !important, so the key properties need it too. */
.fr-account-body h3,
.fr-account-body h4 { font-family: var(--fr-font-ui); font-size: 19px; font-weight: 500; color: var(--fr-text); text-align: left; margin: 0 0 16px; }
.fr-account-body p,
.fr-account-body li { font-size: 15px !important; line-height: 1.55; color: var(--fr-muted) !important; text-align: left !important; margin-left: 0 !important; }
.fr-account-body .form-floating { display: flex; flex-direction: column; margin-bottom: 24px; }
.fr-account-body .form-floating > label { position: static !important; order: -1; padding: 0 !important; height: auto !important; transform: none !important; opacity: 1 !important; font-size: 13px !important; color: var(--fr-muted) !important; margin-bottom: 4px; }
.fr-account-body .form-control { height: auto !important; min-height: 0 !important; font-size: 17px !important; color: var(--fr-text) !important; background: transparent !important; border: 0 !important; border-bottom: 1px solid rgba(243, 239, 230, .28) !important; border-radius: 0 !important; padding: 6px 0 8px !important; box-shadow: none !important; }
.fr-account-body .btn-primary { background: var(--fr-action) !important; color: #000 !important; border: 0 !important; border-radius: var(--fr-radius-control) !important; font-weight: 500; padding: 14px 24px !important; width: auto !important; }
.fr-account-body .btn-danger { background: var(--fr-danger) !important; color: #fff !important; border: 0 !important; border-radius: var(--fr-radius-control) !important; }
.fr-account-body .btn-secondary,
.fr-account-body .btn-outline-secondary { background: var(--fr-surface-2) !important; color: var(--fr-text) !important; border: 1px solid var(--fr-line) !important; border-radius: var(--fr-radius-control) !important; }
.fr-account-body code,
.fr-account-body kbd { color: var(--fr-text); background: var(--fr-surface-2); border-radius: 4px; padding: 2px 6px; }

@media (max-width: 767.98px) {
    .fr-auth { padding: 32px 8px 72px; }
    .fr-account { padding: 24px 8px 72px; }
    h1.fr-account-title { font-size: 34px; }
    .fr-account .fr-mm-tabs { gap: 22px; }
    .fr-account-body { padding-top: 28px; }
}

/* --------------------------------------------------------------------------
   Get the app (PWA install): one column, device tabs, steps as a list
   -------------------------------------------------------------------------- */
.fr-app {
    width: 100%;
    max-width: 560px;
    margin: 0 auto;
    padding: 64px 0 96px;
}

.fr-app h1.fr-page-kicker { margin-bottom: 20px; }

.fr-app p.fr-app-lead {
    font-size: 19px;
    line-height: 1.5;
    color: var(--fr-muted);
    text-align: left;
    margin: 0 0 32px;
}

.fr-app p.fr-app-lead strong { color: var(--fr-text); font-weight: 500; }

.fr-app .fr-mm-tabs em {
    font-size: 12px;
    color: var(--fr-sig);
    margin-left: 6px;
}

.fr-app-panel { padding-top: 12px; }
.fr-app-panel[hidden] { display: none; }

.fr-app-steps { list-style: none; margin: 0; padding: 0; counter-reset: fr-step; }

.fr-app-steps li {
    counter-increment: fr-step;
    position: relative;
    padding: 14px 0 14px 40px;
    border-bottom: 1px solid var(--fr-line);
    font-size: 17px;
    line-height: 1.4;
    color: var(--fr-text);
}

/* The step number in the film voice, muted gold: a real sequence */
.fr-app-steps li::before {
    content: counter(fr-step);
    position: absolute;
    left: 0;
    top: 13px;
    font-family: var(--fr-font-film);
    font-size: 20px;
    color: var(--fr-sig);
}

.fr-app-steps li span { display: block; font-size: 14px; color: var(--fr-muted); margin-top: 4px; }
.fr-app-steps i.bi { font-size: 15px; margin-left: 2px; }

.fr-app-install {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px 16px;
    margin-top: 28px;
    font-size: 14px;
    color: var(--fr-muted);
}

.fr-app-install[hidden],
.fr-app p.fr-app-installed[hidden] { display: none; }

.fr-app p.fr-app-installed {
    font-size: 15px;
    color: var(--fr-text);
    text-align: left;
    margin: 28px 0 0;
    padding-left: 12px;
    border-left: 2px solid var(--fr-sig);
}

@media (max-width: 767.98px) {
    .fr-app { padding: 32px 8px 72px; }
    .fr-app p.fr-app-lead { font-size: 17px; }
    .fr-app .fr-mm-tabs { gap: 22px; }
}

/* --------------------------------------------------------------------------
   Accessibility preferences (motion.md)
   -------------------------------------------------------------------------- */
/* ===== Privacy: one column of plain text ===== */
.fr-app.fr-legal h2 {
    font-family: var(--fr-font-film);
    font-size: 23px;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--fr-text);
    text-align: left;
    margin: 40px 0 12px;
}

.fr-app.fr-legal p,
.fr-app.fr-legal li {
    font-size: 17px;
    line-height: 1.55;
    color: var(--fr-muted);
    text-align: left;
}

.fr-app.fr-legal p { margin: 0 0 12px; }
.fr-app.fr-legal ul { margin: 0; padding-left: 20px; }
.fr-app.fr-legal li { margin-bottom: 8px; }
.fr-app.fr-legal strong { color: var(--fr-text); font-weight: 500; }

/* ===== Home: visible keyword line and plain text rows (see DESIGN.md, SEO) ===== */
.fr-hero .fr-hero-kicker {
    font-family: var(--fr-font-ui);
    font-size: 12px;
    font-weight: 500;
    line-height: 1.4;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--fr-muted);
    text-align: left;
    margin: 0 0 16px;
}

.fr-about {
    max-width: 1200px;
    margin: 64px auto 0;
    border-top: 1px solid var(--fr-line);
}

.fr-about-row {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 48px;
    padding: 40px 0;
    border-bottom: 1px solid var(--fr-line);
}

.fr-about .fr-about-row h2 {
    font-family: var(--fr-font-film);
    font-size: 30px;
    font-weight: 600;
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: var(--fr-text);
    text-align: left;
    margin: 0;
}

.fr-about .fr-about-row p {
    font-family: var(--fr-font-ui);
    font-size: 17px;
    line-height: 1.55;
    color: var(--fr-muted);
    text-align: left;
    margin: 0;
}

.fr-about .fr-about-more {
    font-size: 15px;
    color: var(--fr-muted);
    text-align: left;
    margin: 24px 0 0;
}

/* FEATURE: FAQ page reuses the Home rows under a page title */
.fr-faq {
    max-width: 1200px;
    margin: 0 auto;
}

.fr-faq h1 {
    font-family: var(--fr-font-film);
    font-size: 44px;
    font-weight: 600;
    letter-spacing: -0.035em;
    color: var(--fr-text);
    text-align: left;
    margin: 40px 0 0;
}

.fr-faq .fr-about { margin-top: 40px; }

@media (max-width: 767px) {
    .fr-faq { margin-inline: 8px; }
    .fr-faq h1 { font-size: 30px; letter-spacing: -0.02em; margin-top: 24px; }
    .fr-faq .fr-about { margin: 32px 0 0; }
    .fr-about { margin-top: 48px; margin-inline: 8px; }
    .fr-about-row { grid-template-columns: 1fr; gap: 12px; padding: 32px 0; }
    .fr-about .fr-about-row h2 { font-size: 23px; }
}

@media (prefers-reduced-motion: reduce) {
    .fr-btn,
    .fr-link,
    .fr-nav-link,
    .fr-nav-toggle span,
    .fr-step { transition: none; }
    .fr-btn:active { transform: none; }
    .fr-more-menu { animation: none; }
    .fr-wall-poster img { transition: none; }
    .fr-wall-poster:hover img { transform: none; }
    .fr-log-poster img { transition: none; }
    .fr-log-poster:hover img { transform: none; }
    .fr-suggest-poster img,
    .fr-suggest-card,
    #suggestion-results-slot { transition: none; }
    .fr-suggest-poster:hover img { transform: none; }
}

@media (prefers-reduced-transparency: reduce) {
    .fr-header {
        background: var(--fr-bg);
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
    }
}
