:root {
  --fr-primary: #365d55;
  --fr-on-primary: #fff;
  --fr-primary-container: #d7e9e4;
  --fr-surface: #fffdf9;
  --fr-surface-variant: #f0f2ef;
  --fr-outline: #747875;
  --fr-text: #1a1c1b;
  --fr-muted: #5d625f;
  --fr-error: #ba1a1a;
  --fr-radius-sm: 10px;
  --fr-radius: 20px;
  --fr-radius-lg: 32px;
  --fr-shadow: 0 12px 34px rgba(20, 36, 31, .1);
  --fr-font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.fr-auth-shell, .fr-dashboard, .fr-obituary, .fr-archive { color: var(--fr-text); font-family: var(--fr-font); }
.fr-auth-shell { align-items: center; background: linear-gradient(145deg, #e3eee9, #fff8ed); display: flex; justify-content: center; min-height: 75vh; padding: 40px 20px; }
.fr-auth-card { background: var(--fr-surface); border-radius: var(--fr-radius-lg); box-shadow: var(--fr-shadow); max-width: 460px; padding: clamp(28px, 5vw, 56px); width: 100%; }
.fr-honeypot { height: 0; left: -10000px; overflow: hidden; position: absolute; width: 0; }
.fr-contact-form { background: #fff; border: 1px solid #e2e5e1; border-radius: var(--fr-radius); margin: 2rem 0; padding: clamp(24px, 5vw, 48px); }
.fr-auth-card h1, .fr-page-header h1, .fr-archive h1 { font-size: clamp(2rem, 4vw, 3.5rem); line-height: 1.05; margin: .25em 0; }
.fr-eyebrow { color: var(--fr-primary); font-size: .78rem; font-weight: 750; letter-spacing: .14em; text-transform: uppercase; }
.fr-form, .fr-editor { display: grid; gap: 18px; }
.fr-form label, .fr-editor label { display: grid; gap: 7px; }
.fr-form label > span, .fr-editor label > span { font-size: .9rem; font-weight: 650; }
.fr-form input, .fr-editor input, .fr-editor textarea, .fr-editor select, .fr-search input { background: #fff; border: 1px solid var(--fr-outline); border-radius: var(--fr-radius-sm); color: var(--fr-text); font: inherit; min-height: 48px; padding: 10px 13px; }
.fr-editor textarea { resize: vertical; }
.fr-check { align-items: center; display: flex !important; grid-template-columns: auto 1fr; }
.fr-check input { min-height: auto; width: 20px; }
.fr-button { align-items: center; border: 0; border-radius: 999px; cursor: pointer; display: inline-flex; font: 700 .92rem/1 var(--fr-font); justify-content: center; min-height: 46px; padding: 0 22px; text-decoration: none; }
.fr-button--primary { background: var(--fr-primary); color: var(--fr-on-primary); }
.fr-button--secondary { background: var(--fr-primary-container); color: #183b34; }
.fr-button--full { display: flex; margin-bottom: 10px; width: 100%; }
.fr-alert { border-radius: var(--fr-radius-sm); margin-bottom: 20px; padding: 14px 16px; }
.fr-alert--error { background: #ffdad6; color: #93000a; }
.fr-alert--success { background: #d7f8df; color: #0e4f24; }

.fr-dashboard { background: #f7f8f5; display: grid; grid-template-columns: 250px 1fr; min-height: 80vh; }
.fr-dashboard__nav { background: #17221f; color: #fff; display: flex; flex-direction: column; min-height: 80vh; padding: 28px 18px; }
.fr-dashboard__brand { color: #fff; font-size: 1.15rem; font-weight: 750; margin: 0 12px 28px; text-decoration: none; }
.fr-dashboard__nav nav { display: grid; gap: 5px; }
.fr-dashboard__nav nav a { border-radius: 999px; color: #dbe5e1; padding: 12px 15px; text-decoration: none; }
.fr-dashboard__nav nav a[aria-current="page"], .fr-dashboard__nav nav a:hover { background: #2d403a; color: #fff; }
.fr-dashboard__account { display: grid; gap: 5px; margin: auto 12px 0; }
.fr-dashboard__account a { color: #b8cec7; }
.fr-dashboard__content { min-width: 0; padding: clamp(24px, 4vw, 56px); }
.fr-page-header, .fr-section-heading { align-items: center; display: flex; gap: 20px; justify-content: space-between; }
.fr-page-header { margin-bottom: 28px; }
.fr-panel, .fr-stat-card { background: #fff; border: 1px solid #e2e5e1; border-radius: var(--fr-radius); box-shadow: 0 4px 14px rgba(20, 36, 31, .035); padding: clamp(20px, 3vw, 32px); }
.fr-panel + .fr-panel { margin-top: 20px; }
.fr-panel h2 { margin-top: 0; }
.fr-stat-grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); margin-bottom: 24px; }
.fr-stat-card { display: grid; gap: 8px; }
.fr-stat-card span { color: var(--fr-muted); }
.fr-stat-card strong { font-size: 2.5rem; }
.fr-table-wrap { overflow-x: auto; }
.fr-table { border-collapse: collapse; width: 100%; }
.fr-table th, .fr-table td { border-bottom: 1px solid #e5e7e4; padding: 14px 10px; text-align: left; }
.fr-table__actions { display: flex; gap: 12px; justify-content: flex-end; }
.fr-status { background: var(--fr-surface-variant); border-radius: 999px; display: inline-block; font-size: .78rem; padding: 5px 10px; }
.fr-status--publish { background: #d7f8df; color: #0e4f24; }
.fr-field-grid { display: grid; gap: 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fr-field-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fr-editor small { color: var(--fr-muted); }
.fr-action-setting, .fr-event-editor { border-top: 1px solid #e1e4e0; margin-top: 18px; padding-top: 18px; }
.fr-text-button { background: none; border: 0; color: var(--fr-error); cursor: pointer; text-decoration: underline; }
.fr-editor__actions { bottom: 18px; display: flex; gap: 10px; justify-content: flex-end; position: sticky; }

.fr-obituary-hero { background-position: center; background-size: cover; isolation: isolate; min-height: 500px; overflow: hidden; position: relative; }
.fr-obituary-hero__veil { background: linear-gradient(90deg, rgba(10, 24, 20, .88), rgba(10, 24, 20, .38)); inset: 0; position: absolute; z-index: -1; }
.fr-obituary-hero__content { align-items: end; color: #fff; display: grid; gap: clamp(28px, 6vw, 80px); grid-template-columns: minmax(180px, 280px) 1fr; margin: 0 auto; max-width: 1180px; min-height: 500px; padding: 70px 24px; }
.fr-obituary-hero h1 { color: #fff; font-family: Georgia, serif; font-size: clamp(3rem, 7vw, 6.8rem); font-weight: 500; letter-spacing: -.035em; line-height: .95; margin: .12em 0; max-width: 850px; }
.fr-obituary-hero .fr-eyebrow { color: #cce8df; }
.fr-life-dates { font-size: clamp(1rem, 2vw, 1.35rem); }
.fr-portrait { aspect-ratio: 4/5; background: #dfe7e3; border: 6px solid rgba(255,255,255,.9); border-radius: 140px 140px 24px 24px; box-shadow: var(--fr-shadow); overflow: hidden; }
.fr-portrait img, .fr-portrait svg { fill: #74847f; height: 100%; object-fit: cover; width: 100%; }
.fr-obituary-actions { align-items: center; background: #fff; border-bottom: 1px solid #e3e6e2; display: flex; gap: 8px; justify-content: center; padding: 14px 20px; position: sticky; top: 0; z-index: 10; }
.fr-obituary-actions a, .fr-obituary-actions button { background: transparent; border: 0; border-radius: 999px; color: var(--fr-primary); cursor: pointer; font: 700 .9rem var(--fr-font); padding: 10px 15px; text-decoration: none; }
.fr-obituary-layout { display: grid; gap: 60px; grid-template-columns: minmax(0, 2fr) minmax(220px, .7fr); margin: 0 auto; max-width: 1080px; padding: 80px 24px; }
.fr-obituary-copy h2, .fr-services h2 { font-family: Georgia, serif; font-size: clamp(2rem, 4vw, 3.4rem); font-weight: 500; }
.fr-prose { font-family: Georgia, serif; font-size: 1.13rem; line-height: 1.85; }
.fr-obituary-sidebar { align-self: start; position: sticky; top: 90px; }
.fr-services { background: #edf3f0; padding: 80px 24px; }
.fr-section-intro, .fr-service-grid { margin-left: auto; margin-right: auto; max-width: 1080px; }
.fr-service-grid { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.fr-service-card { background: #fff; border-radius: var(--fr-radius); padding: 28px; }
.fr-service-card__type { color: var(--fr-primary); font-size: .8rem; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.fr-service-card address { font-style: normal; margin: 10px 0; }
.fr-service-card__actions { display: flex; gap: 16px; margin-top: 18px; }

.fr-banner-1 { background-image: linear-gradient(135deg,#173d35,#7b9e91); }.fr-banner-2 { background-image: linear-gradient(135deg,#243752,#9aa9bd); }.fr-banner-3 { background-image: linear-gradient(135deg,#5b4438,#c1a388); }.fr-banner-4 { background-image: linear-gradient(135deg,#3d354d,#a99bbd); }.fr-banner-5 { background-image: linear-gradient(135deg,#33452d,#9aae83); }
.fr-banner-6 { background-image: linear-gradient(145deg,#1c4d58,#8dbbc3); }.fr-banner-7 { background-image: linear-gradient(145deg,#513b48,#c49aaa); }.fr-banner-8 { background-image: linear-gradient(145deg,#4e4a2f,#c3b978); }.fr-banner-9 { background-image: linear-gradient(145deg,#29413f,#86a8a4); }.fr-banner-10 { background-image: linear-gradient(145deg,#573b2d,#c39172); }
.fr-banner-11 { background-image: radial-gradient(circle at 80% 20%,#b7cfc7,#214940 60%); }.fr-banner-12 { background-image: radial-gradient(circle at 20% 80%,#b8c4d6,#2f405a 60%); }.fr-banner-13 { background-image: radial-gradient(circle at 70% 30%,#d8c6ae,#624d39 60%); }.fr-banner-14 { background-image: radial-gradient(circle at 25% 25%,#cabed5,#4b405b 60%); }.fr-banner-15 { background-image: radial-gradient(circle at 80% 80%,#c6d3b1,#405237 60%); }
.fr-banner-16 { background-image: linear-gradient(120deg,#183c42 0 48%,#436b6e 48% 52%,#9cc0bd 52%); }.fr-banner-17 { background-image: linear-gradient(120deg,#4a3340 0 48%,#7a5868 48% 52%,#c4a6b2 52%); }.fr-banner-18 { background-image: linear-gradient(120deg,#3e432d 0 48%,#747953 48% 52%,#bcc29a 52%); }.fr-banner-19 { background-image: linear-gradient(120deg,#303c52 0 48%,#67738a 48% 52%,#b7c1d0 52%); }.fr-banner-20 { background-image: linear-gradient(120deg,#4b382d 0 48%,#846554 48% 52%,#cdb5a5 52%); }

.fr-archive { margin: 0 auto; max-width: 1180px; padding: 70px 24px; }
.fr-archive__header { margin-bottom: 48px; max-width: 760px; }
.fr-search { display: flex; gap: 10px; margin-top: 25px; }
.fr-search input { flex: 1; }
.fr-obituary-grid { display: grid; gap: 24px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.fr-obituary-card { background: #fff; border: 1px solid #e0e4e0; border-radius: var(--fr-radius); box-shadow: 0 5px 16px rgba(20,36,31,.05); overflow: hidden; }
.fr-obituary-card__portrait { aspect-ratio: 4/3; background: #dde7e3; display: block; overflow: hidden; }
.fr-obituary-card__portrait img, .fr-obituary-card__portrait svg { fill: #788984; height: 100%; object-fit: cover; width: 100%; }
.fr-obituary-card__body { padding: 24px; }
.fr-obituary-card h2 { font-family: Georgia, serif; font-size: 1.65rem; margin: 0; }
.fr-obituary-card h2 a { color: var(--fr-text); text-decoration: none; }
.fr-text-link { color: var(--fr-primary); font-weight: 700; }
.fr-pagination { margin-top: 40px; }

@media (max-width: 760px) {
  .fr-dashboard { display: block; }
  .fr-dashboard__nav { min-height: auto; }
  .fr-dashboard__account { margin-top: 20px; }
  .fr-stat-grid, .fr-field-grid, .fr-field-grid--3, .fr-obituary-layout { grid-template-columns: 1fr; }
  .fr-obituary-hero__content { align-items: center; grid-template-columns: 120px 1fr; min-height: 420px; }
  .fr-obituary-hero h1 { font-size: clamp(2.3rem, 10vw, 4rem); }
  .fr-obituary-sidebar { position: static; }
  .fr-page-header { align-items: flex-start; flex-direction: column; }
}

@media print {
  .fr-obituary-actions, header, footer, .fr-obituary-sidebar { display: none !important; }
  .fr-obituary-hero { min-height: auto; }
  .fr-obituary-hero__content { color: #000; min-height: auto; padding: 20px; }
  .fr-obituary-hero h1 { color: #000; }
  .fr-obituary-layout { display: block; padding: 20px; }
}
