/* ============================================================================
   Guest Portal — digital guidebook + host console.
   Palette + typography aligned to the site brand (header-footer-banner.css :root):
   olive #313c2f text/headings, rust #ab3d1c accents, gold #a49f77 secondary,
   light/white backgrounds, site serif (kelvinch). Card-based structure retained.
   All legacy class names preserved — guest booking page inherits the styling.
   ============================================================================ */

:root {
    /* core brand — aligned to site tokens (header-footer-banner.css :root) */
    --gp-olive:      #313c2f;   /* --primary-color */
    --gp-olive-soft: #45513c;
    --gp-rust:       #ab3d1c;   /* --secondary-color */
    --gp-rust-deep:  #8a3217;
    --gp-ink:        #313c2f;
    --gp-muted:      #6b6f5d;

    /* backgrounds — site light neutrals (was desert cream/sand) */
    --gp-cream:      #F7F7F7;   /* --lt-bg-color */
    --gp-paper:      #ffffff;
    --gp-sand:       #efe9dd;   /* subtle warm-neutral */
    --gp-terracotta: #ab3d1c;
    --gp-peach:      #cbb88a;   /* light warm-gold (kin to --gp-gold #a49f77), legible on the dark olive hero — replaces off-brand peach */
    --gp-line:       #e4e1d6;
    --gp-line-soft:  #efece4;
    --gp-gold:       #a49f77;   /* --heading-color / --btn-color */

    /* type — match site (serif headings AND serif body) */
    --gp-display: var(--heading-font, Georgia, serif);
    --gp-body:    var(--primary-font, Georgia, serif);

    /* depth */
    --gp-shadow-sm: 0 1px 2px rgba(48,59,46,.05), 0 2px 8px rgba(48,59,46,.04);
    --gp-shadow-md: 0 4px 14px rgba(48,59,46,.07), 0 14px 40px rgba(48,59,46,.06);
    --gp-shadow-lg: 0 10px 30px rgba(48,59,46,.10), 0 30px 70px rgba(48,59,46,.10);

    --gp-radius:    16px;
    --gp-radius-sm: 11px;
}

/* ---- canvas + atmosphere ------------------------------------------------- */
body.gp-body {
    background:
        radial-gradient(1100px 520px at 82% -8%, rgba(171,61,28,.06), transparent 60%),
        radial-gradient(900px 480px at -10% 4%, rgba(49,60,47,.05), transparent 55%),
        linear-gradient(180deg, var(--gp-paper) 0%, var(--gp-cream) 100%);
    background-attachment: fixed;
    color: var(--gp-ink);
    font-family: var(--gp-body);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
/* fine grain — desert paper tooth */
body.gp-body::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    opacity: .035;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.gp-shell { position: relative; z-index: 1; max-width: 940px; margin: 0 auto; padding: 1.5rem 1.1rem 4rem; }

/* ---- typography ---------------------------------------------------------- */
.gp-shell h1, .gp-shell h2, .gp-hero h1 { font-family: var(--gp-display); font-optical-sizing: auto; }

.gp-eyebrow {
    font-family: var(--gp-body);
    font-weight: 800;
    font-size: .72rem;
    letter-spacing: .26em;
    text-transform: uppercase;
    color: var(--gp-terracotta);
    margin: 0 0 .55rem;
}

/* ---- hero (editorial masthead) ------------------------------------------- */
.gp-hero {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, #ffffff 0%, var(--gp-cream) 100%);
    color: var(--gp-olive);
    padding: 2rem 2rem 1.9rem;
    border: 1px solid var(--gp-line);
    border-radius: var(--gp-radius);
    margin-bottom: 1.9rem;
    box-shadow: var(--gp-shadow-sm);
    isolation: isolate;
}
.gp-hero::after {            /* slim gold accent rule (matches the site's .borders) */
    content: "";
    position: absolute;
    left: 2rem; bottom: 0; width: 64px; height: 3px;
    background: var(--gp-gold);
    border-radius: 2px;
    pointer-events: none;
}
.gp-hero .gp-eyebrow { color: var(--gp-gold); }
.gp-hero h1 {
    font-size: clamp(1.5rem, 3.6vw, 2.1rem);
    line-height: 1.1;
    font-weight: 600;
    letter-spacing: -.01em;
    margin: 0 0 .4rem;
    color: var(--gp-olive);
}
.gp-hero h1 em { font-style: italic; color: var(--gp-rust); font-weight: 500; }
.gp-hero p { margin: 0; opacity: 1; color: var(--gp-muted); font-size: .98rem; max-width: 52ch; }

/* ---- cards --------------------------------------------------------------- */
.gp-card {
    position: relative;
    background: var(--gp-paper);
    border: 1px solid var(--gp-line);
    border-radius: var(--gp-radius-sm);
    padding: 1.4rem 1.5rem;
    margin-bottom: 1.15rem;
    box-shadow: var(--gp-shadow-sm);
    transition: box-shadow .25s ease, transform .25s ease;
}
.gp-card-tight { padding: .9rem 1.1rem; }
.gp-card h2 {
    font-size: 1.32rem; color: var(--gp-olive); margin: 0 0 .9rem;
    font-weight: 600; letter-spacing: -.01em;
}
.gp-card h3 {
    font-family: var(--gp-body);
    font-size: .8rem; color: var(--gp-terracotta); margin: 0 0 .5rem;
    font-weight: 800; text-transform: uppercase; letter-spacing: .12em;
}

.gp-section-heading { font-family: var(--gp-display); color: var(--gp-olive); font-weight: 600; margin: 1.6rem 0 .8rem; font-size: 1.4rem; }

/* ---- buttons ------------------------------------------------------------- */
.gp-cta {
    display: inline-block;
    background: linear-gradient(135deg, var(--gp-rust) 0%, var(--gp-terracotta) 130%);
    color: #fff;
    border: none;
    padding: .72rem 1.5rem;
    border-radius: 9px;
    font-family: var(--gp-body);
    font-weight: 700;
    font-size: .92rem;
    letter-spacing: .01em;
    text-decoration: none;
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(169,61,28,.22);
    transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
}
.gp-cta:hover, .gp-cta:focus { color: #fff; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(169,61,28,.3); filter: saturate(1.06); }
.gp-cta:active { transform: translateY(0); }
.gp-cta-ghost {
    display: inline-block; background: transparent; color: var(--gp-olive);
    border: 1.5px solid var(--gp-olive); padding: .58rem 1.2rem; border-radius: 9px;
    font-weight: 600; text-decoration: none; transition: all .18s ease;
}
.gp-cta-ghost:hover { background: var(--gp-olive); color: #fff; }

/* ---- wifi block ---------------------------------------------------------- */
.gp-quick-wifi {
    background: linear-gradient(135deg, #ffffff 0%, var(--gp-cream) 100%);
    border: 1px solid var(--gp-line);
    border-left: 4px solid var(--gp-terracotta);
    border-radius: var(--gp-radius-sm);
    padding: 1.2rem 1.35rem;
}
.gp-quick-wifi .gp-wifi-label { font-size: .7rem; text-transform: uppercase; letter-spacing: .12em; color: var(--gp-muted); font-weight: 700; }
.gp-quick-wifi .gp-wifi-value { font-size: 1.4rem; font-weight: 600; color: var(--gp-olive); word-break: break-all; font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; }

.gp-copy-btn {
    background: #fff; border: 1px solid var(--gp-line); border-radius: 7px;
    padding: .3rem .6rem; font-size: .74rem; font-weight: 600; color: var(--gp-olive);
    cursor: pointer; transition: all .16s ease;
}
.gp-copy-btn:hover { background: var(--gp-olive); color: #fff; border-color: var(--gp-olive); }

/* ---- badges -------------------------------------------------------------- */
.gp-badge { display: inline-block; padding: .26rem .66rem; border-radius: 999px; font-size: .73rem; font-weight: 700; letter-spacing: .02em; }
.gp-badge-paid    { background: #e4efdc; color: #335c28; }
.gp-badge-partial { background: #fbeccb; color: #8a6411; }
.gp-badge-channel { background: var(--gp-sand); color: var(--gp-olive); margin-left: .35rem; }

/* ---- emergency list ------------------------------------------------------ */
.gp-emergency-list { list-style: none; padding: 0; margin: 0; }
.gp-emergency-list li { padding: .7rem 0; border-bottom: 1px solid var(--gp-line-soft); display: flex; justify-content: space-between; flex-wrap: wrap; gap: .5rem; }
.gp-emergency-list li:last-child { border-bottom: 0; }
.gp-emergency-list .gp-em-key { font-weight: 700; color: var(--gp-olive); }
.gp-emergency-list .gp-em-val { color: var(--gp-ink); }
.gp-emergency-list a { color: var(--gp-rust); text-decoration: none; }

/* ---- guidebook: editorial numbered accordion ----------------------------- */
.gp-amenity-accordion { --bs-accordion-border-color: transparent; }
.gp-amenity-accordion .accordion-item {
    border: 1px solid var(--gp-line);
    background: var(--gp-paper);
    margin-bottom: .7rem;
    border-radius: var(--gp-radius-sm) !important;
    overflow: hidden;
    box-shadow: var(--gp-shadow-sm);
}
.gp-amenity-accordion .accordion-button {
    background: var(--gp-paper);
    color: var(--gp-olive);
    font-family: var(--gp-display);
    font-size: 1.16rem;
    font-weight: 600;
    letter-spacing: -.01em;
    padding: 1.1rem 1.3rem;
}
.gp-amenity-accordion .accordion-button:not(.collapsed) {
    background: linear-gradient(135deg, #ffffff 0%, var(--gp-cream) 100%);
    color: var(--gp-rust);
    box-shadow: inset 0 -1px 0 var(--gp-line);
}
.gp-amenity-accordion .accordion-button::after {
    width: 1.05rem; height: 1.05rem; background-size: 1.05rem;
    /* rust chevron */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23ab3d1c' stroke-width='2'%3E%3Cpath d='M3 6l5 5 5-5'/%3E%3C/svg%3E");
}
.gp-amenity-accordion .accordion-button:focus { box-shadow: 0 0 0 .2rem rgba(171,61,28,.18); border-color: transparent; }
.gp-amenity-accordion .accordion-body { color: var(--gp-ink); line-height: 1.72; padding: .4rem 1.35rem 1.4rem; font-size: .98rem; }
.gp-amenity-accordion .accordion-body h4 { font-family: var(--gp-body); font-weight: 800; font-size: .82rem !important; text-transform: uppercase; letter-spacing: .1em; color: var(--gp-terracotta) !important; }
.gp-amenity-accordion .accordion-body ul { padding-left: 1.1rem; }
.gp-amenity-accordion .accordion-body li { margin-bottom: .3rem; }
.gp-amenity-accordion .accordion-body a { color: var(--gp-rust); }

/* ---- archived / fallback ------------------------------------------------- */
.gp-archived { text-align: center; padding: 3.5rem 1.5rem; background: var(--gp-paper); border: 1px solid var(--gp-line); border-radius: var(--gp-radius); color: var(--gp-muted); box-shadow: var(--gp-shadow-sm); }
.gp-archived h1 { font-family: var(--gp-display); color: var(--gp-olive); margin-bottom: .75rem; }

/* ---- media + stay grid --------------------------------------------------- */
.gp-property-img { width: 100%; max-height: 300px; object-fit: cover; border-radius: var(--gp-radius-sm); margin-bottom: .9rem; }
.gp-map-iframe { width: 100%; height: 250px; border: 0; border-radius: var(--gp-radius-sm); margin-top: .6rem; filter: saturate(.96); }

.gp-stay-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem 1.4rem; font-size: .97rem; }
.gp-stay-grid dt { color: var(--gp-muted); font-weight: 600; font-size: .8rem; text-transform: uppercase; letter-spacing: .06em; }
.gp-stay-grid dd { margin: 0 0 .4rem; color: var(--gp-ink); font-weight: 700; font-size: 1.05rem; }
@media (max-width: 540px) { .gp-stay-grid { grid-template-columns: 1fr; gap: .25rem; } .gp-stay-grid dt { margin-top: .5rem; } }

/* ---- forms --------------------------------------------------------------- */
.gp-form-input { width: 100%; padding: .72rem .95rem; border: 1px solid var(--gp-line); border-radius: 9px; font-size: 1rem; font-family: var(--gp-body); margin-bottom: .9rem; background: var(--gp-paper); }
.gp-form-input:focus { outline: none; border-color: var(--gp-terracotta); box-shadow: 0 0 0 .18rem rgba(171,61,28,.16); }
.gp-form-help { font-size: .86rem; color: var(--gp-muted); margin-bottom: .9rem; }
.gp-form-error { color: var(--gp-rust); font-size: .86rem; margin: -.5rem 0 .8rem; }

/* ---- footer strip -------------------------------------------------------- */
.gp-foot-strip { text-align: center; padding: 1.6rem 1rem .5rem; color: var(--gp-muted); font-size: .9rem; }
.gp-foot-strip a { color: var(--gp-rust); text-decoration: none; font-weight: 600; }
.gp-foot-strip a:hover { text-decoration: underline; }

/* ============================================================================
   ADMIN — all-homes console
   ============================================================================ */
.gp-home-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(265px, 1fr)); gap: 1.25rem; }

.gp-home-card {
    position: relative;
    display: flex; flex-direction: column;
    background: var(--gp-paper);
    border: 1px solid var(--gp-line);
    border-radius: var(--gp-radius);
    overflow: hidden;
    box-shadow: var(--gp-shadow-sm);
    transition: transform .28s cubic-bezier(.2,.7,.3,1), box-shadow .28s ease;
}
.gp-home-card:hover { transform: translateY(-5px); box-shadow: var(--gp-shadow-lg); }
.gp-home-media { display: block; position: relative; aspect-ratio: 16/10; overflow: hidden; background: var(--gp-sand); }
.gp-home-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .55s cubic-bezier(.2,.7,.3,1); }
.gp-home-card:hover .gp-home-media img { transform: scale(1.06); }
.gp-home-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 38%, rgba(28,33,26,.62) 100%); }
.gp-home-noimg { display: flex; align-items: center; justify-content: center; height: 100%; color: var(--gp-muted); font-family: var(--gp-display); font-size: 1.1rem; font-style: italic; }

.gp-count-pill {
    position: absolute; top: .8rem; left: .8rem; z-index: 2;
    display: inline-flex; align-items: center; gap: .4rem;
    background: rgba(255,255,255,.93); backdrop-filter: blur(4px);
    color: var(--gp-olive); font-weight: 800; font-size: .78rem;
    padding: .34rem .7rem; border-radius: 999px; box-shadow: 0 2px 8px rgba(0,0,0,.12);
}
.gp-count-pill i { color: var(--gp-terracotta); }
.gp-home-title {
    position: absolute; left: 1rem; right: 1rem; bottom: .85rem; z-index: 2;
    color: #fff; font-family: var(--gp-display); font-weight: 600; font-size: 1.18rem;
    line-height: 1.18; letter-spacing: -.01em; text-shadow: 0 1px 12px rgba(0,0,0,.35);
}
.gp-home-body { padding: .9rem 1rem 1.05rem; display: flex; flex-direction: column; gap: .65rem; margin-top: auto; }
.gp-home-meta { font-size: .82rem; color: var(--gp-muted); display: flex; align-items: center; gap: .4rem; }
.gp-home-meta .gp-pending { color: var(--gp-gold); font-weight: 700; }
.gp-home-actions { display: flex; gap: .55rem; }
.gp-home-actions .gp-cta, .gp-home-actions .gp-link-btn { flex: 1; text-align: center; }
.gp-link-btn {
    display: inline-block; padding: .62rem .8rem; border-radius: 9px;
    background: var(--gp-sand); color: var(--gp-olive); font-weight: 700; font-size: .88rem;
    text-decoration: none; border: 1px solid var(--gp-line); transition: all .16s ease;
}
.gp-link-btn:hover { background: var(--gp-olive); color: #fff; border-color: var(--gp-olive); }

/* ---- guidebook header ---------------------------------------------------- */
.gp-guide-head { margin: .25rem 0 1.6rem; }
.gp-guide-head h1 { font-family: var(--gp-display); font-size: clamp(2rem, 5vw, 2.85rem); font-weight: 600; color: var(--gp-olive); letter-spacing: -.015em; line-height: 1.04; margin: .1rem 0 0; }
.gp-guide-rule { height: 2px; width: 64px; background: linear-gradient(90deg, var(--gp-rust), var(--gp-terracotta)); border-radius: 2px; margin: 1rem 0 0; }
.gp-back { display: inline-flex; align-items: center; gap: .35rem; color: var(--gp-rust); text-decoration: none; font-weight: 700; font-size: .9rem; }
.gp-back:hover { color: var(--gp-rust-deep); }

/* numbered section badge on accordion buttons */
.gp-sec-num {
    display: inline-flex; align-items: center; justify-content: center;
    width: 1.85rem; height: 1.85rem; flex: 0 0 auto;
    border-radius: 50%; margin-right: .8rem;
    background: linear-gradient(135deg, var(--gp-rust), var(--gp-terracotta));
    color: #fff; font-family: var(--gp-body); font-weight: 800; font-size: .82rem;
    box-shadow: 0 2px 6px rgba(169,61,28,.25);
}
.gp-amenity-accordion .accordion-button.collapsed .gp-sec-num { background: var(--gp-sand); color: var(--gp-olive); box-shadow: none; }

/* ---- roster table -------------------------------------------------------- */
.gp-roster { width: 100%; border-collapse: separate; border-spacing: 0; }
.gp-roster thead th {
    font-family: var(--gp-body); font-size: .72rem; font-weight: 800; text-transform: uppercase;
    letter-spacing: .1em; color: var(--gp-muted); text-align: left;
    padding: .5rem .8rem; border-bottom: 2px solid var(--gp-line);
}
.gp-roster tbody td { padding: .85rem .8rem; border-bottom: 1px solid var(--gp-line-soft); font-size: .92rem; vertical-align: top; }
.gp-roster tbody tr { transition: background .14s ease; }
.gp-roster tbody tr:hover { background: var(--gp-cream); }
.gp-roster tbody tr:last-child td { border-bottom: 0; }
.gp-roster .gp-guest-name { font-family: var(--gp-display); font-size: 1.05rem; font-weight: 600; color: var(--gp-olive); }
.gp-roster a { color: var(--gp-rust); text-decoration: none; }
.gp-roster code { background: var(--gp-sand); color: var(--gp-ink); padding: .15rem .45rem; border-radius: 6px; font-size: .82rem; }

/* ---- entrance choreography ----------------------------------------------- */
@keyframes gpRise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: no-preference) {
    .gp-rise { opacity: 0; animation: gpRise .6s cubic-bezier(.2,.7,.3,1) forwards; }
    .gp-rise-1 { animation-delay: .05s; } .gp-rise-2 { animation-delay: .12s; }
    .gp-rise-3 { animation-delay: .19s; } .gp-rise-4 { animation-delay: .26s; }
    .gp-home-grid > * { opacity: 0; animation: gpRise .55s cubic-bezier(.2,.7,.3,1) forwards; }
    .gp-home-grid > *:nth-child(1){animation-delay:.06s} .gp-home-grid > *:nth-child(2){animation-delay:.12s}
    .gp-home-grid > *:nth-child(3){animation-delay:.18s} .gp-home-grid > *:nth-child(4){animation-delay:.24s}
    .gp-home-grid > *:nth-child(5){animation-delay:.30s} .gp-home-grid > *:nth-child(6){animation-delay:.36s}
    .gp-home-grid > *:nth-child(7){animation-delay:.42s} .gp-home-grid > *:nth-child(8){animation-delay:.48s}
}

/* ============================================================================
   GUIDEBOOK — Hostfully-style category nav + grouped card rows + map
   ============================================================================ */
body.gp-guidebook { background: var(--gp-cream); }
body.gp-guidebook::before { opacity: .025; }

/* cover hero */
.gp-gb-cover {
    position: relative; z-index: 1;
    min-height: 300px;
    background: linear-gradient(135deg, var(--gp-olive), #222a20);
    background-size: cover; background-position: center;
    display: flex; flex-direction: column; justify-content: flex-end;
    padding: 1.2rem clamp(1rem, 5vw, 3rem) 2.4rem;
    color: #fff;
}
.gp-gb-back {
    position: absolute; top: 1.1rem; left: clamp(1rem, 5vw, 3rem);
    display: inline-flex; align-items: center; gap: .4rem;
    background: rgba(20,16,10,.42); backdrop-filter: blur(6px);
    color: #fff; text-decoration: none; font-weight: 700; font-size: .85rem;
    padding: .45rem .85rem; border-radius: 999px; transition: background .16s ease;
}
.gp-gb-back:hover { background: rgba(20,16,10,.66); color: #fff; }
.gp-gb-cover-inner { max-width: 1060px; margin: 0 auto; width: 100%; }
.gp-gb-eyebrow { font-weight: 800; font-size: .72rem; letter-spacing: .26em; text-transform: uppercase; color: var(--gp-peach); margin: 0 0 .5rem; }
.gp-gb-cover h1 { color: #fff; font-family: var(--gp-display); font-weight: 600; font-size: clamp(2rem, 6vw, 3.3rem); line-height: 1.03; letter-spacing: -.015em; margin: 0; text-shadow: 0 2px 24px rgba(0,0,0,.55), 0 1px 3px rgba(0,0,0,.4); }
.gp-gb-addr { margin: .7rem 0 0; font-size: .96rem; opacity: .92; }
.gp-gb-addr i { color: var(--gp-peach); margin-right: .35rem; }
.gp-gb-pdf {
    display: inline-flex; align-items: center; gap: .5rem; margin-top: 1rem;
    background: rgba(255,255,255,.94); color: var(--gp-rust); font-weight: 800; font-size: .86rem;
    padding: .6rem 1.1rem; border-radius: 999px; text-decoration: none;
    box-shadow: 0 4px 14px rgba(0,0,0,.18); transition: transform .16s ease, background .16s ease;
}
.gp-gb-pdf:hover { transform: translateY(-2px); background: #fff; color: var(--gp-rust-deep); }

/* sticky category nav */
.gp-gb-nav {
    position: sticky; top: 0; z-index: 30;
    background: rgba(255,255,255,.92); backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--gp-line);
    box-shadow: 0 2px 14px rgba(49,60,47,.05);
}
.gp-gb-nav-track {
    max-width: 1060px; margin: 0 auto;
    display: flex; gap: .35rem; overflow-x: auto; scrollbar-width: none;
    padding: .7rem clamp(.5rem, 4vw, 1.5rem);
}
.gp-gb-nav-track::-webkit-scrollbar { display: none; }
.gp-gb-cat {
    flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: .4rem;
    background: none; border: 0; cursor: pointer; padding: .35rem .55rem; border-radius: 12px;
    width: 84px; transition: background .16s ease;
}
.gp-gb-cat:hover { background: rgba(171,61,28,.07); }
.gp-gb-cat-ico {
    display: grid; place-items: center; width: 50px; height: 50px; border-radius: 15px;
    background: var(--cat, var(--gp-rust)); color: #fff; font-size: 1.2rem;
    box-shadow: 0 4px 12px color-mix(in srgb, var(--cat, var(--gp-rust)) 35%, transparent);
    transition: transform .18s cubic-bezier(.2,.7,.3,1), filter .18s ease;
    filter: saturate(.55) brightness(1.04); opacity: .82;
}
.gp-gb-cat-label { font-size: .72rem; font-weight: 700; color: var(--gp-muted); letter-spacing: .01em; text-align: center; line-height: 1.1; }
.gp-gb-cat.active .gp-gb-cat-ico { filter: none; opacity: 1; transform: translateY(-2px) scale(1.04); }
.gp-gb-cat.active .gp-gb-cat-label { color: var(--gp-ink); }
.gp-gb-cat.active { background: color-mix(in srgb, var(--cat) 12%, transparent); }

/* panels */
.gp-gb-main { max-width: 1060px; margin: 0 auto; padding: 1.6rem clamp(1rem, 4vw, 1.5rem) 3.5rem; position: relative; z-index: 1; }
.gp-gb-panel { display: none; }
.gp-gb-panel.active { display: grid; grid-template-columns: 1fr; gap: 1.15rem; animation: gpRise .45s cubic-bezier(.2,.7,.3,1); }
.gp-gb-panel.has-map.active { }

/* card */
.gp-gb-card {
    background: var(--gp-paper); border: 1px solid var(--gp-line); border-radius: 18px;
    padding: 1.4rem 1.5rem; box-shadow: var(--gp-shadow-sm);
}
.gp-gb-card-title {
    font-family: var(--gp-display); font-weight: 600; font-size: 1.4rem; color: var(--gp-olive);
    letter-spacing: -.01em; margin: 0 0 1rem; padding-bottom: .7rem;
    border-bottom: 1px solid var(--gp-line-soft);
}
.gp-gb-rows { display: flex; flex-direction: column; }
.gp-gb-row { display: flex; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--gp-line-soft); }
.gp-gb-row:first-child { padding-top: 0; }
.gp-gb-row:last-child { border-bottom: 0; padding-bottom: 0; }
.gp-gb-row-ico {
    flex: 0 0 auto; display: grid; place-items: center;
    width: 40px; height: 40px; border-radius: 11px;
    background: color-mix(in srgb, var(--cat, var(--gp-rust)) 14%, #fff);
    color: var(--cat, var(--gp-rust)); font-size: 1.02rem;
}
.gp-gb-row-main { min-width: 0; flex: 1; }
.gp-gb-row-title { font-weight: 800; color: var(--gp-olive); margin: .25rem 0 .3rem; font-size: 1.02rem; }
.gp-gb-row-body { color: var(--gp-ink); line-height: 1.66; font-size: .95rem; }
.gp-gb-row-body p { margin: 0 0 .5rem; }
.gp-gb-row-body p:last-child { margin-bottom: 0; }
.gp-gb-row-body ul { padding-left: 1.15rem; margin: .3rem 0; }
.gp-gb-row-body li { margin-bottom: .3rem; }
.gp-gb-row-body a { color: var(--gp-rust); text-decoration: none; font-weight: 600; }
.gp-gb-row-body a:hover { text-decoration: underline; }
.gp-rw-mini { color: var(--gp-terracotta); width: 1.1rem; margin-right: .35rem; }

/* inline wifi + mini list */
.gp-wifi-inline { display: flex; flex-wrap: wrap; gap: .6rem 2rem; }
.gp-wifi-inline > div { display: flex; flex-direction: column; }
.gp-wifi-k { font-size: .68rem; text-transform: uppercase; letter-spacing: .1em; color: var(--gp-muted); font-weight: 800; }
.gp-wifi-v { font-family: ui-monospace, Menlo, monospace; font-size: 1.15rem; font-weight: 600; color: var(--gp-olive); word-break: break-all; }
.gp-mini-list { list-style: none; padding: 0; margin: 0; }
.gp-mini-list li { display: flex; justify-content: space-between; gap: 1rem; padding: .4rem 0; border-bottom: 1px dashed var(--gp-line-soft); }
.gp-mini-list li:last-child { border-bottom: 0; }
.gp-mini-list li span:first-child { color: var(--gp-muted); font-weight: 600; }
.gp-mini-list li span:last-child { font-weight: 700; color: var(--gp-olive); text-align: right; }

/* map */
.gp-gb-map { width: 100%; height: 300px; border: 0; border-radius: 12px; margin-top: 1.1rem; filter: saturate(.95); }

/* help strip */
.gp-gb-help-strip {
    margin-top: 1.6rem; padding: 1.4rem 1.5rem; border-radius: 18px;
    background: linear-gradient(135deg, #ffffff, var(--gp-cream)); border: 1px solid var(--gp-line);
    display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap;
}
.gp-gb-help-strip span { font-family: var(--gp-display); font-size: 1.18rem; color: var(--gp-olive); }

/* place cards (Explore / Dining) — Hostfully-style grid */
.gp-place-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1rem; }
.gp-place-card {
    display: flex; flex-direction: column;
    background: var(--gp-paper); border: 1px solid var(--gp-line); border-radius: 14px;
    overflow: hidden; box-shadow: var(--gp-shadow-sm);
    transition: transform .22s cubic-bezier(.2,.7,.3,1), box-shadow .22s ease;
}
.gp-place-card:hover { transform: translateY(-3px); box-shadow: var(--gp-shadow-md); }
.gp-place-head {
    display: flex; align-items: flex-end; gap: .55rem; min-height: 78px;
    padding: .85rem .95rem;
    background:
        radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--cat, var(--gp-rust)) 55%, transparent), transparent 70%),
        linear-gradient(135deg, var(--cat, var(--gp-rust)), color-mix(in srgb, var(--cat, var(--gp-rust)) 60%, #1c211a));
    color: #fff;
}
.gp-place-head i { font-size: .95rem; opacity: .85; margin-bottom: .15rem; }
.gp-place-name { font-family: var(--gp-display); font-weight: 600; font-size: 1.12rem; line-height: 1.12; letter-spacing: -.01em; text-shadow: 0 1px 8px rgba(0,0,0,.28); }
.gp-place-desc { margin: 0; padding: .85rem .95rem; color: var(--gp-ink); font-size: .9rem; line-height: 1.6; flex: 1; }
.gp-place-dir {
    display: inline-flex; align-items: center; gap: .4rem;
    margin: 0 .95rem .95rem; padding: .42rem .7rem; align-self: flex-start;
    background: color-mix(in srgb, var(--cat, var(--gp-rust)) 12%, #fff);
    color: var(--cat, var(--gp-rust)); border-radius: 8px;
    font-size: .8rem; font-weight: 700; text-decoration: none; transition: all .16s ease;
}
.gp-place-dir:hover { background: var(--cat, var(--gp-rust)); color: #fff; }

/* two-column on wide screens when a map is present */
@media (min-width: 900px) {
    .gp-gb-panel.active { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 540px) {
    .gp-gb-cover { min-height: 300px; padding-bottom: 1.9rem; }
    .gp-gb-eyebrow { margin-bottom: .7rem; font-size: .66rem; letter-spacing: .22em; }
    .gp-gb-cover h1 { font-size: 1.78rem; line-height: 1.12; }
    .gp-gb-addr { font-size: .88rem; }
    .gp-gb-cat { width: 74px; }
    .gp-gb-cat-ico { width: 44px; height: 44px; font-size: 1.05rem; }
    .gp-gb-card { padding: 1.15rem 1.15rem; }
}
