/* Nokwal RE - shared design tokens (1.34.0). Loaded before every plugin stylesheet
   (handle gn-proptx-tokens) so the home page, listing pages, blog, account pages, menu bar,
   footer and site blocks all draw from one palette, one type pairing and one motion system.
   The per-file variables (--gn-*, --gnh-*, --gnb-*, --gna-*) are aliases of these.

   Look: "editorial" - warm paper whites, espresso text, a display serif for large headings
   (Instrument Serif) over a clean geometric sans (Plus Jakarta Sans), both self-hosted under
   the SIL Open Font License (assets/fonts/OFL-*.txt). */

@font-face {
	font-family: "Plus Jakarta Sans Variable";
	font-style: normal;
	font-display: swap;
	font-weight: 200 800;
	src: url("fonts/plus-jakarta-sans-latin-wght.woff2") format("woff2-variations"), url("fonts/plus-jakarta-sans-latin-wght.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Instrument Serif";
	font-style: normal;
	font-display: swap;
	font-weight: 400;
	src: url("fonts/instrument-serif-latin-400.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Instrument Serif";
	font-style: italic;
	font-display: swap;
	font-weight: 400;
	src: url("fonts/instrument-serif-latin-400-italic.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
	/* Type */
	--gnt-font: "Plus Jakarta Sans Variable", "Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
	--gnt-font-serif: "Instrument Serif", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;

	/* Colour: warm paper and espresso ink. The accent comes from Preferences → Agent & site → Accent colour. */
	--gnt-bg: #fdfcf9;
	--gnt-bg-alt: #f5f2ec;
	--gnt-card: #ffffff;
	--gnt-fill: #ece7de;          /* segmented-control tracks, pressed fills */
	--gnt-fill-hover: #efebe3;
	--gnt-label: #1c1a17;
	--gnt-label-2: #6b665d;
	--gnt-label-3: #8b857a;
	--gnt-sep: rgba(60, 45, 20, .1);
	--gnt-line: #ddd6ca;
	--gnt-tint: var(--gnh-tint, #0071e3);
	--gnt-link: var(--gnh-link, #0066cc);
	--gnt-heart: #ff375f;

	/* Shape */
	--gnt-r-tile: 28px;
	--gnt-r-md: 18px;
	--gnt-r-sm: 12px;
	/* Double bezel: the card sits in a machined tray. Box-shadow spread follows the card's radius
	   (radius + spread), so the tray's corners are always concentric with the card's. */
	--gnt-bezel-shell: rgba(60, 45, 20, .035);
	--gnt-bezel-ring: rgba(60, 45, 20, .07);
	--gnt-bezel: 0 0 0 6px var(--gnt-bezel-shell), 0 0 0 7px var(--gnt-bezel-ring);
	--gnt-highlight: inset 0 1px 0 rgba(255, 255, 255, .8);
	--gnt-ambient: 0 24px 48px -28px rgba(60, 45, 20, .18);
	--gnt-ambient-lift: 0 34px 60px -30px rgba(60, 45, 20, .28);
	/* Trailing arrow for primary buttons ("button in a button"). */
	--gnt-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");

	/* Motion: one out-curve for fades and colour, a critically damped spring for movement. */
	--gnt-ease-out: cubic-bezier(0.32, 0.72, 0, 1);
	--gnt-spring: linear(0, .058, .183, .325, .46, .578, .676, .755, .816, .864, .899, .926, .946, .961, .972, .98, .986, .99, .993, .995, .996, .997, .998, .999, 1);
	--gnt-spring-dur: 445ms;

	/* Layers: every z-index in the plugin comes from here. The high values keep the menu bar
	   and the photo viewer above theme headers and plugins that use large z-indexes. */
	--gnt-z-raised: 3;       /* badges and buttons over a photo */
	--gnt-z-dropdown: 30;    /* filter menus */
	--gnt-z-sticky: 40;      /* listing section tabs */
	--gnt-z-cta: 50;         /* phone call-to-action bar */
	--gnt-z-bar: 9990;       /* menu bar */
	--gnt-z-grain: 9995;     /* paper grain (never catches clicks) */
	--gnt-z-modal: 99999;    /* photo viewer */
	--gnt-z-skip: 100000;    /* skip link */
}

/* Paper grain: a fixed, click-through layer on pages in the plugin design (never on a
   scrolling element, so it costs nothing while scrolling). */
body.gn-full-page::after, body.gn-own-frame::after, body.gn-site-nav::after {
	content: ""; position: fixed; inset: 0; z-index: var(--gnt-z-grain); pointer-events: none; opacity: .035;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
@media (prefers-contrast: more) {
	body.gn-full-page::after, body.gn-own-frame::after, body.gn-site-nav::after { display: none; }
	:root { --gnt-label-2: #3d3a34; --gnt-label-3: #4a463f; --gnt-sep: rgba(0, 0, 0, .35); }
}
@media print {
	body.gn-full-page::after, body.gn-own-frame::after, body.gn-site-nav::after { display: none; }
}

/* Display headings: the serif at one weight, with optical tracking for large sizes. */
.gnh-display, .gnh-headline, .gn-page-title, .gn-search-wrap .gn-search-title, .gnb .gnb-title, .gnb .gnb-article-title,
.gnb .gnb-page-title, .gnb-card--featured .gnb-card-title, .gna-title, .gnp-area-name, .gnh-bignum, .gn-sl .gn-sl-section > h2, .gn-sl .gn-sl-sechead > h2, .gn-site-card-title, .gnb-block-title {
	font-family: var(--gnt-font-serif) !important; font-weight: 400 !important; letter-spacing: -.012em !important; font-synthesis: none;
}

/* Eyebrow labels: a small capsule above a heading. */
.gnh-eyebrow, .gnb-eyebrow, .gna-eyebrow {
	display: inline-flex; align-items: center; gap: 6px; width: fit-content; padding: 5px 12px !important; border-radius: 999px;
	background: rgba(255, 255, 255, .7); box-shadow: inset 0 0 0 1px var(--gnt-bezel-ring);
	font-family: var(--gnt-font); font-size: .6875rem !important; line-height: 1.2 !important; font-weight: 600 !important; letter-spacing: .16em !important; text-transform: uppercase; color: var(--gnt-label-2) !important;
}
.gnh-dark .gnh-eyebrow { background: rgba(255, 255, 255, .08); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14); color: #d6d1c8 !important; }

/* "Photo coming soon" (1.41.0): live listings are published before their photos arrive. Shared by
   listing cards, the home page rows and the single listing page (all load this file first). */
.gn-photo-soon {
	position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
	background: linear-gradient(145deg, var(--gnt-fill, #efece6), var(--gnt-bg-alt, #e6e1d6));
	color: var(--gnt-label-2, #6e6a63); font-family: var(--gnt-font, inherit); font-size: 14px; font-weight: 600; letter-spacing: -0.01em; text-align: center;
}
.gn-photo-soon svg { width: 34px; height: 34px; opacity: .55; }
.gn-photo-soon--lg { position: relative; min-height: clamp(220px, 32vw, 26rem); border-radius: var(--gn-sl-radius, 18px); font-size: 17px; margin-bottom: 8px; }
.gn-photo-soon--lg svg { width: 46px; height: 46px; }
.gn-photo-soon--icon svg { width: 20px; height: 20px; }
