/* =========================================================
   PTF Engine — main stylesheet
   Token system
   Color:
     --ink        #0a0b0d   base black
     --ink-2      #111318   panel black
     --glass      rgba(255,255,255,.045)  frosted panel fill
     --line       rgba(255,255,255,.08)   hairline borders
     --paper      #f2f0ea   primary text (warm off-white, not pure white)
     --paper-dim  #9ea3a8   secondary text (cool grey)
     --ember      #d99a63   warm glow accent (the light behind the glass)
     --signal     #7fd8c4   status / data accent (cool teal-green)
   Type: display = 'Space Grotesk' (wide tracking, used sparingly + large),
         body = 'Inter', mono-ish data = 'Space Grotesk' at small size + tracking
   ========================================================= */

:root {
	--ink: #0a0b0d;
	--ink-2: #111318;
	--glass: rgba(255, 255, 255, 0.045);
	--glass-strong: rgba(255, 255, 255, 0.07);
	--line: rgba(255, 255, 255, 0.09);
	--line-soft: rgba(255, 255, 255, 0.05);
	--paper: #f2f0ea;
	--paper-dim: #9aa0a6;
	--paper-dimmer: #666c72;
	--ember: #d99a63;
	--signal: #7fd8c4;
	--radius: 2px;
	--ease: cubic-bezier(0.22, 1, 0.36, 1);
	--font-display: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--font-body: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

* { box-sizing: border-box; }

html { background: var(--ink); }

body {
	margin: 0;
	background: var(--ink);
	color: var(--paper);
	font-family: var(--font-body);
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
ul { margin: 0; padding: 0; list-style: none; }

::selection { background: var(--ember); color: var(--ink); }

:focus-visible {
	outline: 1px solid var(--signal);
	outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}

/* =========================================================
   1. THE GLASS HERO
   ========================================================= */

/* body.ptf-front = the front page: locks the viewport, no scroll anywhere */
body.ptf-front {
	height: 100vh;
	height: 100dvh;
	overflow: hidden;
}

/* =========================================================
   0. SCENE — the fixed single viewport that hosts both the
   glass hero and the "inside the facility" grid as two layers
   that crossfade in place. No page reload, no scroll, ever.
   ========================================================= */

.ptf-scene {
	position: relative;
	height: 100vh;
	height: 100svh;
	width: 100%;
	overflow: hidden;
	background: var(--ink);
	isolation: isolate;
}

.ptf-layer {
	position: absolute;
	inset: 0;
	display: grid;
	overflow: hidden;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.7s var(--ease), visibility 0s linear 0.7s;
}
.ptf-layer.is-active {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition: opacity 0.7s var(--ease);
}

.ptf-layer--glass {
	grid-template-rows: auto 1fr auto auto;
	background: var(--ink);
}

@media (prefers-reduced-motion: reduce) {
	.ptf-layer { transition: opacity 0.2s linear, visibility 0s linear 0.2s; }
	.ptf-layer.is-active { transition: opacity 0.2s linear; }
}

/* --- WARP: the "flying through the gate" moment between glass and
   facility. Triggered by JS adding .is-warping to #ptf-scene right
   as ENTER is pressed; the glass layer sucks inward and blasts out,
   a flash burst peaks at the crossfade point, then the facility
   layer arrives already zooming out of the flash toward rest. --- */
.ptf-scene.is-warping .ptf-layer--glass {
	animation: ptf-warp-out 0.55s cubic-bezier(0.55, 0, 1, 0.45) forwards;
}
@keyframes ptf-warp-out {
	0% { transform: scale(1); filter: brightness(1) blur(0px); }
	55% { transform: scale(1.14); filter: brightness(1.5) blur(2px); }
	100% { transform: scale(1.4); filter: brightness(2.4) blur(14px); opacity: 0; }
}

.ptf-layer--facility.is-active {
	animation: ptf-warp-in 0.65s var(--ease) both;
}
@keyframes ptf-warp-in {
	0% { transform: scale(0.86); filter: brightness(1.9) blur(8px); opacity: 0; }
	100% { transform: scale(1); filter: brightness(1) blur(0px); opacity: 1; }
}

.ptf-scene__flash {
	position: absolute;
	inset: 0;
	z-index: 9;
	pointer-events: none;
	opacity: 0;
	background: radial-gradient(circle at 50% 55%, rgba(210, 245, 255, 0.95), rgba(111, 227, 255, 0.45) 28%, transparent 62%);
}
.ptf-scene__flash.is-active {
	animation: ptf-gate-flash 0.6s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}
@keyframes ptf-gate-flash {
	0% { opacity: 0; transform: scale(0.3); }
	38% { opacity: 1; transform: scale(1.15); }
	100% { opacity: 0; transform: scale(2.3); }
}

@media (prefers-reduced-motion: reduce) {
	.ptf-scene.is-warping .ptf-layer--glass,
	.ptf-layer--facility.is-active,
	.ptf-scene__flash.is-active {
		animation: none !important;
	}
}

/* =========================================================
   0.5 STARFIELD — sparse drifting stars filling the negative
   space either side of the glow, so the void reads as deep
   space rather than empty background. Sits under both layers.
   ========================================================= */
.ptf-starfield {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	pointer-events: none;
}
.ptf-starfield::before,
.ptf-starfield::after {
	content: '';
	position: absolute;
	inset: -25%;
	background-repeat: repeat;
	background-image:
		radial-gradient(1px 1px at 6% 18%, rgba(255, 255, 255, 0.9), transparent 60%),
		radial-gradient(1px 1px at 18% 62%, rgba(255, 255, 255, 0.65), transparent 60%),
		radial-gradient(1.6px 1.6px at 33% 9%, rgba(255, 255, 255, 0.85), transparent 60%),
		radial-gradient(1px 1px at 47% 74%, rgba(255, 255, 255, 0.55), transparent 60%),
		radial-gradient(1px 1px at 61% 28%, rgba(255, 255, 255, 0.9), transparent 60%),
		radial-gradient(1.6px 1.6px at 74% 52%, rgba(255, 255, 255, 0.7), transparent 60%),
		radial-gradient(1px 1px at 87% 14%, rgba(255, 255, 255, 0.8), transparent 60%),
		radial-gradient(1px 1px at 12% 88%, rgba(255, 255, 255, 0.6), transparent 60%),
		radial-gradient(1px 1px at 55% 41%, rgba(255, 255, 255, 0.45), transparent 60%),
		radial-gradient(1.6px 1.6px at 92% 82%, rgba(255, 255, 255, 0.75), transparent 60%);
	background-size: 360px 360px;
	opacity: 0.55;
	animation: star-drift 140s linear infinite;
}
.ptf-starfield::after {
	background-size: 560px 560px;
	background-position: 80px 60px;
	opacity: 0.3;
	animation-duration: 220s;
	animation-direction: reverse;
}
@keyframes star-drift {
	0% { transform: translate(0, 0); }
	100% { transform: translate(-360px, -240px); }
}
.ptf-tab-hidden .ptf-starfield::before,
.ptf-tab-hidden .ptf-starfield::after {
	animation-play-state: paused;
}
.ptf-front .ptf-starfield::before,
.ptf-front .ptf-starfield::after {
	filter: hue-rotate(0deg) saturate(1.1);
}

/* film grain / noise, extremely low opacity, drifts very slowly */
.ptf-glass__grain {
	position: absolute;
	inset: -10%;
	z-index: 5;
	pointer-events: none;
	opacity: 0.05;
	mix-blend-mode: overlay;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
	animation: grain-drift 9s steps(6) infinite;
}

@keyframes grain-drift {
	0% { transform: translate(0, 0); }
	100% { transform: translate(-4%, 3%); }
}

/* --- behind-the-glass facility: five vertical panes --- */
.ptf-glass__facility {
	position: absolute;
	inset: 0;
	z-index: 1;
	display: grid;
	grid-template-columns: repeat(5, 1fr);
}

.pane {
	position: relative;
	overflow: hidden;
	background:
		linear-gradient(180deg, rgba(255, 255, 255, 0.02) 0%, rgba(0, 0, 0, 0.35) 100%),
		radial-gradient(ellipse at 50% 30%, rgba(255, 255, 255, 0.04), transparent 60%),
		#0d0f13;
	border-right: 1px solid var(--line-soft);
	filter: blur(0.5px);
}
.pane::before {
	/* frosted film texture per-pane */
	content: '';
	position: absolute;
	inset: 0;
	background: repeating-linear-gradient(115deg, rgba(255, 255, 255, 0.015) 0px, rgba(255, 255, 255, 0.015) 1px, transparent 1px, transparent 3px);
	opacity: 0.5;
}
.pane:last-child { border-right: 0; }

.pane--3 { background-color: #101216; }

/* silhouettes — soft blurred blobs standing in for figures, per design brief:
   never sharp, never fully readable, just enough to suggest a person */
.figure {
	position: absolute;
	bottom: 6%;
	left: 50%;
	width: 34%;
	height: 46%;
	background: radial-gradient(ellipse at 50% 20%, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.55) 55%, transparent 80%);
	border-radius: 50% 50% 35% 35% / 60% 60% 40% 40%;
	filter: blur(6px);
	opacity: 0.7;
	animation: sway 22s ease-in-out infinite;
}
.figure--sit { bottom: 10%; height: 34%; width: 30%; left: 38%; animation-duration: 26s; }
.figure--stand { animation-duration: 19s; }
.figure--tall { height: 54%; left: 46%; animation-duration: 24s; animation-delay: -6s; }
.figure--console { left: 62%; height: 40%; width: 26%; animation-duration: 21s; animation-delay: -3s; }

@keyframes sway {
	0%, 100% { transform: translateX(-50%) translateY(0) scaleY(1); opacity: 0.62; }
	40% { transform: translateX(-46%) translateY(-1%) scaleY(1.01); opacity: 0.75; }
	70% { transform: translateX(-53%) translateY(0.5%) scaleY(0.99); opacity: 0.68; }
}

.data-chip {
	position: absolute;
	top: 18%;
	left: 12%;
	font-family: var(--font-display);
	font-size: 0.65rem;
	letter-spacing: 0.05em;
	color: rgba(242, 240, 234, 0.35);
	animation: flicker 7s ease-in-out infinite;
}
.data-chip--2 { top: 24%; left: 24%; animation-delay: -2s; }

@keyframes flicker {
	0%, 100% { opacity: 0.35; }
	48% { opacity: 0.35; }
	50% { opacity: 0.1; }
	52% { opacity: 0.35; }
	76% { opacity: 0.5; }
}

/* the warm glow — sits center pane, implies something powered-on behind the glass */
.glow--core {
	position: absolute;
	top: 30%;
	left: 50%;
	width: 42%;
	height: 42%;
	transform: translate(-50%, -50%);
	background: radial-gradient(circle, rgba(217, 154, 99, 0.35), rgba(217, 154, 99, 0.08) 45%, transparent 75%);
	filter: blur(14px);
	animation: breathe 14s ease-in-out infinite;
}

@keyframes breathe {
	0%, 100% { opacity: 0.55; transform: translate(-50%, -50%) scale(1); }
	50% { opacity: 0.85; transform: translate(-50%, -48%) scale(1.08); }
}

/* an ambiguous mechanical rig on the right pane */
.rig {
	position: absolute;
	top: 10%;
	right: 8%;
	width: 55%;
	height: 55%;
	opacity: 0.3;
	background:
		linear-gradient(90deg, transparent 46%, rgba(242, 240, 234, 0.25) 47%, rgba(242, 240, 234, 0.25) 48%, transparent 49%),
		linear-gradient(0deg, transparent 46%, rgba(242, 240, 234, 0.2) 47%, rgba(242, 240, 234, 0.2) 48%, transparent 49%);
	filter: blur(1px);
	animation: rig-shift 30s linear infinite;
}
@keyframes rig-shift {
	0%, 100% { transform: rotate(0deg) translateY(0); }
	50% { transform: rotate(1.2deg) translateY(-2%); }
}

/* --- glass panels themselves (frosted, the wall we stand behind) --- */
.ptf-layer--glass::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 2;
	backdrop-filter: blur(14px) saturate(105%);
	-webkit-backdrop-filter: blur(14px) saturate(105%);
	background: linear-gradient(180deg, rgba(10, 11, 13, 0.55) 0%, rgba(10, 11, 13, 0.72) 55%, rgba(10, 11, 13, 0.88) 100%);
}

/* vertical seams of the glass wall, drawn above the blur */
.ptf-glass__facility::after {
	content: '';
	position: absolute;
	inset: 0;
	z-index: 3;
	background-image: repeating-linear-gradient(90deg, transparent 0, transparent calc(20% - 1px), var(--line) calc(20% - 1px), var(--line) 20%);
}

/* =========================================================
   2. TOP BAR
   ========================================================= */

.ptf-glass__topbar {
	position: relative;
	z-index: 6;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin: clamp(10px, 2vh, 20px) clamp(14px, 3.5vw, 40px) 0;
	padding: 8px clamp(12px, 2.4vw, 20px);
	background: var(--glass-strong);
	border: 1px solid var(--line);
	border-radius: 9999px;
	backdrop-filter: blur(14px) saturate(120%);
	-webkit-backdrop-filter: blur(14px) saturate(120%);
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
	flex-shrink: 0;
}

.ptf-glass__logo {
	display: flex;
	align-items: baseline;
	gap: 12px;
}
.ptf-glass__logo-text {
	display: flex;
	flex-direction: column;
}
.ptf-glass__mark {
	font-family: var(--font-display);
	font-weight: 600;
	font-size: 1.5rem;
	letter-spacing: 0.02em;
}
.ptf-glass__eyebrow {
	font-size: 0.62rem;
	letter-spacing: 0.14em;
	color: var(--paper-dim);
	line-height: 1.4;
	max-width: 12ch;
	text-transform: uppercase;
}

/* --- topbar wordmark: "Human / Pattern / Intelligence" stacked
   three lines, replacing the old single "PTF" letterform --- */
.ptf-glass__logo--hpi {
	align-items: flex-start;
}
.ptf-glass__hpi {
	display: flex;
	flex-direction: column;
	line-height: 1.08;
}
.ptf-glass__hpi-line {
	display: block;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: clamp(0.56rem, 0.9vw, 0.7rem);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--paper);
	white-space: nowrap;
}
.ptf-glass__hpi-line:first-child { color: var(--paper); opacity: 0.92; }
.ptf-glass__hpi-line:nth-child(2) { color: var(--signal); }
.ptf-glass__hpi-line:last-child { color: var(--paper-dim); font-weight: 500; }

/* --- topbar right-side action: single direct-to-audit CTA, replacing
   the old two-button (audit link + Explore System) layout --- */
.ptf-glass__topbar-actions {
	display: flex;
	align-items: center;
	gap: clamp(8px, 1.4vw, 14px);
}
.ptf-glass__nav-cta--audit {
	font-size: 0.7rem;
	padding: 9px 18px;
}
.ptf-glass__product-forms {
	display: block;
	font-family: var(--font-display);
	font-size: 0.56rem;
	letter-spacing: 0.16em;
	color: var(--signal);
	opacity: 0.85;
	text-transform: uppercase;
	margin-top: 3px;
	max-width: 16ch;
}

.ptf-glass__status {
	display: flex;
	align-items: center;
	gap: 8px;
	font-family: var(--font-display);
	font-size: 0.68rem;
	letter-spacing: 0.14em;
	color: var(--paper-dim);
	text-transform: uppercase;
}
.ptf-glass__status-dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--signal);
	box-shadow: 0 0 8px rgba(127, 216, 196, 0.7);
	animation: pulse-dot 2.4s ease-in-out infinite;
}
@keyframes pulse-dot {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.35; }
}
.ptf-glass__status-value { color: var(--paper); }

.ptf-glass__status-list {
	position: absolute;
	z-index: 6;
	top: clamp(70px, 10vh, 110px);
	right: clamp(20px, 4vw, 56px);
	display: flex;
	flex-direction: column;
	gap: 6px;
	text-align: right;
}
.ptf-glass__status-list li {
	font-family: var(--font-display);
	font-size: 0.64rem;
	letter-spacing: 0.12em;
	color: var(--paper-dimmer);
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
	transition: color 0.6s var(--ease);
}
.ptf-glass__status-list li .dot {
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: var(--paper-dimmer);
	transition: background 0.6s var(--ease), box-shadow 0.6s var(--ease);
}
.ptf-glass__status-list li.is-active {
	color: var(--paper);
}
.ptf-glass__status-list li.is-active .dot {
	background: var(--signal);
	box-shadow: 0 0 6px rgba(127, 216, 196, 0.8);
}

/* =========================================================
   3. CENTER CONTENT
   ========================================================= */

.ptf-glass__content {
	position: relative;
	z-index: 6;
	text-align: center;
	padding: clamp(8px, 2vh, 24px) 24px;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 0;
	overflow: hidden;
}

.ptf-glass__headline {
	margin: 0;
	font-family: var(--font-display);
	font-weight: 500;
	line-height: 1.12;
	font-size: clamp(1.35rem, min(5.2vw, 6.5vh), 3.6rem);
	letter-spacing: 0.06em;
	text-transform: uppercase;
}
.ptf-glass__headline span {
	display: block;
	opacity: 0;
	transform: translateY(10px);
	animation: headline-in 1s var(--ease) forwards;
}
.ptf-glass__headline span:last-child { animation-delay: 0.15s; }

@keyframes headline-in {
	to { opacity: 1; transform: translateY(0); }
}

/* --- headline: simple fade-in, no shimmer/scan effect (kept plain and readable) --- */
.ptf-tab-hidden .ptf-glass__headline span { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
	.ptf-glass__headline span { animation: headline-in 1s var(--ease) forwards; }
}

.ptf-glass__rule {
	width: 28px;
	height: 1px;
	background: var(--line);
	margin: clamp(10px, 2vh, 22px) auto;
	flex-shrink: 0;
}

.ptf-glass__subtext {
	margin: 0 0 clamp(14px, 3vh, 34px);
	white-space: pre-line;
	color: var(--paper-dim);
	font-size: clamp(0.72rem, 2vh, 0.95rem);
	line-height: 1.6;
	font-weight: 300;
}

/* One-line product clarification (audit §5.2) — visually distinct from the
   philosophy subtext above it: smaller, dimmer, no pre-line whitespace,
   reuses --paper-dimmer (already defined in :root) rather than a new token. */
.ptf-glass__clarification {
	margin: 0 0 clamp(14px, 3vh, 34px);
	color: var(--paper-dimmer);
	font-size: clamp(0.62rem, 1.6vh, 0.78rem);
	line-height: 1.5;
	font-weight: 300;
	max-width: 40ch;
}

.ptf-glass__enter {
	position: relative;
	width: clamp(72px, 12vh, 108px);
	height: clamp(72px, 12vh, 108px);
	flex-shrink: 0;
	border-radius: 50%;
	border: 1px solid var(--line);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--font-display);
	font-size: clamp(0.6rem, 1.6vh, 0.72rem);
	letter-spacing: 0.18em;
	transition: border-color 0.4s var(--ease), transform 0.4s var(--ease), background 0.4s var(--ease);
}
.ptf-glass__enter::before {
	content: '';
	position: absolute;
	inset: -1px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(217, 154, 99, 0.25), transparent 70%);
	opacity: 0;
	transition: opacity 0.5s var(--ease);
}
.ptf-glass__enter:hover,
.ptf-glass__enter:focus-visible {
	border-color: rgba(255, 255, 255, 0.35);
	transform: scale(1.03);
	background: rgba(255, 255, 255, 0.02);
}
.ptf-glass__enter:hover::before,
.ptf-glass__enter:focus-visible::before { opacity: 1; }
.ptf-glass__enter span { position: relative; z-index: 1; }

.ptf-glass__business-link {
	display: inline-block;
	margin-top: clamp(10px, 2vh, 20px);
	font-size: 0.66rem;
	letter-spacing: 0.06em;
	color: var(--paper-dimmer);
	border-bottom: 1px solid transparent;
	transition: color 0.3s var(--ease), border-color 0.3s var(--ease);
}
.ptf-glass__business-link:hover,
.ptf-glass__business-link:focus-visible {
	color: var(--signal);
	border-color: var(--signal);
}

/* =========================================================
   4. BOTTOM ROW — caption / counter
   ========================================================= */

.ptf-glass__footrow {
	position: relative;
	z-index: 6;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	padding: 0 clamp(16px, 4vw, 56px);
	gap: 16px;
	flex-wrap: wrap;
	flex-shrink: 0;
}

.ptf-glass__caption p {
	margin: 0 0 8px;
	font-size: 0.6rem;
	letter-spacing: 0.1em;
	color: var(--paper-dimmer);
	text-transform: uppercase;
	max-width: 16ch;
}
.ptf-glass__caption-bar {
	display: block;
	width: 64px;
	height: 1px;
	background: var(--line);
	position: relative;
	overflow: hidden;
}
.ptf-glass__caption-bar::after {
	content: '';
	position: absolute;
	inset: 0;
	width: 40%;
	background: var(--signal);
	animation: bar-scan 5s ease-in-out infinite;
}
@keyframes bar-scan {
	0%, 100% { transform: translateX(-10%); }
	50% { transform: translateX(160%); }
}

.ptf-glass__counter {
	text-align: right;
	background: var(--glass);
	border: 1px solid var(--line-soft);
	border-radius: var(--radius);
	padding: clamp(8px, 1.6vh, 14px) 16px;
	backdrop-filter: blur(6px);
	min-width: 180px;
}
.ptf-glass__counter-label {
	display: block;
	font-size: 0.58rem;
	letter-spacing: 0.1em;
	color: var(--paper-dimmer);
	text-transform: uppercase;
	margin-bottom: 3px;
}
.ptf-glass__counter-value {
	display: block;
	font-family: var(--font-display);
	font-size: clamp(0.95rem, 2.4vh, 1.3rem);
	font-variant-numeric: tabular-nums;
}
.ptf-glass__spark {
	width: 100%;
	height: clamp(14px, 2.5vh, 24px);
	margin: 4px 0 3px;
	overflow: visible;
}
.ptf-glass__spark polyline {
	fill: none;
	stroke: var(--signal);
	stroke-width: 1.2;
	opacity: 0.7;
}
.ptf-glass__map-link {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 0.62rem;
	letter-spacing: 0.1em;
	color: var(--paper-dim);
	text-transform: uppercase;
	transition: color 0.3s var(--ease);
}
.ptf-glass__map-link:hover { color: var(--paper); }

/* =========================================================
   5. FOOTER LINE + SCROLL CUE
   ========================================================= */

.ptf-glass__bottom {
	position: relative;
	z-index: 6;
	display: flex;
	flex-direction: row;
	justify-content: center;
	align-items: center;
	gap: 10px;
	padding: clamp(10px, 1.6vh, 20px) 20px;
	text-align: center;
	flex-shrink: 0;
}
.ptf-glass__bottom::before {
	content: '';
	width: 3px;
	height: 3px;
	border-radius: 50%;
	background: var(--paper-dimmer);
}
.ptf-glass__version,
.ptf-glass__copyright {
	font-size: 0.58rem;
	letter-spacing: 0.1em;
	color: var(--paper-dimmer);
	text-transform: uppercase;
}

/* =========================================================
   6.5 FACILITY — the category grid shown after ENTER
   ========================================================= */

.ptf-layer--facility {
	grid-template-rows: auto auto 1fr;
	background: var(--ink-2);
}

.ptf-facility__topbar {
	position: relative;
	z-index: 6;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: clamp(14px, 2.5vh, 40px) clamp(16px, 4vw, 56px) 0;
}

.ptf-facility__back {
	display: flex;
	align-items: center;
	gap: 8px;
	font-family: var(--font-display);
	font-size: 0.7rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--paper-dim);
	transition: color 0.3s var(--ease);
}
.ptf-facility__back:hover { color: var(--paper); }

.ptf-facility__intro {
	position: relative;
	z-index: 6;
	text-align: center;
	padding: clamp(6px, 1.5vh, 14px) 20px 0;
}
.ptf-facility__eyebrow {
	font-size: 0.6rem;
	letter-spacing: 0.2em;
	color: var(--signal);
	text-transform: uppercase;
	opacity: 0.85;
}

.ptf-facility__grid {
	position: relative;
	z-index: 6;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-template-rows: repeat(2, minmax(0, 1fr));
	gap: clamp(8px, 1.6vh, 20px);
	padding: clamp(10px, 2.2vh, 28px) clamp(16px, 4vw, 56px) clamp(16px, 3vh, 40px);
	min-height: 0;
}

.ptf-tile {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: space-between;
	text-align: left;
	padding: clamp(12px, 2.2vh, 22px);
	border: 1px solid var(--line-soft);
	border-radius: var(--radius);
	background: var(--glass);
	backdrop-filter: blur(6px);
	overflow: hidden;
	transition: border-color 0.4s var(--ease), background 0.4s var(--ease), transform 0.4s var(--ease);
}
.ptf-tile::before {
	content: '';
	position: absolute;
	inset: 0;
	background: radial-gradient(circle at 20% 15%, rgba(217, 154, 99, 0.08), transparent 55%);
	opacity: 0;
	transition: opacity 0.5s var(--ease);
}
.ptf-tile:hover,
.ptf-tile:focus-visible {
	border-color: var(--line);
	background: var(--glass-strong);
	transform: translateY(-2px);
}
.ptf-tile:hover::before,
.ptf-tile:focus-visible::before { opacity: 1; }

.ptf-tile__index {
	position: relative;
	z-index: 1;
	font-family: var(--font-display);
	font-size: 0.62rem;
	letter-spacing: 0.1em;
	color: var(--paper-dimmer);
}
.ptf-tile__title {
	position: relative;
	z-index: 1;
	font-family: var(--font-display);
	font-size: clamp(0.78rem, 1.9vh, 1.05rem);
	letter-spacing: 0.02em;
	line-height: 1.3;
	color: var(--paper);
}
.ptf-tile__dot {
	position: absolute;
	z-index: 1;
	top: clamp(12px, 2.2vh, 22px);
	right: clamp(12px, 2.2vh, 22px);
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: var(--signal);
	box-shadow: 0 0 6px rgba(127, 216, 196, 0.7);
	animation: pulse-dot 2.4s ease-in-out infinite;
}
.ptf-tile:nth-child(2) .ptf-tile__dot { animation-delay: -0.6s; }
.ptf-tile:nth-child(3) .ptf-tile__dot { animation-delay: -1.2s; }
.ptf-tile:nth-child(4) .ptf-tile__dot { animation-delay: -1.8s; }
.ptf-tile:nth-child(5) .ptf-tile__dot { animation-delay: -0.3s; }
.ptf-tile:nth-child(6) .ptf-tile__dot { animation-delay: -0.9s; }

/* --- panel: full-layer overlay shown when a tile is opened --- */
.ptf-panel {
	position: absolute;
	inset: 0;
	z-index: 10;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: safe center;
	text-align: center;
	padding: clamp(24px, 6vh, 64px) clamp(24px, 8vw, 120px);
	background: rgba(10, 11, 13, 0.96);
	backdrop-filter: blur(16px);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transform: scale(0.98);
	overflow-y: auto;
	transition: opacity 0.4s var(--ease), transform 0.4s var(--ease), visibility 0s linear 0.4s;
}
.ptf-panel.is-open {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transform: scale(1);
	transition: opacity 0.4s var(--ease), transform 0.4s var(--ease);
}
.ptf-panel__close {
	position: absolute;
	top: clamp(14px, 2.5vh, 32px);
	right: clamp(16px, 4vw, 48px);
	width: 32px;
	height: 32px;
	border-radius: 50%;
	border: 1px solid var(--line);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.8rem;
	color: var(--paper-dim);
	transition: border-color 0.3s var(--ease), color 0.3s var(--ease);
}
.ptf-panel__close:hover { border-color: var(--paper-dim); color: var(--paper); }
.ptf-panel__index {
	font-family: var(--font-display);
	font-size: 0.64rem;
	letter-spacing: 0.14em;
	color: var(--signal);
	margin-bottom: 10px;
}
.ptf-panel__title {
	font-family: var(--font-display);
	font-size: clamp(1.2rem, 3.4vh, 2rem);
	letter-spacing: 0.02em;
	margin: 0 0 clamp(10px, 2vh, 20px);
	text-transform: uppercase;
}
.ptf-panel__desc {
	max-width: min(620px, 100%);
	width: 100%;
	color: var(--paper-dim);
	font-size: clamp(0.8rem, 1.9vh, 0.98rem);
	line-height: 1.7;
	margin: 0 0 clamp(14px, 2.4vh, 26px);
}
.ptf-panel__desc > *:first-child { margin-top: 0; }
.ptf-panel__desc > *:last-child { margin-bottom: 0; }
.ptf-panel__link {
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--signal);
	border-bottom: 1px solid transparent;
	transition: border-color 0.3s var(--ease);
}
.ptf-panel__link:hover { border-color: var(--signal); }

@media (max-width: 782px) {
	.ptf-facility__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-template-rows: repeat(3, minmax(0, 1fr));
	}
	.ptf-tile__title { font-size: 0.76rem; }
}

@media (max-height: 700px) {
	.ptf-facility__intro { padding-top: 2px; }
	.ptf-facility__grid { gap: 8px; padding-top: 8px; padding-bottom: 10px; }
	.ptf-tile { padding: 10px; }
	/* .ptf-panel itself scrolls (overflow-y: auto set above) rather than
	   clamping text, so shortcode-embedded widgets never get clipped. */
}

/* =========================================================
   7. STANDARD PAGES (blog, single, archive, search, 404)
   ========================================================= */

.site-header {
	position: sticky;
	top: 0;
	z-index: 20;
	background: rgba(10, 11, 13, 0.82);
	backdrop-filter: blur(10px);
	border-bottom: 1px solid var(--line-soft);
}
.site-header__inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 18px 24px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}
.site-logo { display: flex; align-items: baseline; gap: 10px; }
.site-logo__mark { font-family: var(--font-display); font-weight: 600; font-size: 1.2rem; }
.site-logo__eyebrow { font-size: 0.58rem; letter-spacing: 0.12em; color: var(--paper-dim); text-transform: uppercase; }
.nav-menu { display: flex; gap: 28px; flex-wrap: wrap; }
.nav-menu a {
	font-size: 0.78rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--paper-dim);
	transition: color 0.3s var(--ease);
}
.nav-menu a:hover { color: var(--paper); }

/* Repositioning nav (§4): Get Started reads as a button, Login (back as
   of 1.6.2 — see ptf_engine_fallback_menu()) stays a plain link but is
   visually separated from the four IA items before it. */
.nav-menu__login { margin-left: 8px; }
.nav-menu__cta a {
	color: var(--ink);
	background: var(--signal);
	padding: 8px 16px;
	border-radius: var(--radius);
	transition: opacity 0.3s var(--ease);
}
.nav-menu__cta a:hover { color: var(--ink); opacity: 0.85; }

.nav-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 32px;
	height: 32px;
	padding: 0;
	background: none;
	border: 0;
	cursor: pointer;
}
.nav-toggle__bar {
	display: block;
	width: 100%;
	height: 1px;
	background: var(--paper);
	transition: transform 0.25s var(--ease), opacity 0.25s var(--ease);
}
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

@media (max-width: 782px) {
	.site-header__inner { flex-wrap: nowrap; }
	.nav-toggle { display: flex; }
	.nav-menu {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		flex-direction: column;
		gap: 0;
		max-height: 0;
		overflow: hidden;
		background: rgba(10, 11, 13, 0.97);
		backdrop-filter: blur(10px);
		border-bottom: 1px solid var(--line-soft);
		transition: max-height 0.3s var(--ease);
	}
	.nav-menu.is-open { max-height: 70vh; overflow-y: auto; }
	.nav-menu a { display: block; padding: 14px 24px; border-top: 1px solid var(--line-soft); }
	.nav-menu li:first-child a { border-top: 0; }
}

.ptf-shell {
	max-width: 1200px;
	margin: 0 auto;
	padding: 48px 24px 96px;
	display: grid;
	grid-template-columns: minmax(0, 1fr) 300px;
	gap: 56px;
	align-items: start;
}
.ptf-shell:has(.ptf-main--404) { grid-template-columns: 1fr; }

.ptf-main--404 { text-align: center; padding-top: 40px; }
.ptf-404__code {
	font-family: var(--font-display);
	font-size: clamp(3rem, 10vw, 6rem);
	margin: 0;
	color: var(--paper-dimmer);
}
.ptf-404__home { display: inline-block; margin-top: 24px; color: var(--signal); font-size: 0.85rem; }

.ptf-archive__header { margin-bottom: 40px; }
.ptf-archive__title {
	font-family: var(--font-display);
	font-size: clamp(1.6rem, 4vw, 2.2rem);
	margin: 0 0 8px;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.ptf-archive__desc { color: var(--paper-dim); }

.ptf-post-grid {
	display: grid;
	gap: 32px;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}
.ptf-card {
	border: 1px solid var(--line-soft);
	background: var(--glass);
	border-radius: var(--radius);
	overflow: hidden;
	transition: border-color 0.35s var(--ease), transform 0.35s var(--ease);
}
.ptf-card:hover { border-color: var(--line); transform: translateY(-2px); }
.ptf-card__thumb img { aspect-ratio: 16/10; object-fit: cover; }
.ptf-card__body { padding: 20px; }
.ptf-card__meta { font-size: 0.62rem; letter-spacing: 0.1em; color: var(--paper-dimmer); text-transform: uppercase; margin: 0 0 10px; }
.ptf-card__title { font-family: var(--font-display); font-size: 1.05rem; margin: 0 0 10px; line-height: 1.4; }
.ptf-card__title a:hover { color: var(--signal); }
.ptf-card__excerpt { color: var(--paper-dim); font-size: 0.88rem; line-height: 1.7; margin-bottom: 14px; }
.ptf-card__link { font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--paper); }

.ptf-page__header { margin-bottom: 28px; }
.ptf-page__meta { font-size: 0.68rem; letter-spacing: 0.08em; color: var(--paper-dimmer); text-transform: uppercase; margin-bottom: 10px; }
.ptf-page__title { font-family: var(--font-display); font-size: clamp(1.8rem, 4.5vw, 2.6rem); line-height: 1.25; margin: 0; }
.ptf-page__thumb { margin: 28px 0; border-radius: var(--radius); overflow: hidden; }

.ptf-audit-embed { margin-top: 40px; }
.ptf-audit-embed__notice {
	padding: 16px 20px;
	border: 1px solid var(--line-soft);
	border-radius: var(--radius);
	color: var(--paper-dim);
	background: rgba(255, 255, 255, 0.02);
}
.ptf-page__content { font-size: 1rem; line-height: 1.85; color: var(--paper-dim); }
.ptf-page__content h2, .ptf-page__content h3 { font-family: var(--font-display); color: var(--paper); margin-top: 2em; }
.ptf-page__content a { color: var(--signal); text-decoration: underline; text-underline-offset: 3px; }
.ptf-page__content blockquote { border-left: 2px solid var(--line); margin: 1.5em 0; padding-left: 1.2em; color: var(--paper-dimmer); }
.ptf-page__content img { border-radius: var(--radius); }

.ptf-post-nav { display: flex; justify-content: space-between; gap: 20px; margin: 48px 0; padding-top: 24px; border-top: 1px solid var(--line-soft); font-size: 0.85rem; color: var(--paper-dim); }
.ptf-post-nav a:hover { color: var(--paper); }

.ptf-pagination { display: flex; gap: 16px; margin-top: 40px; font-size: 0.8rem; letter-spacing: 0.05em; }
.ptf-pagination .current { color: var(--paper); }
.ptf-pagination a { color: var(--paper-dim); }
.ptf-pagination a:hover { color: var(--paper); }

.ptf-sidebar { border-left: 1px solid var(--line-soft); padding-left: 32px; }
.widget-title { font-family: var(--font-display); font-size: 0.85rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--paper-dim); margin: 0 0 16px; }
.widget { margin-bottom: 40px; font-size: 0.88rem; color: var(--paper-dim); }

.ptf-empty { padding: 48px 0; color: var(--paper-dim); }

.site-footer { border-top: 1px solid var(--line-soft); }
.site-footer__inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 32px 24px;
	display: flex;
	flex-wrap: wrap;
	gap: 12px 24px;
	align-items: center;
	justify-content: space-between;
	font-size: 0.62rem;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--paper-dimmer);
}
.nav-menu--footer { gap: 20px; }
.nav-menu--footer a { font-size: 0.62rem; }

/* pause ambient animation when the tab is in the background */
.ptf-tab-hidden .ptf-glass__grain,
.ptf-tab-hidden .figure,
.ptf-tab-hidden .glow--core,
.ptf-tab-hidden .rig,
.ptf-tab-hidden .data-chip,
.ptf-tab-hidden .ptf-glass__status-dot,
.ptf-tab-hidden .ptf-tile__dot,
.ptf-tab-hidden .ptf-glass__orb,
.ptf-tab-hidden .ptf-glass__orb::after,
.ptf-tab-hidden .ptf-glass__orb-img,
.ptf-tab-hidden .ptf-glass__orb-dust,
.ptf-tab-hidden .planet,
.ptf-tab-hidden .ptf-glass__caption-bar::after {
	animation-play-state: paused;
}

/* =========================================================
   7. FRONT PAGE — blue "ORA" hero variant
   ========================================================= */

.ptf-front .ptf-scene {
	--ink: #050a13;
	--ink-2: #08101d;
	--glass: rgba(255, 255, 255, 0.04);
	--glass-strong: rgba(255, 255, 255, 0.08);
	--line: rgba(140, 190, 230, 0.22);
	--line-soft: rgba(140, 190, 230, 0.12);
	--paper: #eaf3fb;
	--paper-dim: #9fb7ce;
	--paper-dimmer: #5f7994;
	--ember: #3fa9f5;
	--signal: #6fe3ff;
	background:
		radial-gradient(ellipse 60% 50% at 50% 38%, rgba(45, 110, 180, 0.20), transparent 65%),
		linear-gradient(180deg, #071223 0%, #050b16 55%, #04070f 100%);
}

.ptf-front .pane {
	background:
		linear-gradient(180deg, rgba(120, 190, 255, 0.03) 0%, rgba(2, 6, 14, 0.55) 100%),
		radial-gradient(ellipse at 50% 25%, rgba(90, 170, 255, 0.05), transparent 60%),
		#081120;
	border-right-color: rgba(140, 190, 230, 0.08);
}
.ptf-front .pane--3 { background-color: #0a1526; }
.ptf-front .figure {
	background: radial-gradient(ellipse at 50% 20%, rgba(2, 8, 18, 0.9), rgba(2, 8, 18, 0.6) 55%, transparent 80%);
}
.ptf-front .glow--core {
	background: radial-gradient(circle, rgba(63, 169, 245, 0.35), rgba(63, 169, 245, 0.08) 45%, transparent 75%);
}
.ptf-front .ptf-layer--glass::after {
	background: linear-gradient(180deg, rgba(4, 9, 18, 0.55) 0%, rgba(4, 9, 18, 0.74) 55%, rgba(3, 6, 13, 0.9) 100%);
}

/* --- top bar: logo · nav links · Open ORA CTA --- */
.ptf-glass__nav {
	flex: 1;
	display: flex;
	justify-content: center;
}
.ptf-glass__nav-menu {
	display: flex;
	align-items: center;
	gap: clamp(16px, 3vw, 36px);
}
.ptf-glass__nav .nav-menu {
	display: flex;
	align-items: center;
	gap: clamp(16px, 3vw, 36px);
}
.ptf-glass__nav a {
	font-size: 0.78rem;
	letter-spacing: 0.02em;
	color: var(--paper-dim);
	transition: color 0.3s var(--ease);
}
.ptf-glass__nav a:hover,
.ptf-glass__nav a:focus-visible { color: var(--paper); }

.ptf-glass__nav-cta {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 10px 20px;
	border-radius: 999px;
	background: rgba(111, 227, 255, 0.12);
	border: 1px solid rgba(111, 227, 255, 0.4);
	color: var(--paper);
	font-size: 0.78rem;
	font-weight: 500;
	white-space: nowrap;
	transition: background 0.3s var(--ease), border-color 0.3s var(--ease), transform 0.3s var(--ease);
}
.ptf-glass__nav-cta:hover,
.ptf-glass__nav-cta:focus-visible {
	background: rgba(111, 227, 255, 0.2);
	border-color: var(--signal);
	transform: translateY(-1px);
}

/* --- the centered glass card --- */
.ptf-glass__card {
	position: relative;
	z-index: 6;
	align-self: start;
	width: min(720px, calc(100% - 48px));
	max-height: calc(100% - 16px);
	margin: clamp(6px, 1.4vh, 16px) auto 0;
	padding: clamp(28px, 5vh, 56px) clamp(20px, 4vw, 48px) clamp(16px, 3vh, 28px);
	background: rgba(8, 16, 30, 0.55);
	border: 1px solid var(--line-soft);
	border-radius: 22px;
	backdrop-filter: blur(18px) saturate(120%);
	-webkit-backdrop-filter: blur(18px) saturate(120%);
	box-shadow: 0 30px 80px rgba(0, 0, 0, 0.45);
	display: flex;
	flex-direction: column;
	align-items: center;
	min-height: 0;
	overflow: hidden;
}
.ptf-glass__card .ptf-glass__content { padding: 0; flex: 1; }
.ptf-glass__hero-badge {
	display: inline-block;
	padding: 4px 14px;
	margin-bottom: 14px;
	font-family: var(--font-display);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--signal);
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid var(--line);
	border-radius: 9999px;
}
.ptf-glass__card .ptf-glass__headline { letter-spacing: 0.08em; }
.ptf-glass__card .ptf-glass__subtext { max-width: 40ch; }
.ptf-glass__card .ptf-glass__bottom {
	padding: clamp(14px, 2.5vh, 24px) 0 0;
	border-top: 1px solid var(--line-soft);
	width: 100%;
	margin-top: clamp(12px, 2.5vh, 24px);
}

/* --- desktop: the card widens sideways to fill more of the screen
   instead of staying a narrow portrait column; the orb still only
   floats up/down (see orb-float), the box around it just stretches
   wide. Mobile/Android keeps the narrower, taller portrait card. --- */
@media (min-width: 1024px) {
	.ptf-glass__card {
		width: min(1240px, calc(100% - 120px));
		padding-left: clamp(40px, 6vw, 96px);
		padding-right: clamp(40px, 6vw, 96px);
	}
	.ptf-glass__card .ptf-glass__subtext,
	.ptf-glass__card .ptf-glass__clarification { max-width: 52ch; }
}

/* --- desktop: text left / device right, matching Zk's reference layout
   (uploaded mockup screenshots). Below 1024px stays the original stacked,
   centered single column — this fixes headline/subtext getting pushed up
   and clipped by .ptf-glass__content's overflow:hidden on wide screens,
   which happened because everything (headline + subtext + clarification +
   routes + a 360–520px-tall device) was stacked in one centered column. --- */
@media (min-width: 1024px) {
	.ptf-glass__card .ptf-glass__content {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: clamp(28px, 4vw, 72px);
		text-align: left;
	}
	.ptf-glass__text {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		text-align: left;
		max-width: 560px;
	}
	.ptf-glass__card .ptf-glass__subtext,
	.ptf-glass__card .ptf-glass__clarification { max-width: 46ch; }
	.ptf-glass__routes { justify-content: flex-start; }
	.ptf-glass__orb-wrap {
		margin: 0;
		flex-shrink: 0;
	}
	.ptf-glass__orb--device {
		/* Enlarged per Zk feedback: previous clamp actually shrank the
		   device below its mobile size once the desktop row layout kicked
		   in, so on wide screens — where there's the most room — the phone
		   mockup looked smaller than intended instead of like a real
		   handset. Scaled up and re-based on vh so it now reads as a full
		   size smartphone next to the hero copy. */
		width: clamp(260px, 30vh, 360px);
		height: clamp(500px, 58vh, 700px);
	}
}

/* --- the ORA orb: single image, gentle float + breathing glow, no hue-rotate --- */
.ptf-glass__orb-wrap {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: clamp(8px, 1.6vh, 14px);
	margin: clamp(32px, 7vh, 76px) 0;
	flex-shrink: 0;
	transition: transform 0.35s var(--ease);
	will-change: transform;
}

/* §14: orb reframed as an optional deep-dive, not the only route in —
   this caption just labels what clicking it does. */
.ptf-glass__orb-caption {
	font-family: var(--font-display);
	font-size: 0.62rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--paper-dimmer);
}

/* §14: primary Personal/Enterprise choice, shown above the orb so it's
   the first actionable thing a visitor sees, not a secondary afterthought. */
.ptf-glass__routes {
	display: flex;
	flex-wrap: wrap;
	gap: clamp(10px, 1.6vw, 16px);
	margin: 0 0 clamp(10px, 2vh, 18px);
}
.ptf-glass__route {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 11px 20px;
	border-radius: var(--radius);
	border: 1px solid var(--line);
	color: var(--paper);
	font-size: 0.76rem;
	letter-spacing: 0.04em;
	transition: border-color 0.3s var(--ease), background 0.3s var(--ease), transform 0.3s var(--ease);
}
.ptf-glass__route:hover,
.ptf-glass__route:focus-visible {
	border-color: var(--signal);
	transform: translateY(-1px);
}
.ptf-glass__route--primary {
	background: var(--signal);
	color: var(--ink);
	border-color: var(--signal);
	font-weight: 500;
}
.ptf-glass__route--primary:hover,
.ptf-glass__route--primary:focus-visible {
	background: var(--paper);
	border-color: var(--paper);
	color: var(--ink);
}
@media (max-width: 480px) {
	.ptf-glass__route { padding: 10px 16px; font-size: 0.7rem; }
}
.ptf-glass__orb {
	position: relative;
	width: clamp(280px, 42vh, 460px);
	height: clamp(280px, 42vh, 460px);
	flex-shrink: 0;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	animation: orb-float 7s ease-in-out infinite;
	will-change: transform;
	backface-visibility: hidden;
}
.ptf-glass__orb::after {
	content: '';
	position: absolute;
	inset: 26%;
	border-radius: 50%;
	pointer-events: none;
	box-shadow: 0 0 0 0 rgba(111, 227, 255, 0.45);
	animation: orb-pulse-ring 3.2s ease-out infinite;
}
@keyframes orb-pulse-ring {
	0% { box-shadow: 0 0 0 0 rgba(111, 227, 255, 0.45); }
	65% { box-shadow: 0 0 0 34px rgba(111, 227, 255, 0); }
	100% { box-shadow: 0 0 0 34px rgba(111, 227, 255, 0); }
}

/* --- §"Zk direction": center visual is now a spinning ORA app/PWA screen
   mockup instead of a static orb image. .ptf-glass__orb--device overrides
   the circular sizing above to a phone aspect ratio; the ring/float/dust
   ambience around it is untouched so the futuristic single-viewport feel
   stays identical. --- */
.ptf-glass__orb--device {
	/* Base (sub-1024px) size — bumped up so the mockup reads as a real
	   Android/iOS handset rather than a small toy phone. */
	width: clamp(230px, 36vh, 320px);
	height: clamp(440px, 66vh, 620px);
	border-radius: 34px;
	perspective: 1600px;
}
.ptf-glass__orb--device::after {
	inset: -6%;
	border-radius: 40px;
}
.ptf-device {
	position: relative;
	width: 88%;
	height: 94%;
	display: block;
}
.ptf-device__inner {
	position: absolute;
	inset: 0;
	transform-style: preserve-3d;
	/* Continuous rotation on the phone's own vertical axis. Slightly
	   slower than before (18s) now that the device is bigger, so the
	   spin still reads as a smooth, deliberate turn rather than a blur. */
	animation: ptf-device-spin 18s linear infinite;
	will-change: transform;
}
@keyframes ptf-device-spin {
	from { transform: rotateY(0deg); }
	to { transform: rotateY(360deg); }
}
.ptf-device__face {
	position: absolute;
	inset: 0;
	border-radius: 28px;
	backface-visibility: hidden;
	overflow: hidden;
	border: 2px solid rgba(75, 199, 255, 0.4);
	box-shadow: 0 0 45px rgba(25, 169, 245, 0.35), 0 0 100px rgba(25, 169, 245, 0.18);
}
.ptf-device__face--front { transform: rotateY(0deg) translateZ(0.5px); }
.ptf-device__face--back {
	transform: rotateY(180deg) translateZ(0.5px);
	background: radial-gradient(circle at 50% 32%, rgba(25, 169, 245, 0.22), transparent 65%), #050b16;
	display: flex;
	align-items: center;
	justify-content: center;
}
.ptf-device__back-mark {
	width: 46%;
	height: 46%;
	border-radius: 50%;
	border: 2px solid #19a9f5;
	position: relative;
}
.ptf-device__back-mark::after {
	content: '';
	position: absolute;
	top: -4px;
	right: 6%;
	width: 12%;
	height: 12%;
	border-radius: 50%;
	background: #4bc7ff;
	box-shadow: 0 0 12px 3px rgba(75, 199, 255, 0.6);
}

/* --- front face: compact recreation of the real ORA PWA screen
   (colors/structure match ptf-core/pwa/index.html), scaled down to fit
   the device frame. Static mockup, not a live iframe — this is decor for
   the hero, not the actual app. --- */
.ptf-device__screen {
	position: absolute;
	inset: 0;
	background: radial-gradient(1200px 600px at 50% -10%, rgba(25, 169, 245, 0.14), transparent 60%), #050b16;
	color: #f4f7fa;
	font-family: var(--font-body);
	display: flex;
	flex-direction: column;
	padding: clamp(10px, 2vh, 16px) clamp(10px, 2vh, 14px);
	gap: clamp(6px, 1.4vh, 10px);
}
.ptf-device__notch {
	position: absolute;
	top: 6px;
	left: 50%;
	transform: translateX(-50%);
	width: 34%;
	height: 5px;
	border-radius: 4px;
	background: rgba(255, 255, 255, 0.14);
}
.ptf-device__status {
	display: flex;
	align-items: center;
	gap: 6px;
	font-family: var(--font-display);
	font-size: 0.5rem;
	letter-spacing: 0.1em;
	color: #20d6a3;
	margin-top: 6px;
}
.ptf-device__dot {
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: #20d6a3;
	box-shadow: 0 0 6px 1px rgba(32, 214, 163, 0.6);
}
.ptf-device__greeting {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 4px 0 2px;
}
.ptf-device__mark {
	width: 16px;
	height: 16px;
	border-radius: 50%;
	border: 1.5px solid #19a9f5;
	flex-shrink: 0;
}
.ptf-device__greeting-text {
	font-size: 0.56rem;
	line-height: 1.4;
	color: #8c9aaf;
}
.ptf-device__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
}
.ptf-device__chip {
	font-size: 0.44rem;
	padding: 4px 7px;
	border-radius: 10px;
	border: 1px solid rgba(75, 199, 255, 0.28);
	color: #f4f7fa;
	background: rgba(255, 255, 255, 0.02);
}
.ptf-device__chat {
	display: flex;
	flex-direction: column;
	gap: 5px;
	margin-top: 2px;
}
.ptf-device__bubble {
	font-size: 0.48rem;
	line-height: 1.4;
	padding: 6px 8px;
	border-radius: 10px;
	max-width: 82%;
}
.ptf-device__bubble--ora {
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(75, 199, 255, 0.22);
	align-self: flex-start;
	border-bottom-left-radius: 3px;
}
.ptf-device__bubble--user {
	background: #19a9f5;
	color: #04101d;
	font-weight: 500;
	align-self: flex-end;
	border-bottom-right-radius: 3px;
}
/* --- "ORA is typing" indicator: three dots bouncing in sequence,
   styled like an incoming chat bubble so it reads as ORA composing a
   reply. Global prefers-reduced-motion rule already collapses this
   animation to near-zero duration for users who need it. --- */
.ptf-device__bubble--typing {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 8px 10px;
}
.ptf-device__typing-dot {
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: #8c9aaf;
	animation: ptf-typing-bounce 1.3s ease-in-out infinite;
}
.ptf-device__typing-dot:nth-child(2) { animation-delay: 0.16s; }
.ptf-device__typing-dot:nth-child(3) { animation-delay: 0.32s; }
@keyframes ptf-typing-bounce {
	0%, 60%, 100% { transform: translateY(0); opacity: 0.35; }
	30% { transform: translateY(-3px); opacity: 1; }
}

.ptf-device__composer {
	margin-top: auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 6px;
	padding: 7px 8px;
	border-radius: 12px;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid rgba(75, 199, 255, 0.22);
}
.ptf-device__composer-text {
	font-size: 0.44rem;
	color: #8c9aaf;
}
.ptf-device__send {
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #19a9f5;
	color: #04101d;
	font-size: 0.5rem;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

@media (max-width: 480px) {
	.ptf-glass__orb--device { width: clamp(210px, 58vw, 270px); height: clamp(400px, 98vw, 520px); }
}
.ptf-glass__orb-dust {
	position: absolute;
	inset: -14%;
	border-radius: 50%;
	background:
		radial-gradient(1.5px 1.5px at 14% 24%, rgba(210, 245, 255, 0.75), transparent),
		radial-gradient(1.5px 1.5px at 84% 20%, rgba(210, 245, 255, 0.55), transparent),
		radial-gradient(1.5px 1.5px at 88% 70%, rgba(210, 245, 255, 0.65), transparent),
		radial-gradient(1.5px 1.5px at 20% 84%, rgba(210, 245, 255, 0.5), transparent),
		radial-gradient(1.5px 1.5px at 52% 6%, rgba(210, 245, 255, 0.5), transparent);
	animation: orb-dust-twinkle 5.5s ease-in-out infinite;
}
@keyframes orb-dust-twinkle {
	0%, 100% { opacity: 0.45; }
	50% { opacity: 1; }
}
@keyframes orb-float {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-20px); }
}

/* --- planets: small spheres scattered across every edge of the
   screen around the central orb, like distant bodies in orbit —
   replaces the old bubble column that only rose up under the orb --- */
.ptf-glass__planets {
	position: absolute;
	inset: 0;
	z-index: 2;
	pointer-events: none;
}
.planet {
	position: absolute;
	border-radius: 50%;
	background: radial-gradient(circle at 32% 28%, rgba(225, 248, 255, 0.9), rgba(111, 227, 255, 0.35) 55%, rgba(111, 227, 255, 0.05) 78%);
	box-shadow: 0 0 18px rgba(111, 227, 255, 0.35);
	opacity: 0.55;
	animation: planet-drift ease-in-out infinite;
}
/* corners + edges, several running right up to the side walls so
   the "solar system" feel reaches the full width of the screen,
   not just clustered near the orb */
.planet--1  { top: 8%;  left: -2%;  width: 14px; height: 14px; animation-duration: 13s; animation-delay: 0s; }
.planet--2  { top: 14%; right: -3%; width: 20px; height: 20px; animation-duration: 17s; animation-delay: 1.4s; opacity: 0.4; }
.planet--3  { top: 24%; left: 2%;   width: 8px;  height: 8px;  animation-duration: 11s; animation-delay: 2.6s; }
.planet--4  { top: 20%; right: 8%;  width: 10px; height: 10px; animation-duration: 12s; animation-delay: 3.4s; }
.planet--5  { top: 34%; left: -3%;  width: 26px; height: 26px; animation-duration: 20s; animation-delay: 0.8s; opacity: 0.34; }
.planet--6  { top: 30%; right: -2%; width: 12px; height: 12px; animation-duration: 14s; animation-delay: 4.4s; }
.planet--7  { top: 47%; left: 3%;   width: 9px;  height: 9px;  animation-duration: 12.5s; animation-delay: 1.2s; }
.planet--8  { top: 44%; right: 4%;  width: 16px; height: 16px; animation-duration: 15.5s; animation-delay: 5.6s; }
.planet--9  { top: 60%; left: -2%;  width: 18px; height: 18px; animation-duration: 16s; animation-delay: 2.2s; opacity: 0.4; }
.planet--10 { top: 55%; right: -3%; width: 10px; height: 10px; animation-duration: 18s; animation-delay: 5s; }
.planet--11 { bottom: 22%; left: 1%;   width: 12px; height: 12px; animation-duration: 13.5s; animation-delay: 3s; }
.planet--12 { bottom: 18%; right: 1%;  width: 22px; height: 22px; animation-duration: 19s; animation-delay: 0.4s; opacity: 0.36; }
.planet--13 { bottom: 10%; left: -3%;  width: 8px;  height: 8px;  animation-duration: 11.5s; animation-delay: 4.8s; }
.planet--14 { bottom: 8%;  right: -2%; width: 14px; height: 14px; animation-duration: 15s; animation-delay: 2.8s; }
.planet--15 { top: 6%;  left: 38%;  width: 6px;  height: 6px;  animation-duration: 10s; animation-delay: 3.6s; }
.planet--16 { top: 5%;  right: 34%; width: 7px;  height: 7px;  animation-duration: 10.5s; animation-delay: 1.8s; }
.planet--17 { bottom: 5%; left: 34%; width: 9px;  height: 9px;  animation-duration: 12s; animation-delay: 4.2s; }
.planet--18 { bottom: 6%; right: 30%; width: 11px; height: 11px; animation-duration: 13s; animation-delay: 2s; }
@keyframes planet-drift {
	0%, 100% { transform: translate(0, 0) scale(1); }
	50% { transform: translate(0, -22px) scale(1.06); }
}
@media (prefers-reduced-motion: reduce) {
	.planet { animation: none; }
}

/* --- floating status list + counter, outside the card --- */
.ptf-glass__status-list { top: auto; bottom: clamp(120px, 22vh, 220px); }

.ptf-glass__counter {
	position: absolute;
	z-index: 6;
	right: clamp(16px, 4vw, 40px);
	bottom: clamp(16px, 3vh, 32px);
	text-align: left;
}

.ptf-glass__caption {
	position: absolute;
	z-index: 6;
	left: clamp(16px, 4vw, 40px);
	bottom: clamp(16px, 3vh, 32px);
}

/* =========================================================
   9. ORA AI — standalone landing page (template-ora-ai.php)
   Same dark/glass language as the front page, own blue tokens,
   normal scrolling page (not a fixed single-viewport scene).
   ========================================================= */

.ptf-ora-page {
	--ink: #050a13;
	--ink-2: #08101d;
	--glass: rgba(255, 255, 255, 0.04);
	--glass-strong: rgba(255, 255, 255, 0.08);
	--line: rgba(140, 190, 230, 0.22);
	--line-soft: rgba(140, 190, 230, 0.12);
	--paper: #eaf3fb;
	--paper-dim: #9fb7ce;
	--paper-dimmer: #5f7994;
	--signal: #6fe3ff;
	position: relative;
	min-height: 100vh;
	background:
		radial-gradient(ellipse 60% 50% at 50% 30%, rgba(45, 110, 180, 0.18), transparent 65%),
		linear-gradient(180deg, #071223 0%, #050b16 55%, #04070f 100%);
	color: var(--paper);
	overflow: hidden;
}
.ptf-ora-page .ptf-starfield { opacity: 0.8; }

/* --- nav --- */
.ptf-ora-page__nav {
	position: relative;
	z-index: 6;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 26px clamp(20px, 4vw, 56px);
	flex-wrap: wrap;
}
.ptf-ora-page__brand {
	display: flex;
	align-items: center;
	gap: 12px;
	font-family: var(--font-display);
}
.ptf-ora-page__mark { font-weight: 600; font-size: 1.2rem; letter-spacing: 0.02em; color: var(--paper); }
.ptf-ora-page__divider { width: 1px; height: 18px; background: var(--line); }
.ptf-ora-page__product { font-size: 0.9rem; letter-spacing: 0.16em; color: var(--paper-dim); }
.ptf-ora-page__links { display: flex; align-items: center; gap: clamp(16px, 3vw, 34px); }
.ptf-ora-page__links a {
	font-size: 0.82rem;
	color: var(--paper-dim);
	padding-bottom: 4px;
	border-bottom: 1px solid transparent;
	transition: color 0.3s var(--ease), border-color 0.3s var(--ease);
}
.ptf-ora-page__links a:hover,
.ptf-ora-page__links a.is-active { color: var(--paper); border-color: var(--signal); }
.ptf-ora-page__cta,
.ptf-ora-hero__cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 11px 22px;
	border-radius: 999px;
	background: rgba(111, 227, 255, 0.12);
	border: 1px solid rgba(111, 227, 255, 0.4);
	color: var(--paper);
	font-size: 0.8rem;
	font-weight: 500;
	white-space: nowrap;
	transition: background 0.3s var(--ease), border-color 0.3s var(--ease), transform 0.3s var(--ease);
}
.ptf-ora-page__cta:hover,
.ptf-ora-hero__cta:hover,
.ptf-ora-page__cta:focus-visible,
.ptf-ora-hero__cta:focus-visible {
	background: rgba(111, 227, 255, 0.22);
	border-color: var(--signal);
	transform: translateY(-1px);
}

/* --- hero: 3-column grid, feature cards | center | chat --- */
.ptf-ora-hero {
	position: relative;
	z-index: 6;
	display: grid;
	grid-template-columns: minmax(0, 260px) minmax(0, 1fr) minmax(0, 360px);
	grid-template-areas: "left center right";
	gap: clamp(20px, 3vw, 44px);
	align-items: center;
	max-width: 1440px;
	margin: 0 auto;
	padding: clamp(20px, 4vh, 50px) clamp(20px, 4vw, 56px) clamp(50px, 8vh, 90px);
}
.ptf-ora-hero__side--left { grid-area: left; display: flex; flex-direction: column; gap: 14px; }
.ptf-ora-hero__side--right { grid-area: right; }
.ptf-ora-hero__center { grid-area: center; text-align: center; display: flex; flex-direction: column; align-items: center; }

.ptf-ora-hero__eyebrow { font-size: 0.68rem; letter-spacing: 0.22em; color: var(--signal); text-transform: uppercase; opacity: 0.9; }
.ptf-ora-hero__headline {
	margin: 14px 0 0;
	font-family: var(--font-display);
	font-weight: 500;
	line-height: 1.25;
	font-size: clamp(1.5rem, 3.6vw, 2.5rem);
}
.ptf-ora-hero__headline span { display: block; }
.ptf-ora-hero__headline .is-accent { color: var(--signal); }
.ptf-ora-hero__subtext {
	margin: 16px 0 0;
	max-width: 46ch;
	color: var(--paper-dim);
	font-size: clamp(0.85rem, 1.6vw, 0.98rem);
	line-height: 1.7;
}
.ptf-ora-hero__tagline {
	margin-top: 28px;
	font-size: 0.62rem;
	letter-spacing: 0.18em;
	color: var(--paper-dimmer);
	text-transform: uppercase;
}

/* --- feature cards (left column + capabilities section) --- */
.ptf-ora-feature {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	padding: 16px;
	background: var(--glass);
	border: 1px solid var(--line-soft);
	border-radius: 14px;
	backdrop-filter: blur(6px);
	transition: border-color 0.35s var(--ease), background 0.35s var(--ease), transform 0.35s var(--ease);
}
.ptf-ora-feature:hover { border-color: var(--line); background: var(--glass-strong); transform: translateY(-2px); }
.ptf-ora-feature__icon {
	flex-shrink: 0;
	width: 40px;
	height: 40px;
	border-radius: 10px;
	background: rgba(111, 227, 255, 0.08);
	border: 1px solid rgba(111, 227, 255, 0.25);
	display: flex;
	align-items: center;
	justify-content: center;
}
.ptf-ora-feature__icon::before {
	content: attr(data-symbol);
	font-size: 1rem;
	color: var(--signal);
	text-shadow: 0 0 10px rgba(111, 227, 255, 0.6);
}
.ptf-ora-feature__text { display: flex; flex-direction: column; gap: 3px; text-align: left; }
.ptf-ora-feature__title { font-family: var(--font-display); font-size: 0.88rem; color: var(--paper); }
.ptf-ora-feature__desc { font-size: 0.78rem; line-height: 1.5; color: var(--paper-dim); }

/* --- the ORA sphere: photographed orb (background removed) + CSS orbit
   rings and dust for a "solar system" feel. Rings are drawn in CSS (not
   baked into the photo) so their rotation stays perfectly smooth. --- */
.ptf-ora-sphere-wrap {
	position: relative;
	width: min(520px, 80vw);
	aspect-ratio: 1;
	margin: clamp(56px, 10vh, 100px) auto 0;
}
.ptf-ora-sphere__img {
	position: absolute;
	top: 50%;
	left: 50%;
	display: block;
	width: 70%;
	height: 70%;
	object-fit: contain;
	transform: translate(-50%, -50%) scale(1);
	filter: drop-shadow(0 0 50px rgba(63, 169, 245, 0.45)) drop-shadow(0 0 120px rgba(63, 169, 245, 0.22));
	animation: ora-sphere-breathe 4.4s ease-in-out infinite;
	will-change: transform, filter;
	backface-visibility: hidden;
}
@keyframes ora-sphere-breathe {
	0%, 100% { transform: translate(-50%, -50%) scale(1); filter: brightness(1) drop-shadow(0 0 50px rgba(63, 169, 245, 0.45)) drop-shadow(0 0 120px rgba(63, 169, 245, 0.22)); }
	50% { transform: translate(-50%, -50%) scale(1.035); filter: brightness(1.1) drop-shadow(0 0 60px rgba(63, 169, 245, 0.55)) drop-shadow(0 0 130px rgba(63, 169, 245, 0.28)); }
}
.ptf-ora-sphere__ring {
	position: absolute;
	top: 50%;
	left: 50%;
	border-radius: 50%;
	border: 1px solid rgba(111, 227, 255, 0.3);
	transform: translate(-50%, -50%) rotate(-18deg) scaleY(0.38);
	will-change: transform;
	backface-visibility: hidden;
}
.ptf-ora-sphere__ring--1 {
	width: 88%;
	height: 88%;
	animation: ora-ring-spin 16s linear infinite;
}
.ptf-ora-sphere__ring--2 {
	width: 78%;
	height: 78%;
	border-color: rgba(111, 227, 255, 0.18);
	transform: translate(-50%, -50%) rotate(32deg) scaleY(0.42);
	animation: ora-ring-spin-reverse 24s linear infinite;
}
.ptf-ora-sphere__ring--3 {
	width: 100%;
	height: 100%;
	border-color: rgba(111, 227, 255, 0.12);
	transform: translate(-50%, -50%) rotate(64deg) scaleY(0.34);
	animation: ora-ring-spin 34s linear infinite;
}
@keyframes ora-ring-spin {
	from { transform: translate(-50%, -50%) rotate(var(--ora-tilt, -18deg)) scaleY(var(--ora-flat, 0.38)) rotateZ(0deg); }
	to   { transform: translate(-50%, -50%) rotate(var(--ora-tilt, -18deg)) scaleY(var(--ora-flat, 0.38)) rotateZ(360deg); }
}
.ptf-ora-sphere__ring--1 { --ora-tilt: -18deg; --ora-flat: 0.38; }
.ptf-ora-sphere__ring--3 { --ora-tilt: 64deg; --ora-flat: 0.34; }
@keyframes ora-ring-spin-reverse {
	from { transform: translate(-50%, -50%) rotate(32deg) scaleY(0.42) rotateZ(360deg); }
	to   { transform: translate(-50%, -50%) rotate(32deg) scaleY(0.42) rotateZ(0deg); }
}
.ptf-ora-sphere__dust {
	position: absolute;
	inset: -18%;
	border-radius: 50%;
	background:
		radial-gradient(1.5px 1.5px at 12% 28%, rgba(210, 245, 255, 0.8), transparent),
		radial-gradient(1.5px 1.5px at 82% 18%, rgba(210, 245, 255, 0.6), transparent),
		radial-gradient(1.5px 1.5px at 88% 68%, rgba(210, 245, 255, 0.7), transparent),
		radial-gradient(1.5px 1.5px at 22% 82%, rgba(210, 245, 255, 0.5), transparent),
		radial-gradient(1.5px 1.5px at 55% 6%, rgba(210, 245, 255, 0.55), transparent),
		radial-gradient(1.5px 1.5px at 6% 55%, rgba(210, 245, 255, 0.45), transparent);
	animation: ora-dust-twinkle 5s ease-in-out infinite;
}
@keyframes ora-dust-twinkle {
	0%, 100% { opacity: 0.5; }
	50% { opacity: 1; }
}
.ptf-ora-sphere__beam {
	position: absolute;
	left: 50%;
	bottom: -4%;
	width: 2px;
	height: 22%;
	background: linear-gradient(180deg, rgba(200, 240, 255, 0.85), transparent);
	transform: translateX(-50%);
	filter: blur(1px);
}
.ptf-ora-sphere__pool {
	position: absolute;
	left: 50%;
	bottom: -8%;
	width: 74%;
	height: 16%;
	transform: translateX(-50%);
	border-radius: 50%;
	background: radial-gradient(ellipse at center, rgba(111, 227, 255, 0.22), transparent 70%);
	box-shadow: 0 0 0 1px rgba(111, 227, 255, 0.1), 0 0 0 16px rgba(111, 227, 255, 0.04);
}
.ptf-tab-hidden .ptf-ora-sphere__img,
.ptf-tab-hidden .ptf-ora-sphere__ring,
.ptf-tab-hidden .ptf-ora-sphere__dust { animation-play-state: paused; }

/* --- chat preview card --- */
.ptf-ora-chat {
	max-width: 380px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 18px;
	background: rgba(10, 18, 32, 0.55);
	border: 1px solid var(--line-soft);
	border-radius: 18px;
	backdrop-filter: blur(16px);
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
}
.ptf-ora-chat--live { padding-top: 14px; }
.ptf-ora-chat__live-badge {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 0.66rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #6fe3a0;
}
.ptf-ora-chat__live-badge .dot {
	width: 5px; height: 5px; border-radius: 50%;
	background: #6fe3a0;
	box-shadow: 0 0 6px rgba(111, 227, 160, 0.7);
	animation: pulse-dot 2.4s ease-in-out infinite;
}
.ptf-ora-chat__header { display: flex; align-items: center; gap: 10px; }
.ptf-ora-chat__avatar {
	width: 26px; height: 26px; border-radius: 50%;
	border: 2px solid var(--signal);
	box-shadow: 0 0 10px rgba(111, 227, 255, 0.6);
	animation: pulse-dot 2.4s ease-in-out infinite;
}
.ptf-ora-chat__name { font-family: var(--font-display); font-size: 0.9rem; }
.ptf-ora-chat__status { display: flex; align-items: center; gap: 5px; font-size: 0.7rem; color: var(--paper-dimmer); margin-left: 2px; }
.ptf-ora-chat__status .dot { width: 5px; height: 5px; border-radius: 50%; background: #6fe3a0; box-shadow: 0 0 6px rgba(111, 227, 160, 0.7); }
.ptf-ora-chat__more { margin-left: auto; color: var(--paper-dimmer); }
.ptf-ora-chat__body { display: flex; flex-direction: column; gap: 10px; }
.ptf-ora-chat__bubble { padding: 10px 14px; border-radius: 12px; font-size: 0.8rem; line-height: 1.6; }
.ptf-ora-chat__bubble--user { align-self: flex-end; background: rgba(255, 255, 255, 0.07); color: var(--paper); border-bottom-right-radius: 3px; max-width: 90%; }
.ptf-ora-chat__bubble--ora { align-self: flex-start; background: rgba(111, 227, 255, 0.08); border: 1px solid rgba(111, 227, 255, 0.18); color: var(--paper-dim); border-bottom-left-radius: 3px; }
.ptf-ora-chat__bubble--ora p { margin: 0 0 0.7em; }
.ptf-ora-chat__bubble--ora p:last-child { margin-bottom: 0; }
.ptf-ora-chat__typing { display: flex; gap: 4px; padding-left: 2px; }
.ptf-ora-chat__typing span { width: 4px; height: 4px; border-radius: 50%; background: var(--paper-dimmer); animation: ora-typing-bounce 1.2s ease-in-out infinite; }
.ptf-ora-chat__typing span:nth-child(2) { animation-delay: 0.15s; }
.ptf-ora-chat__typing span:nth-child(3) { animation-delay: 0.3s; }
@keyframes ora-typing-bounce { 0%, 60%, 100% { opacity: 0.35; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-3px); } }
.ptf-ora-chat__input {
	display: flex; align-items: center; justify-content: space-between;
	padding: 10px 10px 10px 16px;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid var(--line-soft);
	border-radius: 999px;
	font-size: 0.78rem;
	color: var(--paper-dimmer);
}
.ptf-ora-chat__send {
	width: 26px; height: 26px; border-radius: 50%;
	background: var(--paper);
	color: var(--ink);
	display: flex; align-items: center; justify-content: center;
	font-size: 0.8rem;
}

/* --- capabilities section --- */
.ptf-ora-capabilities {
	position: relative;
	z-index: 6;
	max-width: 1100px;
	margin: 0 auto;
	padding: 0 clamp(20px, 4vw, 56px) clamp(60px, 10vh, 110px);
	text-align: center;
}
.ptf-ora-capabilities h2 {
	font-family: var(--font-display);
	font-size: clamp(1.3rem, 3vw, 1.8rem);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	margin: 0 0 clamp(24px, 4vh, 40px);
}
.ptf-ora-capabilities__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 20px;
	text-align: left;
}
.ptf-ora-capabilities__item {
	padding: 22px;
	background: var(--glass);
	border: 1px solid var(--line-soft);
	border-radius: 14px;
}
.ptf-ora-capabilities__item h3 { font-family: var(--font-display); font-size: 0.95rem; margin: 14px 0 6px; }
.ptf-ora-capabilities__item p { font-size: 0.82rem; line-height: 1.6; color: var(--paper-dim); margin: 0; }

.ptf-ora-page__content {
	position: relative;
	z-index: 6;
	max-width: 720px;
	margin: 0 auto;
	padding: 0 clamp(20px, 4vw, 56px) clamp(60px, 10vh, 110px);
	color: var(--paper-dim);
	line-height: 1.8;
}

@media (max-width: 1080px) {
	.ptf-ora-hero { grid-template-columns: 1fr; grid-template-areas: "center" "right" "left"; }
	.ptf-ora-hero__side--left { flex-direction: row; flex-wrap: wrap; }
	.ptf-ora-hero__side--left .ptf-ora-feature { flex: 1 1 240px; }
}
@media (max-width: 640px) {
	.ptf-ora-page__links { display: none; }
	.ptf-ora-hero__side--left { flex-direction: column; }
}

/* =========================================================
   8. RESPONSIVE
   ========================================================= */

@media (max-width: 900px) {
	.ptf-shell { grid-template-columns: 1fr; }
	.ptf-sidebar { border-left: 0; border-top: 1px solid var(--line-soft); padding-left: 0; padding-top: 32px; }
}

@media (max-width: 782px) {
	.ptf-glass__facility { grid-template-columns: repeat(3, 1fr); }
	.ptf-glass__facility::after { background-image: repeating-linear-gradient(90deg, transparent 0, transparent calc(33.33% - 1px), var(--line) calc(33.33% - 1px), var(--line) 33.33%); }
	.pane--4, .pane--5 { display: none; }
	.ptf-glass__status-list { display: none; }
	.ptf-glass__topbar { align-items: center; }
	.ptf-glass__nav { display: none; }
	.ptf-glass__nav-cta { padding: 8px 14px; font-size: 0.7rem; }
	.ptf-glass__caption { display: none; }
	.ptf-glass__counter { min-width: 0; max-width: 55%; }
}

@media (max-width: 480px) {
	.ptf-glass__facility { grid-template-columns: repeat(2, 1fr); }
	.ptf-glass__facility::after { background-image: repeating-linear-gradient(90deg, transparent 0, transparent calc(50% - 1px), var(--line) calc(50% - 1px), var(--line) 50%); }
	.ptf-glass__eyebrow { max-width: 9ch; }
	.ptf-glass__headline { letter-spacing: 0.03em; }
	.ptf-glass__caption p { max-width: 13ch; }

	/* Push headline + subtext up toward the top of the card instead of
	   dead-centering the whole block, so on Android phones they get
	   clear air above the orb instead of crowding into it. */
	.ptf-glass__card .ptf-glass__content {
		justify-content: flex-start;
		padding-top: clamp(6px, 2vh, 18px);
	}
	.ptf-glass__card .ptf-glass__subtext { margin-bottom: clamp(18px, 4vh, 30px); }
	.ptf-glass__card .ptf-glass__orb-wrap { margin-top: clamp(18px, 3.5vh, 34px); }

	.ptf-glass__hpi-line { font-size: 0.6rem; letter-spacing: 0.1em; }
	.ptf-glass__audit-cta { padding: 7px 12px; font-size: 0.6rem; }
	.planet--4, .planet--7, .planet--8, .planet--11, .planet--15, .planet--16, .planet--17, .planet--18 { display: none; }
}

/* Short viewports (small phones, landscape phones): compress everything
   further so the whole hero still fits in one screen with no scroll. */
@media (max-height: 700px) {
	.ptf-glass__topbar { padding-top: 10px; }
	.ptf-glass__content { padding: 2px 20px; }
	.ptf-glass__rule { margin: 6px auto; }
	.ptf-glass__subtext { font-size: 0.66rem; line-height: 1.45; margin-bottom: 10px; }
	.ptf-glass__orb-wrap { margin: 10px 0; }
	/* Keep the phone's tall aspect ratio on short viewports instead of
	   squashing it into a 150x150 square (that old rule made it look like
	   a small round orb again, not a smartphone). */
	.ptf-glass__orb--device { width: clamp(150px, 24vh, 190px); height: clamp(290px, 46vh, 360px); }
	.ptf-glass__business-link { margin-top: 8px; font-size: 0.6rem; }
	.ptf-glass__counter { padding: 6px 12px; }
	.ptf-glass__spark { display: none; }
	.ptf-glass__caption p { margin-bottom: 4px; }
	.ptf-glass__bottom { padding: 6px 16px; }
	.ptf-glass__card .ptf-glass__content { justify-content: flex-start; }
	.ptf-glass__card .ptf-glass__subtext { margin-bottom: 14px; }
	.ptf-glass__card .ptf-glass__orb-wrap { margin-top: 12px; }
}

@media (max-height: 520px) {
	.ptf-glass__map-link,
	.ptf-glass__counter-label,
	.ptf-glass__product-forms,
	.ptf-glass__business-link { display: none; }
	.ptf-glass__subtext br,
	.ptf-glass__subtext { display: none; }
}

/* =========================================================
   FLOATING ORA AI ASSISTANT — sitewide (1.5.0)
   Redesigned as a proper chat "frame": fixed header (avatar,
   name, presence, ⋯ overflow menu) above a scrollable body,
   instead of a bare card with a single ✕ in the corner.
   ========================================================= */

.ptf-ora-float {
	position: fixed;
	left: 16px;
	right: 16px;
	bottom: 16px;
	max-width: 460px;
	margin: 0 auto;
	z-index: 80;
}

.ptf-ora-float__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	width: 100%;
	min-height: 52px;
	padding: 8px 8px 8px 18px;
	background: var(--glass-strong);
	border: 1px solid var(--line);
	border-radius: 20px;
	backdrop-filter: blur(14px) saturate(120%);
	-webkit-backdrop-filter: blur(14px) saturate(120%);
	color: var(--paper);
	box-shadow: 0 10px 32px rgba(0, 0, 0, 0.4);
	transition: border-color 0.2s var(--ease), transform 0.2s var(--ease);
}
.ptf-ora-float__toggle:hover { border-color: var(--signal); transform: translateY(-2px); }

.ptf-ora-float__status {
	display: flex;
	align-items: center;
	gap: 8px;
	font-family: var(--font-display);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--signal);
	white-space: nowrap;
}
.ptf-ora-float__dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: #34d399;
	box-shadow: 0 0 8px rgba(52, 211, 153, 0.7);
	animation: ora-icon-pulse 2.4s ease-in-out infinite;
}
@keyframes ora-icon-pulse {
	0%, 100% { transform: scale(1); opacity: 0.85; }
	50% { transform: scale(1.22); opacity: 1; }
}
.ptf-ora-float__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 10px 18px;
	border-radius: 13px;
	background: linear-gradient(135deg, var(--signal), var(--ember));
	color: var(--ink);
	font-family: var(--font-display);
	font-size: 0.66rem;
	font-weight: 800;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
}
.ptf-ora-float.is-open .ptf-ora-float__toggle { opacity: 0; pointer-events: none; }

/* --- panel: fixed header + scrollable body, like a real chat app --- */
.ptf-ora-float__panel {
	position: absolute;
	right: 0;
	bottom: 0;
	width: min(400px, calc(100vw - 32px));
	max-height: min(600px, calc(100vh - 100px));
	display: flex;
	flex-direction: column;
	background: var(--ink-2);
	border: 1px solid var(--line);
	border-radius: 18px;
	box-shadow: 0 20px 48px rgba(0, 0, 0, 0.5);
	overflow: hidden;
	opacity: 0;
	transform: translateY(12px) scale(0.98);
	pointer-events: none;
	transition: opacity 0.2s var(--ease), transform 0.2s var(--ease);
}
.ptf-ora-float.is-open .ptf-ora-float__panel { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; }

.ptf-ora-float__header {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 14px 10px 14px 16px;
	border-bottom: 1px solid var(--line-soft);
	background: var(--glass);
}
.ptf-ora-float__avatar {
	flex-shrink: 0;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--signal), var(--ember));
	box-shadow: 0 0 12px rgba(111, 227, 255, 0.35);
}
.ptf-ora-float__name { font-family: var(--font-display); font-size: 0.88rem; color: var(--paper); }
.ptf-ora-float__presence {
	display: flex;
	align-items: center;
	gap: 5px;
	font-size: 0.68rem;
	color: var(--paper-dimmer);
	margin-left: 2px;
}
.ptf-ora-float__presence .dot {
	width: 5px; height: 5px; border-radius: 50%;
	background: #6fe3a0;
	box-shadow: 0 0 6px rgba(111, 227, 160, 0.7);
}

/* overflow (⋯) menu — the only way to dismiss the panel */
.ptf-ora-float__menu { position: relative; margin-left: auto; }
.ptf-ora-float__menu-toggle {
	width: 34px;
	height: 34px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--paper-dim);
	font-size: 1.1rem;
	letter-spacing: 0.05em;
	border-radius: 9px;
	transition: background 0.2s var(--ease), color 0.2s var(--ease);
}
.ptf-ora-float__menu-toggle:hover,
.ptf-ora-float__menu-toggle[aria-expanded="true"] { background: var(--glass-strong); color: var(--paper); }

.ptf-ora-float__menu-panel {
	position: absolute;
	top: calc(100% + 6px);
	right: 0;
	min-width: 208px;
	display: flex;
	flex-direction: column;
	padding: 6px;
	background: var(--ink-2);
	border: 1px solid var(--line);
	border-radius: 12px;
	box-shadow: 0 14px 32px rgba(0, 0, 0, 0.45);
	opacity: 0;
	transform: translateY(-6px);
	pointer-events: none;
	transition: opacity 0.15s var(--ease), transform 0.15s var(--ease);
	z-index: 1;
}
.ptf-ora-float__menu-panel.is-open { opacity: 1; transform: translateY(0); pointer-events: auto; }
.ptf-ora-float__menu-item {
	display: flex;
	align-items: center;
	gap: 10px;
	width: 100%;
	padding: 9px 10px;
	border-radius: 8px;
	font-size: 0.78rem;
	color: var(--paper-dim);
	text-align: left;
	transition: background 0.15s var(--ease), color 0.15s var(--ease);
}
.ptf-ora-float__menu-item:hover { background: var(--glass-strong); color: var(--paper); }

.ptf-ora-float__body {
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;
	padding: 16px;
	overscroll-behavior: contain;
}
.ptf-ora-float__body .ptf-ora-widget { border: 0; padding: 0; max-width: none; }

@media (max-width: 640px) {
	.ptf-ora-float { left: 12px; right: 12px; bottom: 12px; }
	.ptf-ora-float__toggle { padding: 6px 6px 6px 14px; }
	.ptf-ora-float__status { font-size: 0.6rem; }
	.ptf-ora-float__cta { padding: 8px 14px; font-size: 0.6rem; }

	/* full-height sheet, closer to a native chat app, instead of a
	   small floating card that's cramped on phones. */
	.ptf-ora-float__panel {
		position: fixed;
		left: 12px;
		right: 12px;
		bottom: 12px;
		top: 64px;
		width: auto;
		max-height: none;
		border-radius: 20px;
	}
}

/* =========================================================
   CONTENT-PAGE COMPONENTS (1.5.0)
   Shared building blocks for the four category templates
   (Tentang/About, Produk/Products, Riset/Research, Kontak/
   Contact) that previously fell back to a flat block of
   paragraphs in page.php. Same design tokens as the rest of
   the theme — no new colors introduced.
   ========================================================= */

.ptf-cp-section { margin-top: clamp(44px, 7vw, 72px); }
.ptf-cp-section__eyebrow {
	display: block;
	font-family: var(--font-display);
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--signal);
	margin-bottom: 10px;
}
.ptf-cp-section__title {
	font-family: var(--font-display);
	font-size: clamp(1.15rem, 2.6vw, 1.5rem);
	color: var(--paper);
	margin: 0 0 10px;
}
.ptf-cp-section__intro {
	max-width: 62ch;
	color: var(--paper-dim);
	font-size: 0.92rem;
	line-height: 1.75;
	margin: 0 0 26px;
}
.ptf-cp-section__followup { max-width: 62ch; margin: 18px 0 0; }

/* --- simple bullet list used by Personal/Enterprise "who it's for" /
   "where people use it" sections — same text tokens as .ptf-cp-section,
   no card chrome. --- */
.ptf-page__list {
	list-style: none;
	margin: 0;
	padding: 0;
	max-width: 62ch;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.ptf-page__list li {
	position: relative;
	padding-left: 22px;
	color: var(--paper-dim);
	font-size: 0.92rem;
	line-height: 1.7;
}
.ptf-page__list li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--signal);
}

/* --- card grid (About's four assets, Products' three forms) --- */
.ptf-cp-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 16px;
}
.ptf-cp-card {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 22px;
	background: var(--glass);
	border: 1px solid var(--line-soft);
	border-radius: 14px;
	backdrop-filter: blur(6px);
	transition: border-color 0.3s var(--ease), background 0.3s var(--ease), transform 0.3s var(--ease);
}
.ptf-cp-card:hover { border-color: var(--line); background: var(--glass-strong); transform: translateY(-2px); }
.ptf-cp-card__icon {
	width: 40px;
	height: 40px;
	flex-shrink: 0;
	border-radius: 10px;
	background: rgba(111, 227, 255, 0.08);
	border: 1px solid rgba(111, 227, 255, 0.25);
	display: flex;
	align-items: center;
	justify-content: center;
}
.ptf-cp-card__icon::before {
	content: attr(data-symbol);
	font-size: 1.05rem;
	color: var(--signal);
	text-shadow: 0 0 10px rgba(111, 227, 255, 0.6);
}
.ptf-cp-card__title { font-family: var(--font-display); font-size: 0.98rem; color: var(--paper); margin: 0; }
.ptf-cp-card__desc { font-size: 0.82rem; line-height: 1.65; color: var(--paper-dim); margin: 0; flex: 1 1 auto; }
.ptf-cp-card__link {
	align-self: flex-start;
	font-size: 0.76rem;
	font-weight: 600;
	color: var(--signal);
	border-bottom: 1px solid transparent;
	transition: border-color 0.2s var(--ease);
}
.ptf-cp-card__link:hover { border-color: var(--signal); }

/* --- pipeline flow (Riset page: pattern → context → … → refinement) --- */
.ptf-cp-pipeline {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	gap: 10px;
	counter-reset: ptf-pipeline;
}
.ptf-cp-pipeline__step {
	position: relative;
	padding: 16px 14px;
	background: var(--glass);
	border: 1px solid var(--line-soft);
	border-radius: 12px;
	counter-increment: ptf-pipeline;
}
.ptf-cp-pipeline__step::before {
	content: counter(ptf-pipeline, decimal-leading-zero);
	display: block;
	font-family: var(--font-display);
	font-size: 0.66rem;
	letter-spacing: 0.08em;
	color: var(--paper-dimmer);
	margin-bottom: 8px;
}
.ptf-cp-pipeline__step-title { font-family: var(--font-display); font-size: 0.84rem; color: var(--paper); display: block; margin-bottom: 4px; }
.ptf-cp-pipeline__step-desc { font-size: 0.76rem; line-height: 1.5; color: var(--paper-dim); }
@media (min-width: 641px) {
	.ptf-cp-pipeline__step:not(:last-child)::after {
		content: '→';
		position: absolute;
		top: 16px; right: -16px;
		color: var(--paper-dimmer);
		font-size: 0.8rem;
		z-index: 1;
	}
}

/* --- badge row (Riset governance principles, small inline chips) --- */
.ptf-cp-badges { display: flex; flex-wrap: wrap; gap: 8px; }
.ptf-cp-badges__group-label { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--paper-dimmer); margin: 14px 0 8px; }
.ptf-cp-badges__group-label:first-child { margin-top: 0; }
.ptf-cp-badge {
	padding: 6px 12px;
	border-radius: 999px;
	background: var(--glass);
	border: 1px solid var(--line-soft);
	font-size: 0.72rem;
	color: var(--paper-dim);
	white-space: nowrap;
}

/* --- callout panel (About's "Yang Bukan PTF") --- */
.ptf-cp-callout {
	padding: 20px 22px;
	background: rgba(217, 154, 99, 0.06);
	border: 1px solid rgba(217, 154, 99, 0.25);
	border-left: 2px solid var(--ember);
	border-radius: 4px;
}
.ptf-cp-callout__title { font-family: var(--font-display); font-size: 0.85rem; color: var(--ember); margin: 0 0 8px; text-transform: uppercase; letter-spacing: 0.05em; }
.ptf-cp-callout p { font-size: 0.85rem; line-height: 1.7; color: var(--paper-dim); margin: 0; }

/* --- contact cards (Kontak intent list + channel cards) --- */
.ptf-cp-contact-card {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px 20px;
	background: var(--glass);
	border: 1px solid var(--line-soft);
	border-radius: 12px;
}
.ptf-cp-contact-card__icon {
	width: 38px; height: 38px; flex-shrink: 0;
	border-radius: 50%;
	background: rgba(111, 227, 255, 0.08);
	border: 1px solid rgba(111, 227, 255, 0.25);
	display: flex; align-items: center; justify-content: center;
	color: var(--signal);
	font-size: 0.95rem;
}
.ptf-cp-contact-card__label { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--paper-dimmer); display: block; margin-bottom: 3px; }
.ptf-cp-contact-card__value { font-family: var(--font-display); font-size: 0.92rem; color: var(--paper); word-break: break-word; }
.ptf-cp-contact-card__value a { color: inherit; border-bottom: 1px solid transparent; }
.ptf-cp-contact-card__value a:hover { border-color: var(--signal); color: var(--signal); }

/* --- CTA panel (bottom of each category template) --- */
.ptf-cp-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	padding: 26px 28px;
	background: var(--glass-strong);
	border: 1px solid var(--line);
	border-radius: 16px;
}
.ptf-cp-cta__title { font-family: var(--font-display); font-size: 1.05rem; color: var(--paper); margin: 0 0 4px; }
.ptf-cp-cta__desc { font-size: 0.82rem; color: var(--paper-dim); margin: 0; max-width: 46ch; }
.ptf-cp-cta__actions { display: flex; gap: 10px; flex-wrap: wrap; }

@media (max-width: 640px) {
	.ptf-cp-pipeline { grid-template-columns: 1fr; }
	.ptf-cp-cta { flex-direction: column; align-items: flex-start; }
}

/* --- Member Dashboard (1.6.2, rewired to PTF Core's own REST API in
   1.6.3): login card + status badge, same dark-glass tokens as the rest
   of the theme, echoing the PWA screen's own login look (see
   .ptf-device__screen). --- */

.ptf-member-card {
	max-width: 420px;
	padding: 26px 28px;
	background: var(--glass-strong);
	border: 1px solid var(--line);
	border-radius: 16px;
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.ptf-member-card__status {
	align-self: flex-start;
	font-size: 0.7rem;
	letter-spacing: 0.08em;
	padding: 4px 10px;
	border-radius: 999px;
	font-weight: 600;
}
.ptf-member-card__status--active { background: rgba(111, 227, 255, 0.15); color: var(--signal); border: 1px solid rgba(111, 227, 255, 0.4); }
.ptf-member-card__status--inactive { background: rgba(255, 255, 255, 0.06); color: var(--paper-dim); border: 1px solid var(--line); }
.ptf-member-card__email { font-family: var(--font-display); font-size: 1.05rem; color: var(--paper); margin: 0; word-break: break-all; }
.ptf-member-card__note { font-size: 0.85rem; color: var(--paper-dim); margin: 0; }

.ptf-member-login__label,
.ptf-member-card .ptf-member-login__label {
	font-size: 0.72rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--paper-dim);
}
.ptf-member-login__input {
	width: 100%;
	padding: 11px 14px;
	border-radius: 10px;
	border: 1px solid var(--line);
	background: rgba(255, 255, 255, 0.04);
	color: var(--paper);
	font-size: 0.92rem;
	font-family: var(--font-body);
}
.ptf-member-login__input:focus {
	outline: none;
	border-color: var(--signal);
}
.ptf-member-login__resend {
	background: none;
	border: none;
	color: var(--paper-dim);
	font-size: 0.78rem;
	text-decoration: underline;
	cursor: pointer;
	padding: 0;
	align-self: flex-start;
}
.ptf-member-login__message {
	font-size: 0.82rem;
	color: var(--paper-dim);
	margin: 0;
	min-height: 1.2em;
}
.ptf-member-login__message.is-error { color: #ffb3b3; }
.ptf-member-login__step { display: flex; flex-direction: column; gap: 10px; }

.ptf-member-dashboard { display: flex; flex-direction: column; gap: 18px; align-items: flex-start; }
.ptf-member-logout { font-size: 0.82rem; color: var(--paper-dim); text-decoration: underline; background: none; border: none; cursor: pointer; padding: 0; }

/* --- Audit results chart, audit history, and package card (2.28.0) ---
   Same dark-glass tokens as the rest of the Member Dashboard. Chart is a
   plain HTML bar chart (no canvas/SVG library) — consistent with this
   codebase's zero-dependency approach elsewhere. --- */
.ptf-member-scores,
.ptf-member-history,
.ptf-member-package {
	width: 100%;
	max-width: 560px;
}
.ptf-member-scores__meta {
	font-size: 0.8rem;
	color: var(--paper-dim);
	margin: 0 0 14px;
}
.ptf-member-chart { display: flex; flex-direction: column; gap: 12px; }
.ptf-member-chart__empty { font-size: 0.82rem; color: var(--paper-dim); }
.ptf-member-chart__row {
	display: grid;
	grid-template-columns: 140px 1fr 34px;
	align-items: center;
	gap: 10px;
}
.ptf-member-chart__label {
	font-size: 0.76rem;
	color: var(--paper-dim);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ptf-member-chart__track {
	display: block;
	height: 8px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.06);
	overflow: hidden;
}
.ptf-member-chart__fill {
	display: block;
	height: 100%;
	border-radius: 999px;
	background: linear-gradient(90deg, var(--signal), var(--ember));
	transition: width 0.6s var(--ease);
}
.ptf-member-chart__value {
	font-family: var(--font-display);
	font-size: 0.78rem;
	color: var(--paper);
	text-align: right;
}

.ptf-member-history__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.ptf-member-history__list li {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	padding: 10px 14px;
	background: var(--glass);
	border: 1px solid var(--line-soft);
	border-radius: 10px;
	font-size: 0.8rem;
}
.ptf-member-history__date { color: var(--paper-dimmer); font-family: var(--font-display); }
.ptf-member-history__label { color: var(--paper-dim); text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.ptf-member-package__card { max-width: 420px; }
.ptf-member-package__benefits {
	list-style: none;
	margin: 4px 0 6px;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.ptf-member-package__benefits li {
	font-size: 0.8rem;
	color: var(--paper-dim);
	padding-left: 18px;
	position: relative;
}
.ptf-member-package__benefits li::before {
	content: '✓';
	position: absolute;
	left: 0;
	color: var(--signal);
}

@media (max-width: 480px) {
	.ptf-member-chart__row { grid-template-columns: 96px 1fr 30px; }
	.ptf-member-chart__label { font-size: 0.7rem; }
}


/* =========================================================
   HPI REFRAME — 1.7.0
   Simple public IA: two full-screen "slides", no single-gate UX.
   ========================================================= */
.ptf-hpi {
	--hpi-bg: #070a0e;
	--hpi-panel: rgba(255,255,255,.035);
	--hpi-line: rgba(255,255,255,.12);
	--hpi-muted: rgba(235,241,246,.62);
	--hpi-text: #f2f5f7;
	--hpi-accent: #7fd8c4;
	background: var(--hpi-bg);
	color: var(--hpi-text);
	font-family: var(--font-body, Inter, system-ui, sans-serif);
}
.ptf-hpi__hero,
.ptf-hpi__workspace {
	position: relative;
	min-height: 100svh;
	width: 100%;
	overflow: hidden;
}
.ptf-hpi__hero {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: clamp(20px, 3vw, 48px);
	background:
		radial-gradient(circle at 72% 45%, rgba(127,216,196,.10), transparent 28%),
		radial-gradient(circle at 18% 75%, rgba(255,255,255,.045), transparent 30%),
		var(--hpi-bg);
}
.ptf-hpi__ambient {
	position: absolute;
	inset: 0;
	pointer-events: none;
	opacity: .28;
	background-image:
		linear-gradient(var(--hpi-line) 1px, transparent 1px),
		linear-gradient(90deg, var(--hpi-line) 1px, transparent 1px);
	background-size: 72px 72px;
	mask-image: radial-gradient(circle at center, #000, transparent 72%);
}
.ptf-hpi__topbar {
	position: relative;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
}
.ptf-hpi__brand {
	display: inline-flex;
	flex-direction: column;
	gap: 4px;
	color: var(--hpi-text);
	text-decoration: none;
	font-family: var(--font-display, monospace);
}
.ptf-hpi__brand span { font-size: 1.15rem; letter-spacing: .16em; }
.ptf-hpi__brand small { color: var(--hpi-muted); font-size: .55rem; letter-spacing: .16em; }
.ptf-hpi__nav {
	display: flex;
	align-items: center;
	gap: clamp(12px, 2vw, 28px);
	font-size: .7rem;
	letter-spacing: .08em;
	text-transform: uppercase;
}
.ptf-hpi__nav a {
	color: var(--hpi-muted);
	text-decoration: none;
	transition: color .2s ease;
}
.ptf-hpi__nav a:hover,
.ptf-hpi__nav a:focus-visible { color: var(--hpi-text); }
.ptf-hpi__app-link { color: var(--hpi-accent) !important; }
.ptf-hpi__hero-content {
	position: relative;
	z-index: 2;
	width: min(900px, 100%);
	margin: auto 0;
	padding: 7vh 0 4vh;
}
.ptf-hpi__eyebrow,
.ptf-hpi__tile-label {
	display: block;
	margin: 0 0 16px;
	color: var(--hpi-accent);
	font-family: var(--font-display, monospace);
	font-size: .62rem;
	letter-spacing: .18em;
	text-transform: uppercase;
}
.ptf-hpi__hero h1 {
	max-width: 900px;
	margin: 0;
	font-family: var(--font-display, Inter, sans-serif);
	font-size: clamp(3.2rem, 9vw, 8.5rem);
	font-weight: 500;
	line-height: .9;
	letter-spacing: -.055em;
}
.ptf-hpi__hero h1 em { font-style: normal; opacity: .55; }
.ptf-hpi__lede {
	max-width: 650px;
	margin: clamp(28px, 4vw, 52px) 0 0;
	color: var(--hpi-muted);
	font-size: clamp(1rem, 1.7vw, 1.35rem);
	line-height: 1.55;
}
.ptf-hpi__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 28px;
}
.ptf-hpi__button {
	display: inline-flex;
	align-items: center;
	min-height: 46px;
	padding: 0 18px;
	border: 1px solid var(--hpi-line);
	color: var(--hpi-text);
	text-decoration: none;
	font-size: .7rem;
	letter-spacing: .08em;
	text-transform: uppercase;
}
.ptf-hpi__button--primary {
	background: var(--hpi-text);
	color: var(--hpi-bg);
	border-color: var(--hpi-text);
}
.ptf-hpi__scroll-note {
	position: relative;
	z-index: 2;
	color: var(--hpi-muted);
	font-family: var(--font-display, monospace);
	font-size: .58rem;
	letter-spacing: .13em;
}
.ptf-hpi__workspace {
	padding: clamp(28px, 5vw, 72px);
	background:
		linear-gradient(135deg, rgba(255,255,255,.035), transparent 45%),
		#0a0d11;
}
.ptf-hpi__workspace-head {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 32px;
	margin-bottom: clamp(24px, 4vw, 44px);
}
.ptf-hpi__workspace-head h2 {
	margin: 0;
	font-size: clamp(2rem, 4vw, 4.2rem);
	font-weight: 450;
	letter-spacing: -.04em;
}
.ptf-hpi__workspace-head > p {
	max-width: 310px;
	margin: 0;
	color: var(--hpi-muted);
	font-size: .8rem;
	line-height: 1.5;
	text-align: right;
}
.ptf-hpi__grid {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-template-rows: repeat(2, minmax(240px, 1fr));
	gap: 10px;
	min-height: min(62vh, 760px);
}
.ptf-hpi__tile {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	min-width: 0;
	padding: clamp(20px, 3vw, 38px);
	border: 1px solid var(--hpi-line);
	background: var(--hpi-panel);
	transition: transform .25s ease, background .25s ease, border-color .25s ease;
}
.ptf-hpi__tile:hover,
.ptf-hpi__tile:focus-within {
	transform: translateY(-3px);
	background: rgba(255,255,255,.055);
	border-color: rgba(255,255,255,.22);
}
.ptf-hpi__tile-index {
	color: rgba(255,255,255,.32);
	font-family: var(--font-display, monospace);
	font-size: .65rem;
	letter-spacing: .12em;
}
.ptf-hpi__tile-copy { max-width: 650px; }
.ptf-hpi__tile-copy h3 {
	margin: 0 0 14px;
	font-size: clamp(1.45rem, 2.7vw, 2.7rem);
	font-weight: 450;
	letter-spacing: -.035em;
}
.ptf-hpi__tile-copy p {
	max-width: 560px;
	margin: 0;
	color: var(--hpi-muted);
	font-size: .92rem;
	line-height: 1.6;
}
.ptf-hpi__tile-link {
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	width: fit-content;
	padding-top: 18px;
	color: var(--hpi-text);
	text-decoration: none;
	font-size: .7rem;
	letter-spacing: .08em;
	text-transform: uppercase;
}
.ptf-hpi__tile-link span { color: var(--hpi-accent); font-size: 1rem; }
.ptf-hpi__how {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 40px;
	padding: clamp(50px, 9vw, 110px) 0 10px;
}
.ptf-hpi__how h2 {
	max-width: 720px;
	margin: 0;
	font-size: clamp(2rem, 4.5vw, 5rem);
	font-weight: 450;
	line-height: 1;
	letter-spacing: -.05em;
}
.ptf-hpi__how p {
	max-width: 560px;
	margin: 0;
	color: var(--hpi-muted);
	line-height: 1.7;
}
@media (max-width: 760px) {
	.ptf-hpi__topbar { align-items: flex-start; }
	.ptf-hpi__nav a:not(.ptf-hpi__app-link) { display: none; }
	.ptf-hpi__hero h1 { font-size: clamp(3rem, 15vw, 5.5rem); }
	.ptf-hpi__workspace-head,
	.ptf-hpi__how { grid-template-columns: 1fr; display: grid; }
	.ptf-hpi__workspace-head > p { text-align: left; }
	.ptf-hpi__grid { grid-template-columns: 1fr; grid-template-rows: none; min-height: 0; }
	.ptf-hpi__tile { min-height: 330px; }
}

/* =========================================================
   HPI HOMEPAGE — visual implementation based on approved mockup
   ========================================================= */
.ptf-hpi{--hpi-bg:#050a13;--hpi-text:#f7f9fb;--hpi-muted:#aeb9c7;--hpi-blue:#285bd1;--hpi-cyan:#4bc7d1;--hpi-line:rgba(255,255,255,.11);background:#f4f5f7;color:var(--hpi-text);font-family:var(--font-body,Inter,system-ui,sans-serif);}
.hpi-hero{min-height:100svh;position:relative;overflow:hidden;background:radial-gradient(circle at 69% 48%,rgba(40,91,209,.2),transparent 29%),linear-gradient(180deg,#050a13,#02060d);isolation:isolate;}
.hpi-hero__grid{position:absolute;inset:0;opacity:.13;background-image:linear-gradient(rgba(120,170,220,.25) 1px,transparent 1px),linear-gradient(90deg,rgba(120,170,220,.25) 1px,transparent 1px);background-size:76px 76px;mask-image:linear-gradient(90deg,#000 0%,#000 48%,transparent 80%);}
.hpi-hero__visual{position:absolute;right:-4vw;top:9vh;width:61vw;height:82vh;background:url('../images/hpi-human-pattern.webp') center right/cover no-repeat;mix-blend-mode:screen;opacity:.92;filter:saturate(1.08) contrast(1.05);z-index:1;}
.hpi-hero__visual:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#050a13 0%,rgba(5,10,19,.72) 16%,transparent 52%),linear-gradient(0deg,#050a13 0%,transparent 28%);}
.hpi-nav{position:relative;z-index:5;height:68px;border-bottom:1px solid var(--hpi-line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,11.5vw,180px);}
.hpi-brand{display:flex;align-items:center;gap:9px}.hpi-brand strong{font-family:Georgia,serif;font-size:28px;line-height:1}.hpi-brand span{font-size:9px;line-height:1.15;letter-spacing:.08em;color:#e9edf3;border-left:1px solid #647080;padding-left:9px}.hpi-nav nav{display:flex;align-items:center;gap:34px}.hpi-nav nav a{font-size:14px;color:#e7ebf0}.hpi-nav nav a:hover{color:#fff}.hpi-nav__app{background:#214db4;padding:10px 21px;border-radius:4px;box-shadow:0 7px 25px rgba(33,77,180,.3)}
.hpi-hero__content{position:relative;z-index:4;width:min(620px,48vw);margin-left:clamp(24px,15.8vw,245px);padding-top:clamp(12vh,17vh,180px)}
.hpi-kicker{margin:0 0 22px;color:#8ca1bb;font-size:11px;font-weight:600;letter-spacing:.18em}.hpi-hero .hpi-kicker{color:#7da7e9}.hpi-hero h1{font-family:var(--font-display,Inter,sans-serif);font-size:clamp(50px,5vw,78px);line-height:1.02;letter-spacing:-.055em;font-weight:600;margin:0}.hpi-hero h1 span{font-weight:500}.hpi-lede{font-size:16px;line-height:1.65;color:#b7c1cf;max-width:570px;margin:26px 0 0}.hpi-actions{display:flex;gap:20px;margin-top:34px}.hpi-btn{display:inline-flex;align-items:center;justify-content:center;min-width:177px;height:44px;padding:0 20px;border:1px solid rgba(255,255,255,.45);border-radius:4px;font-size:14px;background:rgba(5,10,19,.32);backdrop-filter:blur(8px)}.hpi-btn--primary{background:#2957ca;border-color:#2957ca;box-shadow:0 8px 28px rgba(41,87,202,.3)}.hpi-trust{margin-top:34px;color:#8795a7;font-size:13px}.hpi-trust span{font-size:18px;margin-right:8px}.hpi-scroll{position:absolute;z-index:5;bottom:34px;left:50%;transform:translateX(-50%);font:12px/1 var(--font-display,monospace);color:#95a2b2;letter-spacing:.12em}.hpi-scroll span{margin-left:16px;font-size:9px;opacity:.7}
.hpi-workspace{background:#f4f5f7;padding:10px 2.2vw 5vw}.hpi-app-shell{min-height:690px;border-radius:8px;overflow:hidden;background:#050a13;display:grid;grid-template-columns:204px 1fr;box-shadow:0 20px 70px rgba(2,8,20,.22)}.hpi-sidebar{border-right:1px solid rgba(255,255,255,.08);padding:20px 10px 14px;display:flex;flex-direction:column}.hpi-sidebar__brand{display:flex;gap:8px;align-items:center;padding:0 9px 24px}.hpi-sidebar__brand b{font:25px Georgia,serif}.hpi-sidebar__brand span{font-size:7px;line-height:1.2;letter-spacing:.08em;border-left:1px solid #667181;padding-left:7px}.hpi-user{display:flex;gap:9px;align-items:center;padding:10px 9px 22px}.hpi-user i{width:32px;height:32px;border:1px solid #49627e;border-radius:50%;display:grid;place-items:center;font-style:normal}.hpi-user b,.hpi-user small{display:block}.hpi-user b{font-size:12px}.hpi-user small{font-size:9px;color:#8794a5;margin-top:3px}.hpi-sidebar nav{display:grid;gap:3px}.hpi-sidebar nav a{display:flex;gap:12px;align-items:center;padding:9px 11px;color:#b3becb;font-size:11px;border-radius:4px}.hpi-sidebar nav a.is-active{background:#183a83;color:#fff}.hpi-sidebar nav a:hover{background:rgba(255,255,255,.06);color:#fff}.hpi-sidebar__logout{margin-top:auto;border-top:1px solid rgba(255,255,255,.08);padding:18px 11px 0;color:#b3becb;font-size:11px}.hpi-dashboard{padding:22px;background:radial-gradient(circle at 50% 10%,rgba(24,71,145,.12),transparent 45%),#060b13}.hpi-dashboard__top{height:20px;display:flex;justify-content:space-between;color:#7d8b9d;font:9px var(--font-display,monospace);letter-spacing:.12em;margin:0 2px 18px}.hpi-dashboard__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;height:calc(100% - 40px)}.hpi-card{position:relative;overflow:hidden;min-height:300px;padding:29px 42px;display:flex;flex-direction:column;justify-content:space-between;border-radius:4px;border:1px solid rgba(255,255,255,.08);color:#fff;transition:transform .2s,filter .2s}.hpi-card:hover{transform:translateY(-2px);filter:brightness(1.07)}.hpi-card--blue{background:linear-gradient(135deg,#133b88,#0b244f)}.hpi-card--teal{background:linear-gradient(135deg,#16505c,#10343c)}.hpi-card--violet{background:linear-gradient(135deg,#452080,#27134d)}.hpi-card--amber{background:linear-gradient(135deg,#6c4e20,#453217)}.hpi-card__num{font:30px var(--font-display,monospace);color:rgba(255,255,255,.7)}.hpi-card h2{font-size:28px;font-weight:500;letter-spacing:-.03em;margin:0 0 10px}.hpi-card p{max-width:340px;color:rgba(255,255,255,.8);font-size:14px;line-height:1.55;margin:0}.hpi-arrow{width:34px;height:34px;border:1px solid rgba(255,255,255,.75);border-radius:50%;display:grid;place-items:center;font-size:18px;position:absolute;right:30px;bottom:28px;font-weight:400}.hpi-card__icon{position:absolute;right:35px;top:40px;font-size:70px;opacity:.1}.hpi-about{background:#f4f5f7;color:#0c121a;padding:10vw 12vw 12vw;display:grid;grid-template-columns:1fr 1fr;gap:50px}.hpi-about .hpi-kicker{color:#365a89}.hpi-about h2{grid-column:1;max-width:650px;font-size:clamp(40px,5vw,74px);line-height:.98;letter-spacing:-.055em;font-weight:500;margin:0}.hpi-about>p:last-child{grid-column:2;align-self:end;max-width:470px;color:#687486;font-size:17px;line-height:1.7;margin:0}
@media(max-width:900px){.hpi-nav{padding:0 22px}.hpi-nav nav{gap:12px}.hpi-nav nav a:not(.hpi-nav__login){display:none}.hpi-nav__login{display:inline-flex!important}.hpi-hero__visual{right:-35vw;width:105vw;opacity:.7}.hpi-hero__content{width:auto;margin:0 24px;padding-top:19vh}.hpi-hero h1{font-size:clamp(48px,13vw,68px)}.hpi-lede{max-width:510px}.hpi-actions{flex-wrap:wrap}.hpi-app-shell{grid-template-columns:1fr}.hpi-sidebar{display:none}.hpi-dashboard{padding:13px}.hpi-card{min-height:250px;padding:24px}.hpi-about{grid-template-columns:1fr;padding:80px 24px}.hpi-about h2,.hpi-about>p:last-child{grid-column:1}.hpi-scroll{left:24px;transform:none}}
@media(max-width:560px){.hpi-nav{height:60px}.hpi-brand strong{font-size:24px}.hpi-brand span{font-size:7px}.hpi-hero__visual{top:22vh;right:-62vw;width:135vw;height:58vh;opacity:.48}.hpi-hero__content{padding-top:16vh}.hpi-hero h1{font-size:48px}.hpi-lede{font-size:14px}.hpi-actions{gap:8px}.hpi-btn{min-width:0;flex:1;padding:0 12px;font-size:12px}.hpi-trust{font-size:11px}.hpi-workspace{padding:5px;background:#f4f5f7}.hpi-dashboard__grid{grid-template-columns:1fr}.hpi-card{min-height:245px}.hpi-card h2{font-size:25px}.hpi-card p{font-size:13px}.hpi-card__icon{font-size:55px}.hpi-scroll span{display:none}}

/* 1.7.2 Product suite — Personal / Enterprise */
.ptf-product-page{min-height:100vh;background:radial-gradient(circle at 75% 12%,rgba(46,116,255,.13),transparent 34%),#070b11;color:var(--paper);}
.ptf-product-hero{max-width:1280px;margin:0 auto;padding:clamp(64px,9vw,120px) 28px clamp(50px,7vw,90px);display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);gap:clamp(40px,7vw,110px);align-items:center;min-height:610px;position:relative;overflow:hidden;}
.ptf-product-hero:after{content:'';position:absolute;inset:auto 0 0;height:1px;background:linear-gradient(90deg,transparent,var(--line),transparent);}
.ptf-product-hero__copy{position:relative;z-index:2;max-width:680px}.ptf-product-hero__copy h1{font-family:var(--font-display);font-size:clamp(3rem,6.5vw,6.3rem);line-height:.98;letter-spacing:-.045em;margin:18px 0 26px}.ptf-product-hero__copy h1 span{color:#63b7ff}.ptf-product-hero__copy>p{max-width:58ch;color:var(--paper-dim);font-size:clamp(1rem,1.5vw,1.15rem);line-height:1.8}.ptf-product-hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px}.ptf-product-hero__visual{min-height:430px;display:grid;place-items:center;position:relative}.ptf-product-orbit{width:min(390px,70vw);aspect-ratio:1;border-radius:50%;border:1px solid rgba(99,183,255,.22);box-shadow:0 0 100px rgba(30,105,220,.16),inset 0 0 70px rgba(30,105,220,.08);display:grid;place-items:center;position:relative;background:radial-gradient(circle,rgba(42,117,255,.13),transparent 60%)}.ptf-product-orbit:before,.ptf-product-orbit:after{content:'';position:absolute;border:1px solid rgba(99,183,255,.14);border-radius:50%;inset:12%}.ptf-product-orbit:after{inset:24%}.ptf-product-orbit span{position:absolute;width:7px;height:7px;background:#63b7ff;border-radius:50%;box-shadow:0 0 18px #63b7ff}.ptf-product-orbit span:nth-child(1){top:12%;right:23%}.ptf-product-orbit span:nth-child(2){bottom:20%;left:14%}.ptf-product-orbit span:nth-child(3){top:50%;right:4%}.ptf-product-orbit b{font-family:var(--font-display);font-size:1.1rem;letter-spacing:.14em;text-align:center;line-height:1.35}.ptf-product-signal{position:absolute;right:0;bottom:24px;font-size:.62rem;letter-spacing:.18em;line-height:2.1;color:var(--paper-dimmer);text-align:right}.ptf-product-signal strong{color:#63b7ff;font-weight:500}.ptf-product-catalog{max-width:1280px;margin:0 auto;padding:80px 28px}.ptf-product-catalog__head{display:flex;justify-content:space-between;gap:40px;align-items:end;margin-bottom:34px}.ptf-product-catalog__head h2{font-family:var(--font-display);font-size:clamp(2rem,4vw,3.4rem);line-height:1.08;margin:12px 0 0;max-width:800px}.ptf-product-catalog__head>p{max-width:360px;color:var(--paper-dim);line-height:1.7;margin:0}.ptf-product-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}.ptf-product-card{grid-column:span 2;min-height:350px;padding:26px;display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.09);background:linear-gradient(145deg,rgba(255,255,255,.055),rgba(255,255,255,.018));border-radius:18px;position:relative;overflow:hidden;transition:transform .3s var(--ease),border-color .3s var(--ease),background .3s var(--ease)}.ptf-product-card:nth-child(4),.ptf-product-card:nth-child(5){grid-column:span 3}.ptf-product-grid--enterprise .ptf-product-card{grid-column:span 3}.ptf-product-card:before{content:'';position:absolute;width:180px;height:180px;border-radius:50%;filter:blur(45px);opacity:.13;right:-70px;top:-70px}.ptf-product-card--blue:before{background:#2777ff}.ptf-product-card--teal:before{background:#14c8c0}.ptf-product-card--violet:before{background:#8e5cff}.ptf-product-card--amber:before{background:#dca02f}.ptf-product-card:hover{transform:translateY(-5px);border-color:rgba(99,183,255,.35);background:linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.025))}.ptf-product-card__top{display:flex;justify-content:space-between;align-items:center;position:relative}.ptf-product-card__top>span{font-family:var(--font-display);font-size:2.4rem;color:rgba(255,255,255,.35)}.ptf-product-card__top small{font-size:.6rem;letter-spacing:.16em;color:var(--paper-dimmer)}.ptf-product-card__body{flex:1;position:relative}.ptf-product-card h3{font-family:var(--font-display);font-size:clamp(1.35rem,2vw,1.85rem);margin:38px 0 14px}.ptf-product-card p{color:var(--paper-dim);font-size:.9rem;line-height:1.72;margin:0 0 18px}.ptf-product-card em{font-style:normal;color:var(--paper-dimmer);font-size:.68rem;line-height:1.5;display:block}.ptf-product-card>a{position:relative;margin-top:24px;color:var(--paper);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center}.ptf-product-card>a span{font-size:1.2rem;color:#63b7ff}.ptf-product-bottom,.ptf-enterprise-flow{max-width:1280px;margin:0 auto;padding:70px 28px;display:flex;justify-content:space-between;gap:40px;align-items:center;border-top:1px solid var(--line-soft)}.ptf-product-bottom h2,.ptf-enterprise-flow h2{font-family:var(--font-display);font-size:clamp(1.8rem,3.4vw,3rem);line-height:1.1;margin:12px 0}.ptf-product-bottom p{color:var(--paper-dim);max-width:58ch;line-height:1.7}.ptf-enterprise-flow__steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;min-width:min(600px,48vw)}.ptf-enterprise-flow__steps span{padding:20px 16px;border:1px solid var(--line-soft);background:var(--glass);font-size:.72rem;color:var(--paper-dim)}.ptf-enterprise-flow__steps b{display:block;color:#63b7ff;font-family:var(--font-display);font-size:1.4rem;margin-bottom:14px}.ptf-product-page .hpi-btn{border-radius:8px;padding:13px 20px}.ptf-product-page--enterprise .ptf-product-hero{background:radial-gradient(circle at 72% 50%,rgba(34,174,180,.08),transparent 36%),transparent}.ptf-enterprise-map{width:min(420px,72vw);aspect-ratio:1;position:relative;display:grid;place-items:center;border:1px solid rgba(99,183,255,.2);border-radius:28px;background:linear-gradient(145deg,rgba(30,80,130,.12),rgba(255,255,255,.02));box-shadow:0 30px 100px rgba(0,0,0,.3)}.ptf-enterprise-map:before{content:'';position:absolute;inset:13%;border:1px dashed rgba(99,183,255,.2);border-radius:50%}.ptf-enterprise-map:after{content:'';position:absolute;inset:28%;border:1px solid rgba(99,183,255,.16);border-radius:50%}.ptf-enterprise-map i{position:absolute;font-style:normal;font-size:.56rem;letter-spacing:.16em;color:var(--paper-dimmer);padding:8px 10px;border:1px solid var(--line-soft);background:rgba(4,9,15,.75);border-radius:5px}.ptf-enterprise-map i:nth-child(1){top:15%;left:12%}.ptf-enterprise-map i:nth-child(2){top:18%;right:8%}.ptf-enterprise-map i:nth-child(3){bottom:17%;left:8%}.ptf-enterprise-map i:nth-child(4){bottom:13%;right:10%}.ptf-enterprise-map b{font-family:var(--font-display);letter-spacing:.13em;text-align:center;font-size:1rem;z-index:2}.ptf-product-page--enterprise .ptf-product-card{min-height:320px}
@media(max-width:900px){.ptf-product-hero{grid-template-columns:1fr;min-height:auto;padding-top:70px}.ptf-product-hero__visual{min-height:340px}.ptf-product-catalog__head,.ptf-product-bottom,.ptf-enterprise-flow{display:block}.ptf-product-catalog__head>p{margin-top:18px}.ptf-product-grid,.ptf-product-grid--enterprise{grid-template-columns:1fr 1fr}.ptf-product-card,.ptf-product-card:nth-child(4),.ptf-product-card:nth-child(5),.ptf-product-grid--enterprise .ptf-product-card{grid-column:span 1}.ptf-product-bottom .hpi-btn{margin-top:25px}.ptf-enterprise-flow__steps{margin-top:30px;min-width:0}}
@media(max-width:560px){.ptf-product-hero{padding-left:20px;padding-right:20px}.ptf-product-catalog,.ptf-product-bottom,.ptf-enterprise-flow{padding-left:20px;padding-right:20px}.ptf-product-hero__copy h1{font-size:clamp(2.7rem,14vw,4rem)}.ptf-product-grid,.ptf-product-grid--enterprise{grid-template-columns:1fr}.ptf-product-card,.ptf-product-card:nth-child(4),.ptf-product-card:nth-child(5),.ptf-product-grid--enterprise .ptf-product-card{grid-column:1;min-height:310px}.ptf-enterprise-flow__steps{grid-template-columns:1fr 1fr}.ptf-product-hero__actions .hpi-btn{width:100%;justify-content:center;text-align:center}.ptf-product-signal{right:5px}.ptf-product-orbit{width:300px}}

/* PTF HPI 1.7.3 — global day/night switch + member experience */
:root{color-scheme:dark;--ptf-bg:#050b16;--ptf-surface:#0a1220;--ptf-text:#f4f8ff;--ptf-muted:#9eacc0;--ptf-line:rgba(255,255,255,.11)}
html.ptf-light{color-scheme:light;--ptf-bg:#f4f7fb;--ptf-surface:#fff;--ptf-text:#0a1220;--ptf-muted:#536174;--ptf-line:rgba(10,18,32,.12)}
html.ptf-light body{background:var(--ptf-bg);color:var(--ptf-text)}
html.ptf-light .site-header{background:rgba(255,255,255,.88);border-bottom-color:var(--ptf-line)}
html.ptf-light .site-logo__eyebrow,.ptf-light .site-nav a{color:#243148}
html.ptf-light .ptf-shell,html.ptf-light .ptf-main,html.ptf-light .ptf-page{background:var(--ptf-bg);color:var(--ptf-text)}
html.ptf-light .ptf-member-card,html.ptf-light .ptf-cp-card{background:rgba(255,255,255,.92);border-color:var(--ptf-line);color:var(--ptf-text)}
html.ptf-light .ptf-member-card__email,html.ptf-light .ptf-member-card__note,html.ptf-light .ptf-member-scores__meta{color:var(--ptf-muted)}
html.ptf-light .ptf-member-login__input{background:#fff;color:#0a1220;border-color:rgba(10,18,32,.16)}
html.ptf-light .ptf-member-login__input::placeholder{color:#8290a5}
.ptf-header-tools{display:flex;align-items:center;gap:10px;margin-left:14px}.ptf-theme-toggle,.ptf-login-link{height:38px;border-radius:999px;border:1px solid var(--ptf-line);background:rgba(255,255,255,.05);color:var(--ptf-text);display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.ptf-theme-toggle{width:42px;cursor:pointer;font-size:19px}.ptf-theme-toggle__moon{display:none}.ptf-login-link{padding:0 16px;font-size:.78rem;font-weight:600}.ptf-theme-toggle:hover,.ptf-login-link:hover{border-color:rgba(80,160,255,.6);transform:translateY(-1px)}html.ptf-light .ptf-theme-toggle__sun{display:none}html.ptf-light .ptf-theme-toggle__moon{display:inline}html.ptf-light .ptf-theme-toggle,html.ptf-light .ptf-login-link{background:#fff;color:#0a1220}
.hpi-nav__login{padding:10px 15px!important;border:1px solid rgba(255,255,255,.16);border-radius:999px}.hpi-nav__login:hover{background:rgba(255,255,255,.06)}.ptf-theme-toggle--hero{width:38px;height:38px;background:rgba(5,11,22,.45);color:#fff;border-color:rgba(255,255,255,.2)}html.ptf-light .ptf-theme-toggle--hero{background:rgba(255,255,255,.75);color:#0a1220;border-color:rgba(10,18,32,.14)}
/* Light treatment for the HPI homepage: preserve the same composition, invert surfaces and keep the blue signal. */
html.ptf-light .ptf-hpi .hpi-hero{background:linear-gradient(115deg,#f7f9fc 0%,#edf3fa 58%,#dbe8f5 100%);color:#08111f}html.ptf-light .ptf-hpi .hpi-hero:after{opacity:.18}html.ptf-light .ptf-hpi .hpi-nav a,html.ptf-light .ptf-hpi .hpi-brand,html.ptf-light .ptf-hpi .hpi-lede{color:#152238}html.ptf-light .ptf-hpi .hpi-kicker,html.ptf-light .ptf-hpi h1 span{color:#1769d1}html.ptf-light .ptf-hpi .hpi-trust{color:#536174}html.ptf-light .ptf-hpi .hpi-workspace{background:#eef3f8}.ptf-light .hpi-app-shell{box-shadow:0 25px 70px rgba(14,31,55,.12)}
.ptf-member-quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;width:100%;margin:4px 0 4px}.ptf-member-quick-grid a{min-height:130px;padding:18px;border:1px solid var(--line-soft);border-radius:14px;background:linear-gradient(145deg,rgba(30,70,120,.16),rgba(255,255,255,.025));color:var(--paper);text-decoration:none;display:flex;flex-direction:column;gap:6px;transition:.2s ease}.ptf-member-quick-grid a:hover{transform:translateY(-3px);border-color:rgba(99,183,255,.4)}.ptf-member-quick-grid span{font-family:var(--font-display);font-size:.72rem;color:var(--signal);letter-spacing:.12em}.ptf-member-quick-grid b{font-size:1rem}.ptf-member-quick-grid small{color:var(--paper-dim);font-size:.76rem;line-height:1.45;flex:1}.ptf-member-welcome-card{width:100%}
@media(max-width:900px){.ptf-header-tools{margin-left:8px}.ptf-member-quick-grid{grid-template-columns:1fr 1fr}.hpi-nav__login{display:none!important}.ptf-theme-toggle--hero{margin-left:4px}}
@media(max-width:560px){.ptf-header-tools{gap:6px}.ptf-login-link{padding:0 12px}.ptf-member-quick-grid{grid-template-columns:1fr}.ptf-member-quick-grid a{min-height:112px}}


/* =========================================================
   PTF DAYLIGHT THEME — intentional second visual system
   ========================================================= */
html.ptf-light body{background:#f5f7fb;color:#122033;--ink:#f5f7fb;--ink-2:#ffffff;--glass:rgba(255,255,255,.82);--glass-strong:#ffffff;--line:rgba(18,32,51,.12);--line-soft:rgba(18,32,51,.08);--paper:#122033;--paper-dim:#526176;--paper-dimmer:#718097;--ember:#b86d2e;--signal:#1476d4;}
html.ptf-light .site-header{background:rgba(247,249,252,.92);border-bottom-color:rgba(18,32,51,.10);}
html.ptf-light .site-logo__mark,html.ptf-light .site-logo__eyebrow,html.ptf-light .nav-menu a{color:#122033;}
html.ptf-light .nav-menu a:hover{color:#0b63c7;}
html.ptf-light .ptf-shell,html.ptf-light .ptf-main,html.ptf-light .ptf-page{background:#f5f7fb;color:#122033;}
html.ptf-light .ptf-page__title,html.ptf-light .ptf-page__content h2,html.ptf-light .ptf-page__content h3{color:#122033;}
html.ptf-light .ptf-page__content,html.ptf-light .ptf-archive__desc,html.ptf-light .ptf-card__excerpt,html.ptf-light .widget{color:#526176;}
html.ptf-light .ptf-card,html.ptf-light .ptf-member-card,html.ptf-light .ptf-cp-card{background:#fff;border-color:rgba(18,32,51,.10);box-shadow:0 18px 45px rgba(21,43,73,.07);}
html.ptf-light .ptf-card__title,html.ptf-light .ptf-card__link,html.ptf-light .ptf-cp-card__title{color:#122033;}
html.ptf-light .ptf-card__meta,html.ptf-light .ptf-page__meta{color:#718097;}
html.ptf-light .ptf-hpi{background:#f5f7fb;color:#122033;}
html.ptf-light .ptf-hpi .hpi-hero{background:linear-gradient(135deg,#fbfdff 0%,#eef5fc 55%,#dbeaf8 100%);}
html.ptf-light .ptf-hpi .hpi-hero__grid{opacity:.18;background-image:linear-gradient(rgba(25,93,158,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(25,93,158,.16) 1px,transparent 1px);}
html.ptf-light .ptf-hpi .hpi-hero__visual{mix-blend-mode:multiply;opacity:.78;filter:saturate(.88) contrast(.98);}
html.ptf-light .ptf-hpi .hpi-hero__visual:after{background:linear-gradient(90deg,#fbfdff 0%,rgba(251,253,255,.82) 17%,transparent 58%),linear-gradient(0deg,#fbfdff 0%,transparent 30%);}
html.ptf-light .ptf-hpi .hpi-nav{border-bottom-color:rgba(18,32,51,.10);}
html.ptf-light .ptf-hpi .hpi-brand span{color:#203149;border-left-color:#9aa8ba;}
html.ptf-light .ptf-hpi .hpi-nav nav a{color:#203149;}
html.ptf-light .ptf-hpi .hpi-nav nav a:hover{color:#0a62c7;}
html.ptf-light .ptf-hpi .hpi-nav__login{border-color:rgba(18,32,51,.14);background:#fff;color:#122033;}
html.ptf-light .ptf-hpi .hpi-hero h1{color:#101d2d;}
html.ptf-light .ptf-hpi .hpi-lede{color:#4d5d72;}
html.ptf-light .ptf-hpi .hpi-btn{background:rgba(255,255,255,.76);border-color:rgba(18,32,51,.18);color:#122033;}
html.ptf-light .ptf-hpi .hpi-btn--primary{background:#175bc7;border-color:#175bc7;color:#fff;}
html.ptf-light .ptf-hpi .hpi-trust{color:#5a6a7e;}
html.ptf-light .ptf-hpi .hpi-workspace{background:#edf2f7;}
html.ptf-light .ptf-hpi .hpi-app-shell{background:#fff;border-color:rgba(18,32,51,.10);box-shadow:0 28px 70px rgba(14,31,55,.12);}
html.ptf-light .ptf-hpi .hpi-sidebar{background:#f8fafc;border-right-color:rgba(18,32,51,.10);}
html.ptf-light .ptf-hpi .hpi-sidebar__brand,html.ptf-light .ptf-hpi .hpi-sidebar nav a{color:#24354b;}
html.ptf-light .ptf-hpi .hpi-user small{color:#718097;}
html.ptf-light .ptf-hpi .hpi-sidebar nav a.is-active{background:#e8f0ff;color:#175bc7;}
html.ptf-light .ptf-hpi .hpi-dashboard{background:#fff;}
html.ptf-light .ptf-hpi .hpi-dashboard__top{color:#718097;border-bottom-color:rgba(18,32,51,.08);}
html.ptf-light .ptf-product-page{background:linear-gradient(180deg,#f8fbff 0%,#eef3f8 100%);color:#122033;}
html.ptf-light .ptf-product-page--enterprise .ptf-product-hero{background:radial-gradient(circle at 72% 50%,rgba(20,145,160,.10),transparent 36%),transparent;}
html.ptf-light .ptf-product-hero__copy h1,html.ptf-light .ptf-product-catalog__head h2,html.ptf-light .ptf-product-bottom h2,html.ptf-light .ptf-enterprise-flow h2{color:#122033;}
html.ptf-light .ptf-product-hero__copy>p,html.ptf-light .ptf-product-catalog__head>p,html.ptf-light .ptf-product-card p,html.ptf-light .ptf-product-card em,html.ptf-light .ptf-product-bottom p{color:#536277;}
html.ptf-light .ptf-product-card{background:linear-gradient(145deg,#fff,#f6f9fc);border-color:rgba(18,32,51,.10);box-shadow:0 18px 45px rgba(21,43,73,.07);}
html.ptf-light .ptf-product-card__top>span{color:rgba(18,32,51,.28);}
html.ptf-light .ptf-product-card__top small{color:#718097;}
html.ptf-light .ptf-product-card>a{color:#122033;}
html.ptf-light .ptf-enterprise-flow__steps span{background:#fff;border-color:rgba(18,32,51,.10);color:#536277;box-shadow:0 12px 30px rgba(21,43,73,.05);}
html.ptf-light .ptf-enterprise-map{background:linear-gradient(145deg,#fff,#edf5fc);border-color:rgba(20,118,212,.18);box-shadow:0 25px 70px rgba(21,43,73,.10);}
html.ptf-light .ptf-enterprise-map i{background:rgba(255,255,255,.90);border-color:rgba(18,32,51,.10);color:#607088;}
html.ptf-light .ptf-enterprise-map b,html.ptf-light .ptf-product-orbit b{color:#122033;}
html.ptf-light .ptf-product-orbit{background:radial-gradient(circle,#eaf4ff,transparent 60%);border-color:rgba(20,118,212,.18);}
html.ptf-light .ptf-product-signal{color:#718097;}
html.ptf-light .ptf-header-tools .ptf-login-link{background:#fff;color:#122033;}
html.ptf-light .ptf-header-tools .ptf-theme-toggle{background:#fff;color:#122033;border-color:rgba(18,32,51,.12);}
html.ptf-light .site-footer{background:#eef3f8;border-top-color:rgba(18,32,51,.10);color:#536277;}
html.ptf-light .site-footer a{color:#536277;}
@media(max-width:900px){html.ptf-light .ptf-hpi .hpi-hero__visual{mix-blend-mode:multiply;opacity:.48;}}



/* =========================================================
   PTF HPI 1.7.5 — FINAL POLISH
   Daylight is a real visual system, not an inverted dark theme.
   ========================================================= */
:root{--ptf-day-bg:#f7f9fc;--ptf-day-paper:#0f1a2b;--ptf-day-muted:#526176;--ptf-day-blue:#175bc7;--ptf-day-line:rgba(15,26,43,.11);--ptf-night-bg:#050a13;}
.ptf-contact-page .ptf-page__header{max-width:920px;padding-bottom:30px}.ptf-contact-page .ptf-page__title{font-size:clamp(2.9rem,7vw,6.4rem);letter-spacing:-.055em;line-height:.98}.ptf-contact-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.6fr);gap:clamp(28px,6vw,90px);margin-top:34px}.ptf-contact-form-wrap,.ptf-contact-aside{padding:30px;border:1px solid var(--line);background:linear-gradient(145deg,rgba(255,255,255,.035),rgba(255,255,255,.012));border-radius:14px}.ptf-contact-form{margin-top:22px}.ptf-contact-form__grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.ptf-contact-form label{display:grid;gap:8px;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--paper-dim)}.ptf-contact-form input,.ptf-contact-form textarea{width:100%;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.035);color:var(--paper);padding:14px 15px;font:inherit;font-size:.95rem;letter-spacing:0;text-transform:none;outline:none;transition:border-color .2s,background .2s,box-shadow .2s}.ptf-contact-form textarea{resize:vertical;min-height:150px}.ptf-contact-form input:focus,.ptf-contact-form textarea:focus{border-color:rgba(61,132,255,.65);box-shadow:0 0 0 3px rgba(61,132,255,.10);background:rgba(255,255,255,.055)}.ptf-contact-field--full{grid-column:1/-1}.ptf-contact-field--honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.ptf-contact-submit{margin-top:22px;min-width:210px}.ptf-contact-form__privacy{font-size:.72rem;line-height:1.6;color:var(--paper-dimmer);max-width:65ch;margin:14px 0 0}.ptf-contact-aside{align-self:start;position:sticky;top:100px}.ptf-contact-aside__block h2{font-size:clamp(1.8rem,3vw,2.8rem);line-height:1;letter-spacing:-.04em;margin:12px 0}.ptf-contact-aside__block p{color:var(--paper-dim);line-height:1.7;font-size:.9rem}.ptf-contact-channel{border-top:1px solid var(--line);padding:18px 0;display:grid;gap:7px}.ptf-contact-channel span{font-size:.62rem;letter-spacing:.14em;color:var(--paper-dimmer)}.ptf-contact-channel a,.ptf-contact-channel strong{color:var(--paper);font-size:.9rem;text-decoration:none}.ptf-contact-notice{margin:10px 0 25px;padding:17px 20px;border-radius:10px;border:1px solid var(--line);display:flex;gap:10px;flex-wrap:wrap;background:rgba(255,255,255,.035)}.ptf-contact-notice span{color:var(--paper-dim)}
html.ptf-light{color-scheme:light;--ink:#f7f9fc;--ink-2:#ffffff;--glass:rgba(255,255,255,.92);--glass-strong:#fff;--line:rgba(15,26,43,.11);--line-soft:rgba(15,26,43,.07);--paper:#0f1a2b;--paper-dim:#526176;--paper-dimmer:#718097;--signal:#175bc7;--hpi-bg:#f7f9fc;}
html.ptf-light body{background:#f7f9fc;color:#0f1a2b}.ptf-light .site-header{background:rgba(255,255,255,.92);box-shadow:0 1px 0 rgba(15,26,43,.06)}
html.ptf-light .ptf-product-page{background:linear-gradient(180deg,#fbfdff 0%,#f2f6fa 58%,#edf2f7 100%)}
html.ptf-light .ptf-product-hero{background:radial-gradient(circle at 76% 38%,rgba(23,91,199,.10),transparent 34%)}
html.ptf-light .ptf-product-hero__visual:before{opacity:.5}.ptf-light .ptf-product-card{background:#fff;box-shadow:0 18px 50px rgba(20,42,72,.08);border-color:rgba(15,26,43,.10)}.ptf-light .ptf-product-card:hover{box-shadow:0 24px 65px rgba(20,42,72,.13)}
html.ptf-light .ptf-product-card--blue{background:linear-gradient(145deg,#fff,#eef5ff)}html.ptf-light .ptf-product-card--teal{background:linear-gradient(145deg,#fff,#edf9fa)}html.ptf-light .ptf-product-card--violet{background:linear-gradient(145deg,#fff,#f5f0ff)}html.ptf-light .ptf-product-card--amber{background:linear-gradient(145deg,#fff,#fff7ea)}
html.ptf-light .ptf-contact-form-wrap,html.ptf-light .ptf-contact-aside{background:rgba(255,255,255,.92);border-color:rgba(15,26,43,.10);box-shadow:0 20px 55px rgba(20,42,72,.07)}html.ptf-light .ptf-contact-form input,html.ptf-light .ptf-contact-form textarea{background:#f8fafc;border-color:rgba(15,26,43,.12);color:#0f1a2b}html.ptf-light .ptf-contact-form input::placeholder,html.ptf-light .ptf-contact-form textarea::placeholder{color:#8a96a8}
html.ptf-light .ptf-contact-notice{background:#fff;border-color:rgba(15,26,43,.10)}

@media(max-width:900px){.ptf-contact-layout{grid-template-columns:1fr}.ptf-contact-aside{position:static}.ptf-contact-form-wrap,.ptf-contact-aside{padding:22px}}
@media(max-width:560px){.ptf-contact-form__grid{grid-template-columns:1fr}.ptf-contact-field--full{grid-column:1}.ptf-contact-page .ptf-page__title{font-size:clamp(2.7rem,14vw,4.3rem)}.ptf-contact-submit{width:100%}}


/* 1.7.6 — member intelligence dashboard, accessible contrast, public Ask ORA. */
.ptf-member-overview{width:100%;padding:22px 0 4px}.ptf-member-overview__intro h2{font-family:var(--font-display);font-size:clamp(1.45rem,3vw,2.1rem);margin:8px 0}.ptf-member-overview__intro p{max-width:66ch;color:var(--paper-dim);line-height:1.7;margin:0 0 18px}.ptf-member-report-section{width:100%;padding:28px;border:1px solid var(--line-soft);border-radius:20px;background:linear-gradient(145deg,rgba(255,255,255,.045),rgba(255,255,255,.015));}.ptf-member-report-section__head{display:flex;justify-content:space-between;gap:24px;align-items:flex-start}.ptf-member-report-section__head h2{font-family:var(--font-display);font-size:clamp(1.5rem,3vw,2.3rem);margin:7px 0 4px;color:var(--paper)}.ptf-member-report-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.ptf-member-report-actions a{display:inline-flex;align-items:center;justify-content:center;padding:10px 13px;border-radius:9px;border:1px solid var(--line);color:var(--paper);text-decoration:none;font-size:.72rem}.ptf-member-report-actions a[data-dash-pdf-link]{background:var(--signal);color:var(--ink);border-color:var(--signal)}.ptf-member-score-panel{margin-top:20px}.ptf-member-blueprint-detail{margin-top:22px;display:grid;gap:12px}.ptf-member-blueprint-block{padding:18px 20px;border:1px solid var(--line-soft);border-radius:14px;background:rgba(0,0,0,.08)}.ptf-member-blueprint-block h3{font-family:var(--font-display);font-size:1.05rem;margin:0 0 9px;color:var(--paper)}.ptf-member-blueprint-block p{margin:0;color:var(--paper-dim);line-height:1.75;font-size:.92rem}.ptf-member-blueprint-block ul{margin:0;padding-left:20px;color:var(--paper-dim);line-height:1.7}.ptf-member-blueprint-block li{margin:5px 0}.ptf-member-login{max-width:620px}.ptf-member-login__input{min-height:50px}.ptf-member-card__status{display:inline-flex;align-items:center;gap:7px}.ptf-ora-float__body .ptf-ora-widget__messages{padding:12px 4px}.ptf-ora-float__body .ora-msg--user,.ptf-ora-float__body .ora-msg--bot,.ptf-ora-float__body .ora-msg--error{max-width:88%;padding:10px 12px;border-radius:14px;line-height:1.55}.ptf-ora-float__body .ora-msg--user{margin-left:auto;background:var(--signal);color:var(--ink)}.ptf-ora-float__body .ora-msg--bot{margin-right:auto;background:var(--glass-strong);border:1px solid var(--line);color:var(--paper)}.ptf-ora-float__body .ora-msg--error{margin-right:auto;background:rgba(210,70,70,.10)}
html.ptf-light .ptf-member-report-section{background:#fff;border-color:rgba(15,32,54,.12);box-shadow:0 18px 50px rgba(15,35,60,.07)}html.ptf-light .ptf-member-blueprint-block{background:#f7f9fc;border-color:rgba(15,32,54,.10)}html.ptf-light .ptf-member-blueprint-block h3{color:#0c1b2d}html.ptf-light .ptf-member-blueprint-block p,html.ptf-light .ptf-member-blueprint-block li{color:#405269}html.ptf-light .ptf-member-report-actions a{background:#fff;color:#0c1b2d;border-color:rgba(15,32,54,.16)}html.ptf-light .ptf-member-report-actions a[data-dash-pdf-link]{background:#155bc7;color:#fff;border-color:#155bc7}html.ptf-light .ptf-member-chart__label,html.ptf-light .ptf-member-chart__value{color:#203149}html.ptf-light .ptf-member-chart__track{background:#e5ebf2}html.ptf-light .ptf-member-quick-grid a{background:#fff;color:#102033;border-color:rgba(15,32,54,.12);box-shadow:0 12px 32px rgba(15,32,54,.06)}html.ptf-light .ptf-member-quick-grid small{color:#53657a}html.ptf-light .ptf-ora-float__panel{background:#fff;border-color:rgba(15,32,54,.13);box-shadow:0 24px 70px rgba(15,32,54,.18)}html.ptf-light .ptf-ora-float__header{border-bottom-color:rgba(15,32,54,.10)}html.ptf-light .ptf-ora-float__name{color:#0d1c2e}html.ptf-light .ptf-ora-float__presence{color:#52647a}html.ptf-light .ptf-ora-float__body .ora-msg--bot{background:#f4f7fb;border-color:rgba(15,32,54,.10);color:#122033}html.ptf-light .ptf-ora-float__body .ora-msg--user{background:#155bc7;color:#fff}
@media(max-width:700px){.ptf-member-report-section{padding:20px}.ptf-member-report-section__head{display:block}.ptf-member-report-actions{justify-content:flex-start;margin-top:15px}.ptf-member-quick-grid{grid-template-columns:1fr 1fr}}@media(max-width:480px){.ptf-member-quick-grid{grid-template-columns:1fr}.ptf-member-report-actions a{flex:1}.ptf-member-report-actions{display:grid;grid-template-columns:1fr 1fr}}


/* =========================================================
   PTF 1.8.0 — Product Experience stabilization
   Two intentional visual systems: NIGHT and DAYLIGHT.
   Never rely on inverted colors alone.
   ========================================================= */
:root {
  --ptf-day-blue:#155bc7;
  --ptf-day-ink:#102033;
  --ptf-day-muted:#53657a;
  --ptf-day-paper:#f5f8fc;
  --ptf-day-card:#ffffff;
  --ptf-day-line:#dbe3ec;
  --ptf-night-ink:#050b16;
  --ptf-night-panel:#0b1422;
}

html.ptf-light body,
html.ptf-light .ptf-product-page,
html.ptf-light .ptf-shell { background:var(--ptf-day-paper); color:var(--ptf-day-ink); }
html.ptf-light .ptf-page,
html.ptf-light .ptf-member-page { color:var(--ptf-day-ink); }
html.ptf-light .ptf-page__title,
html.ptf-light .ptf-member-report-section__head h2,
html.ptf-light .ptf-member-overview__intro h2 { color:var(--ptf-day-ink); }
html.ptf-light .ptf-page__header p,
html.ptf-light .ptf-member-overview__intro p,
html.ptf-light .ptf-cp-section__intro,
html.ptf-light .ptf-member-card__note { color:var(--ptf-day-muted); }
html.ptf-light .ptf-member-card,
html.ptf-light .ptf-member-welcome-card,
html.ptf-light .ptf-member-login,
html.ptf-light .ptf-member-plan,
html.ptf-light .ptf-member-package__card { background:var(--ptf-day-card); color:var(--ptf-day-ink); border-color:var(--ptf-day-line); box-shadow:0 14px 45px rgba(16,32,51,.07); }
html.ptf-light .ptf-member-login__label,
html.ptf-light .ptf-member-card__email,
html.ptf-light .ptf-member-card__status,
html.ptf-light .ptf-member-package__card h3 { color:var(--ptf-day-ink); }
html.ptf-light .ptf-member-login__input { background:#fbfcfe; color:var(--ptf-day-ink); border-color:#cbd6e2; }
html.ptf-light .ptf-member-login__input:focus { border-color:var(--ptf-day-blue); box-shadow:0 0 0 3px rgba(21,91,199,.12); }
html.ptf-light .ptf-member-report-section { background:linear-gradient(180deg,#fff 0%,#f8fafc 100%); color:var(--ptf-day-ink); border-color:var(--ptf-day-line); }
html.ptf-light .ptf-member-history__list li { background:#fff; color:var(--ptf-day-ink); border-color:var(--ptf-day-line); }
html.ptf-light .ptf-member-history__date { color:#66778c; }
html.ptf-light .ptf-member-history__label { color:#203149; }
html.ptf-light .ptf-member-report-actions a { color:var(--ptf-day-ink); background:#fff; border-color:#cbd6e2; }
html.ptf-light .ptf-member-report-actions a[data-dash-pdf-link] { background:var(--ptf-day-blue); color:#fff; border-color:var(--ptf-day-blue); }
html.ptf-light .ptf-member-blueprint-block { background:#fff; border-color:var(--ptf-day-line); }
html.ptf-light .ptf-member-blueprint-block h3 { color:var(--ptf-day-ink); }
html.ptf-light .ptf-member-blueprint-block p,
html.ptf-light .ptf-member-blueprint-block li { color:#3f536b; }
html.ptf-light .ptf-member-glance__context { color:#53657a; }
html.ptf-light .ptf-member-glance__chips span { background:#f1f6fc; border-color:#d8e2ed; }
html.ptf-light .ptf-member-glance__chips b { color:#50647b; }
html.ptf-light .ptf-member-glance__chips em { color:#0f2b4d; }
html.ptf-light .ptf-member-glance__notes { border-top-color:#e0e7ef; }
html.ptf-light .ptf-member-glance__notes p { color:#40536a; }
html.ptf-light .ptf-member-quick-grid a { background:#fff; color:var(--ptf-day-ink); border-color:var(--ptf-day-line); box-shadow:0 12px 35px rgba(16,32,51,.06); }
html.ptf-light .ptf-member-quick-grid small { color:#5a6d82; }
html.ptf-light .ptf-member-quick-grid a:hover { border-color:#a9bdd5; transform:translateY(-2px); }

/* Public pages: ensure all secondary text stays readable in daylight. */
html.ptf-light .ptf-product-catalog__head p,
html.ptf-light .ptf-product-card p,
html.ptf-light .ptf-product-card em,
html.ptf-light .ptf-enterprise-flow,
html.ptf-light .ptf-product-bottom p { color:#4e6279; }
html.ptf-light .ptf-product-card__top small,
html.ptf-light .ptf-hpi__eyebrow { color:#42617f; }
html.ptf-light .ptf-product-card a { color:#113b68; }
html.ptf-light .ptf-product-card a span { color:var(--ptf-day-blue); }

/* Dashboard glance: makes the report feel like an intelligence workspace. */
.ptf-member-blueprint-glance { margin-top:20px; padding:22px; border:1px solid var(--line-soft); border-radius:16px; background:rgba(255,255,255,.025); }
.ptf-member-glance__head { display:flex; justify-content:space-between; align-items:flex-end; gap:18px; }
.ptf-member-glance__head h3 { margin:7px 0 0; font-family:var(--font-display); font-size:1.35rem; color:var(--paper); }
.ptf-member-glance__context { color:var(--paper-dim); font-size:.82rem; }
.ptf-member-glance__chips { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; margin-top:18px; }
.ptf-member-glance__chips span { min-height:72px; padding:11px 12px; border:1px solid var(--line-soft); border-radius:11px; display:flex; flex-direction:column; justify-content:space-between; }
.ptf-member-glance__chips b { font-size:.62rem; color:var(--paper-dimmer); text-transform:uppercase; letter-spacing:.07em; }
.ptf-member-glance__chips em { font-style:normal; font-family:var(--font-display); font-size:1.18rem; color:var(--paper); }
.ptf-member-glance__notes { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:18px; padding-top:16px; border-top:1px solid var(--line-soft); }
.ptf-member-glance__notes p { margin:0; color:var(--paper-dim); font-size:.84rem; line-height:1.65; }
.ptf-member-glance__notes b { display:block; margin-bottom:4px; color:var(--paper); font-size:.64rem; letter-spacing:.1em; text-transform:uppercase; }

/* Strong focus visibility and control contrast across both systems. */
.ptf-member-report-actions a:focus-visible,
.ptf-login-link:focus-visible,
.ptf-theme-toggle:focus-visible,
.hpi-btn:focus-visible { outline:3px solid rgba(21,91,199,.45); outline-offset:3px; }
html:not(.ptf-light) .ptf-member-report-actions a[data-dash-pdf-link] { color:#07111e; background:var(--signal); border-color:var(--signal); }

@media (max-width:760px){
  .ptf-member-glance__chips{grid-template-columns:repeat(2,minmax(0,1fr));}
  .ptf-member-glance__notes{grid-template-columns:1fr;}
  .ptf-member-glance__head{display:block;}
  .ptf-member-glance__context{margin-top:7px;}
}
@media (max-width:440px){
  .ptf-member-glance__chips{grid-template-columns:1fr 1fr;}
  .ptf-member-blueprint-glance{padding:16px;}
}

/* 1.8.1 — simple member purchase gateway + stronger daylight contrast. */
.ptf-member-gateway{width:100%;max-width:1040px;margin:0 auto}.ptf-member-gateway__head{max-width:760px;margin-bottom:24px}.ptf-member-gateway__head h2{font-family:var(--font-display);font-size:clamp(1.8rem,4vw,3rem);margin:8px 0 10px;color:var(--paper)}.ptf-member-gateway__head p{color:var(--paper-dim);line-height:1.75;margin:0}.ptf-member-plan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0}.ptf-member-plan-option{appearance:none;text-align:left;border:1px solid var(--line-soft);border-radius:16px;padding:18px;background:var(--glass);color:var(--paper);cursor:pointer;display:flex;flex-direction:column;gap:7px;transition:transform .18s ease,border-color .18s ease,background .18s ease}.ptf-member-plan-option:hover{transform:translateY(-2px);border-color:var(--signal)}.ptf-member-plan-option.is-selected{border-color:var(--signal);background:linear-gradient(145deg,rgba(20,105,210,.16),rgba(255,255,255,.03));box-shadow:0 12px 34px rgba(0,0,0,.16)}.ptf-member-plan-option span{font-size:.68rem;letter-spacing:.14em;color:var(--signal);font-weight:800}.ptf-member-plan-option strong{font-family:var(--font-display);font-size:1.02rem}.ptf-member-plan-option small{color:var(--paper-dim);line-height:1.55}.ptf-member-purchase-card{max-width:680px;border:1px solid var(--line-soft);border-radius:18px;padding:22px;background:var(--glass-strong);box-shadow:0 18px 48px rgba(0,0,0,.14)}.ptf-member-purchase-card .ptf-member-login__input{width:100%;box-sizing:border-box;margin:7px 0 12px}.ptf-member-purchase-summary{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:12px 0 16px;color:var(--paper-dim);font-size:.85rem}.ptf-member-purchase-summary strong{color:var(--paper)}.ptf-member-gateway__footer{margin-top:18px;color:var(--paper-dim);font-size:.86rem}.ptf-member-text-button{appearance:none;border:0;background:none;color:var(--signal);font:inherit;cursor:pointer;padding:0}.ptf-member-login{max-width:680px}.ptf-member-login h2{font-family:var(--font-display);margin:8px 0}.ptf-member-login .ptf-member-card__note{line-height:1.65}.ptf-member-gateway .ptf-member-login__message{margin-top:10px}.ptf-member-plan-option:focus-visible,.ptf-member-text-button:focus-visible,.ptf-member-purchase-card button:focus-visible{outline:3px solid rgba(21,91,199,.35);outline-offset:3px}
html.ptf-light .ptf-member-gateway__head h2,html.ptf-light .ptf-member-login h2{color:#0b1a2c}html.ptf-light .ptf-member-gateway__head p,html.ptf-light .ptf-member-plan-option small,html.ptf-light .ptf-member-gateway__footer{color:#42556c}html.ptf-light .ptf-member-plan-option{background:#fff;border-color:rgba(15,32,54,.13);color:#102033;box-shadow:0 10px 28px rgba(15,35,60,.05)}html.ptf-light .ptf-member-plan-option.is-selected{background:#f2f7ff;border-color:#155bc7;box-shadow:0 14px 36px rgba(21,91,199,.10)}html.ptf-light .ptf-member-purchase-card{background:#fff;border-color:rgba(15,32,54,.13);box-shadow:0 18px 50px rgba(15,35,60,.07)}html.ptf-light .ptf-member-purchase-summary{color:#53657a}html.ptf-light .ptf-member-purchase-summary strong{color:#102033}
@media (max-width:700px){.ptf-member-plan-grid{grid-template-columns:1fr}.ptf-member-purchase-summary{align-items:flex-start;flex-direction:column;gap:4px}.ptf-member-purchase-card{padding:18px}.ptf-member-gateway__head h2{font-size:2rem}}


/* PTF 1.8.2 — premium interaction + performance */
.hpi-brand__image{display:block;width:auto;max-width:160px;height:34px;object-fit:contain;object-position:left center}
.hpi-nav__login{display:inline-flex!important;align-items:center;justify-content:center;min-height:40px;padding:0 16px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.06);font-weight:650!important;letter-spacing:.02em;box-shadow:0 8px 24px rgba(0,0,0,.16)}
.hpi-nav__login:hover{border-color:rgba(99,183,255,.55);background:rgba(99,183,255,.10)}
.ptf-product-card{cursor:pointer;text-decoration:none}
.ptf-product-card__action{position:relative;margin-top:24px;color:var(--paper);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center}
.ptf-product-card__action>span{font-size:1.2rem;color:#63b7ff}
html.ptf-light .ptf-product-card__action{color:#113b68} html.ptf-light .ptf-product-card__action>span{color:var(--ptf-day-blue)}
.ptf-ora-float{z-index:99999;pointer-events:none}.ptf-ora-float__toggle,.ptf-ora-float__panel{pointer-events:auto}
.ptf-ora-float__toggle{position:relative;overflow:visible;isolation:isolate}
.ptf-ora-float__toggle:before{content:'';position:absolute;inset:-5px;border-radius:25px;border:1px solid rgba(127,216,196,.20);animation:ora-breathe 3.6s ease-in-out infinite;z-index:-1}
.ptf-ora-float__toggle:after{content:'';position:absolute;width:9px;height:9px;left:19px;top:50%;margin-top:-4px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 5px rgba(127,216,196,.06),0 0 22px rgba(127,216,196,.8);animation:ora-heartbeat 2.8s ease-in-out infinite}
@keyframes ora-breathe{0%,100%{transform:scale(1);opacity:.25}50%{transform:scale(1.035);opacity:.72}}
@keyframes ora-heartbeat{0%,100%{transform:scale(.9);opacity:.8}12%{transform:scale(1.25);opacity:1}24%{transform:scale(.96)}36%{transform:scale(1.12)}52%{transform:scale(.9)}}
.ptf-ora-float__status{padding-left:12px}.ptf-ora-float__dot{display:none}
.ptf-ora-float__avatar{animation:ora-avatar-breathe 3.4s ease-in-out infinite}
@keyframes ora-avatar-breathe{0%,100%{transform:scale(.96);box-shadow:0 0 12px rgba(111,227,255,.25)}50%{transform:scale(1.05);box-shadow:0 0 24px rgba(111,227,255,.55)}}
html.ptf-light .hpi-hero{background:radial-gradient(circle at 78% 42%,rgba(44,112,214,.10),transparent 30%),linear-gradient(180deg,#f9fbfd,#edf3f9);color:#0b1727}
html.ptf-light .hpi-hero__visual{mix-blend-mode:multiply;opacity:.30;filter:saturate(.78) contrast(.98)}
html.ptf-light .hpi-hero__visual:after{background:linear-gradient(90deg,#f9fbfd 0%,rgba(249,251,253,.88) 18%,transparent 58%),linear-gradient(0deg,#f9fbfd 0%,transparent 30%)}
html.ptf-light .hpi-brand strong{color:#0b1727} html.ptf-light .hpi-brand span{color:#52657a;border-left-color:#b7c4d2}
html.ptf-light .hpi-nav{border-bottom-color:rgba(13,35,60,.10)} html.ptf-light .hpi-nav nav a{color:#263a50}
html.ptf-light .hpi-nav__login{background:#fff;color:#103b68;border-color:#cad7e4;box-shadow:0 8px 25px rgba(18,48,82,.08)}
html.ptf-light .hpi-kicker{color:#2765a8} html.ptf-light .hpi-hero h1{color:#0b1727} html.ptf-light .hpi-lede{color:#42566d} html.ptf-light .hpi-trust{color:#52677f}
html.ptf-light .hpi-actions .hpi-btn:not(.hpi-btn--primary){background:rgba(255,255,255,.82);color:#143553;border-color:#c6d4e2}
html.ptf-light .hpi-workspace{background:#eef3f8} html.ptf-light .hpi-about{background:#f7fafc;color:#0b1727} html.ptf-light .hpi-about>p:last-child{color:#50637a}
html.ptf-light .ptf-product-page{background:linear-gradient(180deg,#f7fafd,#eef4f9);color:#102033}
html.ptf-light .ptf-enterprise-flow__steps span{background:#fff;color:#334a63;border-color:#d7e1eb}
html.ptf-light .ptf-enterprise-map{background:linear-gradient(145deg,rgba(255,255,255,.95),rgba(235,243,250,.92));border-color:#cbd9e6;box-shadow:0 30px 90px rgba(21,57,94,.10)}
html.ptf-light .ptf-enterprise-map i{background:rgba(255,255,255,.92);color:#52677f;border-color:#d5e0ea}
@media(max-width:760px){.hpi-nav nav{gap:8px}.hpi-nav__login{min-height:38px;padding:0 14px;font-size:12px!important}.hpi-brand__image{max-width:132px;height:30px}}
@media(max-width:560px){.hpi-nav__login{font-size:11px!important;padding:0 13px}.ptf-ora-float{left:12px;right:12px;bottom:12px}}
@media(prefers-reduced-motion:reduce){.ptf-ora-float__toggle:before,.ptf-ora-float__toggle:after,.ptf-ora-float__avatar{animation:none!important}}

.ptf-member-plan-group-label{margin:22px 0 9px;font-size:.68rem;letter-spacing:.16em;font-weight:700;color:var(--paper-dimmer);}
html.ptf-light .ptf-member-plan-group-label{color:#5b6d82}
