/* ============================================================
   Gloria Maris — modern minimalist theme
   Palette: warm ivory, deep ink, brushed gold, lacquer red
   ============================================================ */

:root {
    --gm-ink: #17130f;
    --gm-ink-soft: #2a231c;
    --gm-muted: #7c7267;
    --gm-line: #e8e1d6;
    --gm-cream: #fbf8f3;
    --gm-sand: #f3ede3;
    --gm-gold: #c19a4b;
    --gm-gold-deep: #a67f33;
    --gm-gold-soft: #efe3cb;
    --gm-red: #7b2226;

    --gm-font-display: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
    --gm-font-body: 'Jost', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

    --gm-radius: 4px;
    --gm-radius-lg: 8px;
    --gm-shadow: 0 18px 45px -28px rgba(23, 19, 15, .45);
    --gm-header-h: 84px;
}

/* ---------- Base ---------- */
html { scroll-behavior: smooth; }

body.gm-body {
    font-family: var(--gm-font-body);
    font-weight: 300;
    color: var(--gm-ink);
    background-color: var(--gm-cream);
    letter-spacing: .01em;
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6, .gm-display {
    font-family: var(--gm-font-display);
    font-weight: 600;
    letter-spacing: .01em;
    color: var(--gm-ink);
}

p { line-height: 1.85; color: var(--gm-ink-soft); }

a { text-decoration: none; color: var(--gm-gold-deep); transition: color .25s ease; }
a:hover { color: var(--gm-ink); }

img { max-width: 100%; height: auto; }

.skip-link {
    position: absolute; top: -100px; left: 1rem; z-index: 1080;
    background: var(--gm-ink); color: #fff; padding: .6rem 1rem; border-radius: var(--gm-radius);
}
.skip-link:focus { top: 1rem; color: #fff; }

::selection { background: var(--gm-gold-soft); color: var(--gm-ink); }

/* ---------- Typography blocks ---------- */
.gm-eyebrow {
    display: inline-block;
    font-size: .72rem;
    letter-spacing: .34em;
    text-transform: uppercase;
    color: var(--gm-gold-deep);
    font-weight: 500;
    margin-bottom: 1rem;
}

.gm-section { padding: clamp(4rem, 9vw, 7.5rem) 0; }
.gm-section--sand { background: var(--gm-sand); }
.gm-section--ink { background: var(--gm-ink); }
.gm-section--ink h1, .gm-section--ink h2, .gm-section--ink h3 { color: #fff; }
.gm-section--ink p { color: rgba(255, 255, 255, .72); }

.gm-section__title {
    font-size: clamp(1.9rem, 3.6vw, 3rem);
    line-height: 1.18;
    margin-bottom: 1rem;
}

.gm-section__lead { max-width: 46rem; color: var(--gm-muted); font-size: 1.02rem; }
.gm-section--ink .gm-section__lead { color: rgba(255, 255, 255, .7); }

.gm-rule {
    width: 64px; height: 1px; background: var(--gm-gold);
    border: 0; opacity: 1; margin: 1.4rem 0;
}
.gm-rule--center { margin-left: auto; margin-right: auto; }

/* ---------- Buttons ---------- */
.gm-btn {
    font-family: var(--gm-font-body);
    font-size: .78rem;
    font-weight: 500;
    letter-spacing: .18em;
    text-transform: uppercase;
    padding: .85rem 1.9rem;
    border-radius: 999px;
    border: 1px solid transparent;
    transition: all .3s cubic-bezier(.22, .61, .36, 1);
}

.gm-btn--gold { background: var(--gm-gold); color: #fff; }
.gm-btn--gold:hover { background: var(--gm-ink); color: #fff; transform: translateY(-2px); }

.gm-btn--outline { background: transparent; border-color: var(--gm-ink); color: var(--gm-ink); }
.gm-btn--outline:hover { background: var(--gm-ink); color: #fff; transform: translateY(-2px); }

.gm-btn--ghost { background: transparent; border-color: rgba(255, 255, 255, .5); color: #fff; }
.gm-btn--ghost:hover { background: #fff; color: var(--gm-ink); border-color: #fff; }

.gm-btn--link {
    padding: 0; border-radius: 0; color: var(--gm-ink);
    border-bottom: 1px solid var(--gm-gold); letter-spacing: .16em;
}
.gm-btn--link:hover { color: var(--gm-gold-deep); }

/* ---------- Header / navbar ---------- */
.gm-header {
    position: sticky; top: 0; z-index: 1030;
    background: rgba(251, 248, 243, .92);
    backdrop-filter: saturate(180%) blur(14px);
    border-bottom: 1px solid var(--gm-line);
    transition: box-shadow .3s ease, background .3s ease;
}
.gm-header.is-stuck { box-shadow: 0 10px 30px -24px rgba(23, 19, 15, .55); }

.gm-navbar { min-height: var(--gm-header-h); padding: .55rem 0; }

.gm-brand { display: flex; align-items: center; gap: .8rem; padding: 0; }
.gm-brand__logo { height: 54px; width: auto; }
.gm-brand__text { display: flex; flex-direction: column; line-height: 1.05; }
.gm-brand__name {
    font-family: var(--gm-font-display);
    font-size: 1.42rem; font-weight: 700; color: var(--gm-ink); letter-spacing: .06em;
}
.gm-brand__tag { font-size: .6rem; letter-spacing: .34em; text-transform: uppercase; color: var(--gm-gold-deep); }

.gm-nav .nav-link {
    position: relative;
    font-size: .8rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--gm-ink-soft);
    font-weight: 400;
    padding: .6rem .95rem;
}
.gm-nav .nav-link::after {
    content: ''; position: absolute; left: .95rem; right: .95rem; bottom: .3rem;
    height: 1px; background: var(--gm-gold); transform: scaleX(0); transform-origin: left;
    transition: transform .32s ease;
}
.gm-nav .nav-link:hover, .gm-nav .nav-link.active { color: var(--gm-ink); }
.gm-nav .nav-link:hover::after, .gm-nav .nav-link.active::after { transform: scaleX(1); }

.gm-toggler { border: 0; padding: .4rem; box-shadow: none !important; display: flex; flex-direction: column; gap: 5px; }
.gm-toggler__bar { display: block; width: 24px; height: 1.5px; background: var(--gm-ink); transition: .3s; }

@media (max-width: 991.98px) {
    .gm-nav { padding: 1rem 0 1.5rem; }
    .gm-nav .nav-link { padding: .7rem .2rem; border-bottom: 1px solid var(--gm-line); }
    .gm-nav .nav-link::after { display: none; }
    .gm-brand__logo { height: 46px; }
}

/* ---------- Hero ---------- */
.gm-hero {
    position: relative;
    min-height: clamp(560px, 88vh, 860px);
    display: flex; align-items: center;
    color: #fff;
    background-size: cover; background-position: center;
    overflow: hidden;
}
.gm-hero::before {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(105deg, rgba(12, 10, 8, .82) 0%, rgba(12, 10, 8, .5) 48%, rgba(12, 10, 8, .28) 100%);
}
.gm-hero__inner { position: relative; z-index: 2; max-width: 40rem; }
.gm-hero__title {
    font-size: clamp(2.4rem, 5.6vw, 4.4rem);
    line-height: 1.06; color: #fff; margin-bottom: 1.1rem;
}
.gm-hero__text { color: rgba(255, 255, 255, .8); font-size: 1.06rem; max-width: 32rem; }
.gm-hero__actions { display: flex; flex-wrap: wrap; gap: .85rem; margin-top: 2rem; }
.gm-hero__scroll {
    position: absolute; left: 50%; bottom: 2rem; transform: translateX(-50%);
    color: rgba(255, 255, 255, .65); font-size: .68rem; letter-spacing: .3em; text-transform: uppercase;
    z-index: 2;
}

/* ---------- Page banner (inner pages) ---------- */
.gm-banner {
    position: relative; padding: clamp(4.5rem, 10vw, 8rem) 0 clamp(3rem, 6vw, 4.5rem);
    background: var(--gm-ink); color: #fff; text-align: center; overflow: hidden;
}
.gm-banner::after {
    content: ''; position: absolute; inset: 0;
    background: radial-gradient(circle at 50% 0%, rgba(193, 154, 75, .22), transparent 62%);
}
.gm-banner__inner { position: relative; z-index: 1; }
.gm-banner h1 { color: #fff; font-size: clamp(2.1rem, 4.4vw, 3.4rem); margin-bottom: .6rem; }
.gm-banner p { color: rgba(255, 255, 255, .68); margin: 0 auto; max-width: 40rem; }
.gm-breadcrumb { margin-top: 1.4rem; font-size: .72rem; letter-spacing: .22em; text-transform: uppercase; }
.gm-breadcrumb a { color: rgba(255, 255, 255, .6); }
.gm-breadcrumb a:hover { color: var(--gm-gold); }
.gm-breadcrumb span { color: rgba(255, 255, 255, .35); margin: 0 .55rem; }

/* ---------- Cards ---------- */
.gm-card {
    background: #fff; border: 1px solid var(--gm-line); border-radius: var(--gm-radius-lg);
    overflow: hidden; height: 100%;
    transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}
.gm-card:hover { transform: translateY(-6px); box-shadow: var(--gm-shadow); border-color: var(--gm-gold-soft); }
.gm-card__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--gm-sand); }
.gm-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.gm-card:hover .gm-card__media img { transform: scale(1.06); }
.gm-card__body { padding: 1.6rem 1.5rem 1.7rem; }
.gm-card__title { font-size: 1.28rem; margin-bottom: .45rem; }
.gm-card__text { font-size: .92rem; color: var(--gm-muted); margin-bottom: 0; }
.gm-card__price { font-family: var(--gm-font-display); font-size: 1.2rem; font-weight: 700; color: var(--gm-gold-deep); }
.gm-card__tag {
    position: absolute; top: .9rem; left: .9rem;
    background: rgba(251, 248, 243, .95); color: var(--gm-ink);
    font-size: .6rem; letter-spacing: .2em; text-transform: uppercase;
    padding: .35rem .7rem; border-radius: 999px;
}

/* ---------- Menu list ---------- */
.gm-menu-item {
    display: flex; gap: 1.25rem; align-items: flex-start;
    padding: 1.4rem 0; border-bottom: 1px dashed var(--gm-line);
}
.gm-menu-item:last-child { border-bottom: 0; }
.gm-menu-item__thumb {
    flex: 0 0 92px; width: 92px; height: 92px; border-radius: var(--gm-radius-lg);
    object-fit: cover; background: var(--gm-sand);
}
.gm-menu-item__name {
    display: flex; align-items: baseline; gap: .75rem; justify-content: space-between;
    font-family: var(--gm-font-display); font-size: 1.22rem; font-weight: 600; margin-bottom: .3rem;
}
.gm-menu-item__dots { flex: 1; border-bottom: 1px dotted var(--gm-line); transform: translateY(-4px); }
.gm-menu-item__price { font-family: var(--gm-font-display); font-weight: 700; color: var(--gm-gold-deep); white-space: nowrap; }
.gm-menu-item__desc { font-size: .9rem; color: var(--gm-muted); margin: 0; }

.gm-filters { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; }
.gm-filter {
    background: transparent; border: 1px solid var(--gm-line); color: var(--gm-ink-soft);
    font-size: .72rem; letter-spacing: .18em; text-transform: uppercase;
    padding: .6rem 1.25rem; border-radius: 999px; transition: .28s;
}
.gm-filter:hover { border-color: var(--gm-gold); color: var(--gm-ink); }
.gm-filter.is-active { background: var(--gm-ink); border-color: var(--gm-ink); color: #fff; }

/* ---------- Feature / info blocks ---------- */
.gm-feature { text-align: left; padding: 1rem 0; }
.gm-feature__icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 54px; height: 54px; border-radius: 50%;
    background: var(--gm-gold-soft); color: var(--gm-gold-deep); font-size: 1.35rem; margin-bottom: 1.1rem;
}
.gm-feature h5 { font-size: 1.15rem; margin-bottom: .5rem; }
.gm-feature p { font-size: .92rem; color: var(--gm-muted); margin: 0; }

.gm-split__media { border-radius: var(--gm-radius-lg); overflow: hidden; box-shadow: var(--gm-shadow); }
.gm-split__media img { width: 100%; display: block; }

.gm-quote {
    font-family: var(--gm-font-display); font-size: clamp(1.3rem, 2.4vw, 1.9rem);
    font-style: italic; line-height: 1.6; color: var(--gm-ink);
}

.gm-stat { text-align: center; }
.gm-stat__num { font-family: var(--gm-font-display); font-size: clamp(2rem, 4vw, 2.9rem); font-weight: 700; color: var(--gm-gold); line-height: 1; }
.gm-stat__label { font-size: .7rem; letter-spacing: .24em; text-transform: uppercase; color: var(--gm-muted); margin-top: .6rem; }

/* ---------- Location list ---------- */
.gm-location {
    display: grid; grid-template-columns: 132px 1fr auto; gap: 1.4rem; align-items: center;
    background: #fff; border: 1px solid var(--gm-line); border-radius: var(--gm-radius-lg);
    padding: 1.35rem; transition: .32s;
}
.gm-location:hover { border-color: var(--gm-gold-soft); box-shadow: var(--gm-shadow); transform: translateY(-3px); }
.gm-location__media { border-radius: var(--gm-radius); overflow: hidden; aspect-ratio: 4/3; background: var(--gm-sand); }
.gm-location__media img { width: 100%; height: 100%; object-fit: cover; }
.gm-location__name { font-size: 1.24rem; margin-bottom: .35rem; }
.gm-location__meta { font-size: .88rem; color: var(--gm-muted); margin: 0; display: flex; gap: .5rem; align-items: flex-start; }
.gm-location__meta i { color: var(--gm-gold); margin-top: .22rem; }
@media (max-width: 767.98px) {
    .gm-location { grid-template-columns: 1fr; }
    .gm-location__media { aspect-ratio: 16/9; }
}

/* ---------- Forms ---------- */
.gm-form .form-control, .gm-form .form-select, .gm-newsletter .form-control {
    border-radius: var(--gm-radius); border: 1px solid var(--gm-line);
    background: #fff; padding: .8rem 1rem; font-size: .94rem; color: var(--gm-ink); font-weight: 300;
}
.gm-form .form-control:focus, .gm-form .form-select:focus, .gm-newsletter .form-control:focus {
    border-color: var(--gm-gold); box-shadow: 0 0 0 .2rem rgba(193, 154, 75, .16);
}
.gm-form .form-label, .gm-form label {
    font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; color: var(--gm-muted); margin-bottom: .45rem;
}
.gm-newsletter .input-group .form-control { border-right: 0; }
.gm-newsletter .btn { border-radius: 0 var(--gm-radius) var(--gm-radius) 0; padding: .8rem 1.1rem; }

/* ---------- Footer ---------- */
.gm-footer { background: var(--gm-ink); color: rgba(255, 255, 255, .68); padding: clamp(3.5rem, 7vw, 5.5rem) 0 1.5rem; }
.gm-footer a { color: rgba(255, 255, 255, .68); }
.gm-footer a:hover { color: var(--gm-gold); }
.gm-footer__brand { display: inline-flex; align-items: center; gap: .75rem; margin-bottom: 1.1rem; }
.gm-footer__logo { height: 56px; width: auto; }
.gm-footer__brand span { font-family: var(--gm-font-display); font-size: 1.5rem; color: #fff; letter-spacing: .05em; }
.gm-footer__text { font-size: .9rem; color: rgba(255, 255, 255, .6); max-width: 24rem; }
.gm-footer__title {
    color: #fff; font-family: var(--gm-font-body); font-size: .74rem; font-weight: 500;
    letter-spacing: .24em; text-transform: uppercase; margin-bottom: 1.15rem;
}
.gm-footer__list { list-style: none; margin: 0; padding: 0; }
.gm-footer__list li { margin-bottom: .6rem; font-size: .9rem; }
.gm-footer__list--plain li { display: flex; gap: .6rem; align-items: flex-start; color: rgba(255, 255, 255, .6); }
.gm-footer__list--plain i { color: var(--gm-gold); margin-top: .2rem; }

.gm-social { margin-top: 1.6rem; }
.gm-social__label {
    display: block; font-size: .68rem; letter-spacing: .26em; text-transform: uppercase;
    color: rgba(255, 255, 255, .45); margin-bottom: .7rem;
}
.gm-social__links { display: flex; gap: .6rem; }
.gm-social__link {
    display: inline-flex; align-items: center; justify-content: center;
    width: 42px; height: 42px; border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, .18); color: rgba(255, 255, 255, .8); font-size: 1.05rem;
    transition: .3s;
}
.gm-social__link:hover { background: var(--gm-gold); border-color: var(--gm-gold); color: #fff; transform: translateY(-3px); }

.gm-footer__bottom {
    display: flex; flex-wrap: wrap; gap: .75rem; justify-content: space-between; align-items: center;
    border-top: 1px solid rgba(255, 255, 255, .1); margin-top: 3rem; padding-top: 1.4rem;
    font-size: .8rem; color: rgba(255, 255, 255, .45);
}
.gm-footer__bottom-links { display: flex; gap: .6rem; align-items: center; }

/* ---------- Back to top ---------- */
.gm-backtop {
    position: fixed; right: 1.4rem; bottom: 1.4rem; z-index: 1040;
    width: 44px; height: 44px; border-radius: 50%; border: 0;
    background: var(--gm-ink); color: #fff; font-size: 1.05rem;
    opacity: 0; visibility: hidden; transform: translateY(12px); transition: .32s;
}
.gm-backtop.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.gm-backtop:hover { background: var(--gm-gold); }

/* ---------- Reveal on scroll ---------- */
.gm-reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.gm-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
    .gm-reveal { opacity: 1; transform: none; transition: none; }
    html { scroll-behavior: auto; }
}

/* ---------- Utilities ---------- */
.gm-text-gold { color: var(--gm-gold) !important; }
.gm-text-muted { color: var(--gm-muted) !important; }
.gm-bg-sand { background: var(--gm-sand); }
.gm-divider { height: 1px; background: var(--gm-line); border: 0; margin: 0; }
.gm-object-cover { width: 100%; height: 100%; object-fit: cover; }
.gm-article { font-size: 1.02rem; }
.gm-article p { margin-bottom: 1.2rem; }
.gm-empty { padding: 4rem 1rem; text-align: center; color: var(--gm-muted); }
