/* Treasure Valley North — component styles.
   GENERATED from design-system/components/**.jsx by scripts/extract-css.mjs.
   The design-system components inject these rules at runtime; the static site
   needs them as a real stylesheet. Do not edit by hand — re-run the script.
   Requires the tokens in styles.css to be loaded first. */

/* ===== Badge ===== */
.tvn-badge{display:inline-flex;align-items:center;gap:.375em;font-family:var(--font-sans);font-weight:var(--weight-semibold);line-height:1;white-space:nowrap;border:1px solid transparent}
.tvn-badge--sm{font-size:var(--text-2xs);padding:.25rem .5rem;letter-spacing:var(--tracking-wide)}
.tvn-badge--md{font-size:var(--text-xs);padding:.3125rem .625rem}
.tvn-badge--pill{border-radius:var(--radius-pill)}
.tvn-badge--square{border-radius:var(--radius-xs)}
/* soft */
.tvn-badge--soft-pine{background:var(--pine-100);color:var(--pine-700)}
.tvn-badge--soft-sunburst{background:var(--sunburst-200);color:var(--sunburst-700)}
.tvn-badge--soft-dusk{background:var(--dusk-200);color:var(--dusk-700)}
.tvn-badge--soft-sage{background:#E3E8D5;color:var(--sage-600)}
.tvn-badge--soft-neutral{background:var(--sand-200);color:var(--sand-700)}
/* solid */
.tvn-badge--solid-pine{background:var(--pine-700);color:var(--sand-50)}
.tvn-badge--solid-sunburst{background:var(--sunburst-500);color:var(--sand-50)}
.tvn-badge--solid-dusk{background:var(--dusk-500);color:var(--sand-50)}
.tvn-badge--solid-sage{background:var(--sage-500);color:var(--sand-50)}
.tvn-badge--solid-neutral{background:var(--sand-500);color:var(--pine-800)}
/* outline */
.tvn-badge--outline-pine{background:transparent;color:var(--pine-700);border-color:var(--border-strong)}
.tvn-badge--outline-sunburst{background:transparent;color:var(--sunburst-600);border-color:color-mix(in srgb,var(--sunburst-500) 50%,transparent)}
.tvn-badge--outline-dusk{background:transparent;color:var(--dusk-600);border-color:color-mix(in srgb,var(--dusk-500) 50%,transparent)}
.tvn-badge--outline-sage{background:transparent;color:var(--sage-600);border-color:color-mix(in srgb,var(--sage-500) 50%,transparent)}
.tvn-badge--outline-neutral{background:transparent;color:var(--sand-700);border-color:var(--border-default)}

/* ===== Button ===== */
.tvn-btn{--_bg:var(--pine-700);--_fg:var(--sand-50);--_bd:transparent;display:inline-flex;align-items:center;justify-content:center;gap:.5em;font-family:var(--font-sans);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);line-height:1;text-decoration:none;white-space:nowrap;cursor:pointer;border:1.5px solid var(--_bd);background:var(--_bg);color:var(--_fg);border-radius:var(--radius-md);transition:transform var(--duration-fast) var(--ease-out),background var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out);box-shadow:var(--shadow-sm)}
.tvn-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}
.tvn-btn:active{transform:translateY(1px)}
.tvn-btn[disabled],.tvn-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed;box-shadow:none;pointer-events:none}
.tvn-btn--sm{font-size:var(--text-sm);padding:.5rem .875rem}
.tvn-btn--md{font-size:var(--text-base);padding:.6875rem 1.25rem}
.tvn-btn--lg{font-size:var(--text-md);padding:.9375rem 1.75rem}
.tvn-btn--block{display:flex;width:100%}
.tvn-btn--primary{--_bg:var(--pine-700);--_fg:var(--sand-50)}
.tvn-btn--primary:hover{--_bg:var(--pine-600);box-shadow:var(--shadow-md)}
.tvn-btn--accent{--_bg:var(--sunburst-500);--_fg:var(--sand-50)}
.tvn-btn--accent:hover{--_bg:var(--sunburst-600);box-shadow:var(--shadow-accent)}
.tvn-btn--secondary{--_bg:transparent;--_fg:var(--pine-700);--_bd:var(--pine-700);box-shadow:none}
.tvn-btn--secondary:hover{--_bg:color-mix(in srgb,var(--pine-700) 7%,transparent)}
.tvn-btn--ghost{--_bg:transparent;--_fg:var(--pine-700);--_bd:transparent;box-shadow:none}
.tvn-btn--ghost:hover{--_bg:color-mix(in srgb,var(--pine-700) 8%,transparent)}
.tvn-btn--on-pine{--_bg:var(--sand-300);--_fg:var(--pine-800)}
.tvn-btn--on-pine:hover{--_bg:var(--sand-50)}
.tvn-btn__icon{display:inline-flex;flex:0 0 auto}

/* ===== Card ===== */
.tvn-card{--_bg:var(--surface-card);--_bd:var(--border-subtle);display:block;background:var(--_bg);border:1.5px solid var(--_bd);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);color:var(--text-body);transition:transform var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out);text-decoration:none}
.tvn-card--cream{--_bg:var(--sand-100);--_bd:var(--border-subtle)}
.tvn-card--pine{--_bg:var(--pine-700);--_bd:var(--border-on-pine);color:var(--text-on-pine);box-shadow:var(--shadow-md)}
.tvn-card--ghost{--_bg:transparent;--_bd:var(--border-default);box-shadow:none}
.tvn-card--pad-sm{padding:var(--space-4)}
.tvn-card--pad-md{padding:var(--space-6)}
.tvn-card--pad-lg{padding:var(--space-8)}
.tvn-card--pad-none{padding:0}
.tvn-card--interactive{cursor:pointer}
.tvn-card--interactive:hover{border-color:var(--border-strong);box-shadow:var(--shadow-lg);transform:translateY(-3px)}
.tvn-card--accent-top{border-top:3px solid var(--sunburst-500)}

/* ===== Eyebrow ===== */
.tvn-eyebrow{display:inline-flex;align-items:center;gap:.5em;font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--sunburst-600)}
.tvn-eyebrow::before{content:"";width:1.75rem;height:2px;background:var(--sunburst-500);border-radius:2px}
.tvn-eyebrow--no-rule::before{display:none}
.tvn-eyebrow--on-pine{color:var(--sunburst-400)}
.tvn-stat{font-family:var(--font-sans)}
.tvn-stat__value{font-family:var(--font-display);font-weight:var(--weight-display);letter-spacing:var(--tracking-tight);color:var(--pine-700);line-height:1}
.tvn-stat__value--md{font-size:var(--text-3xl)}
.tvn-stat__value--sm{font-size:var(--text-2xl)}
.tvn-stat__value--lg{font-size:var(--text-4xl)}
.tvn-stat__value--accent{color:var(--sunburst-500)}
.tvn-stat__value--on-pine{color:var(--sand-50)}
.tvn-stat__label{margin-top:.5rem;font-size:var(--text-sm);color:var(--text-muted)}
.tvn-stat__label--on-pine{color:var(--text-on-pine)}
.tvn-heading{font-family:var(--font-sans)}
.tvn-heading--center{text-align:center}
.tvn-heading--center .tvn-eyebrow{justify-content:center}
.tvn-heading__title{font-family:var(--font-display);font-weight:var(--weight-display);letter-spacing:var(--tracking-tight);line-height:var(--leading-snug);color:var(--text-strong);margin:.625rem 0 0}
.tvn-heading__title--sm{font-size:var(--text-xl)}
.tvn-heading__title--md{font-size:var(--text-2xl)}
.tvn-heading__title--lg{font-size:var(--text-3xl)}
.tvn-heading__title--on-pine{color:var(--sand-50)}
.tvn-heading__sub{max-width:44ch;margin:.75rem 0 0;font-size:var(--text-md);line-height:var(--leading-relaxed);color:var(--text-muted)}
.tvn-heading--center .tvn-heading__sub{margin-left:auto;margin-right:auto}
.tvn-heading__sub--on-pine{color:var(--text-on-pine)}

/* ===== Input ===== */
.tvn-field{display:flex;flex-direction:column;gap:.5rem;font-family:var(--font-sans)}
.tvn-field__label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}
.tvn-field__req{color:var(--sunburst-600);margin-left:.15em}
.tvn-field__hint{font-size:var(--text-xs);color:var(--text-muted)}
.tvn-field__error{font-size:var(--text-xs);color:var(--danger);font-weight:var(--weight-medium)}
.tvn-control{font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-body);background:var(--white);border:1.5px solid var(--border-default);border-radius:var(--radius-md);padding:.6875rem .875rem;width:100%;transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out);appearance:none}
.tvn-control::placeholder{color:var(--text-subtle)}
.tvn-control:hover{border-color:var(--border-strong)}
.tvn-control:focus{outline:none;border-color:var(--border-focus);box-shadow:var(--shadow-focus)}
.tvn-control:disabled{background:var(--sand-100);color:var(--text-muted);cursor:not-allowed}
.tvn-control--invalid,.tvn-control--invalid:hover{border-color:var(--danger)}
.tvn-control--invalid:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 30%,transparent)}
.tvn-control--textarea{resize:vertical;min-height:7rem;line-height:var(--leading-normal)}
.tvn-select-wrap{position:relative;width:100%}
.tvn-select-wrap>select{padding-right:2.5rem;cursor:pointer}
.tvn-select-wrap>svg{position:absolute;right:.875rem;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--text-muted)}

/* ===== PortfolioCard ===== */
.tvn-portfolio{overflow:hidden;display:flex;flex-direction:column}
.tvn-portfolio__media{aspect-ratio:16/10;overflow:hidden;background:var(--sand-200)}
.tvn-portfolio__media>img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;transition:transform var(--duration-slower) var(--ease-out)}
.tvn-portfolio:hover .tvn-portfolio__media>img{transform:scale(1.05)}
.tvn-portfolio__body{padding:var(--space-6)}
.tvn-portfolio__head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.5rem}
.tvn-portfolio__title{font-family:var(--font-display);font-weight:var(--weight-bold);font-size:var(--text-lg);color:var(--text-strong);margin:0;letter-spacing:var(--tracking-tight)}
.tvn-portfolio__url{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap}
.tvn-portfolio__desc{font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--leading-relaxed);color:var(--text-muted);margin:0 0 var(--space-4)}
.tvn-portfolio__link{display:inline-flex;align-items:center;gap:.375rem;font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--pine-700);transition:gap var(--duration-base) var(--ease-out)}
.tvn-portfolio:hover .tvn-portfolio__link{gap:.625rem;color:var(--sunburst-600)}

/* ===== PriceCard ===== */
.tvn-price{position:relative;display:flex;flex-direction:column;height:100%}
.tvn-price--popular{border-color:var(--pine-700)!important;border-width:2px!important}
.tvn-price__ribbon{position:absolute;top:0;left:50%;transform:translate(-50%,-50%)}
.tvn-price__name{font-family:var(--font-display);font-weight:var(--weight-bold);font-size:var(--text-lg);color:var(--text-strong);margin:0;text-align:center}
.tvn-price__amount{font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--text-3xl);letter-spacing:var(--tracking-tight);color:var(--pine-700);text-align:center;margin:.5rem 0 .25rem;line-height:1}
.tvn-price__note{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-muted);text-align:center;margin:0 0 var(--space-6)}
.tvn-price__list{list-style:none;margin:0 0 var(--space-8);padding:0;display:flex;flex-direction:column;gap:var(--space-4)}
.tvn-price__item{display:flex;align-items:flex-start;gap:.75rem;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-body);line-height:var(--leading-normal)}
.tvn-price__item>span:first-child{color:var(--sunburst-600);flex:0 0 auto;margin-top:1px}
.tvn-price__cta{margin-top:auto}

/* ===== ServiceCard ===== */
.tvn-service__tile{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:var(--radius-md);margin-bottom:var(--space-4)}
.tvn-service__tile--pine{background:var(--pine-100);color:var(--pine-700)}
.tvn-service__tile--sunburst{background:var(--sunburst-200);color:var(--sunburst-600)}
.tvn-service__tile--dusk{background:var(--dusk-200);color:var(--dusk-600)}
.tvn-service__tile--sage{background:#E3E8D5;color:var(--sage-600)}
.tvn-service__title{font-family:var(--font-display);font-weight:var(--weight-bold);font-size:var(--text-md);color:var(--text-strong);margin:0 0 .375rem;letter-spacing:var(--tracking-tight)}
.tvn-service__desc{font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--leading-relaxed);color:var(--text-muted);margin:0}
