/* ==========================================================================
   Golfeen.fi: components/bundle.css
   Kaikkien komponenttien, blokkityylien ja blokkimallien tyylit yhdessä.
   Lataa järjestyksessä: fonts/fonts.css, tokens.css, components/bundle.css.
   OSA 1: design systemin perusosat ja WordPressin perusblokit (.gv-content)
   OSA 2: sivupohjien osat (hero, kortit, tuotekortti, murupolku, sivutus ...)
   ========================================================================== */


/* ---------- Perusta ---------- */
.gv, .gv-content { color: var(--ink); font-family: var(--font-sans); font-size: 17px; line-height: 28px; -webkit-font-smoothing: antialiased; }
body { background: var(--surface); margin: 0; color: var(--ink); font-family: var(--font-sans); }
.gv *, .gv *::before, .gv *::after { box-sizing: border-box; }
.gv-eyebrow { display: block; font: 700 13px/16px var(--font-sans); letter-spacing: .1em; text-transform: uppercase; color: var(--forest-700); margin: 0 0 var(--space-3); }
.gv-content h1, .gv-content h2, .gv-content h3, .gv h1, .gv h2, .gv h3, .gv-h { font-family: var(--font-display); font-weight: 600; color: var(--heading); margin: 0; letter-spacing: -.02em; text-wrap: balance; }
.gv-content h1, .gv h1 { font-size: 44px; line-height: 52px; letter-spacing: -.025em; }
.gv-content h2, .gv h2 { font-size: 32px; line-height: 40px; letter-spacing: -.02em; }
.gv-content h3, .gv h3 { font-size: 24px; line-height: 32px; letter-spacing: -.015em; }
.gv-content h4, .gv h4 { font: 600 20px/28px var(--font-display); letter-spacing: -.01em; color: var(--heading); margin: 0; }
/* :where() pitää tämän nollauksen heikkona, jotta .gv-content-rytmi voittaa */
:where(.gv-content, .gv) p { margin: 0; }
.gv-lead, .gv-content .is-style-lead { font-size: 20px; line-height: 31px; color: var(--ink); }
.gv-muted { color: var(--ink-muted); }
.gv-small { font-size: 14px; line-height: 21px; }
.gv a:not([class]), .gv-content a:not([class]) { color: var(--link); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.gv a:not([class]):hover, .gv-content a:not([class]):hover { text-decoration-thickness: 2px; }
.gv :focus-visible, .gv-content :focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.gv-dark :focus-visible { outline-color: var(--focus-on-deep); }

/* Artikkelin rytmi: blokkien väli */
.gv-content > * + * { margin-top: var(--space-5); }
.gv-content > h2 { margin-top: var(--space-7); }
.gv-content > h3, .gv-content > h4 { margin-top: var(--space-6); }
.gv-content > h2 + *, .gv-content > h3 + *, .gv-content > h4 + * { margin-top: var(--space-3); }

/* ---------- Painikkeet (WP: .wp-block-button__link + tyylimuunnelmat) ---------- */
.gv-btn, .wp-block-button__link {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-height: 48px; max-width: 100%; padding: var(--space-3) var(--space-5);
  border: 2px solid transparent; border-radius: 24px;
  font: 600 16px/20px var(--font-sans); text-align: center; text-decoration: none;
  white-space: normal; overflow-wrap: anywhere; hyphens: auto;
  background: var(--action); color: var(--on-action); cursor: pointer;
  transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
.gv-btn:hover, .wp-block-button__link:hover { background: var(--action-hover); color: var(--on-action); }
.gv-btn--secondary, .is-style-outline > .wp-block-button__link { background: transparent; color: var(--action); border-color: var(--border-control); }
.gv-btn--secondary:hover, .is-style-outline > .wp-block-button__link:hover { background: var(--surface-raised); color: var(--action-hover); border-color: var(--action-hover); }
.gv-btn--affiliate, .is-style-affiliate > .wp-block-button__link { background: var(--affiliate); color: var(--on-affiliate); }
.gv-btn--affiliate:hover, .is-style-affiliate > .wp-block-button__link:hover { background: var(--affiliate-hover); color: var(--on-affiliate); }
.gv-btn--on-dark { background: var(--surface); color: var(--forest-900); }
.gv-btn--on-dark:hover { background: var(--gold-300); color: var(--forest-900); }
.gv-btn--sm { min-height: 40px; padding: var(--space-2) var(--space-4); font-size: 15px; }
.gv-btn--block { display: flex; width: 100%; }
.gv-btn .gv-i { width: 18px; height: 18px; flex: none; }
.gv-btn[disabled], .gv-btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }
.gv-btn__note { display: block; font: 400 13px/18px var(--font-sans); color: var(--ink-muted); margin-top: var(--space-2); text-align: center; }
.gv-link-arrow { display: inline-flex; align-items: center; gap: var(--space-1); font-weight: 600; color: var(--link); text-decoration: none; }
.gv-link-arrow:hover { text-decoration: underline; text-underline-offset: 3px; }
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: var(--space-3); }

/* CSS-maskatut ikonit: väri tulee currentColorista */
.gv-i { display: inline-block; width: 20px; height: 20px; background: currentColor; -webkit-mask: var(--gv-i) center / contain no-repeat; mask: var(--gv-i) center / contain no-repeat; vertical-align: middle; }

/* Ikonit CSS-maskeina: väri tulee tekstin väristä (currentColor). Lähde: assets/icons/*.svg */
.gv-i--arrow-right, .gv-ic-arrow-right { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 12h15M13.5 6l6 6-6 6'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--check, .gv-ic-check { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--chevron-down, .gv-ic-chevron-down { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--close, .gv-ic-close { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 6l12 12M18 6L6 18'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--external-link, .gv-ic-external-link { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4.5h5.5V10M19.5 4.5L11 13M17 14v4.5a1 1 0 0 1-1 1H5.5a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1H10'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--flag, .gv-ic-flag { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 21V3.5M7 4l10 3.5L7 11'%3E%3C/path%3E%3Cpath d='M4 21h8'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--golf-ball, .gv-ic-golf-ball { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='10' r='6.5'%3E%3C/circle%3E%3Cpath d='M9.5 20h5M12 16.5V20'%3E%3C/path%3E%3Ccircle cx='10' cy='8.5' r='.4'%3E%3C/circle%3E%3Ccircle cx='13.5' cy='8' r='.4'%3E%3C/circle%3E%3Ccircle cx='12' cy='11' r='.4'%3E%3C/circle%3E%3Ccircle cx='14.5' cy='11.5' r='.4'%3E%3C/circle%3E%3Ccircle cx='9.5' cy='12' r='.4'%3E%3C/circle%3E%3C/svg%3E"); }
.gv-i--info, .gv-ic-info { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='8.5'%3E%3C/circle%3E%3Cpath d='M12 11v5.5M12 7.6v.2'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--lightbulb, .gv-ic-lightbulb { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.6 10.8c.7.6 1.1 1.4 1.1 2.2V16h5v0c0-.8.4-1.6 1.1-2.2A6 6 0 0 0 12 3z'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--mail, .gv-ic-mail { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5.5' width='17' height='13' rx='1.5'%3E%3C/rect%3E%3Cpath d='M4 7l8 6 8-6'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--menu, .gv-ic-menu { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h16M4 12h16M4 17h16'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--minus, .gv-ic-minus { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--plus, .gv-ic-plus { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--search, .gv-ic-search { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.5'%3E%3C/circle%3E%3Cpath d='M16 16l4 4'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--shield-check, .gv-ic-shield-check { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7 2.8v5.4c0 4.4-3 8-7 9.8-4-1.8-7-5.4-7-9.8V5.8z'%3E%3C/path%3E%3Cpath d='M8.8 12l2.2 2.2 4.4-4.4'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--star, .gv-ic-star { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.8l2.5 5.1 5.6.8-4 3.9.9 5.6-5-2.6-5 2.6.9-5.6-4-3.9 5.6-.8z'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--tag, .gv-ic-tag { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 12.6V4.5a1 1 0 0 1 1-1h8.1l8 8a1 1 0 0 1 0 1.4l-7.7 7.7a1 1 0 0 1-1.4 0z'%3E%3C/path%3E%3Ccircle cx='8' cy='8' r='1.2'%3E%3C/circle%3E%3C/svg%3E"); }
.gv-i--trophy, .gv-ic-trophy { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 4h8v5a4 4 0 0 1-8 0V4zM8 6H4.5v1.5A3 3 0 0 0 8 10.4M16 6h3.5v1.5a3 3 0 0 1-3.5 2.9M12 13v4M8.5 20h7M9.5 17h5v3h-5z'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--arrow { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 12h15M13.5 6l6 6-6 6'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--chevron { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5l6 6 6-6'%3E%3C/path%3E%3C/svg%3E"); }
.gv-i--bulb { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.6 10.8c.7.6 1.1 1.4 1.1 2.2V16h5v0c0-.8.4-1.6 1.1-2.2A6 6 0 0 0 12 3z'%3E%3C/path%3E%3C/svg%3E"); }
:root { --gv-mask-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'%3E%3C/path%3E%3C/svg%3E"); --gv-mask-bulb: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M12 3a6 6 0 0 0-3.6 10.8c.7.6 1.1 1.4 1.1 2.2V16h5v0c0-.8.4-1.6 1.1-2.2A6 6 0 0 0 12 3z'%3E%3C/path%3E%3C/svg%3E"); --gv-mask-info: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='8.5'%3E%3C/circle%3E%3Cpath d='M12 11v5.5M12 7.6v.2'%3E%3C/path%3E%3C/svg%3E"); --gv-mask-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'%3E%3C/path%3E%3C/svg%3E"); --gv-mask-minus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'%3E%3C/path%3E%3C/svg%3E"); }

/* ---------- Lomakkeet ---------- */
.gv-field { display: grid; gap: var(--space-2); }
.gv-label { font: 600 15px/20px var(--font-sans); color: var(--ink); }
.gv-hint { font-size: 14px; line-height: 20px; color: var(--ink-muted); }
.gv-input, .gv-select, .gv-textarea {
  width: 100%; min-height: 48px; padding: var(--space-3) var(--space-4);
  font: 400 17px/22px var(--font-sans); color: var(--ink);
  background: var(--surface-raised); border: 1.5px solid var(--border-control); border-radius: var(--radius-sm);
}
.gv-input::placeholder, .gv-textarea::placeholder { color: var(--ink-muted); }
.gv-input:hover, .gv-select:hover, .gv-textarea:hover { border-color: var(--forest-700); }
.gv-input:focus-visible, .gv-select:focus-visible, .gv-textarea:focus-visible { outline: 3px solid var(--focus); outline-offset: 1px; border-color: var(--forest-900); }
.gv-textarea { min-height: 120px; resize: vertical; }
.gv-select { appearance: none; padding-right: 44px; background-image: none; }
.gv-select-wrap { position: relative; }
.gv-select-wrap .gv-i { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); pointer-events: none; color: var(--forest-700); }
.gv-field--error .gv-input { border-color: var(--negative); border-width: 2px; }
.gv-error { display: flex; gap: var(--space-1); align-items: center; font: 600 14px/20px var(--font-sans); color: var(--negative); }
.gv-check { display: flex; gap: var(--space-3); align-items: flex-start; font-size: 16px; line-height: 24px; cursor: pointer; }
.gv-check input { appearance: none; flex: none; width: 22px; height: 22px; margin: 1px 0 0; border: 1.5px solid var(--border-control); border-radius: 6px; background: var(--surface-raised); display: grid; place-content: center; cursor: pointer; }
.gv-check input[type="radio"] { border-radius: 50%; }
.gv-check input:checked { background: var(--action); border-color: var(--action); }
.gv-check input[type="checkbox"]:checked::after { content: ""; width: 14px; height: 14px; background: var(--on-action); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat; }
.gv-check input[type="radio"]:checked::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--on-action); }
.gv-check input:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.gv-newsletter { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.gv-newsletter .gv-input { flex: 1 1 220px; border-radius: 24px; }
.gv-newsletter .gv-btn { flex: 0 1 auto; }

/* ---------- Header ---------- */
.gv-header { background: var(--surface); border-bottom: 1px solid var(--border-control); }
.gv-header__inner { max-width: var(--wide-width); margin: 0 auto; padding: var(--space-4) var(--space-5); display: flex; align-items: center; gap: var(--space-6); }
.gv-wordmark { font: 700 24px/1 var(--font-display); color: var(--forest-700); text-decoration: none; letter-spacing: -.03em; white-space: nowrap; }
.gv-wordmark span { color: var(--ink); font-weight: 500; }
.gv-nav { display: flex; gap: var(--space-5); margin-left: auto; align-items: center; }
.gv-nav a { font: 500 16px/24px var(--font-sans); color: var(--ink); text-decoration: none; padding: var(--space-1) 0; border-bottom: 2px solid transparent; }
.gv-nav a:hover { border-bottom-color: var(--olive-500); }
.gv-nav a[aria-current="page"] { color: var(--forest-700); font-weight: 600; border-bottom-color: var(--forest-700); }
.gv-menu-btn { display: none; margin-left: auto; width: 48px; height: 48px; border: 1.5px solid var(--border-control); border-radius: 50%; background: var(--surface-raised); color: var(--forest-900); align-items: center; justify-content: center; cursor: pointer; }
@media (max-width: 860px) { .gv-nav, .gv-header .gv-btn { display: none; } .gv-menu-btn { display: inline-flex; } }

/* ---------- Footer ---------- */
.gv-footer { background: var(--surface-deep); color: var(--on-deep); }
.gv-footer__inner { max-width: var(--wide-width); margin: 0 auto; padding: var(--space-8) var(--space-5) var(--space-6); }
.gv-footer__grid { display: grid; grid-template-columns: 2fr repeat(3, 1fr); gap: var(--space-6); }
.gv-footer .gv-wordmark { color: var(--on-deep); }
.gv-footer .gv-wordmark span { color: var(--gold-500); }
.gv-footer h4 { font: 700 13px/16px var(--font-sans); letter-spacing: .1em; text-transform: uppercase; color: var(--gold-500); margin: 0 0 var(--space-4); }
.gv-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-2); }
.gv-footer a, .gv-footer a:not([class]) { color: var(--on-deep); text-decoration: none; }
.gv-footer a:hover, .gv-footer a:not([class]):hover { text-decoration: underline; text-underline-offset: 3px; }
.gv-footer p { color: var(--on-deep-muted); font-size: 15px; line-height: 24px; margin: var(--space-4) 0 0; max-width: 36ch; }
.gv-footer__disclosure { margin-top: var(--space-7); padding-top: var(--space-5); border-top: 1px solid var(--border-deep); display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-4); font-size: 14px; line-height: 21px; color: var(--on-deep-muted); }
.gv-footer__disclosure p { margin: 0; font-size: 14px; line-height: 21px; max-width: 70ch; }
@media (max-width: 760px) { .gv-footer__grid { grid-template-columns: 1fr 1fr; } .gv-footer__brand { grid-column: 1 / -1; } }

/* ---------- WordPress-perusblokit (.gv-content = entry-content) ---------- */
.gv-content ul:not([class]), .gv-content ol:not([class]), .gv-content .wp-block-list { padding-left: 1.4em; margin-bottom: 0; }
.gv-content li + li { margin-top: var(--space-2); }
.gv-content li::marker { color: var(--forest-700); font-weight: 700; }
.wp-block-quote { margin-left: 0; margin-right: 0; padding: var(--space-1) 0 var(--space-1) var(--space-5); border-left: 3px solid var(--forest-700); }
.wp-block-quote p { font: 500 21px/32px var(--font-display); letter-spacing: -.01em; color: var(--forest-900); }
.wp-block-quote cite { display: block; margin-top: var(--space-3); font: 600 14px/20px var(--font-sans); font-style: normal; color: var(--ink-muted); }
:where(.wp-block-image) { margin: 0; }
.wp-block-image img, .wp-block-image svg { display: block; width: 100%; height: auto; border-radius: var(--radius-md); }
.wp-element-caption, .wp-block-image figcaption { margin-top: var(--space-2); font-size: 14px; line-height: 21px; color: var(--ink-muted); }
:where(.wp-block-table) { margin: 0; }
.wp-block-table { overflow-x: auto; }
.wp-block-table table { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--surface-raised); border: 1px solid var(--border-control); border-radius: var(--radius-sm); overflow: hidden; font-size: 16px; line-height: 24px; }
.wp-block-table th { text-align: left; font-weight: 700; background: var(--surface-sage); color: var(--ink); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border-control); }
.wp-block-table td { padding: var(--space-3) var(--space-4); vertical-align: top; }
.wp-block-table tbody tr:nth-child(even) td { background: var(--surface); }
.wp-block-separator { border: 0; border-top: 1px solid var(--border-control); margin: var(--space-7) 0; }
.wp-block-separator.is-style-dots { border: 0; text-align: center; line-height: 1; }
.wp-block-separator.is-style-dots::before { content: "\00B7 \00B7 \00B7"; color: var(--ink-muted); font-size: 24px; letter-spacing: .6em; padding-left: .6em; }
.wp-block-columns { display: flex; flex-wrap: wrap; gap: var(--space-6); }
.wp-block-column { flex: 1 1 240px; min-width: 0; }
.wp-block-group.has-background, .gv-group { background: var(--surface-sage); border-radius: var(--radius-lg); padding: var(--space-6); }
.wp-block-group.is-style-card { background: var(--surface-raised); border-radius: var(--radius-lg); padding: var(--space-6); box-shadow: var(--shadow-card); }
.wp-block-group > * + * { margin-top: var(--space-3); }

/* Details = FAQ-rivi */
.wp-block-details, .gv-faq details { background: var(--surface-raised); border-radius: var(--radius-md); box-shadow: var(--shadow-card); }
.wp-block-details summary, .gv-faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); padding: var(--space-5) var(--space-5); font: 600 18px/26px var(--font-sans); color: var(--ink); border-radius: var(--radius-md); }
.wp-block-details summary::-webkit-details-marker, .gv-faq summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after, .gv-faq summary::after { content: ""; flex: none; width: 22px; height: 22px; background: var(--forest-700); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center/contain no-repeat; transition: transform .2s ease; }
.wp-block-details[open] summary::after, .gv-faq details[open] summary::after { transform: rotate(45deg); }
.wp-block-details summary:hover, .gv-faq summary:hover { color: var(--forest-700); }
.wp-block-details summary:focus-visible, .gv-faq summary:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.wp-block-details > :not(summary), .gv-faq details > :not(summary) { padding: 0 var(--space-5) var(--space-5); margin: 0; color: var(--ink); }
@media (min-width: 700px) { .wp-block-details summary, .gv-faq summary { padding: var(--space-5) var(--space-6); } .wp-block-details > :not(summary), .gv-faq details > :not(summary) { padding: 0 var(--space-6) var(--space-5); } }

/* ---------- Sisältöosa: Vinkkilaatikko ---------- */
.gv-tip { display: grid; grid-template-columns: auto 1fr; gap: var(--space-3); background: var(--surface-sage); border-radius: var(--radius-md); padding: var(--space-5); }
.gv-tip__icon { color: var(--forest-700); padding-top: 1px; }
.gv-tip__icon .gv-i { width: 24px; height: 24px; }
.gv-tip__title { font: 700 13px/16px var(--font-sans); letter-spacing: .1em; text-transform: uppercase; color: var(--forest-700); margin: 0 0 var(--space-2); }
.gv-tip p { margin: 0; }
.gv-tip p + p { margin-top: var(--space-2); }
.gv-tip--info { background: var(--surface-raised); border: 1px solid var(--border-control); }

/* ---------- Sisältöosa: Plussat ja miinukset ---------- */
.gv-proscons { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
.gv-proscons__col { background: var(--surface-raised); border-radius: var(--radius-lg); padding: var(--space-6); border: 1px solid var(--border-control); border-top-width: 4px; }
.gv-proscons__col--pros { border-top-color: var(--positive); }
.gv-proscons__col--cons { border-top-color: var(--negative); }
.gv-proscons__title { display: flex; align-items: center; gap: var(--space-2); font: 600 20px/26px var(--font-sans); margin: 0 0 var(--space-4); }
.gv-proscons__title .gv-badge-ic { display: inline-flex; }
.gv-proscons__col--pros .gv-proscons__title { color: var(--positive); }
.gv-proscons__col--cons .gv-proscons__title { color: var(--negative); }
.gv-proscons ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-3); }
.gv-proscons li { display: grid; grid-template-columns: 20px 1fr; gap: var(--space-3); font-size: 16px; line-height: 24px; }
.gv-proscons li::before { content: ""; width: 20px; height: 20px; margin-top: 2px; -webkit-mask: var(--gv-i) center/contain no-repeat; mask: var(--gv-i) center/contain no-repeat; }
.gv-proscons__col--pros li::before { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E"); background: var(--positive); }
.gv-proscons__col--cons li::before { --gv-i: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E"); background: var(--negative); }
@media (max-width: 640px) { .gv-proscons { grid-template-columns: 1fr; } .gv-proscons__col { padding: var(--space-5); } }

/* ---------- Sisältöosa: Vertailutaulukko ---------- */
.gv-compare { background: var(--surface-raised); border: 1px solid var(--border-control); border-radius: var(--radius-md); overflow: hidden; }
.gv-compare table { width: 100%; border-collapse: collapse; font-size: 16px; line-height: 22px; }
.gv-compare caption { text-align: left; padding: var(--space-4) var(--space-5); font-size: 14px; line-height: 21px; color: var(--ink-muted); caption-side: bottom; border-top: 1px solid var(--border-control); }
.gv-compare thead th { text-align: left; font: 700 13px/16px var(--font-sans); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-muted); background: var(--surface-sage); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border-control); }
.gv-compare td { padding: var(--space-4); vertical-align: middle; border-bottom: 1px solid var(--border-control); }
.gv-compare tbody tr:last-child td { border-bottom: 0; }
.gv-compare tr.is-top td { background: var(--surface); }
.gv-compare__rank { font: 700 22px/1 var(--font-display); color: var(--forest-700); width: 48px; text-align: center; }
.gv-compare__name { font-weight: 700; color: var(--ink); display: block; }
.gv-compare__meta { font-size: 14px; color: var(--ink-muted); }
.gv-compare__pick { display: inline-flex; align-items: center; gap: 4px; margin-bottom: var(--space-1); padding: 2px 10px; border-radius: var(--radius-pill); background: var(--forest-700); color: var(--on-action); font: 700 12px/18px var(--font-sans); letter-spacing: .06em; text-transform: uppercase; }
.gv-score { display: inline-grid; place-items: center; min-width: 52px; padding: 6px 10px; border-radius: var(--radius-sm); background: var(--gold-500); color: var(--forest-900); font: 700 18px/1 var(--font-sans); }
.gv-score small { display: block; font-size: 11px; font-weight: 600; margin-top: 2px; }
.gv-compare__price { font-weight: 700; white-space: nowrap; }
.gv-compare__cta { width: 180px; }
.gv-compare__cta .gv-btn { width: 100%; }
@media (max-width: 720px) {
  .gv-compare thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .gv-compare table, .gv-compare tbody, .gv-compare tr, .gv-compare td { display: block; width: 100%; }
  .gv-compare tr { display: grid; grid-template-columns: 44px 1fr auto; gap: var(--space-2) var(--space-3); padding: var(--space-4); border-bottom: 1px solid var(--border-control); }
  .gv-compare tbody tr:last-child { border-bottom: 0; }
  .gv-compare td { padding: 0; border: 0; }
  .gv-compare__rank { grid-row: span 2; text-align: left; width: auto; }
  .gv-compare td[data-label] { grid-column: 2 / -1; font-size: 15px; }
  .gv-compare td[data-label]::before { content: attr(data-label) ": "; font-weight: 600; color: var(--ink-muted); }
  .gv-compare__cta { grid-column: 1 / -1; width: auto; margin-top: var(--space-2); }
  .gv-compare tr.is-top { background: var(--surface); }
  .gv-compare tr.is-top td { background: transparent; }
  .gv-compare caption { display: block; }
}

/* ---------- Sisältöosa: FAQ ---------- */
.gv-faq { display: grid; gap: var(--space-3); }
.gv-faq__head { text-align: center; margin-bottom: var(--space-4); }

/* ---------- Sisältöosa: Toimintakehote ---------- */
.gv-cta { background: var(--surface-deep); color: var(--on-deep); border-radius: var(--radius-lg); padding: var(--space-8) var(--space-6); text-align: center; position: relative; overflow: hidden; }
.gv-cta .gv-eyebrow { color: var(--gold-500); }
.gv-cta h2 { font: 700 32px/40px var(--font-display); letter-spacing: -.02em; color: var(--on-deep); margin: 0 auto; max-width: 18ch; text-wrap: balance; }
.gv-cta p { color: var(--on-deep-muted); max-width: 52ch; margin: var(--space-4) auto 0; }
.gv-cta__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); justify-content: center; margin-top: var(--space-6); }
.gv-cta__note { font-size: 14px; line-height: 21px; margin-top: var(--space-4) !important; }
.gv-cta--light { background: var(--surface-sage); color: var(--ink); }
.gv-cta--light .gv-eyebrow { color: var(--forest-700); }
.gv-cta--light h2 { color: var(--heading); }
.gv-cta--light p { color: var(--ink-muted); }

/* ---------- Mobiilin tyyppiskaala ---------- */
@media (max-width: 640px) {
  .gv-content h1, .gv h1 { font-size: 32px; line-height: 40px; }
  .gv-content h2, .gv h2, .gv-cta h2 { font-size: 26px; line-height: 34px; }
  .gv-content h3, .gv h3 { font-size: 21px; line-height: 28px; }
  .gv-cta { padding: var(--space-7) var(--space-4); }
  .gv-tip { grid-template-columns: 1fr; }
}

/* ==========================================================================
   OSA 2: Golfeen.fi-sivupohjien osat (lisätty design systemiin handoffissa)
   Kaikki arvot tokeneista. Luokat toimivat sekä esikatseluissa että
   WordPressin blokkimarkupissa (className-kenttä tai PHP-template part).
   ========================================================================== */

/* ---------- Saavutettavuus ---------- */
.screen-reader-text, .gv-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); border: 0; white-space: nowrap; }
.gv-skip { position: absolute; left: var(--space-4); top: -100px; z-index: 100; background: var(--surface-raised); color: var(--ink); padding: var(--space-3) var(--space-4); border-radius: var(--radius-sm); box-shadow: var(--shadow-raised); font-weight: 600; }
.gv-skip:focus { top: var(--space-4); }

/* ---------- Rakenne ---------- */
.gv-wrap { max-width: var(--wide-width); margin: 0 auto; padding: 0 var(--space-5); }
.gv-narrow { max-width: var(--content-width); margin-left: auto; margin-right: auto; }
.gv-alignwide, .gv-content > .alignwide { max-width: var(--alignwide-article); margin-left: auto; margin-right: auto; }
.gv-section { padding: var(--space-8) 0; }
.gv-section--sage { background: var(--surface-sage); }
.gv-section--flush-top { padding-top: 0; }
.gv-section-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--space-3) var(--space-5); margin-bottom: var(--space-6); }
.gv-section-head > :first-child { flex: 1 1 420px; min-width: 0; }
.gv-display { font: 700 var(--fs-display)/var(--lh-display) var(--font-display); letter-spacing: -.03em; color: var(--heading); margin: 0; text-wrap: balance; }
.gv-card-title, :is(h2, h3, h4, p, span).gv-card-title { font: 600 var(--fs-h4)/var(--lh-h4) var(--font-display); letter-spacing: -.01em; color: var(--heading); margin: 0; text-wrap: balance; }
.gv-grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.gv-grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-4); }
.gv-stack { display: flex; flex-direction: column; gap: var(--space-4); }
.gv-stack > * { margin: 0; }
.gv-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.gv-meta-line { font-size: var(--fs-small); line-height: var(--lh-small); color: var(--ink-muted); margin: 0; }

/* ---------- Header: WordPress-valikko, mobiilivalikko ja työkalupaikka ---------- */
.gv-nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-5); align-items: center; }
.gv-nav li { margin: 0; }
.gv-nav .current-menu-item > a, .gv-nav .current-menu-ancestor > a { color: var(--forest-700); font-weight: 600; border-bottom-color: var(--forest-700); }
/* Paikka tuleville työkaluille (esim. teemanvaihtaja), oikealla ennen CTA:ta. Tyhjänä ei vie tilaa. */
.gv-header__tools { display: flex; align-items: center; gap: var(--space-2); }
.gv-header__tools:empty { display: none; }
.gv-menu-btn .gv-i { width: 22px; height: 22px; }
.gv-menu-btn[aria-expanded="true"] .gv-i--menu { display: none; }
.gv-menu-btn:not([aria-expanded="true"]) .gv-i--close { display: none; }
@media (max-width: 860px) {
  .gv-header__inner { flex-wrap: wrap; }
  .gv-header.is-open .gv-nav { display: block; order: 10; flex: 1 0 100%; margin: 0; padding: var(--space-2) 0 var(--space-4); border-top: 1px solid var(--border-control); }
  .gv-header.is-open .gv-nav ul, .gv-header.is-open .gv-nav { flex-direction: column; align-items: stretch; gap: 0; }
  .gv-header.is-open .gv-nav a { display: flex; align-items: center; min-height: 48px; padding: var(--space-2) 0; border-bottom: 1px solid var(--surface-sage); }
  .gv-header.is-open .gv-btn { display: flex; order: 11; flex: 1 0 100%; }
}

/* ---------- Logo (vaihtoehto tekstisanamerkille) ---------- */
.gv-logo { display: inline-flex; align-items: center; }
.gv-logo img, .custom-logo { display: block; height: 32px; width: auto; }

/* ---------- Murupolku ---------- */
.gv-crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); font-size: var(--fs-small); line-height: var(--lh-small); color: var(--ink-muted); }
.gv-crumbs li + li::before { content: "/"; margin-right: var(--space-2); color: var(--ink-muted); }
.gv-crumbs a { color: var(--link); text-decoration: underline; text-underline-offset: 3px; }

/* ---------- Sivun otsikkoalue ---------- */
.gv-pagehead { padding: var(--space-7) 0 var(--space-6); }
.gv-pagehead > * { margin: 0; }
.gv-pagehead .gv-crumbs { margin-bottom: var(--space-5); }
.gv-pagehead .gv-lead { margin-top: var(--space-4); }
.gv-pagehead h1 + .gv-lead, .gv-pagehead .gv-eyebrow + h1 { margin-top: 0; }

/* ---------- Mainoslinkki-ilmoitus (artikkelin alussa) ---------- */
.gv-disclosure { display: flex; gap: var(--space-2); align-items: flex-start; margin: var(--space-5) 0 0; padding: var(--space-3) 0; font-size: var(--fs-small); line-height: var(--lh-small); color: var(--ink-muted); border-top: 1px solid var(--border-control); border-bottom: 1px solid var(--border-control); }
.gv-disclosure .gv-i { width: 18px; height: 18px; flex: none; margin-top: 1px; color: var(--moss-600); }
.gv-disclosure a { color: var(--link); }

/* ---------- Kuva tekstipalstassa ---------- */
.gv-figure { margin: 0 auto; }
.gv-figure img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--radius-md); }
.gv-figure figcaption { margin-top: var(--space-2); font-size: var(--fs-small); line-height: var(--lh-small); color: var(--ink-muted); }

/* ---------- Hero (core/cover + kortti) ---------- */
.gv-hero, .wp-block-cover.is-style-hero { position: relative; display: flex; align-items: center; min-height: 600px; padding: 0; overflow: hidden; color: var(--ink); }
.gv-hero > img, .gv-hero > .wp-block-cover__image-background, .wp-block-cover.is-style-hero > .wp-block-cover__image-background { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.gv-hero > .wp-block-cover__background, .wp-block-cover.is-style-hero > .wp-block-cover__background { display: none; }
.gv-hero__inner, .wp-block-cover.is-style-hero > .wp-block-cover__inner-container { position: relative; z-index: 1; width: 100%; max-width: var(--wide-width); margin: 0 auto; padding: var(--space-9) var(--space-5); color: var(--ink); }
.gv-hero__card { display: flex; flex-direction: column; gap: var(--space-4); max-width: 600px; background: var(--surface-raised); border-radius: var(--radius-lg); box-shadow: var(--shadow-raised); padding: var(--space-7); }
.gv-hero__card > * { margin: 0 !important; }
.gv-hero__card .gv-search { margin-top: var(--space-2) !important; }

/* ---------- Hakulomake (oma markup ja core/search) ---------- */
.gv-search, .wp-block-search__inside-wrapper { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.gv-search .gv-input, .wp-block-search__input { flex: 1 1 240px; min-width: 0; width: auto; min-height: 48px; padding: var(--space-3) var(--space-4); font: 400 17px/22px var(--font-sans); color: var(--ink); background: var(--surface-raised); border: 1.5px solid var(--border-control); border-radius: var(--radius-sm); }
.wp-block-search__input:focus-visible { outline: 3px solid var(--focus); outline-offset: 1px; border-color: var(--forest-900); }
.wp-block-search__button { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); min-height: 48px; margin: 0; padding: var(--space-3) var(--space-5); border: 2px solid transparent; border-radius: var(--radius-button); background: var(--action); color: var(--on-action); font: 600 16px/20px var(--font-sans); white-space: normal; cursor: pointer; }
.wp-block-search__button:hover { background: var(--action-hover); }
.wp-block-search__label { font: 600 15px/20px var(--font-sans); color: var(--ink); margin-bottom: var(--space-2); display: block; }

/* ---------- Luottamusrivi ---------- */
.gv-trust { background: var(--surface); border-bottom: 1px solid var(--border-control); }
.gv-trust__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); padding-top: var(--space-6); padding-bottom: var(--space-6); }
.gv-trust__item { display: grid; grid-template-columns: 24px 1fr; gap: var(--space-3); align-items: start; margin: 0; }
.gv-trust__item .gv-i { width: 24px; height: 24px; color: var(--moss-600); margin-top: 2px; }
.gv-trust__item p { margin: 0; }

/* ---------- Kortit: yhteinen "koko kortti on linkki" -tekniikka ---------- */
/* Otsikon linkki venytetään kortin kokoiseksi (::after), jolloin kortissa on yksi linkki ja yksi tabulaattoripysähdys. */
.gv-catcard, .gv-postcard, .gv-result, .gv-feature { position: relative; }
/* !important: voittaa .gv a:not([class]) -alleviivauksen, koska otsikkolinkki on koko kortin linkki */
.gv-catcard .gv-card-title a, .gv-postcard .wp-block-post-title a, .gv-postcard .gv-card-title a, .gv-result .gv-card-title a, .gv-feature h2 a { color: inherit !important; text-decoration: none !important; }
.gv-catcard .gv-card-title a::after, .gv-postcard .wp-block-post-title a::after, .gv-postcard .gv-card-title a::after, .gv-result .gv-card-title a::after, .gv-feature h2 a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.gv-catcard:hover .gv-card-title a, .gv-postcard:hover .wp-block-post-title a, .gv-postcard:hover .gv-card-title a, .gv-result:hover .gv-card-title a, .gv-feature:hover h2 a { text-decoration: underline !important; text-underline-offset: 3px; }
.gv-catcard:focus-within, .gv-postcard:focus-within, .gv-result:focus-within, .gv-feature:focus-within { outline: 3px solid var(--focus); outline-offset: 2px; }
.gv-catcard :focus-visible, .gv-postcard :focus-visible, .gv-result :focus-visible, .gv-feature :focus-visible { outline: none; }

/* Kategoriakortti */
.gv-catcard { display: flex; flex-direction: column; gap: var(--space-2); background: var(--surface-raised); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: var(--space-6); color: var(--ink); transition: box-shadow .15s ease; }
.gv-catcard > * { margin: 0; }
.gv-catcard:hover { box-shadow: var(--shadow-raised); }
.gv-more { display: inline-flex; align-items: center; gap: var(--space-1); margin-top: auto; padding-top: var(--space-2); font-weight: 600; color: var(--link); }
.gv-more .gv-i { width: 18px; height: 18px; }

/* Artikkelikortti (core/query + post-template, tai template-parts/card-post.php) */
.wp-block-post-template.gv-grid-3, ul.gv-grid-3 { list-style: none; margin: 0; padding: 0; }
.gv-postcard { display: flex; flex-direction: column; height: 100%; background: var(--surface-raised); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); overflow: hidden; color: var(--ink); transition: box-shadow .15s ease; }
.gv-postcard:hover { box-shadow: var(--shadow-raised); }
.gv-postcard .wp-block-post-featured-image, .gv-postcard__img { margin: 0; }
.gv-postcard .wp-block-post-featured-image img, .gv-postcard__img img { display: block; width: 100%; height: 200px; object-fit: cover; }
.gv-postcard__body { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-5) var(--space-5) var(--space-6); }
.gv-postcard__body > * { margin: 0; }
.gv-postcard .wp-block-post-terms, .gv-postcard .gv-eyebrow { font: 700 13px/16px var(--font-sans); letter-spacing: .1em; text-transform: uppercase; color: var(--forest-700); margin: 0; }
.gv-postcard .wp-block-post-terms a { color: inherit; text-decoration: none; position: relative; z-index: 1; }
.gv-postcard .wp-block-post-title { font: 600 var(--fs-h4)/var(--lh-h4) var(--font-display); letter-spacing: -.01em; color: var(--heading); }
.gv-postcard .wp-block-post-date, .gv-postcard .gv-meta-line { font-size: var(--fs-small); line-height: var(--lh-small); color: var(--ink-muted); }

/* Nostettu artikkeli */
.gv-feature { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); background: var(--surface-raised); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); overflow: hidden; color: var(--ink); }
.gv-feature:hover { box-shadow: var(--shadow-raised); }
.gv-feature img { display: block; width: 100%; height: 100%; min-height: 360px; object-fit: cover; }
.gv-feature__body { display: flex; flex-direction: column; justify-content: center; gap: var(--space-3); padding: var(--space-7); }
.gv-feature__body > * { margin: 0; }
.gv-badge { display: inline-flex; align-self: flex-start; align-items: center; gap: 4px; padding: 2px 10px; border-radius: var(--radius-pill); background: var(--forest-700); color: var(--on-action); font: 700 12px/18px var(--font-sans); letter-spacing: .06em; text-transform: uppercase; }

/* ---------- Aloittelijaosio (core/media-text) ---------- */
.gv-split, .wp-block-media-text.is-style-split { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: var(--space-8); align-items: center; }
.gv-split__media img, .wp-block-media-text.is-style-split .wp-block-media-text__media img { display: block; width: 100%; height: 520px; object-fit: cover; border-radius: var(--radius-md); }
.gv-split__content, .wp-block-media-text.is-style-split .wp-block-media-text__content { display: flex; flex-direction: column; gap: var(--space-4); padding: 0; }
.gv-split__content > *, .wp-block-media-text.is-style-split .wp-block-media-text__content > * { margin: 0; }
.gv-steps { margin: 0; padding-left: 1.4em; display: grid; gap: var(--space-2); }
.gv-steps li::marker { color: var(--forest-700); font-weight: 700; }

/* ---------- Näin vertailemme -paneeli ---------- */
.gv-method { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: var(--space-7); background: var(--surface-sage); border-radius: var(--radius-lg); padding: var(--space-7); }
.gv-method__intro { display: flex; flex-direction: column; gap: var(--space-4); }
.gv-method__intro > * { margin: 0; }
.gv-checks { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-4); }
.gv-checks li { display: grid; grid-template-columns: 24px 1fr; gap: var(--space-3); margin: 0; }
.gv-checks li::before { content: ""; width: 22px; height: 22px; margin-top: 3px; background: var(--forest-700); -webkit-mask: var(--gv-mask-check) center / contain no-repeat; mask: var(--gv-mask-check) center / contain no-repeat; }
.gv-checks p { margin: 0; }

/* ---------- Sisällysluettelo ---------- */
.gv-toc { background: var(--surface-raised); border: 1px solid var(--border-control); border-radius: var(--radius-md); padding: var(--space-5); }
.gv-toc__title { font: 700 13px/16px var(--font-sans); letter-spacing: .1em; text-transform: uppercase; color: var(--forest-700); margin: 0; }
.gv-toc ol { margin: var(--space-3) 0 0; padding-left: 1.4em; display: grid; gap: var(--space-2); }
.gv-toc li { margin: 0 !important; }
.gv-toc li::marker { color: var(--forest-700); font-weight: 700; }

/* ---------- Tuotekortti ---------- */
.gv-product { display: grid; grid-template-columns: 200px 1fr; gap: var(--space-6); background: var(--surface-raised); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: var(--space-6); }
.gv-product__media { margin: 0; }
.gv-product__media img { display: block; width: 100%; aspect-ratio: 1 / 1; object-fit: contain; background: var(--surface-raised); border-radius: var(--radius-md); }
.gv-product__placeholder { display: grid; place-items: center; aspect-ratio: 1 / 1; background: var(--surface); border: 1.5px dashed var(--border-control); border-radius: var(--radius-md); padding: var(--space-3); font-size: var(--fs-small); line-height: 20px; color: var(--ink-muted); text-align: center; }
.gv-product__body { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }
.gv-product__body > * { margin: 0; }
.gv-product__top { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); }
.gv-product__buy { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3) var(--space-4); margin-top: var(--space-2); }
.gv-product__buy .gv-btn__note { margin: 0; text-align: left; }
.gv-specs { list-style: none; margin: 0; padding: 0 !important; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-3); }
.gv-specs li { margin: 0 !important; background: var(--surface); border-radius: var(--radius-sm); padding: var(--space-2) var(--space-3); font-size: var(--fs-small); line-height: 20px; }
.gv-specs span { display: block; color: var(--ink-muted); }
.gv-specs strong { display: block; font-weight: 600; }

/* ---------- Kirjoittajalaatikko ---------- */
.gv-author { display: grid; grid-template-columns: 64px 1fr; gap: var(--space-4); align-items: start; background: var(--surface-sage); border-radius: var(--radius-lg); padding: var(--space-5); }
.gv-author__photo { width: 64px; height: 64px; border-radius: var(--radius-md); object-fit: cover; display: block; }
.gv-author__placeholder { width: 64px; height: 64px; border-radius: var(--radius-md); background: var(--surface-raised); border: 1.5px dashed var(--border-control); display: grid; place-items: center; font-size: 11px; line-height: 14px; color: var(--ink-muted); text-align: center; }
.gv-author__body { display: flex; flex-direction: column; gap: var(--space-1); }
.gv-author__body > * { margin: 0; }
.gv-author__name { font-weight: 700; }

/* ---------- Rajaustagit ---------- */
.gv-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.gv-chip { display: inline-flex; align-items: center; min-height: 44px; padding: var(--space-2) var(--space-4); border: 1.5px solid var(--border-control); border-radius: var(--radius-pill); background: var(--surface-raised); color: var(--ink); font: 600 15px/20px var(--font-sans); text-decoration: none; }
.gv-chip:hover { border-color: var(--forest-700); color: var(--forest-700); }
.gv-chip[aria-current="page"] { background: var(--action); border-color: var(--action); color: var(--on-action); }

/* ---------- Sivutus (the_posts_pagination ja core/query-pagination) ---------- */
.gv-pager .nav-links, .gv-pager ul, .wp-block-query-pagination { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-2); }
.gv-pager .page-numbers, .wp-block-query-pagination .page-numbers, .wp-block-query-pagination-next, .wp-block-query-pagination-previous { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-1); min-width: 44px; min-height: 44px; padding: var(--space-2) var(--space-3); border: 1.5px solid var(--border-control); border-radius: var(--radius-sm); background: var(--surface-raised); color: var(--ink); font: 600 16px/20px var(--font-sans); text-decoration: none; }
.gv-pager a.page-numbers:hover, .wp-block-query-pagination a:hover { border-color: var(--forest-700); color: var(--forest-700); }
.gv-pager .page-numbers.current, .wp-block-query-pagination .page-numbers.current { background: var(--action); border-color: var(--action); color: var(--on-action); }
.gv-pager .page-numbers.dots { border-color: transparent; background: transparent; color: var(--ink-muted); }

/* ---------- Hakutulokset ---------- */
.gv-results-layout { display: flex; flex-wrap: wrap; gap: var(--space-7); align-items: flex-start; }
.gv-results-main { flex: 999 1 560px; min-width: 0; display: flex; flex-direction: column; gap: var(--space-5); }
.gv-results-main > p { margin: 0; }
.gv-results { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-4); }
.gv-results > li { margin: 0; }
.gv-aside { flex: 1 1 280px; display: grid; gap: var(--space-5); }
.gv-result { display: grid; grid-template-columns: 180px 1fr; gap: var(--space-5); background: var(--surface-raised); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: var(--space-4); color: var(--ink); }
.gv-result:hover { box-shadow: var(--shadow-raised); }
.gv-result img { display: block; width: 100%; height: 120px; object-fit: cover; border-radius: var(--radius-md); }
.gv-result__body { display: flex; flex-direction: column; gap: var(--space-1); padding: var(--space-1) var(--space-2) var(--space-1) 0; }
.gv-result__body > * { margin: 0; }
.gv-result .gv-eyebrow { margin: 0; }
.gv-panel { background: var(--surface-raised); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: var(--space-5); }
.gv-panel > * { margin: 0; }
.gv-linklist { list-style: none; margin: var(--space-3) 0 0 !important; padding: 0; display: grid; gap: var(--space-2); }


/* ---------- Vertailutaulukko perusblokilla: core/table + tyyli "compare" ----------
   Sarakejärjestys on kiinteä: Sija | Tuote | Arvio | Sopii | Hinta | Osta.
   Ensimmäinen rivi saa "Paras valinta" -merkin, 3. sarake arviopisteen ja
   viimeisen sarakkeen linkki affiliate-painikkeen ulkoasun. Ei omaa markupia. */
.wp-block-table.is-style-compare { overflow: hidden; background: var(--surface-raised); border: 1px solid var(--border-control); border-radius: var(--radius-md); }
.wp-block-table.is-style-compare table { border: 0; border-radius: 0; font-size: 16px; line-height: 22px; border-collapse: collapse; }
.wp-block-table.is-style-compare thead { border: 0; }
.wp-block-table.is-style-compare th { font: 700 13px/16px var(--font-sans); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-muted); background: var(--surface-sage); padding: var(--space-3) var(--space-4); border: 0; border-bottom: 1px solid var(--border-control); }
.wp-block-table.is-style-compare td { padding: var(--space-4); vertical-align: middle; border: 0; border-bottom: 1px solid var(--border-control); background: transparent !important; }
.wp-block-table.is-style-compare tbody tr:last-child td { border-bottom: 0; }
.wp-block-table.is-style-compare tbody tr:first-child td { background: var(--surface) !important; }
.wp-block-table.is-style-compare td:first-child { font: 700 22px/1 var(--font-display); color: var(--forest-700); width: 48px; text-align: center; }
.wp-block-table.is-style-compare td:nth-child(2) strong { display: block; }
.wp-block-table.is-style-compare tbody tr:first-child td:nth-child(2)::before { content: "Paras valinta"; display: inline-block; white-space: nowrap; margin-bottom: var(--space-1); padding: 2px 10px; border-radius: var(--radius-pill); background: var(--forest-700); color: var(--on-action); font: 700 12px/18px var(--font-sans); letter-spacing: .06em; text-transform: uppercase; }
.wp-block-table.is-style-compare td:nth-child(3) > * , .wp-block-table.is-style-compare td:nth-child(3) { font-weight: 700; }
.wp-block-table.is-style-compare td:nth-child(5) { font-weight: 700; }
.wp-block-table.is-style-compare td:last-child { width: 1%; }
.wp-block-table.is-style-compare td:last-child a { display: flex; align-items: center; justify-content: center; min-width: 120px; min-height: 40px; padding: var(--space-2) var(--space-4); border-radius: var(--radius-button); background: var(--affiliate); color: var(--on-affiliate); font: 600 15px/20px var(--font-sans); text-decoration: none; text-align: center; white-space: normal; }
.wp-block-table.is-style-compare td:last-child a:hover { background: var(--affiliate-hover); }
.wp-block-table.is-style-compare figcaption, .wp-block-table.is-style-compare .wp-element-caption { margin: 0; padding: var(--space-4) var(--space-5); border-top: 1px solid var(--border-control); font-size: 14px; line-height: 21px; color: var(--ink-muted); }
@media (max-width: 720px) {
  .wp-block-table.is-style-compare thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .wp-block-table.is-style-compare table, .wp-block-table.is-style-compare tbody, .wp-block-table.is-style-compare td { display: block; width: 100%; }
  .wp-block-table.is-style-compare tr { display: grid; grid-template-columns: 44px 1fr auto; gap: var(--space-2) var(--space-3); padding: var(--space-4); border-bottom: 1px solid var(--border-control); }
  .wp-block-table.is-style-compare tbody tr:first-child { background: var(--surface); }
  .wp-block-table.is-style-compare tbody tr:last-child { border-bottom: 0; }
  .wp-block-table.is-style-compare td { padding: 0; border: 0; width: auto; }
  .wp-block-table.is-style-compare td:first-child { grid-row: span 2; text-align: left; width: auto; }
  .wp-block-table.is-style-compare td:nth-child(4), .wp-block-table.is-style-compare td:nth-child(5) { grid-column: 2 / -1; font-size: 15px; }
  .wp-block-table.is-style-compare td:nth-child(4)::before { content: "Sopii: "; font-weight: 600; color: var(--ink-muted); }
  .wp-block-table.is-style-compare td:nth-child(5)::before { content: "Hinta: "; font-weight: 600; color: var(--ink-muted); }
  .wp-block-table.is-style-compare td:last-child { grid-column: 1 / -1; width: auto; margin-top: var(--space-2); }
}

/* ---------- Pienet block stylet perusblokeille ---------- */
.wp-block-list.is-style-checks { list-style: none; padding-left: 0; display: grid; gap: var(--space-3); }
.wp-block-list.is-style-checks li { display: grid; grid-template-columns: 24px 1fr; gap: var(--space-3); margin: 0; }
.wp-block-list.is-style-checks li::before { content: ""; width: 22px; height: 22px; margin-top: 3px; background: var(--forest-700); -webkit-mask: var(--gv-mask-check) center / contain no-repeat; mask: var(--gv-mask-check) center / contain no-repeat; }
.wp-block-list.is-style-specs { list-style: none; padding-left: 0 !important; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-3); }
.wp-block-list.is-style-specs li { margin: 0 !important; background: var(--surface); border-radius: var(--radius-sm); padding: var(--space-2) var(--space-3); font-size: var(--fs-small); line-height: 20px; color: var(--ink-muted); }
.wp-block-list.is-style-specs strong { display: block; color: var(--ink); font-weight: 600; }
.wp-block-paragraph.is-style-disclosure, p.is-style-disclosure { margin-top: var(--space-5); padding: var(--space-3) 0; font-size: var(--fs-small); line-height: var(--lh-small); color: var(--ink-muted); border-top: 1px solid var(--border-control); border-bottom: 1px solid var(--border-control); }
p.gv-score { display: inline-grid; margin: 0; }
@media (max-width: 640px) { .wp-block-list.is-style-specs { grid-template-columns: 1fr 1fr; } }


/* ---------- Ikonit blokkimarkupissa ilman span-elementtiä ----------
   Lisää blokille (paragraph, group, heading) luokka gv-ic-<nimi>, esim. "gv-ic-flag".
   Ikoni piirretään ::before-pseudoelementtinä vasempaan reunaan. */
[class*="gv-ic-"] { position: relative; padding-left: 36px; }
[class*="gv-ic-"]::before { content: ""; position: absolute; left: 0; top: 2px; width: 24px; height: 24px; background: var(--moss-600); -webkit-mask: var(--gv-i) center / contain no-repeat; mask: var(--gv-i) center / contain no-repeat; }
.gv-trust__item[class*="gv-ic-"] { display: block; }
/* Vinkkilaatikko ilman ikonispania (core/group): lamppu piirretään CSS:llä */
.gv-tip:not(:has(> .gv-tip__icon)) { display: block; position: relative; padding-left: calc(var(--space-5) + 36px); }
.gv-tip:not(:has(> .gv-tip__icon))::before { content: ""; position: absolute; left: var(--space-5); top: calc(var(--space-5) + 1px); width: 24px; height: 24px; background: var(--forest-700); -webkit-mask: var(--gv-mask-bulb) center / contain no-repeat; mask: var(--gv-mask-bulb) center / contain no-repeat; }
.gv-tip--info:not(:has(> .gv-tip__icon))::before { -webkit-mask-image: var(--gv-mask-info); mask-image: var(--gv-mask-info); }
.gv-tip:not(:has(> .gv-tip__icon)) > * + * { margin-top: var(--space-2); }
/* Plussat ja miinukset: otsikon ikoni CSS:llä, jos spania ei ole */
.gv-proscons__title:not(:has(.gv-i))::before { content: ""; width: 20px; height: 20px; flex: none; background: currentColor; -webkit-mask: var(--gv-mask-plus) center / contain no-repeat; mask: var(--gv-mask-plus) center / contain no-repeat; }
.gv-proscons__col--cons .gv-proscons__title:not(:has(.gv-i))::before { -webkit-mask-image: var(--gv-mask-minus); mask-image: var(--gv-mask-minus); }
@media (max-width: 640px) { .gv-tip:not(:has(> .gv-tip__icon)) { padding-left: var(--space-5); padding-top: calc(var(--space-5) + 36px); } .gv-tip:not(:has(> .gv-tip__icon))::before { top: var(--space-5); } }

/* ---------- Mobiili ja tabletti ---------- */
@media (max-width: 860px) {
  .gv-grid-3 { grid-template-columns: 1fr 1fr; }
  .gv-grid-4 { grid-template-columns: 1fr 1fr; }
  .gv-feature { grid-template-columns: 1fr; }
  .gv-feature img { min-height: 0; height: 260px; }
  .gv-split, .wp-block-media-text.is-style-split, .gv-method { grid-template-columns: 1fr; gap: var(--space-6); }
  .gv-split__media img, .wp-block-media-text.is-style-split .wp-block-media-text__media img { height: 360px; }
}
@media (max-width: 640px) {
  .gv-wrap { padding: 0 var(--space-4); }
  .gv-section { padding: var(--space-7) 0; }
  .gv-section--flush-top { padding-top: 0; }
  .gv-section-head { margin-bottom: var(--space-5); }
  .gv-pagehead { padding: var(--space-5) 0; }
  .gv-pagehead .gv-crumbs { margin-bottom: var(--space-4); }
  .gv-grid-3 { grid-template-columns: 1fr; gap: var(--space-4); }
  .gv-grid-4 { grid-template-columns: 1fr 1fr; gap: var(--space-3); }
  .gv-hero, .wp-block-cover.is-style-hero { display: block; min-height: 0 !important; }
  .gv-hero > img, .gv-hero > .wp-block-cover__image-background, .wp-block-cover.is-style-hero > .wp-block-cover__image-background { position: static; height: 260px; }
  .gv-hero__inner, .wp-block-cover.is-style-hero > .wp-block-cover__inner-container { padding: 0 var(--space-4) var(--space-6); margin-top: -48px; }
  .gv-hero__card { padding: var(--space-5); }
  .gv-search .gv-btn, .wp-block-search__button { flex: 1 1 100%; }
  .gv-trust__grid { grid-template-columns: 1fr; gap: var(--space-4); padding-top: var(--space-5); padding-bottom: var(--space-5); }
  .gv-catcard { padding: var(--space-5); }
  .gv-split__media img, .wp-block-media-text.is-style-split .wp-block-media-text__media img { height: 260px; }
  .gv-method { padding: var(--space-5); }
  .gv-feature__body { padding: var(--space-5); }
  .gv-product { grid-template-columns: 1fr; gap: var(--space-4); padding: var(--space-5); }
  .gv-product__placeholder, .gv-product__media img { aspect-ratio: auto; height: 180px; }
  .gv-product__buy .gv-btn { flex: 1 1 100%; }
  .gv-specs { grid-template-columns: 1fr 1fr; }
  .gv-result { grid-template-columns: 96px 1fr; gap: var(--space-3); padding: var(--space-3); }
  .gv-result img { height: 96px; }
}


/* ==========================================================================
   OSA 3: Golfeen-teeman lisäykset (ei designin handoffissa)
   Vain tokens.css:n muuttujia. Jokainen lisäys on kirjattu CHECKPOINT.md:hen.
   ========================================================================== */

/* Footerin sarakeotsikot ovat <h2> (designissa <h4>), jotta otsikkotasot etenevät
   järjestyksessä. Ulkoasu sama kuin .gv-footer h4. Viimeisenä, jotta voittaa .gv h2:n. */
.gv-footer h2 { font: 700 var(--fs-eyebrow)/var(--lh-eyebrow) var(--font-sans); letter-spacing: .1em; text-transform: uppercase; color: var(--gold-500); margin: 0 0 var(--space-4); text-wrap: wrap; }

/* Piilotetun skip linkin varjo ulottui sivun yläreunaan näkyviin. Varjo vain fokuksessa. */
.gv-skip:not(:focus) { box-shadow: none; }

/* Sivureuna 16 px alle 640 px:n myös headerissa ja footerissa (README: Mobiili, Sivureuna;
   Header-esikatselun mobiilinäkymä: padding 12px 16px). */
@media (max-width: 640px) {
  .gv-header__inner { padding: var(--space-3) var(--space-4); }
  .gv-footer__inner { padding-left: var(--space-4); padding-right: var(--space-4); }
}
