/* Hallivuori – ulkoasu v2 (KK Growth Lab).
   Idea: konepajan oma kieli on tekninen piirustus. Yksi rohkea elementti (työstöaluepiirros),
   kaikki muu hiljaista. Fontti Archivo (OFL), self-hosted. */

@font-face {
	font-family: "Archivo";
	src: url("fonts/archivo-wdth.woff2") format("woff2");
	font-weight: 100 900;
	font-stretch: 62% 125%;
	font-style: normal;
	font-display: swap;
}

/* ---------- Tokens ---------- */
body.hvp2 {
	--ink: #0F1A26;
	--steel: #4A5866;
	--rule: #C9D1D9;
	--ground: #F3F5F6;
	--paper: #FFFFFF;
	--accent: #0E5FAA;
	--hv-light: var(--ground);
	--hv-line: var(--rule);
	--hv-ink: var(--ink);
	--hv-text: #2E3A47;
	--hv-dark: var(--ink);
}

/* ---------- Type ---------- */
body.hvp2 .hv-section,
body.hvp2 .hv-header,
body.hvp2 .hv-footer {
	font-family: "Archivo", system-ui, sans-serif !important;
	font-stretch: 100%;
	font-feature-settings: "kern" 1;
}
body.hvp2 :is(.hv-section, .hv-header, .hv-footer) :is(h1, h2, h3, h4, p, li, a, span, strong, td, th, dt, dd, label, input, textarea, select, button, figcaption) {
	font-family: inherit !important;
}
body.hvp2 .hv-section { font-size: 1.0625rem; line-height: 1.6; }
body.hvp2 .hv-section h2 {
	font-size: clamp(1.9rem, 3.2vw, 2.7rem) !important;
	font-weight: 620 !important;
	font-stretch: 108%;
	letter-spacing: -.012em !important;
	line-height: 1.1 !important;
	text-wrap: balance;
}
body.hvp2 .hv-section h3 {
	font-size: 1.2rem !important;
	font-weight: 600 !important;
	font-stretch: 104%;
	letter-spacing: 0 !important;
}
body.hvp2 .hv-section p { text-wrap: pretty; }
body.hvp2 :is(.hv-table, .hv-stat, .hvp-dwg, .hvp-case dd, .hvp-trust__value) { font-variant-numeric: tabular-nums lining-nums; }

/* ---------- Hero ---------- */
body.hvp2 .hv-hero--home { min-height: 88vh; min-height: 88svh; }
body.hvp2 .hv-hero--sub { min-height: 60vh; min-height: 60svh; }
body.hvp2 .hv-hero h1 {
	font-size: clamp(2.3rem, 4.9vw, 4rem) !important;
	font-weight: 620 !important;
	font-stretch: 112%;
	letter-spacing: -.012em !important;
	line-height: 1.04 !important;
}
body.hvp2 .hv-hero--sub h1 { font-size: clamp(2.1rem, 4.1vw, 3.4rem) !important; }
body.hvp2 .hv-eyebrow {
	text-transform: none !important;
	letter-spacing: 0 !important;
	font-weight: 500 !important;
	font-size: 1.02rem !important;
	color: #b9c8d7 !important;
}
body.hvp2 .hv-hero .hv-lead { font-size: clamp(1.06rem, 1.35vw, 1.2rem); color: rgba(255, 255, 255, .86); max-width: 38em; }

/* ---------- Buttons and links ---------- */
body.hvp2 .hv-section .wp-block-button__link {
	border-radius: 2px !important;
	font-weight: 600 !important;
	font-stretch: 104%;
	letter-spacing: 0 !important;
	padding: 15px 24px !important;
}
body.hvp2 .hv-more a,
body.hvp2 .hvp-dwg__link {
	font-weight: 600;
	color: var(--accent);
	text-decoration: underline !important;
	text-decoration-thickness: 1px !important;
	text-underline-offset: 5px;
}
body.hvp2 :is(a, button):focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

/* ---------- Sections ---------- */
body.hvp2 .hv-section:not(.hv-hero):not(.hv-stats):not(.hvp-trust):not(.hvp-film) {
	padding-top: clamp(72px, 9vw, 128px);
	padding-bottom: clamp(72px, 9vw, 128px);
}

/* Stats bar where no drawing replaces it */
body.hvp2 .hv-stats { background: var(--ink) !important; }
body.hvp2 .hv-stat span { text-transform: none !important; letter-spacing: 0 !important; color: #a9b8c6 !important; }
body.hvp2 .hvp-dwg + .hv-stats { display: none !important; }

/* ---------- Cards: photo and text, no box ---------- */
body.hvp2 .hv-card {
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	background: transparent !important;
	overflow: visible !important;
}
body.hvp2 .hv-card figure { margin: 0 !important; }
body.hvp2 .hv-card img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 2px !important;
	display: block;
}
body.hvp2 .hv-card-body { padding: 20px 0 0 !important; background: transparent !important; }
body.hvp2 :is(.hv-media, .hv-photos, .hv-portrait) img { border-radius: 2px !important; }

/* ---------- Tables ---------- */
body.hvp2 .hv-table th {
	text-transform: none !important;
	letter-spacing: 0 !important;
	font-size: .9rem !important;
	font-weight: 600 !important;
	background: var(--ink) !important;
	color: #fff !important;
}
body.hvp2 .hv-table thead tr { background: var(--ink) !important; }

/* ---------- Plugin components in v2 voice ---------- */
body.hvp2 .hvp-trust__title { text-transform: none !important; letter-spacing: 0 !important; font-size: 1rem !important; color: var(--ink) !important; font-weight: 600 !important; }
body.hvp2 .hvp-case { border: 0 !important; border-top: 2px solid var(--ink) !important; border-radius: 0 !important; background: transparent !important; }
body.hvp2 .hvp-case__body { padding: 18px 0 0 !important; }
body.hvp2 .hvp-case__sector { text-transform: none !important; letter-spacing: 0 !important; font-size: .95rem !important; font-weight: 500 !important; color: var(--steel) !important; }
body.hvp2 .hvp-case dt { text-transform: none !important; letter-spacing: 0 !important; font-size: .9rem !important; color: var(--steel) !important; }
body.hvp2 .hvp-step__no { letter-spacing: 0 !important; font-size: .95rem !important; color: var(--accent); }
body.hvp2 .hvp-film { background: var(--ink) !important; }
body.hvp2 .hvp-film__eyebrow { text-transform: none !important; letter-spacing: 0 !important; font-size: 1rem !important; font-weight: 500 !important; color: #a9b8c6 !important; }
body.hvp2 .hvp-ph-label { text-transform: none !important; letter-spacing: 0 !important; font-size: .9rem !important; }

/* ---------- Footer ---------- */
body.hvp2 .hv-footer__title { text-transform: none !important; letter-spacing: 0 !important; font-size: 1rem !important; font-weight: 600 !important; }

/* =========================================================
 * Signature: machining envelope drawing
 * ======================================================= */
.hvp-dwg { background: var(--paper, #fff) !important; color: var(--ink, #0F1A26); }
body.hvp2 .hv-section.hvp-dwg { padding-bottom: clamp(48px, 6vw, 80px) !important; }
.hvp-dwg__head {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 16px 48px;
	flex-wrap: wrap;
	margin-bottom: clamp(32px, 4vw, 56px) !important;
}
.hvp-dwg__head h2 { margin: 0 !important; }
.hvp-dwg__head p { margin: 0 !important; max-width: 30em; color: var(--steel, #4A5866); }
.hvp-dwg__figs {
	display: grid;
	grid-template-columns: var(--hvp-ga, 470fr) var(--hvp-gb, 600fr);
	align-items: end;
	gap: 0;
}
.hvp-dwg__fig { margin: 0 !important; }
.hvp-dwg__fig svg { display: block; width: 100%; height: auto; overflow: visible; color: var(--steel, #4A5866); }
.hvp-dwg__fig figcaption { margin-top: 16px; text-wrap: balance; color: var(--steel, #4A5866); font-size: 1rem; }
.hvp-dwg__fig--a figcaption { padding-left: var(--hvp-pa, 10.64%); }
.hvp-dwg__fig--b figcaption { padding-left: var(--hvp-pb, 8.33%); }
.hvp-dwg__fig figcaption strong { color: var(--ink, #0F1A26); font-weight: 600; margin-right: 6px; }

.dw-obj { fill: none; stroke: var(--ink, #0F1A26); stroke-width: 1.8; stroke-linejoin: miter; }
.dw-dim { fill: none; stroke: currentColor; stroke-width: .9; }
.dw-cl { stroke: currentColor; stroke-width: .9; stroke-dasharray: 22 4 3 4; }
.dw-txt { fill: var(--ink, #0F1A26); font-size: 15px; font-weight: 500; font-variant-numeric: tabular-nums lining-nums; }
.dw-axt { fill: currentColor; font-size: 13px; font-weight: 500; }

.hvp-dwg__foot {
	display: flex;
	justify-content: flex-end;
	align-items: flex-end;
	gap: 20px 40px;
	flex-wrap: wrap;
	margin-top: clamp(32px, 4vw, 48px) !important;
}
.hvp-dwg__block {
	order: 2;
	margin: 0 !important;
	border: 1px solid var(--rule, #C9D1D9);
	min-width: min(380px, 100%);
	display: grid;
	grid-template-columns: auto 1fr;
}
.hvp-dwg__block > div { display: contents; }
.hvp-dwg__block dt { padding: 9px 14px; color: var(--steel, #4A5866); font-size: .92rem; border-right: 1px solid var(--rule, #C9D1D9); border-top: 1px solid var(--rule, #C9D1D9); }
.hvp-dwg__block dd { margin: 0; padding: 9px 14px; font-weight: 600; font-size: .98rem; border-top: 1px solid var(--rule, #C9D1D9); }
.hvp-dwg__block > div:first-child > * { border-top: 0; }
.hvp-dwg__link { order: 1; }

/* One orchestrated moment: the outlines draw in once, then the dimensions appear. */
html.hvp2-anim .hvp-dwg .dw-obj {
	stroke-dasharray: 1;
	stroke-dashoffset: 1;
	transition: stroke-dashoffset 1.5s cubic-bezier(.6, .05, .3, 1);
}
html.hvp2-anim .hvp-dwg .hvp-dwg__fig--b .dw-obj { transition-delay: .2s; }
html.hvp2-anim .hvp-dwg .dw-fade { opacity: 0; transition: opacity .7s ease 1.1s; }
html.hvp2-anim .hvp-dwg .hvp-dwg__fig--b .dw-fade { transition-delay: 1.3s; }
html.hvp2-anim .hvp-dwg.is-drawn .dw-obj { stroke-dashoffset: 0; }
html.hvp2-anim .hvp-dwg.is-drawn .dw-fade { opacity: 1; }

@media (max-width: 760px) {
	.hvp-dwg__figs { grid-template-columns: 1fr; gap: 40px; }
	/* keep the shared scale on mobile: turning figure is 470/600 of the milling figure */
	.hvp-dwg__fig--a { width: var(--hvp-aw, 78.33%); }
	.hvp-dwg__fig figcaption,
	.hvp-dwg__fig--a figcaption,
	.hvp-dwg__fig--b figcaption { padding-left: 0; }
	.hvp-dwg__fig figcaption strong { display: block; }
	.hvp-dwg__fig--a figcaption { width: 127.7%; }
	.hvp-dwg__block { width: 100%; }
	.dw-txt { font-size: 22px; }
	.dw-axt { font-size: 17px; }
}
@media (prefers-reduced-motion: reduce) {
	html.hvp2-anim .hvp-dwg .dw-obj { stroke-dasharray: none; stroke-dashoffset: 0; transition: none; }
	html.hvp2-anim .hvp-dwg .dw-fade { opacity: 1; transition: none; }
}

/* =========================================================
 * v2 dark: defence-grade
 * ======================================================= */
body.hvp2-dark {
	--d-base: #0B141D;
	--d-raise: #111D29;
	--d-deep: #070E15;
	--d-field: #142130;
	--d-head: #F1F4F7;
	--d-text: #B8C5D1;
	--d-mute: #8A9BAC;
	--d-rule: rgba(214, 226, 238, .14);
	--d-link: #7FB4E8;
	--hv-text: var(--d-text);
	--hv-ink: var(--d-head);
	--hv-light: var(--d-raise);
	--hv-line: var(--d-rule);
	--hv-dark: var(--d-deep);
	color-scheme: dark;
}
body.hvp2-dark,
body.hvp2-dark #page,
body.hvp2-dark .site,
body.hvp2-dark .site-content,
body.hvp2-dark #content,
body.hvp2-dark .ast-container { background-color: var(--d-base) !important; }
body.hvp2-dark ::selection { background: #0E5FAA; color: #fff; }

/* Type: larger, more confident */
body.hvp2-dark .hv-hero--home { min-height: 94vh; min-height: 94svh; }
body.hvp2-dark .hv-hero h1 { font-size: clamp(2.6rem, 5.4vw, 4.7rem) !important; font-stretch: 112%; max-width: 1080px !important; }
body.hvp2-dark .hv-hero--sub h1 { font-size: clamp(2.3rem, 4.6vw, 3.9rem) !important; }
body.hvp2-dark .hv-section:not(.hv-hero) h2 { font-size: clamp(2.1rem, 3.8vw, 3.25rem) !important; color: var(--d-head); }
body.hvp2-dark .hv-section h3 { color: var(--d-head); }
body.hvp2-dark .hv-section strong { color: var(--d-head); }

/* Links and buttons */
body.hvp2-dark .hv-section a:not(.wp-block-button__link) { color: var(--d-link) !important; }
body.hvp2-dark .hv-section .is-style-outline > .wp-block-button__link {
	color: var(--d-head) !important;
	border-color: rgba(241, 244, 247, .45) !important;
	background: transparent !important;
}
body.hvp2-dark .hv-section .is-style-outline > .wp-block-button__link:hover { background: rgba(255, 255, 255, .08) !important; }
body.hvp2-dark .hv-section .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover { background: #1670C4 !important; border-color: #1670C4 !important; }
body.hvp2-dark :is(a, button, input, textarea):focus-visible { outline-color: var(--d-link); }

/* Sections */
body.hvp2-dark .hv-light { background: var(--d-raise) !important; }
body.hvp2-dark .hv-dark,
body.hvp2-dark .hv-cta { background: var(--d-deep) !important; border-top: 1px solid var(--d-rule); }
body.hvp2-dark .hv-stats { background: var(--d-deep) !important; border-top: 1px solid var(--d-rule); border-bottom: 1px solid var(--d-rule); }

/* One photographic grade for every content image */
body.hvp2-dark :is(.hv-card, .hv-media, .hv-photos, .hvp-case) img {
	filter: grayscale(1) contrast(1.08) brightness(.9);
}
body.hvp2-dark .hv-portrait img { filter: grayscale(1) contrast(1.05); }

/* Lists, tables, forms */
body.hvp2-dark .hv-checks li { border-bottom-color: var(--d-rule) !important; color: var(--d-text); }
body.hvp2-dark .hv-table table { background: transparent !important; }
body.hvp2-dark .hv-table th { background: var(--d-deep) !important; color: var(--d-head) !important; border-color: var(--d-rule) !important; }
body.hvp2-dark .hv-table thead tr { background: var(--d-deep) !important; }
body.hvp2-dark .hv-table td { border-color: var(--d-rule) !important; color: var(--d-text); background: transparent !important; }
body.hvp2-dark .hv-table tbody tr:nth-child(even) td { background: rgba(255, 255, 255, .03) !important; }
body.hvp2-dark .hv-contact { border-bottom-color: var(--d-rule) !important; }
body.hvp2-dark .hv-section .wpcf7 label { color: var(--d-head) !important; }
body.hvp2-dark .hv-section .wpcf7 :is(input[type="text"], input[type="email"], input[type="tel"], textarea, select) {
	background: var(--d-field) !important;
	border: 1px solid rgba(214, 226, 238, .24) !important;
	color: var(--d-head) !important;
	border-radius: 2px !important;
}
body.hvp2-dark .hv-section .wpcf7 :is(input, textarea):focus { border-color: var(--d-link) !important; outline: none; }
body.hvp2-dark .hv-section .wpcf7 input[type="file"] { color: var(--d-text) !important; background: var(--d-field) !important; border: 1px dashed rgba(214, 226, 238, .3) !important; border-radius: 2px !important; padding: 12px !important; }
body.hvp2-dark .hv-section .wpcf7 input[type="file"]::file-selector-button { background: #1B2B3C; color: var(--d-head); border: 1px solid rgba(214, 226, 238, .3); border-radius: 2px; padding: 6px 12px; margin-right: 12px; cursor: pointer; }
body.hvp2-dark .hv-ph { color: #2b2300 !important; }

/* Plugin components */
body.hvp2-dark .hvp-trust { background: var(--d-raise) !important; border-bottom: 1px solid var(--d-rule); }
body.hvp2-dark .hvp-trust__title,
body.hvp2-dark .hvp-trust__label { color: var(--d-head) !important; }
body.hvp2-dark .hvp-trust__value { color: var(--d-mute) !important; }
body.hvp2-dark .hvp-trust__list li { border-left-color: var(--d-rule) !important; }
body.hvp2-dark .hvp-step { border-top-color: var(--d-rule) !important; }
body.hvp2-dark .hvp-step:first-child { border-top-color: var(--d-link) !important; }
body.hvp2-dark .hvp-step__no { color: var(--d-link) !important; }
body.hvp2-dark .hvp-step p { color: var(--d-text); }
body.hvp2-dark .hvp-case { border-top-color: var(--d-head) !important; }
body.hvp2-dark .hvp-case dl > div { border-top-color: var(--d-rule) !important; }
body.hvp2-dark .hvp-case dt,
body.hvp2-dark .hvp-case__sector { color: var(--d-mute) !important; }
body.hvp2-dark .hvp-case dd { color: var(--d-head) !important; }
body.hvp2-dark .hvp-cases__head p { color: var(--d-mute) !important; }
body.hvp2-dark .hvp-film { background: var(--d-deep) !important; border-top: 1px solid var(--d-rule); }

/* The drawing as a blueprint sheet */
body.hvp2-dark .hvp-dwg { background: var(--d-base) !important; color: var(--d-head); }
body.hvp2-dark .hvp-dwg__head p { color: var(--d-mute) !important; }
/* drawing floats on the page: no sheet box, no grid */
body.hvp2-dark .hvp-dwg__fig svg { color: #9FB2C4; }
body.hvp2-dark .dw-obj { stroke: var(--d-head); }
body.hvp2-dark .dw-txt { fill: var(--d-head); }
body.hvp2-dark .hvp-dwg__fig figcaption { color: var(--d-mute); }
body.hvp2-dark .hvp-dwg__fig figcaption strong { color: var(--d-head); }
body.hvp2-dark .hvp-dwg__block { border-color: var(--d-rule); }
body.hvp2-dark .hvp-dwg__block :is(dt, dd) { border-color: var(--d-rule) !important; }
body.hvp2-dark .hvp-dwg__block dt { color: var(--d-mute); }
body.hvp2-dark .hvp-dwg__block dd { color: var(--d-head); }
body.hvp2-dark .hvp-dwg__link { color: var(--d-link) !important; }

/* The RFQ is the one place the page raises its voice */
body.hvp2-dark .hv-cta h2 { font-size: clamp(2.6rem, 5vw, 4.4rem) !important; font-stretch: 112%; margin-bottom: 18px !important; }
body.hvp2-dark .hv-cta p { font-size: 1.15rem; }
body.hvp2-dark .hv-cta .wp-block-button__link { padding: 18px 30px !important; font-size: 1.08rem !important; }

/* =========================================================
 * v2: no spreadsheet look anywhere
 * ======================================================= */
.hvp-dwg__note { margin: 0 !important; color: var(--steel, #4A5866); font-size: 1rem; max-width: 46em; }
body.hvp2-dark .hvp-dwg__note { color: var(--d-mute); }
.hvp-dwg__foot { justify-content: space-between !important; align-items: baseline !important; }
.hvp-dwg--inline { margin: clamp(24px, 3vw, 40px) 0 0 !important; }
.hvp-dwg--inline .hvp-dwg__note { margin-top: clamp(24px, 3vw, 36px) !important; }

/* Spec entries (machines etc.) */
.hvp-specs {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
	gap: clamp(36px, 4vw, 56px) clamp(32px, 5vw, 80px);
	margin-top: clamp(24px, 3vw, 40px) !important;
}
.hvp-spec { margin: 0 !important; }
.hvp-spec__title {
	font-size: clamp(1.35rem, 2vw, 1.7rem) !important;
	font-weight: 620 !important;
	font-stretch: 108%;
	margin: 0 0 14px !important;
	line-height: 1.15 !important;
}
.hvp-spec__model { font-weight: 400; color: var(--steel, #4A5866); margin-left: 6px; }
body.hvp2-dark .hvp-spec__model { color: var(--d-mute); }
.hvp-spec dl { margin: 0; display: flex; flex-wrap: wrap; gap: 14px 36px; }
.hvp-spec dl > div { min-width: 0; }
.hvp-spec dt { font-size: .85rem; color: var(--steel, #4A5866); margin: 0 0 2px; }
.hvp-spec dd { margin: 0; font-size: 1.02rem; font-variant-numeric: tabular-nums lining-nums; }
body.hvp2-dark .hvp-spec dt { color: var(--d-mute); }
body.hvp2-dark .hvp-spec dd { color: var(--d-head); }

/* People */
.hvp-people {
	list-style: none;
	margin: clamp(24px, 3vw, 40px) 0 0 !important;
	padding: 0 !important;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: 28px 40px;
}
.hvp-people li { margin: 0 !important; display: flex; flex-direction: column; gap: 2px; }
.hvp-people strong { font-size: 1.15rem; font-weight: 600; font-stretch: 104%; }
.hvp-people span { color: var(--steel, #4A5866); font-size: .98rem; }
body.hvp2-dark .hvp-people span { color: var(--d-mute); }

/* Case cards: label above value, no row lines */
body.hvp2 .hvp-case dl { display: flex !important; flex-wrap: wrap; gap: 14px 32px; }
body.hvp2 .hvp-case dl > div { display: block !important; border: 0 !important; padding: 0 !important; }
body.hvp2 .hvp-case dt { margin-bottom: 2px; }

/* =========================================================
 * "Mahtuuko osasi?": dimension fields inside the drawing
 * ======================================================= */
.dw-part { fill: rgba(14, 95, 170, .14); stroke: #0E5FAA; stroke-width: 1.4; stroke-dasharray: 7 3; }
.dw-part.is-over { fill: rgba(201, 138, 27, .14); stroke: #C98A1B; }
body.hvp2-dark .dw-part { fill: rgba(127, 180, 232, .14); stroke: #7FB4E8; }
body.hvp2-dark .dw-part.is-over { fill: rgba(232, 178, 80, .14); stroke: #E8B250; }

.hvp-own {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 0 6px;
	margin-top: 10px;
	padding-left: var(--hvp-pa, 10.64%);
	font-size: 1rem;
	color: var(--steel, #4A5866);
	font-variant-numeric: tabular-nums lining-nums;
}
.hvp-dwg__fig--b .hvp-own { padding-left: var(--hvp-pb, 8.33%); }
body.hvp2-dark .hvp-own { color: var(--d-mute); }
.hvp-own__lbl { margin-right: 8px; }
.hvp-own__sym, .hvp-own__x, .hvp-own__mm { color: var(--ink, #0F1A26); }
body.hvp2-dark :is(.hvp-own__sym, .hvp-own__x, .hvp-own__mm) { color: var(--d-head); }
.hvp-own__in {
	width: 5.2ch;
	padding: 0 2px 2px !important;
	margin: 0 !important;
	border: 0 !important;
	border-bottom: 1px dashed currentColor !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	font: inherit;
	font-weight: 600;
	text-align: center;
	color: var(--ink, #0F1A26) !important;
	caret-color: #0E5FAA;
}
body.hvp2-dark .hvp-own__in { color: var(--d-head) !important; caret-color: var(--d-link); }
.hvp-own__in:focus { outline: none; border-bottom: 1px solid #0E5FAA !important; }
body.hvp2-dark .hvp-own__in:focus { border-bottom-color: var(--d-link) !important; }
.hvp-own__res { margin-left: 10px; font-weight: 600; }
.hvp-own.is-fit .hvp-own__res { color: #0E5FAA; }
.hvp-own.is-over .hvp-own__res { color: #B07614; }
body.hvp2-dark .hvp-own.is-fit .hvp-own__res { color: var(--d-link); }
body.hvp2-dark .hvp-own.is-over .hvp-own__res { color: #E8B250; }

.hvp-fitline {
	margin: clamp(20px, 2.4vw, 32px) 0 0 !important;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 6px 24px;
}
.hvp-fitline[hidden] { display: none; }
.hvp-fitline__a {
	font-weight: 600;
	color: #0E5FAA !important;
	text-decoration: underline !important;
	text-decoration-thickness: 1px !important;
	text-underline-offset: 5px;
}
body.hvp2-dark .hvp-fitline__a { color: var(--d-link) !important; }
.hvp-fitline span { font-size: .9rem; color: var(--steel, #4A5866); }
body.hvp2-dark .hvp-fitline span { color: var(--d-mute); }
@media (max-width: 760px) {
	.hvp-own, .hvp-dwg__fig--b .hvp-own { padding-left: 0; }
	.hvp-dwg__fig--a .hvp-own { width: 127.7%; }
}

/* =========================================================
 * People in colour: tall frame, chamfered corner, soft ink shade
 * ======================================================= */
body.hvp2 .hv-portrait {
	position: relative;
	margin: 0 0 18px !important;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	background: #16212D;
	clip-path: polygon(0 0, calc(100% - 26px) 0, 100% 26px, 100% 100%, 0 100%);
}
body.hvp2 .hv-portrait img,
body.hvp2-dark .hv-portrait img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
	object-position: 50% 22%;
	border-radius: 0 !important;
	filter: saturate(.8) contrast(1.06) brightness(.96) !important;
}
body.hvp2 .hv-portrait::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background:
		linear-gradient(180deg, rgba(11, 20, 29, 0) 52%, rgba(11, 20, 29, .5) 100%),
		linear-gradient(140deg, rgba(14, 95, 170, .12) 0%, rgba(14, 95, 170, 0) 55%);
}

/* =========================================================
 * v2 header: full-width rail on the content grid, no floating pill.
 * Signature detail shared with the portraits: a chamfered corner on the RFQ button.
 * ======================================================= */
body.hvp2 .hv-header {
	padding: 0 !important;
	font-family: "Archivo", system-ui, sans-serif !important;
}
body.hvp2 .hv-header__bar {
	border: 0 !important;
	border-bottom: 1px solid rgba(255, 255, 255, .16) !important;
	border-radius: 0 !important;
	background: transparent !important;
	-webkit-backdrop-filter: none !important;
	backdrop-filter: none !important;
	box-shadow: none !important;
	padding: 22px max(24px, calc((100% - 1140px) / 2)) !important;
	gap: 32px !important;
	transition: padding .3s ease, background-color .3s ease;
}
body.hvp2 .hv-header__logo img { width: 158px !important; }
body.hvp2 .hv-nav__list { gap: 2px !important; }
body.hvp2 .hv-nav__list a {
	border-radius: 0 !important;
	padding: 10px 14px !important;
	font-size: .97rem !important;
	font-weight: 500 !important;
	font-stretch: 104%;
	letter-spacing: 0;
	color: rgba(255, 255, 255, .8) !important;
	transition: color .2s ease;
}
body.hvp2 .hv-nav__list a:hover,
body.hvp2 .hv-nav__list a:focus-visible { color: #fff !important; }
body.hvp2 .hv-nav__list .current-menu-item > a,
body.hvp2 .hv-nav__list .current-menu-ancestor > a {
	color: #fff !important;
	text-decoration: underline !important;
	text-decoration-thickness: 2px !important;
	text-decoration-color: #7FB4E8 !important;
	text-underline-offset: 10px;
}
/* RFQ: the one action in the header */
body.hvp2 .hv-nav__list > li:last-child > a,
body.hvp2 .hv-nav__list a[href$="/yhteystiedot/"] {
	background: #0E5FAA !important;
	color: #fff !important;
	font-weight: 600 !important;
	padding: 12px 24px 12px 20px !important;
	margin-left: 14px !important;
	text-decoration: none !important;
	clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 0 100%);
}
body.hvp2 .hv-nav__list > li:last-child > a:hover,
body.hvp2 .hv-nav__list a[href$="/yhteystiedot/"]:hover { background: #1670C4 !important; }
/* Dropdown */
body.hvp2 .hv-nav__list .sub-menu {
	background: #0B141D !important;
	border: 1px solid rgba(214, 226, 238, .14) !important;
	border-radius: 0 !important;
	box-shadow: 0 24px 48px -24px rgba(0, 0, 0, .7) !important;
	padding: 6px 0 !important;
	min-width: 240px !important;
	margin-top: 0;
	clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 0 100%);
}
body.hvp2 .hv-nav__list .sub-menu a {
	padding: 11px 18px !important;
	border-left: 2px solid transparent;
	text-decoration: none !important;
}
body.hvp2 .hv-nav__list .sub-menu a:hover,
body.hvp2 .hv-nav__list .sub-menu .current-menu-item > a {
	background: rgba(255, 255, 255, .04);
	border-left-color: #7FB4E8;
	color: #fff !important;
}
/* Scrolled: solid rail, tighter */
body.hvp2.hvp-sticky.hvp-scrolled .hv-header__bar {
	background: rgba(11, 20, 29, .94) !important;
	-webkit-backdrop-filter: blur(12px) !important;
	backdrop-filter: blur(12px) !important;
	padding-top: 12px !important;
	padding-bottom: 12px !important;
	border-bottom-color: rgba(214, 226, 238, .14) !important;
	box-shadow: none !important;
}
body.hvp2.hvp-sticky.hvp-scrolled .hv-header { padding: 0 !important; }
body.hvp2.hvp-scrolled .hv-header__logo img { width: 140px !important; }
body.hvp2 .hv-header__logo img { transition: width .3s ease; }

/* Mobile: full-screen menu with large type */
@media (max-width: 1100px) {
	body.hvp2 .hv-header__bar { padding: 14px 16px !important; gap: 0 !important; }
	body.hvp2 .hv-header__logo img { width: 136px !important; }
	body.hvp2 .hv-header.is-open .hv-header__bar {
		background: #0B141D !important;
		min-height: 100vh;
		min-height: 100dvh;
		max-height: 100dvh;
		overflow-y: auto;
		align-content: flex-start;
	}
	body.hvp2 .hv-nav__list { padding: 28px 0 24px !important; }
	body.hvp2 .hv-nav__list > li > a {
		font-size: 1.6rem !important;
		font-weight: 600 !important;
		font-stretch: 108%;
		padding: 14px 0 !important;
		color: #fff !important;
		text-decoration: none !important;
	}
	body.hvp2 .hv-nav__list > li + li { border-top: 1px solid rgba(214, 226, 238, .12) !important; }
	body.hvp2 .hv-nav__list .sub-menu { clip-path: none; margin-top: 0; border: 0 !important; box-shadow: none !important; background: none !important; padding: 0 0 12px !important; }
	body.hvp2 .hv-nav__list .sub-menu a { font-size: 1.05rem !important; padding: 8px 0 8px 14px !important; color: rgba(255, 255, 255, .72) !important; }
	body.hvp2 .hv-nav__list > li:last-child > a,
	body.hvp2 .hv-nav__list a[href$="/yhteystiedot/"] {
		margin: 20px 0 0 !important;
		padding: 18px 20px !important;
		font-size: 1.15rem !important;
		text-align: left !important;
	}
}

/* =========================================================
 * 404
 * ======================================================= */
body.hvp2 .hv-section.hvp-404 {
	padding: clamp(150px, 18vw, 220px) 24px clamp(96px, 12vw, 150px) !important;
	min-height: 72vh;
	background: transparent;
}
.hvp-404__dim { max-width: 560px; margin: 0 0 clamp(28px, 4vw, 44px) !important; color: var(--steel, #4A5866); }
body.hvp2-dark .hvp-404__dim { color: #9FB2C4; }
.hvp-404__dim svg { display: block; width: 100%; height: auto; overflow: visible; }
.hvp-404__num {
	fill: var(--ink, #0F1A26);
	font-family: "Archivo", system-ui, sans-serif;
	font-size: 40px;
	font-weight: 600;
	font-stretch: 112%;
	font-variant-numeric: tabular-nums lining-nums;
}
body.hvp2-dark .hvp-404__num { fill: var(--d-head); }
body.hvp2 .hvp-404 h1 {
	font-size: clamp(2.4rem, 5vw, 4rem) !important;
	font-weight: 620 !important;
	font-stretch: 112%;
	letter-spacing: -.012em !important;
	line-height: 1.05 !important;
	margin: 0 0 18px !important;
}
.hvp-404__lead { font-size: 1.15rem; max-width: 34em; margin: 0 0 clamp(28px, 4vw, 40px) !important; }
.hvp-404__links {
	list-style: none;
	margin: 0 0 clamp(32px, 4vw, 48px) !important;
	padding: 0 !important;
	display: flex;
	flex-wrap: wrap;
	gap: 12px 36px;
}
.hvp-404__links li { margin: 0 !important; }
.hvp-404__links a {
	font-size: 1.2rem;
	font-weight: 600;
	font-stretch: 104%;
	text-decoration: underline !important;
	text-decoration-thickness: 1px !important;
	text-underline-offset: 6px;
}
.hvp-404__cta-wrap { margin: 0 !important; }
.hvp-404__cta {
	display: inline-block;
	background: #0E5FAA;
	color: #fff !important;
	text-decoration: none !important;
	font-weight: 600;
	padding: 16px 28px 16px 24px;
	clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 0 100%);
}
.hvp-404__cta:hover { background: #1670C4; }

/* Typografia kaikille sivuille samaksi kuin Puolustusteollisuus-sivulla:
   otsikot Archivo kapeana (font-stretch 72 %), leipäteksti ennallaan.
   :not(#hvx3 *) jättää Puolustusteollisuus-sivun oman tyylin rauhaan. */
body.hvp2 .site-content :is(h1, h2, h3):not(#hvx3 *) {
  font-family: Archivo, system-ui, sans-serif !important;
  font-stretch: 72% !important;
  font-weight: 700 !important;
  letter-spacing: -.005em !important;
  line-height: .94 !important;
  text-transform: none !important;
}
body.hvp2 .site-content .hv-hero h1:not(#hvx3 *) {
  font-size: clamp(50px, 7.4vw, 118px) !important;
  hyphens: manual;
}
body.hvp2 .site-content .hv-hero--sub h1:not(#hvx3 *) {
  font-size: clamp(46px, 6.4vw, 100px) !important;
}
body.hvp2 .site-content .hv-section:not(.hv-hero) h2:not(#hvx3 *) {
  font-size: clamp(42px, 5.2vw, 80px) !important;
}
body.hvp2 .site-content .hv-section h3:not(#hvx3 *) {
  font-size: clamp(24px, 2.1vw, 32px) !important;
  line-height: 1 !important;
}
body.hvp2 .site-content .wp-block-button__link:not(#hvx3 *) {
  font-stretch: 100% !important;
  font-weight: 600 !important;
  letter-spacing: .01em !important;
}

/* ===== Ajankohtaista ===== */
/* Uutiskortit (etusivu ja /ajankohtaista/) */
body.hvp2 .hv-news-head { margin-bottom: clamp(28px, 3vw, 44px); gap: 16px 32px; }
body.hvp2 .hv-news-head h2 { margin: 0 !important; }
body.hvp2 .hv-news-head .hv-more { margin: 0 0 8px; }
body.hvp2 .hv-news-list .wp-block-post-template { gap: 48px 32px; margin: 0; padding: 0; list-style: none; }
body.hvp2 .hv-news-list .wp-block-post { margin: 0; display: flex; flex-direction: column; }
body.hvp2 .hv-news-list .wp-block-post-featured-image { margin: 0 0 20px; overflow: hidden; background: #12171c; }
body.hvp2 .hv-news-list .wp-block-post-featured-image img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
body.hvp2 .hv-news-list .wp-block-post:hover .wp-block-post-featured-image img { transform: scale(1.03); }
body.hvp2 .hv-news-list .hv-news-date { margin: 0 0 10px; font-size: 14px; color: #9ba2a9; font-stretch: 100%; }
body.hvp2 .site-content .hv-news-list h3.wp-block-post-title:not(#hvx3 *) { margin: 0; font-size: clamp(26px, 2.2vw, 34px) !important; line-height: 1 !important; }
body.hvp2 .hv-news-list .wp-block-post-title a { color: #e8e6e1 !important; text-decoration: none !important; background: none !important; }
body.hvp2 .hv-news-list .wp-block-post-title a:hover { color: #5aa0e6 !important; }
body.hvp2 .hv-news-list .wp-block-post-excerpt { margin: 14px 0 0; color: #9ba2a9; font-size: 17px; line-height: 1.55; }
body.hvp2 .hv-news-list .wp-block-post-excerpt__excerpt { margin: 0; }
body.hvp2 .hv-news-list .wp-block-post-excerpt__more-text { display: none; }
body.hvp2 .hv-news-list .wp-block-query-pagination { margin-top: 56px; gap: 8px 20px; font-size: 16px; }
body.hvp2 .hv-news-list .wp-block-query-pagination a { color: #e8e6e1; text-decoration: none; }
body.hvp2 .hv-news-list .wp-block-query-pagination .current { color: #5aa0e6; }
@media (max-width: 781px) {
  body.hvp2 .hv-news-list .wp-block-post-template { grid-template-columns: minmax(0, 1fr) !important; gap: 44px; }
}

/* Yksittäinen uutinen */
body.hvp2.single-post { background: #0b0e11; }
body.hvp2.single-post .site-content { padding-top: clamp(140px, 14vw, 190px); }
body.hvp2.single-post.ast-separate-container .ast-article-single,
body.hvp2.single-post .ast-article-single { background: transparent !important; padding: 0 !important; margin: 0 auto !important; max-width: 780px; border: 0; box-shadow: none; }
body.hvp2.single-post .entry-header { margin-bottom: 28px; }
body.hvp2.single-post .site-content h1.entry-title:not(#hvx3 *) { font-size: clamp(42px, 5.6vw, 80px) !important; color: #e8e6e1; margin: 0 0 18px; hyphens: manual; }
body.hvp2.single-post .entry-meta { color: #9ba2a9; font-size: 15px; }
body.hvp2.single-post .entry-meta .posted-by,
body.hvp2.single-post .entry-meta .posted-by + * { }
body.hvp2.single-post .entry-meta .posted-by { display: none; }
body.hvp2.single-post .entry-meta { font-size: 0; }
body.hvp2.single-post .entry-meta .posted-on,
body.hvp2.single-post .entry-meta .cat-links { font-size: 15px; color: #9ba2a9; }
body.hvp2.single-post .entry-meta a { color: #9ba2a9; }
body.hvp2.single-post .hv-post-img { margin: 0 0 40px; }
body.hvp2.single-post .hv-post-img img { display: block; width: 100%; height: auto; }
body.hvp2.single-post .entry-content { font-family: Archivo, system-ui, sans-serif; font-stretch: 100%; color: #c9cdd1; font-size: 19px; line-height: 1.65; }
body.hvp2.single-post .entry-content p,
body.hvp2.single-post .entry-content li { color: #c9cdd1; }
body.hvp2.single-post .entry-content p { margin: 0 0 1.1em; }
body.hvp2.single-post .site-content .entry-content h2:not(#hvx3 *) { font-size: clamp(32px, 3.4vw, 48px) !important; color: #e8e6e1; margin: 1.6em 0 .55em; }
body.hvp2.single-post .entry-content ul { margin: 0 0 1.2em; padding-left: 1.1em; }
body.hvp2.single-post .entry-content li { margin: 0 0 .35em; }
body.hvp2.single-post .entry-content a { color: #5aa0e6; text-decoration: underline; text-underline-offset: 3px; }
body.hvp2.single-post .hv-post-back { margin-top: 56px !important; padding-top: 28px; border-top: 1px solid rgba(232,230,225,.14); }
body.hvp2.single-post .hv-post-back a { color: #e8e6e1 !important; text-decoration: none !important; font-weight: 600; }
body.hvp2.single-post .post-navigation,
body.hvp2.single-post .ast-single-related-posts-container,
body.hvp2.single-post #comments { display: none; }
body.hvp2.single-post .site-content > .ast-container { padding-bottom: clamp(80px, 9vw, 140px); }
body.hvp2.single-post .entry-meta .published,
body.hvp2.single-post .entry-meta .posted-on { color: #9ba2a9 !important; font-size: 16px; font-stretch: 100%; }
