/* Price calculator (partials/landing_price_calculator.html). Halo tokens:
   ink #17151E, accent #5D51B4, dark card #2B2644, lavender #C9C2E8. */
.pc { max-width: 64rem; border-radius: 1rem; background: #fff; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05); padding: 1.75rem; }
.pc-grid { display: grid; gap: 1.5rem; }
@media (min-width: 768px) { .pc-grid { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 2rem; } }

.pc-form { display: grid; gap: 0.25rem; align-content: start; }
.pc-field { padding: 0.75rem 0 1rem; }
.pc-field-row { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.pc-label { color: #17151e; font-size: 0.9375rem; font-weight: 500; }
.pc-value { color: #17151e; font-size: 1.25rem; font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.pc-hint { display: block; margin-top: 0.15rem; color: rgba(23, 21, 30, 0.55); font-size: 0.8125rem; line-height: 1.45; }
.pc-field > .pc-hint { margin-top: 0.4rem; }

.pc-range { width: 100%; margin-top: 0.75rem; height: 1.75rem; background: transparent; accent-color: #5d51b4; cursor: pointer; -webkit-appearance: none; appearance: none; }
.pc-range::-webkit-slider-runnable-track { height: 4px; border-radius: 999px; background: linear-gradient(to right, #5d51b4 var(--pc-fill, 0%), #e6e4ee var(--pc-fill, 0%)); }
.pc-range::-moz-range-track { height: 4px; border-radius: 999px; background: #e6e4ee; }
.pc-range::-moz-range-progress { height: 4px; border-radius: 999px; background: #5d51b4; }
.pc-range::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; margin-top: -9px; border-radius: 50%; background: #fff; border: 2px solid #5d51b4; box-shadow: 0 2px 6px rgba(43, 38, 68, 0.2); transition: transform 140ms ease; }
.pc-range::-moz-range-thumb { width: 18px; height: 18px; border-radius: 50%; background: #fff; border: 2px solid #5d51b4; box-shadow: 0 2px 6px rgba(43, 38, 68, 0.2); }
.pc-range:active::-webkit-slider-thumb { transform: scale(1.1); }
.pc-range:focus-visible { outline: 2px solid #5d51b4; outline-offset: 4px; border-radius: 6px; }
.pc-scale { display: flex; justify-content: space-between; margin-top: 0.15rem; color: rgba(23, 21, 30, 0.4); font-size: 0.75rem; font-variant-numeric: tabular-nums; }

.pc-switch { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.875rem 0; border-top: 1px solid rgba(0, 0, 0, 0.07); cursor: pointer; }
.pc-switch-text { min-width: 0; }
.pc-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.pc-knob { position: relative; flex: none; width: 2.75rem; height: 1.625rem; border-radius: 999px; background: #dcdae4; transition: background-color 180ms ease; }
.pc-knob::after { content: ""; position: absolute; top: 3px; left: 3px; width: 1.25rem; height: 1.25rem; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(23, 21, 30, 0.25); transition: transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1); }
.pc-switch input:checked + .pc-knob { background: #5d51b4; }
.pc-switch input:checked + .pc-knob::after { transform: translateX(1.125rem); }
.pc-switch input:focus-visible + .pc-knob { outline: 2px solid #5d51b4; outline-offset: 3px; }
.pc-switch:has(input:disabled) { cursor: default; opacity: 0.5; }

.pc-nested { margin: 0 0 0.25rem; padding: 0 1rem; border-radius: 0.75rem; background: #f7f6fa; }
.pc-nested[hidden] { display: none; }
.pc-nested .pc-switch { border-top-color: rgba(43, 38, 68, 0.08); }

.pc-summary { display: flex; flex-direction: column; border-radius: 0.875rem; background: #2b2644; color: #fff; padding: 1.5rem; align-self: start; }
@media (min-width: 768px) { .pc-summary { position: sticky; top: 6rem; } }
.pc-plan-label { color: rgba(255, 255, 255, 0.5); font-size: 0.8125rem; }
.pc-plan { margin-top: 0.15rem; font-size: 1.5rem; font-weight: 500; letter-spacing: -0.02em; }
.pc-plan-note { color: rgba(255, 255, 255, 0.6); font-size: 0.8125rem; }
.pc-features { display: grid; gap: 0.55rem; margin: 1.1rem 0 0; padding: 0; list-style: none; font-size: 0.8125rem; line-height: 1.45; color: rgba(255, 255, 255, 0.72); }
.pc-features[hidden] { display: none; }
.pc-features li { display: flex; gap: 0.55rem; }
.pc-features svg { flex: none; width: 0.9rem; height: 0.9rem; margin-top: 0.15rem; fill: none; stroke: #c9c2e8; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.pc-lines { display: grid; gap: 0.5rem; margin: 1.25rem 0 0; padding-top: 1rem; border-top: 1px solid rgba(255, 255, 255, 0.12); }
.pc-lines:empty { display: none; }
.pc-lines > div { display: flex; justify-content: space-between; gap: 1rem; font-size: 0.875rem; }
.pc-lines dt { color: rgba(255, 255, 255, 0.7); min-width: 0; }
.pc-lines dd { margin: 0; font-variant-numeric: tabular-nums; white-space: nowrap; }
.pc-total { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid rgba(255, 255, 255, 0.12); }
.pc-total-label { color: rgba(255, 255, 255, 0.5); font-size: 0.8125rem; }
.pc-total-value { margin-top: 0.15rem; font-size: 2.25rem; font-weight: 500; letter-spacing: -0.03em; line-height: 1.1; font-variant-numeric: tabular-nums; }
.pc-total-note { margin-top: 0.4rem; color: #c9c2e8; font-size: 0.8125rem; line-height: 1.45; }
.pc-cta { display: inline-flex; justify-content: center; margin-top: 1.5rem; padding: 0.625rem 1.75rem; border-radius: 999px; background: #fff; color: #000; font-size: 1rem; font-weight: 500; transition: background-color 200ms ease; }
.pc-cta:hover { background: #e5e7eb; }
.pc-cta:focus-visible { outline: 2px solid #c9c2e8; outline-offset: 3px; }
.pc-cta-note { margin-top: 0.75rem; color: rgba(255, 255, 255, 0.6); font-size: 0.8125rem; line-height: 1.5; }
.pc-cta-note a { color: #fff; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(255, 255, 255, 0.4); }
.pc-cta-note a:hover { text-decoration-color: #fff; }
@media (max-width: 560px) { .pc { padding: 1.25rem; } .pc-summary { padding: 1.25rem; } .pc-total-value { font-size: 1.875rem; } }
@media (prefers-reduced-motion: reduce) { .pc-knob, .pc-knob::after, .pc-range::-webkit-slider-thumb { transition: none; } }
