/* ═══════════════════════════════════════════════════════════════════════
   Κανάλια Λαμίας — «Χωριό μου ονειρόπλαστο»
   Template για Joomla 6 · gkpc.gr · 2026
   ═══════════════════════════════════════════════════════════════════════ */

/* ───────────── 1. Χρώματα & μεταβλητές ───────────── */
:root {
	--paper: #f6f1e6;
	--paper-2: #ede5d3;
	--paper-3: #e2d7bf;
	--card: #fffdf8;
	--ink: #1b2622;
	--ink-2: #45524c;
	--ink-3: #6f7a72;
	--line: rgba(27, 38, 34, .12);
	--forest: #1f4a3c;
	--forest-2: #2f6a55;
	--forest-deep: #0d231d;
	--gold: #b8842f;
	--gold-2: #d9a84f;
	--gold-3: #f1d18a;
	--river: #2b7f92;
	--river-2: #58b7c9;
	--chestnut: #7a4a2a;
	--rose: #a24b3a;
	--shadow: 0 1px 2px rgba(20, 30, 25, .06), 0 8px 24px -8px rgba(20, 30, 25, .18);
	--shadow-lg: 0 2px 6px rgba(20, 30, 25, .08), 0 30px 60px -20px rgba(20, 30, 25, .35);
	--radius: 18px;
	--radius-sm: 10px;
	--wrap: 1240px;
	--gutter: clamp(16px, 4vw, 40px);
	--f-display: 'Noto Serif Display', 'Alegreya', Georgia, serif;
	--f-body: 'Alegreya', Georgia, 'Times New Roman', serif;
	--f-ui: 'Commissioner', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--ease: cubic-bezier(.2, .7, .2, 1);
	--header-h: 76px;
	color-scheme: light;
}

@media (prefers-color-scheme: dark) {
	:root:not([data-theme="light"]) {
		--paper: #0e1714; --paper-2: #13201c; --paper-3: #1a2a25; --card: #15231f;
		--ink: #ece6d8; --ink-2: #c3bfb2; --ink-3: #8d948c; --line: rgba(236, 230, 216, .12);
		--forest: #8fd0b2; --forest-2: #6bb898; --gold: #e0b35e; --gold-2: #f0c877; --river: #6cc4d6;
		--shadow: 0 1px 2px rgba(0,0,0,.3), 0 10px 30px -10px rgba(0,0,0,.6);
		--shadow-lg: 0 2px 6px rgba(0,0,0,.35), 0 30px 60px -20px rgba(0,0,0,.8);
		color-scheme: dark;
	}
}
:root[data-theme="dark"] {
	--paper: #0e1714; --paper-2: #13201c; --paper-3: #1a2a25; --card: #15231f;
	--ink: #ece6d8; --ink-2: #c3bfb2; --ink-3: #8d948c; --line: rgba(236, 230, 216, .12);
	--forest: #8fd0b2; --forest-2: #6bb898; --gold: #e0b35e; --gold-2: #f0c877; --river: #6cc4d6;
	--shadow: 0 1px 2px rgba(0,0,0,.3), 0 10px 30px -10px rgba(0,0,0,.6);
	--shadow-lg: 0 2px 6px rgba(0,0,0,.35), 0 30px 60px -20px rgba(0,0,0,.8);
	color-scheme: dark;
}

/* ───────────── 2. Βάση ───────────── */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + 16px); }
body {
	margin: 0; background: var(--paper); color: var(--ink);
	font: 400 1.125rem/1.7 var(--f-body);
	-webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
	overflow-x: hidden;
}
body::before { /* ανεπαίσθητη υφή χαρτιού */
	content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0; opacity: .5;
	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='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .4 0 0 0 0 .35 0 0 0 0 .25 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
body > * { position: relative; z-index: 1; }
img, svg, video, canvas { max-width: 100%; }
img { height: auto; }
a { color: var(--forest-2); text-decoration-thickness: 1px; text-underline-offset: .18em; transition: color .2s; }
a:hover { color: var(--gold); }
:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--gold-3); color: #1b2622; }
h1, h2, h3, h4 { font-family: var(--f-display); font-weight: 500; line-height: 1.12; letter-spacing: -.01em; margin: 0 0 .5em; text-wrap: balance; }
p { margin: 0 0 1em; }
button { font: inherit; color: inherit; }
.knl-wrap { width: min(100% - 2 * var(--gutter), var(--wrap)); margin-inline: auto; }
.knl-skip { position: absolute; left: -999px; top: 8px; z-index: 100; background: var(--gold); color: #111; padding: 8px 14px; border-radius: 8px; }
.knl-skip:focus { left: 8px; }
.visually-hidden, .sr-only { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.knl-eyebrow { font: 600 .74rem/1 var(--f-ui); letter-spacing: .22em; text-transform: uppercase; color: var(--gold); margin: 0 0 .9rem; display: flex; align-items: center; gap: .7em; }
.knl-eyebrow::before { content: ""; width: 28px; height: 1px; background: currentColor; }
.knl-h2 { font-size: clamp(2rem, 4.2vw, 3.3rem); font-weight: 400; }
.knl-h3 { font-size: clamp(1.4rem, 2.4vw, 1.9rem); font-weight: 400; }
.knl-lead { font-size: clamp(1.2rem, 1.8vw, 1.4rem); line-height: 1.6; color: var(--ink); }
.knl-more { font: 600 .9rem var(--f-ui); color: var(--forest-2); text-decoration: none; white-space: nowrap; display: inline-flex; gap: .4em; align-items: center; }
.knl-more span { transition: transform .3s var(--ease); }
.knl-more:hover span { transform: translateX(4px); }

.knl-btn {
	display: inline-flex; align-items: center; gap: .6em; padding: .95em 1.6em; border-radius: 999px;
	font: 600 .95rem/1 var(--f-ui); letter-spacing: .02em; text-decoration: none; cursor: pointer; border: 1px solid transparent;
	transition: transform .3s var(--ease), box-shadow .3s, background .3s, color .3s;
}
.knl-btn:hover { transform: translateY(-2px); }
.knl-btn--gold { background: linear-gradient(135deg, #e9c173, #b8842f 60%, #946522); color: #1a140a; box-shadow: 0 10px 30px -10px rgba(184, 132, 47, .8); }
.knl-btn--gold:hover { color: #1a140a; box-shadow: 0 16px 40px -12px rgba(184, 132, 47, .95); }
.knl-btn--ghost { border-color: currentColor; color: var(--ink); background: transparent; }
.knl-btn--ghost:hover { background: var(--ink); color: var(--paper); }
.knl-btn--sm { padding: .7em 1.2em; font-size: .85rem; }

.knl-iconbtn { width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--line); background: transparent; display: grid; place-items: center; cursor: pointer; transition: background .2s, border-color .2s, transform .2s; color: inherit; }
.knl-iconbtn:hover { background: color-mix(in srgb, var(--gold) 16%, transparent); border-color: var(--gold); }
.knl-iconbtn svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

/* αποκάλυψη με την κύλιση */
.knl-reveal { opacity: 0; transform: translateY(28px); transition: opacity .9s var(--ease), transform .9s var(--ease); transition-delay: calc(var(--i, 0) * 70ms); }
.knl-reveal.is-in { opacity: 1; transform: none; }
.no-js .knl-reveal { opacity: 1; transform: none; }

/* γραμμή προόδου ανάγνωσης: ένα μικρό ποτάμι */
.knl-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 60; pointer-events: none; }
.knl-progress span { display: block; height: 100%; width: 100%; transform-origin: 0 50%; transform: scaleX(var(--p, 0)); background: linear-gradient(90deg, var(--river), var(--river-2), var(--gold-2)); box-shadow: 0 0 12px var(--river-2); }

/* ───────────── 3. Κεφαλίδα & μενού ───────────── */
.knl-header { position: sticky; top: 0; z-index: 50; height: var(--header-h); transition: background .4s, box-shadow .4s, color .4s, backdrop-filter .4s; background: color-mix(in srgb, var(--paper) 86%, transparent); backdrop-filter: blur(14px) saturate(1.3); -webkit-backdrop-filter: blur(14px) saturate(1.3); border-bottom: 1px solid var(--line); }
.knl-header.is-over-hero { position: fixed; left: 0; right: 0; background: transparent; border-color: transparent; backdrop-filter: none; -webkit-backdrop-filter: none; color: #f7f1e3; }
.knl-header.is-over-hero.is-scrolled { background: color-mix(in srgb, var(--paper) 86%, transparent); color: var(--ink); backdrop-filter: blur(14px) saturate(1.3); -webkit-backdrop-filter: blur(14px) saturate(1.3); border-color: var(--line); }
.knl-header__inner { height: 100%; width: min(100% - 2 * var(--gutter), 1440px); margin-inline: auto; display: flex; align-items: center; gap: 1.5rem; }

.knl-brand { display: inline-flex; align-items: center; gap: .75rem; text-decoration: none; color: inherit; flex: none; }
.knl-brand:hover { color: inherit; }
.knl-logo { width: 44px; height: 44px; flex: none; overflow: visible; }
.knl-logo * { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.knl-logo__ring { stroke-width: 1.4; opacity: .55; }
.knl-logo__sun { fill: var(--gold-2); stroke: none; }
.knl-logo__far { opacity: .6; }
.knl-logo__river { stroke: var(--river-2); stroke-width: 2.4; stroke-dasharray: 6 5; animation: knl-flow 2.4s linear infinite; }
.knl-brand:hover .knl-logo__sun { animation: knl-pulse 1.4s ease-in-out infinite; }
.knl-brand__text { display: flex; flex-direction: column; line-height: 1; }
.knl-brand__name { font: italic 500 1.65rem/1 var(--f-display); letter-spacing: -.01em; }
.knl-brand__sub { font: 600 .62rem/1.2 var(--f-ui); letter-spacing: .2em; text-transform: uppercase; opacity: .7; margin-top: .35em; }

.knl-nav { margin-left: auto; }
.knl-nav ul { list-style: none; margin: 0; padding: 0; }
.knl-menu { display: flex; align-items: center; gap: .1rem; }
.knl-menu > li { position: relative; }
.knl-menu > li > a, .knl-menu > li > button, .knl-menu > li > span {
	display: flex; align-items: center; gap: .35em; padding: .6rem .8rem; border: 0; background: none; cursor: pointer;
	font: 500 .92rem/1 var(--f-ui); color: inherit; text-decoration: none; border-radius: 999px; transition: background .2s, color .2s; white-space: nowrap;
}
.knl-menu > li > a:hover, .knl-menu > li > button:hover, .knl-menu > li.is-open > button { background: color-mix(in srgb, currentColor 10%, transparent); }
.knl-menu > li.active > a, .knl-menu > li.active > button { color: var(--gold); }
.is-over-hero:not(.is-scrolled) .knl-menu > li.active > a, .is-over-hero:not(.is-scrolled) .knl-menu > li.active > button { color: var(--gold-3); }
.knl-menu__caret { width: 10px; height: 10px; transition: transform .3s; fill: none; stroke: currentColor; stroke-width: 2; }
.knl-menu li.is-open .knl-menu__caret { transform: rotate(180deg); }
.knl-menu__panel {
	position: absolute; top: calc(100% + 12px); left: 50%; min-width: 300px; padding: .6rem; border-radius: 18px;
	background: var(--card); color: var(--ink); box-shadow: var(--shadow-lg); border: 1px solid var(--line);
	opacity: 0; visibility: hidden; transform: translate(-50%, 8px) scale(.98); transform-origin: top center; transition: opacity .25s, transform .3s var(--ease), visibility .25s;
}
.knl-menu__panel::before { content: ""; position: absolute; top: -14px; left: 0; right: 0; height: 14px; }
.knl-menu li.is-open > .knl-menu__panel, .knl-menu > li:hover > .knl-menu__panel, .knl-menu > li:focus-within > .knl-menu__panel { opacity: 1; visibility: visible; transform: translate(-50%, 0) scale(1); }
.knl-menu__panel a { display: flex; justify-content: space-between; gap: 1rem; padding: .62rem .9rem; border-radius: 10px; color: var(--ink); text-decoration: none; font: 500 .95rem/1.3 var(--f-ui); }
.knl-menu__panel a:hover { background: var(--paper-2); color: var(--forest-2); }
.knl-menu__panel a small { color: var(--ink-3); font-weight: 500; }
.knl-menu__panel .active > a { color: var(--gold); }
.knl-menu__desc { padding: .7rem .9rem .8rem; margin: 0 0 .3rem; border-bottom: 1px solid var(--line); font: italic 400 1rem/1.4 var(--f-body); color: var(--ink-2); }

.knl-tools { display: flex; gap: .5rem; align-items: center; }
.knl-header.is-over-hero:not(.is-scrolled) .knl-iconbtn { border-color: rgba(255, 255, 255, .3); }
[data-theme="dark"] .i-sun, .i-moon { display: none; }
[data-theme="dark"] .i-moon { display: block; }
@media (prefers-color-scheme: dark) { :root[data-theme="auto"] .i-sun { display: none; } :root[data-theme="auto"] .i-moon { display: block; } }
.knl-burger { display: none; width: 44px; height: 44px; border: 0; background: none; cursor: pointer; position: relative; }
.knl-burger span { position: absolute; left: 11px; right: 11px; height: 2px; background: currentColor; border-radius: 2px; transition: transform .35s var(--ease), opacity .2s; }
.knl-burger span:nth-child(1) { top: 15px; } .knl-burger span:nth-child(2) { top: 21px; } .knl-burger span:nth-child(3) { top: 27px; }
.knl-burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.knl-burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.knl-burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

@media (max-width: 1239px) {
	.knl-burger { display: block; }
	.knl-nav {
		position: fixed; inset: var(--header-h) 0 0 0; margin: 0; background: var(--paper); color: var(--ink); overflow-y: auto;
		padding: 1rem var(--gutter) 3rem; transform: translateY(-12px); opacity: 0; visibility: hidden; transition: opacity .3s, transform .4s var(--ease), visibility .3s;
	}
	.knl-nav.is-open { opacity: 1; visibility: visible; transform: none; }
	.knl-menu { flex-direction: column; align-items: stretch; gap: 0; }
	.knl-menu > li { border-bottom: 1px solid var(--line); }
	.knl-menu > li > a, .knl-menu > li > button, .knl-menu > li > span { width: 100%; justify-content: space-between; padding: 1.1rem .2rem; font-size: 1.15rem; border-radius: 0; font-family: var(--f-display); font-weight: 400; }
	.knl-menu__panel { position: static; transform: none !important; opacity: 1; visibility: visible; box-shadow: none; border: 0; background: transparent; padding: 0 0 .8rem; display: none; min-width: 0; }
	.knl-menu li.is-open > .knl-menu__panel { display: block; }
	.knl-menu > li:hover > .knl-menu__panel { display: none; }
	.knl-menu > li.is-open:hover > .knl-menu__panel { display: block; }
	.knl-menu__desc { display: none; }
	body.nav-open { overflow: hidden; }
	.knl-header.is-over-hero.nav-open { background: var(--paper); color: var(--ink); }
}
@media (max-width: 520px) { .knl-brand__sub { display: none; } .knl-brand__name { font-size: 1.4rem; } .knl-logo { width: 38px; height: 38px; } .knl-tools .knl-iconbtn[data-knl-theme] { display: none; } }

/* ───────────── 4. Αναζήτηση (επικάλυψη) ───────────── */
.knl-search { position: fixed; inset: 0; z-index: 80; display: grid; place-items: start center; padding-top: 14vh; background: rgba(8, 18, 15, .6); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); animation: knl-fade .3s; }
.knl-search[hidden] { display: none; }
.knl-search__panel { position: relative; width: min(92vw, 760px); background: var(--card); border-radius: 24px; padding: 2rem 2rem 1.5rem; box-shadow: var(--shadow-lg); animation: knl-rise .45s var(--ease); }
.knl-search__label { display: block; font: italic 400 clamp(1.5rem, 3vw, 2.1rem)/1.2 var(--f-display); margin-bottom: 1rem; }
.knl-search__row { display: flex; gap: .6rem; }
.knl-search__row input { flex: 1; min-width: 0; font: 400 1.2rem var(--f-body); padding: .9rem 1.2rem; border-radius: 14px; border: 1px solid var(--line); background: var(--paper); color: var(--ink); }
.knl-search__row input:focus { outline: 2px solid var(--gold); }
.knl-search__row button { border: 0; border-radius: 14px; padding: 0 1.4rem; background: var(--forest); color: #fff; font: 600 .95rem var(--f-ui); cursor: pointer; }
[data-theme="dark"] .knl-search__row button { color: #0e1714; }
.knl-search__hint { font: 500 .8rem var(--f-ui); color: var(--ink-3); margin: .8rem 0 0; }
.knl-search__close { position: absolute; top: .8rem; right: 1rem; border: 0; background: none; font-size: 1.8rem; cursor: pointer; color: var(--ink-3); }

/* ═══════════════════════════════════════════════════════════════════════
   5. HERO — ο ζωντανός ουρανός
   ═══════════════════════════════════════════════════════════════════════ */
.knl-hero {
	--sky-1: #0b1733; --sky-2: #20345c; --sky-3: #6d6b86;
	--ridge-far-top: #3d4c6b; --ridge-far-bot: #26314a;
	--ridge-mid-top: #1f3a3a; --ridge-mid-bot: #152a28;
	--ridge-near-top: #173127; --ridge-near-bot: #0e211a;
	--tree: #0b1c16; --foreground: #06110d;
	--house: #d8c8a8; --roof: #8e3b2b; --window: #ffcf6e;
	--river-glow: #7fd8ea; --label: rgba(255, 244, 220, .85); --mist: rgba(220, 230, 240, .22);
	position: relative; min-height: max(640px, 100svh); overflow: hidden; color: #f7f1e3; isolation: isolate;
	background: linear-gradient(180deg, var(--sky-1) 0%, var(--sky-2) 45%, var(--sky-3) 75%);
	transition: background 2s;
}
/* φάσεις της ημέρας — ορίζονται από την sky.js με βάση τον πραγματικό ήλιο στα Κανάλια */
.knl-hero[data-phase="day"] {
	--ridge-far-top: #7f97a8; --ridge-far-bot: #5d7a86; --ridge-mid-top: #4f7a5c; --ridge-mid-bot: #36604a;
	--ridge-near-top: #2f5a40; --ridge-near-bot: #1d3c2b; --tree: #214432; --foreground: #10261b;
	--window: #3b3a36; --river-glow: #bff1ff; --mist: rgba(255, 255, 255, .35); --label: rgba(255, 255, 255, .95);
}
.knl-hero[data-phase="dawn"], .knl-hero[data-phase="dusk"] {
	--ridge-far-top: #7b6a86; --ridge-far-bot: #52496a; --ridge-mid-top: #3c4f55; --ridge-mid-bot: #2a3a3e;
	--ridge-near-top: #22362f; --ridge-near-bot: #142520; --tree: #13241e; --foreground: #0a1512;
	--river-glow: #ffd9a8; --mist: rgba(255, 215, 190, .28);
}
.knl-hero__sky, .knl-hero__land, .knl-hero__lens, .knl-hero__particles, .knl-hero__stars { position: absolute; inset: 0; width: 100%; height: 100%; }
.knl-hero__stars { opacity: var(--stars, 1); transition: opacity 2s; }
.knl-hero__land { z-index: 1; }
.knl-layer { transition: transform .8s var(--ease); will-change: transform; }
.knl-snowcap { fill: #fff; opacity: .0; transition: opacity 2s; }
.knl-hero.is-winter .knl-snowcap, .knl-hero.is-snow .knl-snowcap { opacity: .9; }
.knl-mistband { fill: var(--mist); animation: knl-drift 38s ease-in-out infinite alternate; }
.knl-mistband--low { animation-duration: 52s; animation-direction: alternate-reverse; }
.knl-hero.is-fog .knl-mistband { fill: rgba(235, 240, 245, .7); }

.knl-house rect:first-child { fill: var(--house); }
.knl-house .knl-roof { fill: var(--roof); }
.knl-window { fill: var(--window); animation: knl-twinkle 5s ease-in-out infinite; animation-delay: var(--d); }
.knl-hero[data-phase="day"] .knl-window { animation: none; }
.knl-hero[data-phase="night"] .knl-house rect:first-child, .knl-hero[data-phase="dusk"] .knl-house rect:first-child { fill: #6f6a5f; }
.knl-hero[data-phase="night"] .knl-house .knl-roof { fill: #4a2a24; }
.knl-hero[data-phase="night"] .knl-window { filter: drop-shadow(0 0 4px #ffc861); }
.knl-cross { stroke: var(--gold-2); stroke-width: 1.6; fill: none; }
.knl-church > rect:nth-of-type(2) { fill: var(--house); }

.knl-river { fill: none; stroke: var(--river-glow); stroke-width: 5; stroke-linecap: round; opacity: .55; }
.knl-river--flow { stroke-width: 2.4; stroke-dasharray: 2 18; opacity: .95; animation: knl-flow 1.6s linear infinite; }
.knl-hero[data-phase="day"] .knl-river { opacity: .75; stroke: #9fdcec; }

.knl-labels { font: 600 15px var(--f-ui); letter-spacing: .12em; text-transform: uppercase; }
.knl-label { opacity: 0; animation: knl-fade 1.4s ease forwards; animation-delay: calc(2.2s + var(--i) * .45s); }
.knl-label path { stroke: var(--label); stroke-width: 1; stroke-dasharray: 3 4; fill: none; }
.knl-label text { fill: var(--label); paint-order: stroke; stroke: rgba(0, 0, 0, .25); stroke-width: 3px; }
.knl-label--river text { font-family: var(--f-display); font-style: italic; text-transform: none; letter-spacing: .02em; font-size: 20px; font-weight: 400; }

/* ήλιος, σελήνη, σύννεφα */
.knl-hero__sun, .knl-hero__moon { position: absolute; left: var(--x, 70%); top: var(--y, 20%); transform: translate(-50%, -50%); transition: left 2s, top 2s, opacity 2s; opacity: 0; }
.knl-hero__sun { width: 120px; height: 120px; border-radius: 50%; background: radial-gradient(circle, #fff7da 0 18%, rgba(255, 220, 140, .85) 24%, rgba(255, 190, 90, .25) 45%, transparent 70%); }
.knl-hero__moon { width: 70px; height: 70px; color: #f4ecd2; filter: drop-shadow(0 0 22px rgba(255, 244, 210, .55)); }
.knl-hero__moon svg { width: 100%; height: 100%; overflow: visible; }
.knl-hero__sun.is-on, .knl-hero__moon.is-on { opacity: 1; }
.knl-hero__clouds i { position: absolute; display: block; width: 44vw; height: 12vw; border-radius: 50%; background: radial-gradient(closest-side, rgba(255, 255, 255, var(--co, .0)), transparent); filter: blur(10px); animation: knl-cloud linear infinite; }
.knl-hero__clouds i:nth-child(1) { top: 8%; left: -20%; animation-duration: 140s; }
.knl-hero__clouds i:nth-child(2) { top: 18%; left: 30%; width: 60vw; animation-duration: 190s; animation-delay: -60s; }
.knl-hero__clouds i:nth-child(3) { top: 4%; left: 60%; width: 38vw; animation-duration: 160s; animation-delay: -110s; }
.knl-hero__clouds i:nth-child(4) { top: 26%; left: 5%; width: 30vw; animation-duration: 120s; animation-delay: -30s; }
.knl-hero__clouds i:nth-child(5) { top: 13%; left: 80%; width: 50vw; animation-duration: 210s; animation-delay: -150s; }
.knl-hero[data-phase="night"] .knl-hero__clouds i { background: radial-gradient(closest-side, rgba(150, 160, 190, calc(var(--co, 0) * .6)), transparent); }

/* ο φακός: το αληθινό χωριό πίσω από το όνειρο */
.knl-hero__lens {
	--mx: 50%; --my: 60%; --r: 0px; z-index: 2; pointer-events: none;
	background: var(--photo) center top / cover no-repeat;
	-webkit-mask-image: radial-gradient(circle var(--r) at var(--mx) var(--my), #000 0 62%, rgba(0,0,0,.6) 80%, transparent 100%);
	mask-image: radial-gradient(circle var(--r) at var(--mx) var(--my), #000 0 62%, rgba(0,0,0,.6) 80%, transparent 100%);
	filter: saturate(1.08) contrast(1.02);
}
.knl-hero__lens::after {
	content: ""; position: absolute; left: var(--mx); top: var(--my); width: calc(var(--r) * 1.6); height: calc(var(--r) * 1.6); transform: translate(-50%, -50%);
	border-radius: 50%; border: 1px solid rgba(241, 209, 138, .55); box-shadow: 0 0 40px rgba(241, 209, 138, .25), inset 0 0 40px rgba(241, 209, 138, .15); opacity: min(1, calc(var(--r) / 60px));
}
.knl-hero__particles { z-index: 3; pointer-events: none; }

.knl-hero__content::before { content: ""; position: absolute; z-index: -1; left: calc(var(--gutter) * -1 - 10vw); top: 10%; width: min(1000px, 80vw); height: 95%; background: radial-gradient(closest-side, rgba(6, 16, 13, .42), transparent); pointer-events: none; transition: opacity 2s; }
.knl-hero[data-phase="night"] .knl-hero__content::before { opacity: .6; }
.knl-hero[data-phase="day"] .knl-hero__content::before { background: radial-gradient(closest-side, rgba(12, 32, 48, .5), transparent); }
@media (max-width: 900px) { .knl-hero__content::before { left: -50vw; width: 200vw; top: 12%; height: 62%; } }
.knl-hero__content { position: relative; z-index: 4; width: min(100% - 2 * var(--gutter), 1440px); margin-inline: auto; padding-top: calc(var(--header-h) + clamp(28px, 7vh, 90px)); pointer-events: none; }
.knl-hero__content a, .knl-hero__content button { pointer-events: auto; }
.knl-hero__kicker { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; font: 600 .72rem/1 var(--f-ui); letter-spacing: .24em; text-transform: uppercase; margin: 0 0 1.2rem; opacity: 0; animation: knl-fade 1.2s .3s forwards; }
.knl-hero__kicker span + span::before { content: "✦"; margin-right: 1.4rem; color: var(--gold-3); letter-spacing: 0; }
.knl-hero__title { margin: 0; font-weight: 300; line-height: .82; }
.knl-hero__word { display: block; font: italic 300 clamp(4.8rem, 15vw, 13rem)/.85 var(--f-display); letter-spacing: -.035em; }
.knl-hero__word span {
	display: inline-block; opacity: 0; transform: translateY(.35em) rotate(4deg); filter: blur(12px);
	background: linear-gradient(100deg, #fff6df 0%, #f1d18a 30%, #fff9ea 45%, #d9a84f 60%, #fff6df 100%); background-size: 300% 100%;
	-webkit-background-clip: text; background-clip: text; color: transparent;
	animation: knl-letter 1.3s var(--ease) forwards, knl-shimmer 9s linear infinite;
	animation-delay: calc(.4s + var(--i) * .09s), 2.4s;
	text-shadow: 0 0 40px rgba(255, 220, 150, .0);
	padding-right: .04em;
}
.knl-hero[data-phase="night"] .knl-hero__word { filter: drop-shadow(0 0 30px rgba(241, 209, 138, .35)); }
.knl-hero[data-phase="day"] .knl-hero__word { filter: drop-shadow(0 4px 30px rgba(20, 40, 60, .35)); }
.knl-hero__sub { display: block; font: 400 clamp(1.1rem, 2.4vw, 1.9rem)/1 var(--f-ui); letter-spacing: .6em; text-transform: uppercase; margin: .7rem 0 0 .35rem; opacity: 0; animation: knl-fade 1.4s 1.3s forwards; }
.knl-hero__poem { margin: clamp(1.4rem, 4vh, 2.6rem) 0 0; max-width: 46ch; font: italic 400 clamp(1.15rem, 1.8vw, 1.55rem)/1.45 var(--f-display); text-shadow: 0 1px 2px rgba(0, 0, 0, .45), 0 2px 24px rgba(0, 0, 0, .55); }
.knl-hero__poem p { margin: 0; min-height: 1.45em; }
.knl-hero__poem p .ch { opacity: 0; transition: opacity .3s; }
.knl-hero__poem p .ch.on { opacity: 1; }
.knl-hero__poem cite { display: block; margin-top: .8rem; font: 600 .72rem var(--f-ui); letter-spacing: .18em; text-transform: uppercase; font-style: normal; opacity: 0; transition: opacity 1s; color: var(--gold-3); }
.knl-hero__poem.is-done cite { opacity: .9; }
.knl-hero__cta { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: clamp(1.4rem, 4vh, 2.4rem); opacity: 0; animation: knl-fade 1.2s 2.6s forwards; }
.knl-hero .knl-btn--ghost { color: #fff; border-color: rgba(255, 255, 255, .55); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.knl-hero .knl-btn--ghost:hover { background: #fff; color: #10231c; }

.knl-now {
	position: absolute; z-index: 4; left: 50%; bottom: clamp(16px, 4vh, 36px); transform: translateX(-50%); width: min(100% - 2 * var(--gutter), 1100px);
	display: flex; flex-wrap: wrap; justify-content: center; border-radius: 20px; overflow: hidden;
	background: rgba(10, 22, 18, .42); border: 1px solid rgba(255, 255, 255, .14); backdrop-filter: blur(16px) saturate(1.4); -webkit-backdrop-filter: blur(16px) saturate(1.4);
	opacity: 0; animation: knl-rise-in 1.2s 3s var(--ease) forwards;
}
.knl-now__item { flex: 1 1 150px; padding: .85rem 1.2rem; display: flex; flex-direction: column; gap: .3rem; border-right: 1px solid rgba(255, 255, 255, .1); }
.knl-now__item:last-child { border-right: 0; }
.knl-now__k { font: 600 .62rem/1 var(--f-ui); letter-spacing: .2em; text-transform: uppercase; color: var(--gold-3); }
.knl-now__v { font: 500 1.02rem/1.25 var(--f-ui); display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.knl-now__v small { font-size: .8rem; opacity: .75; font-weight: 400; }
.knl-now__item--names { flex-basis: 260px; }
.knl-now__item--names .knl-now__v { font-family: var(--f-display); font-style: italic; font-size: 1.1rem; }
[data-knl-wicon] svg { width: 22px; height: 22px; }
.knl-hero__hint { position: absolute; z-index: 4; right: var(--gutter); top: calc(var(--header-h) + 18px); margin: 0; max-width: 250px; text-align: right; font: italic 400 .95rem/1.35 var(--f-display); opacity: 0; transition: opacity 1s; pointer-events: none; }
.knl-hero__hint.is-on { opacity: .8; }
.knl-hero__scroll { position: absolute; z-index: 4; left: 50%; bottom: 8px; width: 24px; height: 38px; margin-left: -12px; border: 1.5px solid rgba(255, 255, 255, .5); border-radius: 14px; display: none; }
.knl-hero__scroll span { position: absolute; left: 50%; top: 7px; width: 3px; height: 7px; margin-left: -1.5px; border-radius: 2px; background: #fff; animation: knl-scrollcue 1.8s infinite; }

@media (max-width: 900px) {
	/* στο κινητό η λωρίδα «τώρα» κάθεται κάτω από το τοπίο, όχι πάνω στα σπίτια */
	.knl-hero { min-height: 0; display: flex; flex-direction: column; }
	.knl-hero__content { padding-bottom: 46vw; }
	.knl-hero__land { top: auto; bottom: var(--now-h, 200px); height: min(78%, 120vw); }
	.knl-hero__lens, .knl-hero__particles { bottom: var(--now-h, 200px); height: auto; }
	.knl-hero__hint, .knl-labels { display: none; }
	.knl-now { position: relative; left: auto; bottom: auto; transform: none; width: 100%; margin-top: auto; border-radius: 0; border: 0; background: #0d231d; animation: knl-fade 1s 1.2s forwards; }
	.knl-now__item { flex: 1 1 45%; padding: .65rem var(--gutter); border-bottom: 1px solid rgba(255,255,255,.08); }
	.knl-now__item:nth-child(2n) { border-right: 0; }
	.knl-now__v { font-size: .95rem; }
	.knl-now__item--names { flex-basis: 100%; }
}
@media (max-width: 520px) {
	.knl-hero__kicker span:nth-child(3) { display: none; }
	.knl-hero__cta .knl-btn { flex: 1 1 auto; justify-content: center; }
}

/* ───────────── 6. Καλώς ήρθατε ───────────── */
.knl-welcome { padding: clamp(80px, 12vw, 160px) 0 clamp(60px, 8vw, 110px); }
.knl-welcome__grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(40px, 7vw, 110px); align-items: center; }
.knl-welcome__text > p:not(.knl-eyebrow):not(.knl-lead) { color: var(--ink-2); }
.knl-welcome__text .knl-lead::first-letter { float: left; font: italic 400 5.4em/.8 var(--f-display); margin: .08em .1em 0 -.04em; color: var(--gold); }
.knl-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; margin: 0; background: var(--line); border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); box-shadow: var(--shadow); }
.knl-stats div { background: var(--card); padding: clamp(20px, 3vw, 34px); }
.knl-stats dt { font: italic 300 clamp(2.6rem, 5vw, 4rem)/1 var(--f-display); color: var(--forest-2); font-variant-numeric: lining-nums; }
.knl-stats dd { margin: .6rem 0 0; font: 500 .92rem/1.35 var(--f-ui); color: var(--ink-2); }
.knl-stats dd small { color: var(--ink-3); }
@media (max-width: 860px) { .knl-welcome__grid { grid-template-columns: 1fr; } }

/* ───────────── 7. Επικεφαλίδες ενοτήτων & κάρτες ───────────── */
.knl-sechead { display: flex; justify-content: space-between; align-items: flex-end; gap: 1.5rem; flex-wrap: wrap; margin-bottom: clamp(28px, 4vw, 48px); }
.knl-sechead .knl-h2 { margin: 0; }
.knl-sechead--center { flex-direction: column; align-items: center; text-align: center; }
.knl-sechead--center .knl-eyebrow::after { content: ""; width: 28px; height: 1px; background: currentColor; }
.knl-sechead__intro { max-width: 60ch; color: var(--ink-2); margin: .8rem 0 0; font-size: 1.12rem; }

.knl-news { padding: clamp(40px, 6vw, 80px) 0 clamp(70px, 9vw, 120px); }
.knl-news__grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: clamp(24px, 3vw, 44px); }
.knl-card { background: var(--card); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); border: 1px solid var(--line); display: flex; flex-direction: column; transition: transform .5s var(--ease), box-shadow .5s; }
.knl-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.knl-card__media { display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--paper-2); position: relative; }
.knl-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.knl-card:hover .knl-card__media img { transform: scale(1.05); }
.knl-card__initial {
	--h: 152; position: absolute; inset: 0; display: grid; place-items: center; overflow: hidden;
	font: italic 300 clamp(4rem, 10vw, 8rem)/1 var(--f-display); color: hsl(var(--h) 35% 88%);
	background:
		radial-gradient(circle at 20% 110%, hsl(var(--h) 40% 34% / .9), transparent 60%),
		repeating-radial-gradient(circle at 80% -10%, transparent 0 14px, hsl(var(--h) 30% 60% / .12) 15px 16px),
		linear-gradient(150deg, hsl(var(--h) 32% 26%), hsl(calc(var(--h) + 30) 30% 18%));
}
.knl-card__body { padding: clamp(18px, 2.4vw, 30px); display: flex; flex-direction: column; gap: .4rem; flex: 1; }
.knl-card__meta { display: flex; flex-wrap: wrap; gap: .3rem .9rem; font: 600 .7rem/1.2 var(--f-ui); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); margin: 0; }
.knl-card__meta span { color: var(--gold); }
.knl-card__title { font-size: clamp(1.35rem, 2.2vw, 1.85rem); margin: .25rem 0 .35rem; }
.knl-card--lead .knl-card__title { font-size: clamp(1.7rem, 3vw, 2.5rem); }
.knl-card__title a, .knl-row__title a { color: var(--ink); text-decoration: none; background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size .5s var(--ease), color .2s; }
.knl-card__title a:hover, .knl-row__title a:hover { background-size: 100% 1px; color: var(--forest-2); }
.knl-card__text { color: var(--ink-2); margin: 0; }
.knl-news__list { display: flex; flex-direction: column; gap: .2rem; }
.knl-row { display: grid; grid-template-columns: 104px 1fr; gap: 1rem; align-items: center; padding: .85rem; border-radius: 14px; transition: background .3s; }
.knl-row:hover { background: var(--card); box-shadow: var(--shadow); }
.knl-row__media { position: relative; width: 104px; aspect-ratio: 1; border-radius: 12px; overflow: hidden; display: block; background: var(--paper-2); }
.knl-row__media img { width: 100%; height: 100%; object-fit: cover; }
.knl-row__media .knl-card__initial { font-size: 2.6rem; }
.knl-row__title { font-size: 1.15rem; line-height: 1.3; margin: .35rem 0 0; font-weight: 500; }
@media (max-width: 900px) { .knl-news__grid { grid-template-columns: 1fr; } }

/* ───────────── 8. Οι πόρτες του χωριού ───────────── */
.knl-doors { padding: clamp(70px, 9vw, 130px) 0; background:
	radial-gradient(1200px 500px at 50% 0%, color-mix(in srgb, var(--gold) 10%, transparent), transparent 70%), var(--paper-2); }
.knl-doors__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(14px, 2vw, 24px); perspective: 1200px; }
.knl-door {
	position: relative; display: flex; flex-direction: column; gap: .4rem; min-height: 250px; padding: clamp(22px, 2.6vw, 34px); border-radius: 22px 22px 22px 22px;
	background: var(--card); color: var(--ink); text-decoration: none; border: 1px solid var(--line); overflow: hidden;
	transform-style: preserve-3d; transition: transform .6s var(--ease), box-shadow .6s, border-color .4s; box-shadow: var(--shadow);
}
.knl-door::before { /* αψίδα πόρτας */
	content: ""; position: absolute; right: -40px; bottom: -40px; width: 200px; height: 260px; border-radius: 100px 100px 0 0;
	border: 1px solid color-mix(in srgb, var(--gold) 35%, transparent); opacity: .6; transition: transform .8s var(--ease), opacity .6s;
}
.knl-door::after { content: ""; position: absolute; inset: 0; background: radial-gradient(400px circle at var(--gx, 50%) var(--gy, 50%), color-mix(in srgb, var(--gold) 16%, transparent), transparent 45%); opacity: 0; transition: opacity .4s; pointer-events: none; }
.knl-door:hover { border-color: color-mix(in srgb, var(--gold) 50%, transparent); box-shadow: var(--shadow-lg); color: var(--ink); }
.knl-door:hover::after { opacity: 1; }
.knl-door:hover::before { transform: translate(-20px, -20px) scale(1.1); opacity: 1; }
.knl-door__icon { width: 46px; height: 46px; fill: none; stroke: var(--forest-2); stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; margin-bottom: auto; transform: translateZ(30px); }
.knl-door__count { position: absolute; top: clamp(20px, 2.4vw, 30px); right: clamp(22px, 2.6vw, 34px); font: italic 300 2.6rem/1 var(--f-display); color: var(--gold); transform: translateZ(40px); }
.knl-door__title { font: 500 clamp(1.45rem, 2.2vw, 1.85rem)/1.15 var(--f-display); margin-top: 2.2rem; transform: translateZ(24px); }
.knl-door__sub { color: var(--ink-3); font-size: 1rem; transform: translateZ(16px); }
.knl-door__arrow { position: absolute; right: clamp(22px, 2.6vw, 34px); bottom: clamp(18px, 2.4vw, 28px); font: 400 1.4rem var(--f-ui); color: var(--gold); transition: transform .4s var(--ease); }
.knl-door:hover .knl-door__arrow { transform: translateX(6px); }
@media (max-width: 900px) { .knl-doors__grid { grid-template-columns: 1fr 1fr; } .knl-door { min-height: 210px; } }
@media (max-width: 540px) { .knl-doors__grid { grid-template-columns: 1fr; } }

/* ───────────── 9. Αστερισμός τοπωνυμίων ───────────── */
.knl-constellation { position: relative; padding: clamp(80px, 10vw, 140px) 0; color: #efe9d9; overflow: hidden;
	background: radial-gradient(1000px 600px at 70% 20%, #1c2f4d 0%, transparent 60%), radial-gradient(900px 600px at 10% 90%, #19332c 0%, transparent 60%), linear-gradient(180deg, #081019, #0b1520 60%, #0c1a17); }
.knl-constellation__sky { position: absolute; inset: 0; width: 100%; height: 100%; }
.knl-constellation .knl-wrap { position: relative; }
.knl-constellation .knl-sechead__intro { color: rgba(239, 233, 217, .75); }
.knl-constellation .knl-eyebrow { color: var(--gold-3); }
.knl-constellation__field { position: relative; height: clamp(460px, 62vh, 640px); margin-top: 1rem; }
.knl-constellation__lines { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.knl-constellation__lines line { stroke: rgba(241, 209, 138, .22); stroke-width: 1; stroke-dasharray: 3 5; }
.knl-constellation__lines line.is-lit { stroke: rgba(241, 209, 138, .7); stroke-dasharray: none; }
.knl-star { position: absolute; left: var(--x); top: var(--y); transform: translate(-50%, -50%); text-decoration: none; color: #f5efe0; display: flex; flex-direction: column; align-items: center; gap: .45rem; z-index: 1; outline-offset: 6px; }
.knl-star__dot { width: var(--s, 8px); height: var(--s, 8px); border-radius: 50%; background: #fff9e8; box-shadow: 0 0 0 4px rgba(241, 209, 138, .08), 0 0 16px 3px rgba(241, 209, 138, .65), 0 0 40px 8px rgba(120, 170, 255, .18); animation: knl-twinkle 4s ease-in-out infinite; animation-delay: var(--d, 0s); transition: transform .4s var(--ease); }
.knl-star__name { font: italic 400 clamp(.95rem, 1.4vw, 1.15rem)/1 var(--f-display); white-space: nowrap; opacity: .85; transition: color .3s, opacity .3s; }
.knl-star:hover, .knl-star:focus-visible { z-index: 3; color: #fff; }
.knl-star:hover .knl-star__dot, .knl-star:focus-visible .knl-star__dot { transform: scale(1.8); }
.knl-star:hover .knl-star__name, .knl-star:focus-visible .knl-star__name { color: var(--gold-3); opacity: 1; }
.knl-star__card { position: absolute; top: calc(100% + 10px); left: 50%; width: min(290px, 70vw); transform: translate(-50%, 8px); padding: 1rem 1.1rem; border-radius: 14px; background: rgba(14, 24, 32, .92); border: 1px solid rgba(241, 209, 138, .3); box-shadow: 0 20px 40px rgba(0,0,0,.5); font: 400 .95rem/1.45 var(--f-body); color: rgba(239, 233, 217, .85); opacity: 0; visibility: hidden; transition: opacity .3s, transform .35s var(--ease), visibility .3s; pointer-events: none; text-align: left; }
.knl-star__card strong { display: block; font: 500 1.05rem/1.25 var(--f-display); color: var(--gold-3); margin-bottom: .35rem; }
.knl-star:hover .knl-star__card, .knl-star:focus-visible .knl-star__card { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
.knl-star.is-right .knl-star__card { left: auto; right: -20px; transform: translate(0, 8px); }
.knl-star.is-right:hover .knl-star__card { transform: translate(0, 0); }
.knl-star.is-low .knl-star__card { top: auto; bottom: calc(100% + 10px); }
.knl-constellation__more { text-align: center; margin: 2rem 0 0; }
.knl-constellation .knl-btn--ghost { color: #efe9d9; }
.knl-constellation .knl-btn--ghost:hover { background: #efe9d9; color: #0b1520; }
@media (max-width: 700px) {
	.knl-constellation__field { height: auto; display: flex; flex-wrap: wrap; gap: 1.2rem 1.6rem; justify-content: center; padding: 1rem 0; }
	.knl-constellation__lines { display: none; }
	.knl-star { position: static; transform: none; flex-direction: row; }
	.knl-star__card { display: none; }
}

/* ───────────── 10. Το ποτάμι του χρόνου ───────────── */
.knl-river-time { padding: clamp(70px, 9vw, 130px) 0 clamp(50px, 6vw, 90px); overflow: hidden; }
.knl-river-time__nav { display: flex; gap: .5rem; }
.knl-river-time__track { position: relative; overflow-x: auto; overflow-y: hidden; padding: 30px 0 40px; cursor: grab; scrollbar-width: thin; scrollbar-color: var(--gold) transparent; outline: none; }
.knl-river-time__track.is-dragging { cursor: grabbing; }
.knl-river-time__track::-webkit-scrollbar { height: 6px; }
.knl-river-time__track::-webkit-scrollbar-thumb { background: var(--gold); border-radius: 3px; }
.knl-river-time__water { position: absolute; left: 0; top: 0; height: 100%; pointer-events: none; overflow: visible; }
.knl-river-time__water path { fill: none; stroke: color-mix(in srgb, var(--river) 35%, transparent); stroke-width: 26; stroke-linecap: round; }
.knl-river-time__water path.is-flow { stroke: var(--river-2); stroke-width: 2.5; stroke-dasharray: 3 22; animation: knl-flow 1.4s linear infinite; opacity: .9; }
.knl-river-time__years { position: relative; list-style: none; margin: 0; padding: 0 calc((100vw - min(100vw - 2 * var(--gutter), var(--wrap))) / 2); display: flex; gap: 0; min-height: 370px; width: max-content; }
.knl-year { position: relative; width: 190px; flex: none; }
.knl-year:nth-child(odd) { padding-top: 0; }
.knl-year__stone {
	position: absolute; left: 50%; top: var(--ty, 180px); transform: translate(-50%, -50%); border: 0; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: .15rem;
	width: calc(64px + var(--n) * 1.3px); height: calc(64px + var(--n) * 1.3px); border-radius: 50% 46% 52% 48% / 48% 52% 46% 50%; background: var(--card); color: var(--ink); justify-content: center;
	box-shadow: var(--shadow), inset 0 -6px 12px rgba(0, 0, 0, .06); border: 1px solid var(--line); transition: transform .5s var(--ease), background .3s, box-shadow .3s; z-index: 2;
}
.knl-year__stone:hover, .knl-year__stone[aria-expanded="true"] { transform: translate(-50%, -50%) scale(1.12); background: var(--forest); color: #fff; box-shadow: var(--shadow-lg); }
[data-theme="dark"] .knl-year__stone:hover, [data-theme="dark"] .knl-year__stone[aria-expanded="true"] { color: #0e1714; }
.knl-year.is-milestone .knl-year__stone { background: linear-gradient(135deg, #f1d18a, #c8923a); color: #1f160a; border-color: transparent; }
.knl-year__y { font: italic 500 1.35rem/1 var(--f-display); }
.knl-year__c { font: 600 .6rem/1 var(--f-ui); letter-spacing: .08em; text-transform: uppercase; opacity: .7; }
.knl-year__panel { display: none; }
.knl-river-time__detail { margin-top: .5rem; min-height: 120px; padding: clamp(20px, 3vw, 34px); border-radius: var(--radius); background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow); display: grid; grid-template-columns: auto 1fr; gap: 1rem clamp(20px, 4vw, 50px); align-items: start; }
.knl-river-time__detail:empty { display: none; }
.knl-river-time__detail.is-new > * { animation: knl-rise .5s var(--ease); }
.knl-river-time__detail h3 { font: italic 300 clamp(3rem, 7vw, 5.5rem)/.9 var(--f-display); color: var(--gold); margin: 0; }
.knl-river-time__detail h3 small { display: block; font: 600 .7rem var(--f-ui); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3); font-style: normal; margin-top: .6rem; }
.knl-river-time__detail ul { columns: 2 260px; column-gap: 2.4rem; }
.knl-river-time__detail li { break-inside: avoid; margin-bottom: .7rem; }
@media (max-width: 640px) { .knl-river-time__detail { grid-template-columns: 1fr; } }
.knl-river-time__detail ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .55rem; }
.knl-river-time__detail li { display: flex; flex-direction: column; font-size: .98rem; line-height: 1.3; }
.knl-river-time__detail a { color: var(--ink); text-decoration: none; }
.knl-river-time__detail a:hover { color: var(--forest-2); text-decoration: underline; }
.knl-river-time__detail li small { font: 600 .62rem var(--f-ui); letter-spacing: .1em; text-transform: uppercase; color: var(--gold); margin-top: .15rem; }
.knl-year__milestone { font: italic 400 1.05rem/1.4 var(--f-display); color: var(--chestnut); margin: 0 0 .6rem; }
[data-theme="dark"] .knl-year__milestone { color: var(--gold-3); }
.knl-year__more { margin: .7rem 0 0; font: 500 .82rem var(--f-ui); color: var(--ink-3); }

/* ───────────── 11. Οικογένεια: χαρές & μνήμη ───────────── */
.knl-family { padding: clamp(40px, 6vw, 80px) 0 clamp(70px, 9vw, 120px); }
.knl-family__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(18px, 2.4vw, 30px); }
.knl-family__joy, .knl-family__memory { position: relative; border-radius: 26px; padding: clamp(28px, 4vw, 54px); overflow: hidden; }
.knl-family__joy { background: linear-gradient(160deg, #fbf3df, #f3e3c0); color: #2b2215; }
.knl-family__joy::after { content: ""; position: absolute; right: -60px; top: -60px; width: 240px; height: 240px; border-radius: 50%; background: radial-gradient(circle, rgba(217, 168, 79, .45), transparent 70%); }
.knl-family__memory { background: linear-gradient(170deg, #1a1f24, #0e1215); color: #e9e2d2; }
.knl-family__memory .knl-eyebrow { color: #d9b877; }
.knl-family__joy .knl-eyebrow { color: #a2702a; }
.knl-family__intro { color: #5a4a31; }
.knl-family__list { list-style: none; margin: 1.2rem 0 1.6rem; padding: 0; }
.knl-family__list li + li { border-top: 1px solid rgba(128, 110, 80, .22); }
.knl-family__list a { display: flex; flex-direction: column; gap: .2rem; padding: .85rem 0; color: inherit; text-decoration: none; font: 400 1.15rem/1.35 var(--f-display); transition: padding .3s var(--ease), color .3s; }
.knl-family__list a:hover { padding-left: .6rem; color: var(--gold); }
.knl-family__joy .knl-family__list a:hover { color: #8a5a17; }
.knl-family__list time { font: 500 .78rem var(--f-ui); opacity: .6; }
.knl-family__tag { font: 600 .62rem var(--f-ui); letter-spacing: .14em; text-transform: uppercase; color: #a2702a; }
.knl-family__joy .knl-more { color: #8a5a17; }
.knl-family__memory .knl-more { color: #d9b877; }
.knl-candle { position: absolute; right: clamp(26px, 4vw, 54px); top: clamp(26px, 4vw, 50px); width: 30px; height: 110px; }
.knl-candle__body { position: absolute; bottom: 0; left: 5px; width: 20px; height: 70px; border-radius: 4px 4px 2px 2px; background: linear-gradient(90deg, #d8cdb3, #f6efdd 40%, #cbbd9d); }
.knl-candle__flame { position: absolute; bottom: 72px; left: 9px; width: 12px; height: 26px; border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; background: radial-gradient(ellipse at 50% 80%, #fff 0 15%, #ffe39a 35%, #ff9b3d 70%, transparent 72%); transform-origin: 50% 100%; animation: knl-flame 2.6s ease-in-out infinite; }
.knl-candle__glow { position: absolute; bottom: 50px; left: -45px; width: 120px; height: 120px; border-radius: 50%; background: radial-gradient(circle, rgba(255, 190, 90, .35), transparent 65%); animation: knl-glowpulse 2.6s ease-in-out infinite; }
@media (max-width: 860px) { .knl-family__grid { grid-template-columns: 1fr; } }

/* ───────────── 12. Φωτογραφίες: τοίχος με polaroid ───────────── */
.knl-photos { padding: clamp(40px, 6vw, 80px) 0 clamp(80px, 10vw, 140px); background: var(--paper-2); overflow: hidden; }
.knl-photos__wall { display: flex; gap: clamp(18px, 2.4vw, 34px); overflow-x: auto; padding: 30px max(var(--gutter), calc((100vw - var(--wrap)) / 2)) 40px; scrollbar-width: none; cursor: grab; scroll-snap-type: x proximity; }
.knl-photos__wall::-webkit-scrollbar { display: none; }
.knl-photos__wall.is-dragging { cursor: grabbing; scroll-snap-type: none; }
.knl-polaroid { flex: none; width: clamp(220px, 24vw, 300px); padding: 12px 12px 18px; background: #fffdf7; border-radius: 4px; color: #2a2a26; text-decoration: none; box-shadow: 0 2px 4px rgba(0,0,0,.08), 0 20px 30px -12px rgba(0,0,0,.35); transform: rotate(var(--r)); transition: transform .5s var(--ease), box-shadow .5s; scroll-snap-align: center; user-select: none; }
.knl-polaroid:nth-child(even) { margin-top: 30px; }
.knl-polaroid:hover { transform: rotate(0) translateY(-10px) scale(1.03); box-shadow: 0 4px 8px rgba(0,0,0,.1), 0 40px 60px -20px rgba(0,0,0,.45); color: #2a2a26; z-index: 2; }
.knl-polaroid__img { display: block; aspect-ratio: 1; overflow: hidden; background: #ddd4c2; }
.knl-polaroid__img img { width: 100%; height: 100%; object-fit: cover; filter: sepia(.18) saturate(.95); transition: filter .6s; pointer-events: none; }
.knl-polaroid:hover img { filter: none; }
.knl-polaroid__cap { display: flex; flex-direction: column; padding: .8rem .2rem 0; font: italic 400 1.15rem/1.25 var(--f-display); }
.knl-polaroid__cap small { font: 600 .66rem var(--f-ui); letter-spacing: .12em; text-transform: uppercase; color: #8a7a5c; font-style: normal; margin-top: .35rem; }

/* ───────────── 13. Σήμερα: καιρός, εορτολόγιο, συμβουλές ───────────── */
.knl-today { padding: clamp(70px, 9vw, 120px) 0; }
.knl-today__grid { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: clamp(18px, 2.4vw, 30px); align-items: start; }
.knl-today__grid > div { background: var(--card); border-radius: var(--radius); border: 1px solid var(--line); padding: clamp(22px, 3vw, 34px); box-shadow: var(--shadow); }
.knl-forecast { list-style: none; margin: 1rem 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); gap: .4rem; }
.knl-forecast li { display: flex; flex-direction: column; align-items: center; gap: .3rem; padding: .8rem .2rem; border-radius: 14px; background: var(--paper); text-align: center; }
.knl-forecast__d { font: 600 .7rem var(--f-ui); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); }
.knl-forecast svg { width: 34px; height: 34px; }
.knl-forecast__t { font: 600 .95rem var(--f-ui); }
.knl-forecast__t small { color: var(--ink-3); font-weight: 500; }
.knl-forecast__loading { grid-column: 1 / -1; color: var(--ink-3); font: 500 .9rem var(--f-ui); }
.knl-today__src { font: 500 .75rem var(--f-ui); color: var(--ink-3); margin: 0; }
.knl-advice { display: block; padding: 1rem 0; text-decoration: none; color: var(--ink); border-top: 1px solid var(--line); }
.knl-advice:first-of-type { border-top: 0; padding-top: .2rem; }
.knl-advice__label { display: block; font: 500 1.35rem/1.2 var(--f-display); }
.knl-advice__title { display: block; color: var(--ink-2); font-size: 1rem; margin-top: .3rem; }
.knl-advice__count { display: block; font: 600 .78rem var(--f-ui); color: var(--gold); margin-top: .4rem; }
.knl-advice:hover .knl-advice__label { color: var(--forest-2); }
@media (max-width: 1000px) { .knl-today__grid { grid-template-columns: 1fr 1fr; } .knl-today__weather { grid-column: 1 / -1; } }
@media (max-width: 640px) { .knl-today__grid { grid-template-columns: 1fr; } .knl-forecast { grid-template-columns: repeat(5, minmax(0, 1fr)); } .knl-forecast li { padding: .6rem 0; } .knl-forecast svg { width: 26px; height: 26px; } }

/* εορτολόγιο gkpc: χρώματα του site */
.geort { --geort-accent: var(--forest-2); --geort-ink: var(--ink); --geort-muted: var(--ink-3); --geort-bg: transparent; --geort-line: var(--line); --geort-gold: var(--gold); }
.gnist { --gnist-accent: var(--forest-2); --gnist-ink: var(--ink); --gnist-muted: var(--ink-3); }

/* ───────────── 14. Σύνδεσμοι ───────────── */
.knl-links { padding: 0 0 clamp(80px, 10vw, 140px); }
.knl-links__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(14px, 2vw, 24px); }
.knl-linkcard { position: relative; display: flex; align-items: flex-end; min-height: 260px; border-radius: var(--radius); overflow: hidden; color: #fff; text-decoration: none; isolation: isolate; box-shadow: var(--shadow); }
.knl-linkcard img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform 1.2s var(--ease); }
.knl-linkcard::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, transparent 30%, rgba(5, 15, 12, .85)); }
.knl-linkcard:hover { color: #fff; }
.knl-linkcard:hover img { transform: scale(1.07); }
.knl-linkcard > span:last-child { padding: 1.4rem; font: 500 1.35rem/1.2 var(--f-display); display: flex; flex-direction: column; gap: .35rem; }
.knl-linkcard small { font: 600 .66rem var(--f-ui); letter-spacing: .16em; text-transform: uppercase; color: var(--gold-3); }
.knl-linkcard--gold { background: linear-gradient(150deg, #1f4a3c, #0d231d); }
.knl-linkcard--gold::before { display: none; }
.knl-linkcard__emblem { position: absolute; top: 1.4rem; left: 1.4rem; color: var(--gold-3); }
.knl-linkcard__emblem .knl-logo { width: 70px; height: 70px; }
@media (max-width: 1000px) { .knl-links__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .knl-links__grid { grid-template-columns: 1fr; } .knl-linkcard { min-height: 200px; } }

/* ───────────── 15. Υποσέλιδο ───────────── */
.knl-footer { position: relative; margin-top: 60px; background: #0d231d; color: #d9dccf; padding-top: 70px; }
.knl-footer__ridge { position: absolute; left: 0; right: 0; top: -59px; width: 100%; height: 60px; fill: #0d231d; }
.knl-footer__grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.1fr; gap: clamp(28px, 4vw, 60px); padding-bottom: 50px; }
.knl-brand--footer { color: #f5efe0; }
.knl-footer__poem { font: italic 400 1.15rem/1.5 var(--f-display); color: #e9dcb8; margin: 1.4rem 0 .8rem; max-width: 36ch; }
.knl-footer__org { font: 500 .85rem var(--f-ui); color: rgba(217, 220, 207, .65); }
.knl-footer__actions { display: flex; gap: .6rem; align-items: center; }
.knl-social { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; border: 1px solid rgba(255, 255, 255, .2); color: #f5efe0; }
.knl-social svg { width: 18px; height: 18px; fill: currentColor; }
.knl-social:hover { background: var(--gold); color: #111; border-color: var(--gold); }
.knl-footer__col h2 { font: 600 .72rem var(--f-ui); letter-spacing: .2em; text-transform: uppercase; color: var(--gold-2); margin: .6rem 0 1.2rem; }
.knl-footer__col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.knl-footer a { color: #d9dccf; text-decoration: none; }
.knl-footer a:hover { color: var(--gold-3); }
.knl-footer__col li a { font: 400 1.02rem var(--f-body); }
.knl-footer__where p { font-size: 1rem; }
.knl-footer__coords { font: 500 .8rem var(--f-ui); letter-spacing: .08em; color: rgba(217, 220, 207, .6); }
.knl-footer .knl-more { color: var(--gold-2); }
.knl-footer__base { border-top: 1px solid rgba(255, 255, 255, .08); padding: 1.2rem 0; font: 500 .8rem var(--f-ui); color: rgba(217, 220, 207, .6); }
.knl-footer__base .knl-wrap { display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.knl-footer__base a { color: var(--gold-2); }
@media (max-width: 1000px) { .knl-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .knl-footer__grid { grid-template-columns: 1fr; } }

.knl-totop { position: fixed; right: 18px; bottom: 18px; z-index: 40; width: 46px; height: 46px; border-radius: 50%; border: 0; background: var(--forest); color: #fff; display: grid; place-items: center; cursor: pointer; box-shadow: var(--shadow-lg); opacity: 0; transform: translateY(20px); transition: opacity .3s, transform .3s; pointer-events: none; }
.knl-totop.is-on { opacity: 1; transform: none; pointer-events: auto; }
.knl-totop svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
[data-theme="dark"] .knl-totop { color: #0e1714; }

/* ═══════════════════════════════════════════════════════════════════════
   16. Εσωτερικές σελίδες
   ═══════════════════════════════════════════════════════════════════════ */
.knl-crumbs { padding: 1rem 0 0; }
.knl-crumbs ol, .knl-crumbs ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .3rem; font: 500 .82rem var(--f-ui); color: var(--ink-3); }
.knl-crumbs li + li::before { content: "›"; margin-right: .3rem; opacity: .6; }
.knl-crumbs a { color: var(--ink-3); text-decoration: none; }
.knl-crumbs a:hover { color: var(--gold); }
.knl-crumbs .divider, .knl-crumbs .icon-location, .knl-crumbs .mod-breadcrumbs__here { display: none; }
.knl-crumbs .mod-breadcrumbs__here + li::before { display: none; }
.knl-page { padding: clamp(20px, 3vw, 40px) 0 clamp(60px, 8vw, 100px); }
.knl-page__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(30px, 4vw, 60px); }
.has-sidebar .knl-page__grid { grid-template-columns: minmax(0, 1fr) 320px; }
@media (max-width: 980px) { .has-sidebar .knl-page__grid { grid-template-columns: 1fr; } }

/* κεφαλίδα κατηγορίας */
.knl-cathead { position: relative; padding: clamp(30px, 5vw, 70px) 0 clamp(26px, 4vw, 50px); margin-bottom: clamp(20px, 3vw, 40px); border-bottom: 1px solid var(--line); overflow: hidden; }
.knl-cathead__ridge { position: absolute; right: 0; bottom: 0; width: min(60%, 700px); height: auto; opacity: .5; pointer-events: none; }
.knl-cathead__ridge path { fill: none; stroke: var(--gold); stroke-width: 1; }
.knl-cathead__ridge path + path { stroke: var(--river); stroke-dasharray: 3 6; animation: knl-flow 3s linear infinite; }
.knl-cathead h1 { font: italic 300 clamp(2.6rem, 6vw, 5rem)/1 var(--f-display); letter-spacing: -.02em; margin: 0 0 .4em; }
.knl-cathead__desc { max-width: 62ch; font-size: 1.2rem; color: var(--ink-2); }
.knl-cathead__desc p:last-child { margin: 0; }
.knl-cathead__count { font: 600 .74rem var(--f-ui); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3); }
.knl-chips { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1.4rem 0 0; padding: 0; list-style: none; }
.knl-chips a { display: inline-flex; align-items: center; gap: .5em; padding: .55em 1em; border-radius: 999px; border: 1px solid var(--line); background: var(--card); color: var(--ink); text-decoration: none; font: 500 .9rem var(--f-ui); transition: border-color .2s, background .2s, transform .2s; }
.knl-chips a:hover { border-color: var(--gold); transform: translateY(-2px); color: var(--ink); }
.knl-chips a small { color: var(--gold); font-weight: 700; }

.knl-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2.2vw, 28px); }
.knl-grid .knl-card__title { font-size: clamp(1.2rem, 1.7vw, 1.45rem); }
.knl-grid .knl-card__text { font-size: 1rem; }
.knl-grid--albums .knl-card__media { aspect-ratio: 4 / 3; }
@media (max-width: 1000px) { .knl-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .knl-grid { grid-template-columns: 1fr; } }
.knl-grid .knl-card--feature { grid-column: span 2; }
.knl-grid .knl-card--feature .knl-card__media { aspect-ratio: 16 / 8; }
@media (max-width: 600px) { .knl-grid .knl-card--feature { grid-column: auto; } }
.knl-card__badge { position: absolute; left: 12px; top: 12px; padding: .35em .75em; border-radius: 999px; background: rgba(10, 22, 18, .7); color: #fff; font: 600 .68rem var(--f-ui); letter-spacing: .08em; backdrop-filter: blur(6px); }
.knl-empty { padding: 3rem; text-align: center; border: 1px dashed var(--line); border-radius: var(--radius); color: var(--ink-3); font-style: italic; }

/* σελιδοποίηση */
.pagination, .knl-pagination ul { display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem; list-style: none; padding: 0; margin: 3rem 0 0; }
.pagination .page-link, .knl-pagination a, .knl-pagination span { display: grid; place-items: center; min-width: 44px; height: 44px; padding: 0 .9rem; border-radius: 999px; border: 1px solid var(--line); background: var(--card); color: var(--ink); text-decoration: none; font: 600 .9rem var(--f-ui); }
.pagination .active .page-link, .pagination .page-link[aria-current] { background: var(--forest); color: #fff; border-color: var(--forest); }
.pagination .disabled .page-link { opacity: .4; }
.pagination .page-link:hover { border-color: var(--gold); }
.com-content-category-blog__counter, .counter { text-align: center; font: 500 .85rem var(--f-ui); color: var(--ink-3); margin-top: 1rem; }
.pagination .icon-angle-left::before { content: "‹"; } .pagination .icon-angle-right::before { content: "›"; }
.pagination .icon-angle-double-left::before { content: "«"; } .pagination .icon-angle-double-right::before { content: "»"; }

/* ───────────── 17. Άρθρο: σελίδα ανάγνωσης ───────────── */
.knl-article { max-width: 780px; margin-inline: auto; }
.knl-article__head { text-align: center; padding: clamp(20px, 4vw, 50px) 0 clamp(20px, 3vw, 36px); }
.knl-article__cat { display: inline-flex; font: 600 .74rem var(--f-ui); letter-spacing: .2em; text-transform: uppercase; color: var(--gold); text-decoration: none; padding: .5em 1em; border: 1px solid color-mix(in srgb, var(--gold) 40%, transparent); border-radius: 999px; }
.knl-article__title { font: 400 clamp(2.1rem, 5vw, 3.6rem)/1.1 var(--f-display); margin: 1.2rem 0 1rem; letter-spacing: -.015em; }
.knl-article__meta { display: flex; justify-content: center; flex-wrap: wrap; gap: .4rem 1.2rem; font: 500 .85rem var(--f-ui); color: var(--ink-3); }
.knl-article__meta span { display: inline-flex; align-items: center; gap: .4em; }
.knl-article__meta svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.knl-article__divider { display: flex; justify-content: center; margin: 1.6rem 0 0; color: var(--gold); }
.knl-article__divider svg { width: 140px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.2; }
.knl-article__hero { margin: 0 calc(50% - min(50vw - var(--gutter), 560px)) clamp(30px, 4vw, 50px); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-lg); }
.knl-article__hero img { width: 100%; max-height: 72vh; object-fit: cover; display: block; }
.knl-prose { font-size: clamp(1.1rem, 1.35vw, 1.24rem); line-height: 1.78; color: var(--ink); overflow-wrap: break-word; }
.knl-prose > p.knl-dropcap::first-letter { float: left; font: italic 400 4.3em/.8 var(--f-display); margin: .08em .12em 0 -.02em; color: var(--gold); }
.knl-prose h2, .knl-prose h3, .knl-prose h4 { margin: 1.8em 0 .6em; }
.knl-prose h2 { font-size: 1.9rem; } .knl-prose h3 { font-size: 1.5rem; }
.knl-prose img { max-width: 100%; height: auto; border-radius: 12px; display: block; margin: 1.6em auto; box-shadow: var(--shadow); cursor: zoom-in; }
.knl-prose img.float-left { float: left; margin: .3em 1.4em 1em 0; max-width: 45%; }
.knl-prose img.float-right { float: right; margin: .3em 0 1em 1.4em; max-width: 45%; }
.knl-prose p img { display: inline-block; margin: .6em .3em; }
.knl-prose p:has(> img:only-child) img, .knl-prose p:has(> a:only-child > img) img { display: block; margin: 1.6em auto; }
.knl-prose blockquote { margin: 2em 0; padding: 1.2em 1.6em; border-left: 3px solid var(--gold); background: var(--paper-2); border-radius: 0 14px 14px 0; font: italic 400 1.2em/1.6 var(--f-display); }
.knl-prose ul, .knl-prose ol { padding-left: 1.3em; }
.knl-prose li { margin: .3em 0; }
.knl-prose a { color: var(--forest-2); }
.knl-prose hr { border: 0; height: 1px; background: var(--line); margin: 2.4em 0; }
.knl-prose strong { font-weight: 700; }
.knl-table-wrap { overflow-x: auto; margin: 1.6em 0; border-radius: 12px; border: 1px solid var(--line); }
.knl-table { width: 100%; border-collapse: collapse; font-size: .95em; }
.knl-table td, .knl-table th { padding: .6em .8em; border-bottom: 1px solid var(--line); vertical-align: top; }
.knl-table tr:nth-child(even) td { background: color-mix(in srgb, var(--paper-2) 50%, transparent); }
.knl-embed { position: relative; aspect-ratio: 16 / 9; margin: 1.8em 0; border-radius: 14px; overflow: hidden; box-shadow: var(--shadow-lg); background: #000; }
.knl-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.knl-yt { position: relative; display: block; aspect-ratio: 16 / 9; margin: 1.8em 0; border-radius: 14px; overflow: hidden; background: #000 center / cover no-repeat; cursor: pointer; border: 0; width: 100%; box-shadow: var(--shadow-lg); }
.knl-yt::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 50%, rgba(0,0,0,.6)); }
.knl-yt::after { content: ""; position: absolute; left: 50%; top: 50%; width: 76px; height: 76px; margin: -38px 0 0 -38px; border-radius: 50%; background: rgba(184, 132, 47, .92) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 5v14l11-7z' fill='%23fff'/%3E%3C/svg%3E") 55% 50% / 34px no-repeat; transition: transform .3s var(--ease); box-shadow: 0 10px 30px rgba(0,0,0,.4); }
.knl-yt:hover::after { transform: scale(1.1); }
.knl-yt span { position: absolute; left: 1rem; bottom: .8rem; color: #fff; font: 600 .8rem var(--f-ui); letter-spacing: .08em; z-index: 1; }

.knl-article__foot { margin-top: clamp(40px, 6vw, 70px); padding-top: 1.6rem; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; align-items: center; }
.knl-share { display: flex; gap: .5rem; align-items: center; font: 600 .74rem var(--f-ui); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3); }
.knl-share a, .knl-share button { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line); display: grid; place-items: center; color: var(--ink-2); background: none; cursor: pointer; }
.knl-share a:hover, .knl-share button:hover { border-color: var(--gold); color: var(--gold); }
.knl-share svg { width: 17px; height: 17px; fill: currentColor; }
.knl-share button.is-done { background: var(--forest); color: #fff; border-color: var(--forest); }
.knl-prevnext { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 2rem; }
.knl-prevnext a { display: flex; flex-direction: column; gap: .3rem; padding: 1.2rem 1.4rem; border-radius: 16px; border: 1px solid var(--line); background: var(--card); color: var(--ink); text-decoration: none; transition: border-color .3s, transform .3s; }
.knl-prevnext a:hover { border-color: var(--gold); transform: translateY(-3px); color: var(--ink); }
.knl-prevnext small { font: 600 .66rem var(--f-ui); letter-spacing: .16em; text-transform: uppercase; color: var(--gold); }
.knl-prevnext span { font: 500 1.1rem/1.3 var(--f-display); }
.knl-prevnext .is-next { text-align: right; grid-column: 2; }
.knl-related { max-width: 1100px; margin: clamp(60px, 8vw, 100px) auto 0; }
.knl-related h2 { font: italic 400 clamp(1.8rem, 3vw, 2.4rem) var(--f-display); text-align: center; margin-bottom: 1.6rem; }
@media (max-width: 600px) { .knl-prevnext { grid-template-columns: 1fr; } .knl-prevnext .is-next { grid-column: auto; } }

/* ───────────── 18. Φόρμες, μηνύματα, αναζήτηση, επικοινωνία ───────────── */
input[type="text"], input[type="email"], input[type="search"], input[type="tel"], input[type="password"], textarea, select, .form-control, .form-select {
	width: 100%; font: 400 1.05rem var(--f-body); padding: .8rem 1rem; border-radius: 12px; border: 1px solid var(--line); background: var(--card); color: var(--ink); transition: border-color .2s, box-shadow .2s;
}
input:focus, textarea:focus, select:focus, .form-control:focus { outline: 0; border-color: var(--gold); box-shadow: 0 0 0 4px color-mix(in srgb, var(--gold) 20%, transparent); }
label, .form-label, .control-label label { font: 600 .85rem var(--f-ui); color: var(--ink-2); display: inline-block; margin-bottom: .35rem; }
.control-group, .mb-3 { margin-bottom: 1.1rem; }
.btn, button.validate, [type="submit"].btn { display: inline-flex; align-items: center; gap: .5em; padding: .85em 1.5em; border-radius: 999px; border: 0; cursor: pointer; font: 600 .95rem var(--f-ui); background: var(--forest); color: #fff; transition: transform .2s, background .2s; text-decoration: none; }
.btn:hover { transform: translateY(-2px); background: var(--forest-2); color: #fff; }
.btn-secondary { background: var(--paper-3); color: var(--ink); }
[data-theme="dark"] .btn { color: #0e1714; }
.star, .form-control-feedback, .invalid-feedback { color: var(--rose); }
joomla-alert, .alert { display: block; padding: 1rem 1.2rem; border-radius: 14px; margin: 0 0 1.4rem; border: 1px solid var(--line); background: var(--card); font: 500 .95rem var(--f-ui); }
joomla-alert[type="success"], .alert-success { border-color: #6aa77f; background: color-mix(in srgb, #6aa77f 12%, var(--card)); }
joomla-alert[type="danger"], joomla-alert[type="error"], .alert-danger { border-color: var(--rose); background: color-mix(in srgb, var(--rose) 10%, var(--card)); }
joomla-alert[type="warning"], .alert-warning { border-color: var(--gold); background: color-mix(in srgb, var(--gold) 10%, var(--card)); }

.com-finder { max-width: 860px; margin: 0 auto; }
.com-finder__form, #finder-search { margin-bottom: 2rem; }
.com-finder .form-inline, #finder-search .input-group { display: flex; gap: .5rem; }
.com-finder .input-group .btn { flex: none; }
#search-results-header, .com-finder__explained { color: var(--ink-3); font: 500 .95rem var(--f-ui); margin-bottom: 1rem; }
.com-finder__results-list { list-style: none; padding: 0; margin: 0; }
.com-finder__results-list li, .result__item { padding: 1.3rem 0; border-bottom: 1px solid var(--line); list-style: none; }
.result__title { font: 500 1.35rem/1.3 var(--f-display); margin: 0 0 .3rem; }
.result__title a { color: var(--ink); text-decoration: none; }
.result__title a:hover { color: var(--forest-2); }
.result__description { color: var(--ink-2); margin: 0; }
.result__taxonomy, .result__date, .result__url { font: 500 .78rem var(--f-ui); color: var(--ink-3); list-style: none; padding: 0; }
.result__description mark, .highlight { background: color-mix(in srgb, var(--gold) 30%, transparent); color: inherit; padding: 0 .15em; border-radius: 3px; }
.com-finder .search-pages-counter { text-align: center; color: var(--ink-3); }
.com-finder h1 { font: italic 300 clamp(2.4rem, 5vw, 4rem)/1 var(--f-display); }

.knl-contact { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(30px, 5vw, 70px); align-items: start; }
.knl-contact__info h1 { font: italic 300 clamp(2.6rem, 6vw, 4.6rem)/1 var(--f-display); margin-bottom: .5em; }
.knl-contact__info .knl-lead { color: var(--ink-2); }
.knl-contact__card { margin-top: 1.6rem; padding: 1.4rem 1.6rem; border-radius: var(--radius); background: var(--card); border: 1px solid var(--line); }
.knl-contact__card dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: .6rem 1rem; }
.knl-contact__card dt { font: 600 .72rem var(--f-ui); letter-spacing: .14em; text-transform: uppercase; color: var(--gold); padding-top: .3em; }
.knl-contact__card dd { margin: 0; }
.knl-contact__form { background: var(--card); padding: clamp(24px, 3.5vw, 44px); border-radius: 24px; border: 1px solid var(--line); box-shadow: var(--shadow-lg); }
.knl-contact__form h2 { font: italic 400 2rem var(--f-display); }
.knl-contact__map { margin-top: 1.4rem; border-radius: var(--radius); overflow: hidden; aspect-ratio: 4 / 3; border: 1px solid var(--line); background: var(--paper-2); }
.knl-contact__map iframe { width: 100%; height: 100%; border: 0; display: block; }
.knl-contact .form-check { display: flex; gap: .6rem; align-items: flex-start; }
.knl-contact .form-check-input { width: 20px; height: 20px; margin-top: .2rem; flex: none; }
@media (max-width: 900px) { .knl-contact { grid-template-columns: 1fr; } }

/* άλμπουμ gkpc: λίγη προσαρμογή στο ύφος */
.gkpc-gallery, .gkpcalbums { --gkpc-radius: 12px; }

/* ───────────── 19. Μεγέθυνση φωτογραφιών ───────────── */
.knl-lightbox { position: fixed; inset: 0; z-index: 90; background: rgba(5, 10, 8, .94); display: grid; place-items: center; animation: knl-fade .25s; }
.knl-lightbox[hidden] { display: none; }
.knl-lightbox figure { margin: 0; max-width: 92vw; max-height: 88vh; display: flex; flex-direction: column; align-items: center; gap: .8rem; }
.knl-lightbox img { max-width: 92vw; max-height: 80vh; object-fit: contain; border-radius: 6px; box-shadow: 0 30px 80px rgba(0,0,0,.6); animation: knl-zoom .35s var(--ease); }
.knl-lightbox figcaption { color: #ddd; font: italic 400 1.05rem var(--f-display); text-align: center; }
.knl-lightbox button { position: absolute; border: 0; background: rgba(255,255,255,.08); color: #fff; width: 54px; height: 54px; border-radius: 50%; font-size: 2rem; line-height: 1; cursor: pointer; transition: background .2s; }
.knl-lightbox button:hover { background: rgba(255,255,255,.2); }
.knl-lightbox__close { top: 18px; right: 18px; }
.knl-lightbox__prev { left: 18px; top: 50%; margin-top: -27px; }
.knl-lightbox__next { right: 18px; top: 50%; margin-top: -27px; }

/* ───────────── 20. Σελίδα 404 & εκτός λειτουργίας ───────────── */
.knl-lost { min-height: 100svh; display: grid; place-items: center; text-align: center; padding: 2rem; background: linear-gradient(180deg, #0b1733, #20345c 50%, #3a4a5f); color: #f5efe0; overflow: hidden; position: relative; }
.knl-lost__mist { position: absolute; inset: 0; background: radial-gradient(60% 30% at 30% 70%, rgba(255,255,255,.18), transparent), radial-gradient(50% 25% at 70% 60%, rgba(255,255,255,.14), transparent); animation: knl-drift 20s ease-in-out infinite alternate; }
.knl-lost h1 { font: italic 300 clamp(5rem, 18vw, 12rem)/1 var(--f-display); margin: 0; background: linear-gradient(100deg, #fff6df, #f1d18a, #fff); -webkit-background-clip: text; background-clip: text; color: transparent; }
.knl-lost p { font: italic 400 clamp(1.2rem, 2.4vw, 1.7rem) var(--f-display); max-width: 30ch; margin: 1rem auto 2rem; }
.knl-lost > div { position: relative; }

/* ───────────── 21. Κινήσεις ───────────── */
@keyframes knl-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes knl-rise { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
@keyframes knl-rise-in { from { opacity: 0; transform: translate(-50%, 24px); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes knl-zoom { from { opacity: 0; transform: scale(.94); } to { opacity: 1; transform: none; } }
@keyframes knl-letter { to { opacity: 1; transform: none; filter: blur(0); } }
@keyframes knl-shimmer { from { background-position: 150% 0; } to { background-position: -150% 0; } }
@keyframes knl-flow { to { stroke-dashoffset: -40; } }
@keyframes knl-drift { from { transform: translateX(-6%); } to { transform: translateX(6%); } }
@keyframes knl-cloud { from { transform: translateX(-30vw); } to { transform: translateX(130vw); } }
@keyframes knl-twinkle { 0%, 100% { opacity: 1; } 45% { opacity: .55; } 55% { opacity: .9; } }
@keyframes knl-pulse { 50% { transform: scale(1.25); } }
@keyframes knl-scrollcue { 0% { opacity: 0; transform: translateY(0); } 30% { opacity: 1; } 100% { opacity: 0; transform: translateY(12px); } }
@keyframes knl-flame { 0%, 100% { transform: rotate(-2deg) scaleY(1); } 25% { transform: rotate(2deg) scaleY(1.08); } 50% { transform: rotate(-1deg) scaleY(.94); } 75% { transform: rotate(1.5deg) scaleY(1.04); } }
@keyframes knl-glowpulse { 0%, 100% { opacity: .8; transform: scale(1); } 50% { opacity: 1; transform: scale(1.08); } }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .001s !important; animation-iteration-count: 1 !important; transition-duration: .001s !important; scroll-behavior: auto !important; }
	.knl-hero__word span, .knl-hero__kicker, .knl-hero__sub, .knl-hero__cta, .knl-now, .knl-label { opacity: 1 !important; transform: none !important; filter: none !important; }
	.knl-now { transform: translateX(-50%) !important; }
}

@media print {
	.knl-header, .knl-footer, .knl-totop, .knl-progress, .knl-share, .knl-prevnext, .knl-related, .knl-crumbs { display: none !important; }
	body { background: #fff; color: #000; }
	body::before { display: none; }
}

/* άλμπουμ: περισσότερος χώρος για τις φωτογραφίες */
.knl-article.is-album { max-width: 1180px; }

/* ═══════════════ 22. Λεπτομέρειες για κινητά & tablet (18/09) ═══════════════ */
/* η λέξη «Κανάλια» δεν σπάει ποτέ στα δύο */
.knl-hero__word { white-space: nowrap; }
@media (max-width: 520px) {
	.knl-hero__word { font-size: clamp(3.6rem, 21vw, 5.6rem); }
	.knl-hero__sub { letter-spacing: .45em; }
	.knl-hero__kicker { font-size: .66rem; gap: .35rem 1rem; }
	.knl-hero__kicker span + span::before { margin-right: 1rem; }
}
/* οι «πόρτες» σε δύο στήλες και στο κινητό — λιγότερη κύλιση */
@media (max-width: 540px) {
	.knl-doors__grid { grid-template-columns: 1fr 1fr; gap: 10px; }
	.knl-door { min-height: 168px; padding: 16px 14px; border-radius: 16px; }
	.knl-door__icon { width: 30px; height: 30px; }
	.knl-door__count { top: 14px; right: 14px; font-size: 1.8rem; }
	.knl-door__title { font-size: 1.12rem; margin-top: 1rem; }
	.knl-door__sub { font-size: .82rem; line-height: 1.3; }
	.knl-door__arrow { display: none; }
	.knl-door::before { width: 120px; height: 160px; right: -30px; bottom: -30px; }
	.knl-sechead { margin-bottom: 24px; }
	.knl-news__list .knl-row { grid-template-columns: 76px 1fr; gap: .8rem; padding: .6rem .2rem; }
	.knl-row__media { width: 76px; }
	.knl-row__title { font-size: 1.02rem; }
	.knl-card__meta { letter-spacing: .08em; }
	.knl-stats dt { font-size: 2.3rem; }
	.knl-family__joy, .knl-family__memory { border-radius: 20px; padding: 26px 20px; }
	.knl-candle { transform: scale(.75); transform-origin: top right; }
	.knl-polaroid { width: 200px; }
	.knl-article__title { font-size: 1.9rem; }
	.knl-prose { font-size: 1.08rem; }
	.knl-prose img.float-left, .knl-prose img.float-right { float: none; max-width: 100%; margin: 1.2em auto; }
	.knl-share { flex-wrap: wrap; }
	.knl-search { padding-top: 10vh; }
	.knl-search__panel { padding: 1.4rem 1.1rem 1rem; border-radius: 18px; }
	.knl-search__row { flex-direction: column; }
	.knl-search__row button { padding: .9rem; }
	.knl-footer { padding-top: 50px; }
	.knl-footer__base .knl-wrap { flex-direction: column; gap: .4rem; }
	.knl-contact__card dl { grid-template-columns: 1fr; gap: .1rem; }
	.knl-contact__card dd { margin-bottom: .6rem; }
}
/* tablet: το μενού με τα πάνελ ανοίγει σωστά, οι σημερινές κάρτες σε δύο στήλες */
@media (min-width: 541px) and (max-width: 900px) {
	.knl-grid { grid-template-columns: 1fr 1fr; }
	.knl-grid .knl-card--feature { grid-column: 1 / -1; }
}
@media (max-width: 1239px) {
	.knl-nav .knl-menu__panel ul { padding-left: .4rem; }
	.knl-nav .knl-menu__panel a { padding: .7rem .6rem; font-size: 1rem; }
}

/* το κουμπί «Ρυθμίσεις cookies»: στο κινητό μόνο το εικονίδιο, για να μη σκεπάζει κουμπιά */
@media (max-width: 700px) {
	#cc-root .cc-fab { font-size: 0; gap: 0; padding: 10px; border-radius: 50%; left: 12px; opacity: .92; }
	#cc-root .cc-fab svg { width: 20px; height: 20px; }
	#cc-root .cc-banner { padding: 16px 16px 14px; bottom: 10px; width: calc(100% - 20px); }
	#cc-root .cc-banner h2 { font-size: 16px; }
	#cc-root .cc-banner p { font-size: 13px; margin-bottom: 12px; }
	#cc-root .cc-actions { gap: 8px; }
	#cc-root .cc-btn { padding: 10px 14px; flex: 1 1 auto; }
	.knl-totop { right: 12px; bottom: 12px; width: 42px; height: 42px; }
}
/* επικοινωνία: τα κελιά του πλέγματος να μπορούν να στενέψουν */
.knl-contact > *, .knl-page__grid > *, .knl-news__grid > *, .knl-today__grid > *, .knl-welcome__grid > * { min-width: 0; }
.knl-contact__form input, .knl-contact__form textarea, .knl-contact__form select { max-width: 100%; }
.knl-contact__form .form-control, .knl-contact__form .controls { min-width: 0; }
@media (max-width: 540px) { .knl-contact__form { padding: 20px 16px; border-radius: 18px; } }
/* laptop: το πλήρες μενού πιο σφιχτό, για να χωρά χωρίς να σπρώχνει τη σελίδα */
@media (min-width: 1240px) and (max-width: 1520px) {
	.knl-header__inner { gap: 1rem; }
	.knl-menu > li > a, .knl-menu > li > button, .knl-menu > li > span { padding: .55rem .6rem; font-size: .88rem; }
	.knl-brand__sub { letter-spacing: .14em; }
}
.knl-header__inner { min-width: 0; }
