/* Hallmark · macrostructure: Long Document · tone: conversational editorial · nav: N1a · footer: Ft2
 * theme: studied-DNA (source: https://thecreativeindependent.com/) · paper oklch(96% 0.013 82) · accent oklch(47% 0.165 259)
 * display: Fraunces roman · body: Geist + Chinese system sans · Hallmark · pre-emit critique: P5 H5 E4 S5 R5 V5
 * contrast: pass (40–41) · nav: N1a · footer: Ft2 · slop: pass (42–45) · mobile: pass (34, 49, 50–57)
 */

@font-face{font-family:Fraunces;src:url("fonts/fraunces-600.ttf") format("truetype");font-style:normal;font-weight:600;font-display:swap}
@font-face{font-family:Fraunces;src:url("fonts/fraunces-700.ttf") format("truetype");font-style:normal;font-weight:700;font-display:swap}
@font-face{font-family:Geist;src:url("fonts/geist-400.ttf") format("truetype");font-style:normal;font-weight:400 500;font-display:swap}
@font-face{font-family:Geist;src:url("fonts/geist-600.ttf") format("truetype");font-style:normal;font-weight:600 800;font-display:swap}
:root{
  --color-paper:oklch(96% 0.013 82);
  --color-paper-2:oklch(92% 0.018 82);
  --color-ink:oklch(26% 0.026 157);
  --color-ink-soft:oklch(43% 0.014 157);
  --color-rule:oklch(79% 0.018 82);
  --color-accent:oklch(47% 0.165 259);
  --color-accent-ink:oklch(97% 0.008 82);
  --color-vermilion:oklch(55% 0.158 43);
  --color-vermilion-ink:oklch(97% 0.008 82);
  --color-sage:oklch(86% 0.039 145);
  --color-sage-ink:oklch(31% 0.026 157);
  --color-focus:oklch(47% 0.165 259);
  --color-qr-paper:oklch(99% 0.004 82);
  --font-display:Fraunces,"Songti SC","Noto Serif CJK SC",STSong,serif;
  --font-body:Geist,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --space-2xs:0.25rem;--space-xs:0.5rem;--space-sm:0.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--space-3xl:6rem;
  --text-xs:0.6875rem;--text-sm:0.8125rem;--text-base:1rem;--text-md:1.25rem;--text-lg:1.5625rem;--text-xl:1.9531rem;--text-2xl:2.4414rem;
  --text-display:clamp(2rem,5.2vw,4rem);
  --rule:1px;--radius:0px;--dur-micro:120ms;--dur-short:220ms;--ease-out:cubic-bezier(0.16,1,0.3,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{overflow-x:clip}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:var(--space-lg)}
body{background:var(--color-paper);color:var(--color-ink);font:400 var(--text-base)/1.7 var(--font-body);-webkit-font-smoothing:antialiased;overflow-wrap:break-word}
::selection{background:var(--color-sage);color:var(--color-sage-ink)}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-underline-offset:var(--space-2xs);text-decoration-thickness:var(--rule)}
a:hover{color:var(--color-accent)}
a,button{-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--color-focus);outline-offset:var(--space-2xs)}
a:active,button:active{transform:translateY(1px)}
button:disabled,a[aria-disabled="true"]{opacity:.55;cursor:not-allowed}
.shell{width:min(100% - 2rem,70rem);margin-inline:auto}
.masthead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm) var(--space-lg);padding-block:var(--space-md);border-bottom:var(--rule) solid var(--color-rule)}
.wordmark{font:700 var(--text-lg)/1.1 var(--font-display);font-style:normal;text-decoration:none;white-space:nowrap}
.wordmark:hover{color:var(--color-ink)}
.nav{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-lg);font-size:var(--text-sm);line-height:1}
.nav a{padding-block:var(--space-2xs);text-decoration:none;white-space:nowrap;border-bottom:var(--rule) dotted var(--color-ink-soft)}
.nav a[aria-current="page"]{border-bottom-style:solid;color:var(--color-accent);font-weight:600}
.eyebrow{font-size:var(--text-xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--color-ink-soft)}
.hero{display:grid;gap:var(--space-xl);padding-block:var(--space-2xl) var(--space-3xl)}
.hero h1{max-width:17ch;font:600 var(--text-display)/1.1 var(--font-display);font-style:normal;letter-spacing:-.025em;overflow-wrap:anywhere;min-width:0}
.hero__lede{max-width:38ch;font-size:var(--text-md);line-height:1.75;color:var(--color-ink-soft)}
.hero__person{max-width:48ch;padding-top:var(--space-md);border-top:var(--rule) solid var(--color-rule);font-size:var(--text-sm);color:var(--color-ink-soft)}
.hero__person strong{color:var(--color-ink);font-weight:600}
.hero__actions,.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}
.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-height:44px;padding:var(--space-sm) var(--space-md);border:var(--rule) solid var(--color-ink);border-radius:var(--radius);background:transparent;color:var(--color-ink);font-size:var(--text-sm);font-weight:600;line-height:1;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out),color var(--dur-micro) var(--ease-out),transform var(--dur-micro) var(--ease-out)}
.button:hover{background:var(--color-ink);color:var(--color-paper)}
.button--primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink)}
.button--primary:hover{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-paper)}
.button--paper{border-color:var(--color-vermilion-ink);color:var(--color-vermilion-ink)}
.button--paper:hover{background:var(--color-vermilion-ink);color:var(--color-vermilion)}
.section{padding-block:var(--space-2xl);border-top:var(--rule) solid var(--color-rule)}
.section__title{font:600 clamp(1.7rem,3vw,2.4rem)/1.2 var(--font-display);font-style:normal;letter-spacing:-.01em;overflow-wrap:anywhere;min-width:0}
.section__intro{max-width:56ch;margin-top:var(--space-sm);font-size:var(--text-md);color:var(--color-ink-soft)}
.section__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-sm) var(--space-lg);margin-bottom:var(--space-lg)}
.section__head .section__intro{margin-top:0;font-size:var(--text-sm)}
.section__head a{white-space:nowrap;font-size:var(--text-sm)}
.card-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-md)}
.card{position:relative;display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-lg);border:var(--rule) solid var(--color-rule);border-radius:var(--radius);background:transparent;color:var(--color-ink)}
a.card{text-decoration:none;transition:background-color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out)}
a.card:hover{border-color:var(--color-ink);background:var(--color-paper-2);color:var(--color-ink);transform:translateY(-2px)}
a.card:active{transform:translateY(0)}
.card__title{font:600 var(--text-lg)/1.3 var(--font-display);font-style:normal;overflow-wrap:anywhere;min-width:0}
.card__text{font-size:var(--text-sm);color:var(--color-ink-soft)}
.card__meta{margin-top:auto;padding-top:var(--space-sm);font-size:var(--text-xs);color:var(--color-ink-soft)}
.card__link{margin-top:auto;padding-top:var(--space-sm);font-size:var(--text-sm);font-weight:600;color:var(--color-accent)}
.card--blue{background:var(--color-accent);color:var(--color-accent-ink);border-color:var(--color-accent)}
.card--blue .card__text,.card--blue .card__meta,.card--blue .eyebrow{color:var(--color-accent-ink)}
.card--blue .card__link{color:var(--color-accent-ink)}
.card--sage{background:var(--color-sage);color:var(--color-sage-ink);border-color:var(--color-sage)}
.card--sage .card__text,.card--sage .card__meta{color:var(--color-sage-ink)}
.card--sage .card__link{color:var(--color-sage-ink)}
a.card--blue:hover,a.card--sage:hover{color:inherit}
.service-list{display:grid;gap:var(--space-lg)}
.service{display:grid;gap:var(--space-md);padding-block:var(--space-lg);border-top:var(--rule) solid var(--color-ink)}
.service:first-child{border-top:0;padding-top:0}
.service__title{font:600 var(--text-lg)/1.3 var(--font-display);font-style:normal}
.service__label{font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;color:var(--color-ink-soft)}
.service__body{max-width:64ch;font-size:var(--text-base);color:var(--color-ink-soft)}
.service__body p+p{margin-top:var(--space-sm)}
.service__fit{font-size:var(--text-sm);color:var(--color-ink)}
.inline-note{max-width:62ch;margin-top:var(--space-lg);padding:var(--space-md);background:var(--color-sage);color:var(--color-sage-ink);font-size:var(--text-sm)}
.prose{max-width:64ch}
.prose h2{margin-top:var(--space-xl);font:600 var(--text-lg)/1.3 var(--font-display);font-style:normal}
.prose h2:first-child{margin-top:0}
.prose p{margin-top:var(--space-md);color:var(--color-ink-soft)}
.prose ul{margin-top:var(--space-md);padding-left:var(--space-lg);color:var(--color-ink-soft)}
.prose li+li{margin-top:var(--space-xs)}
.prose strong{color:var(--color-ink);font-weight:600}
.prose a{color:var(--color-accent)}
.contact-band{margin-block:var(--space-2xl);padding:var(--space-xl);background:var(--color-vermilion);color:var(--color-vermilion-ink)}
.contact-band__title{font:600 clamp(1.8rem,3vw,2.6rem)/1.2 var(--font-display);font-style:normal}
.contact-band__text{max-width:52ch;margin-top:var(--space-sm);font-size:var(--text-sm);color:var(--color-vermilion-ink)}
.contact-band__grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-lg);align-items:center}
.contact-band__rows{display:grid;gap:var(--space-md);margin-top:var(--space-xl)}
.contact-row{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-xs);align-items:center;padding-top:var(--space-sm);border-top:var(--rule) solid var(--color-vermilion-ink)}
.contact-row__label{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase}
.contact-row__value{font-size:var(--text-md);font-weight:600;overflow-wrap:anywhere;min-width:0}
.contact-row__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);min-width:0}
.contact-row__actions .contact-row__value{flex:0 1 auto}
.contact-row a{white-space:nowrap}
.contact-band__hint{margin-top:var(--space-lg);font-size:var(--text-sm);color:var(--color-vermilion-ink)}
.contact-band__hint a{color:inherit;font-weight:600;white-space:nowrap}
.copy{min-height:44px;padding:var(--space-xs) var(--space-sm);border:var(--rule) solid var(--color-vermilion-ink);border-radius:var(--radius);background:transparent;color:var(--color-vermilion-ink);font-size:var(--text-xs);line-height:1;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out),color var(--dur-micro) var(--ease-out),transform var(--dur-micro) var(--ease-out)}
.copy:hover{background:var(--color-vermilion-ink);color:var(--color-vermilion)}
.copy[data-state="copied"]{background:var(--color-vermilion-ink);color:var(--color-vermilion)}
.footer{padding-block:var(--space-xl);border-top:var(--rule) solid var(--color-rule)}
.footer__meta{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-sm) var(--space-lg);font-size:var(--text-xs);color:var(--color-ink-soft)}
.footer__meta a{white-space:nowrap}
/* QR — white block and vermilion modules, standard polarity. */
.qr-frame{position:relative;width:100%;padding:7%;background:var(--color-qr-paper);container-type:inline-size}
.qr-grid{display:grid;grid-template-columns:repeat(37,minmax(0,1fr));width:100%;aspect-ratio:1;background:transparent}
.qr-grid i{display:block;aspect-ratio:1;background:transparent}
.qr-grid i.q-on{background:var(--color-vermilion)}
.qr-mini{justify-self:center;width:min(100%,14rem);border:0;padding:0;background:transparent}
.qr-mini figcaption{margin-top:var(--space-xs);font-size:var(--text-xs);line-height:1.5;text-align:center;color:var(--color-vermilion-ink);opacity:.92}
.qr-body{min-height:100dvh}
.qrpage{position:relative;display:grid;place-items:center;min-height:100dvh;padding:var(--space-2xl) var(--space-md);text-align:center;background:var(--color-vermilion);color:var(--color-vermilion-ink)}
.qrpage__back{position:absolute;top:max(var(--space-md),env(safe-area-inset-top));left:max(var(--space-md),env(safe-area-inset-left));display:inline-flex;align-items:center;gap:var(--space-2xs);min-height:44px;font-size:var(--text-sm);font-weight:600;text-decoration:none;white-space:nowrap;border-bottom:var(--rule) solid var(--color-vermilion-ink);color:var(--color-vermilion-ink)}
.qrpage__inner{width:100%;max-width:32rem;margin-inline:auto}
.qrpage__label{font-size:var(--text-xs);font-weight:600;letter-spacing:.24em;color:var(--color-vermilion-ink);text-transform:uppercase}
.qrpage__title{margin-top:var(--space-xs);font:600 clamp(1.8rem,4vw,2.8rem)/1.2 var(--font-display);font-style:normal;letter-spacing:-.01em}
.qrpage__sub{margin-top:var(--space-2xs);font-size:var(--text-sm);color:var(--color-vermilion-ink);opacity:.9}
.qrpage__qr{width:min(88vw,26rem);margin:var(--space-lg) auto 0;padding:0;border:0;background:transparent}
.qrpage__foot{margin-top:var(--space-sm);font-size:var(--text-sm);color:var(--color-vermilion-ink);opacity:.9}
.qrpage__hint{max-width:34ch;margin:var(--space-lg) auto 0;padding-top:var(--space-sm);border-top:var(--rule) solid var(--color-vermilion-ink);font-size:var(--text-xs);color:var(--color-vermilion-ink)}
@media (min-width:40rem){
  .shell{width:min(100% - 4rem,70rem)}
  .card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .service{grid-template-columns:minmax(0,.65fr) minmax(0,1.35fr);gap:var(--space-xl)}
  .contact-band__grid{grid-template-columns:minmax(0,1.45fr) minmax(0,.55fr);gap:var(--space-2xl)}
}
@media (min-width:60rem){
  .hero{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:end;column-gap:var(--space-2xl)}
  .hero__main{grid-column:1}
  .hero__aside{grid-column:2}
  .card-grid--services{grid-template-columns:repeat(4,minmax(0,1fr))}
  .card-grid--services .card{padding:var(--space-md)}
  .card-grid--services .card__title{font-size:var(--text-md)}
}
@media (max-width:25rem){.masthead{gap:var(--space-xs)}.nav{gap:var(--space-xs) var(--space-sm);font-size:var(--text-xs)}.wordmark{font-size:var(--text-md)}}
@media (pointer:coarse){.button,.copy,.nav a{min-height:44px}.nav a{display:inline-flex;align-items:center}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:150ms!important;animation-iteration-count:1!important;transition-duration:150ms!important}a.card:hover{transform:none}}
@media print{.nav,.hero__actions,.copy{display:none}.contact-band{background:transparent;color:var(--color-ink);border:var(--rule) solid var(--color-ink)}.contact-band__text,.contact-row__label,.contact-row__value,.contact-band__hint{color:var(--color-ink)}.contact-row{border-color:var(--color-ink)}.qr-mini{display:none}}
