/* kuriri.co — interior-page stylesheet · Higgins-pattern direction (2026-07-06)
   Applies the confirmed homepage design language (index-laura-higgins.html) to the
   existing v1 wireframe class vocabulary, so every page reads in one system:
   cream ground, Instrument Serif display, borderless list furniture, one gold accent.
   Visual refinement remains River's pass — this is direction alignment, not final design.
   The dashed gold .annot labels are review scaffolding; strip them at build time. */

:root{
  --cream:#F6F2E6;
  --cream-2:#EFE9D8;
  --ink:#17150F;
  --ink-soft:#514C3D;
  --ink-faint:#726C55;
  --accent:#A97F31;
  --accent-ink:#846017;
  --serif:'new-spirit', Georgia, serif;
  --sans:'proxima-nova', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:400;
  font-size:17px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
p{margin:0 0 1em;}
a{color:inherit;}

/* heading-level links carry no underline — the whole heading is the link, so the
   underline through serif descenders just reads rough. Hover shifts to the accent
   and lifts a hairline rule; inline body links keep the default underline. */
h1 a,h2 a,h3 a,.card h3 a{
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:color .15s ease,border-color .15s ease;
}
h1 a:hover,h2 a:hover,h3 a:hover,.card h3 a:hover{
  color:var(--accent-ink);border-bottom-color:var(--accent);
}

/* visible keyboard focus — the design strips most default affordances, so make
   the focus ring explicit for anything interactive. */
a:focus-visible,button:focus-visible,summary:focus-visible,
input:focus-visible,.btn:focus-visible{
  outline:2px solid var(--accent-ink);outline-offset:3px;border-radius:2px;
}

.wrap{max-width:920px;margin:0 auto;padding:0 32px;}
.wrap-wide{max-width:1180px;margin:0 auto;padding:0 32px;}

/* nav — matches the homepage */
header.site{
  position:sticky;top:0;z-index:20;
  background:rgba(246,242,230,.9);backdrop-filter:blur(6px);
  border-bottom:1px solid rgba(23,21,15,.08);
}
.nav{max-width:1180px;margin:0 auto;padding:20px 32px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;}
.nav .brand{font-family:var(--serif);font-size:22px;letter-spacing:.01em;text-decoration:none;color:var(--ink);font-weight:400;}
.nav .nav-note{font-family:var(--serif);font-style:italic;font-size:15px;color:var(--ink-soft);margin-right:auto;margin-left:6px;}
.nav ul{list-style:none;display:flex;gap:26px;margin:0;padding:0;flex-wrap:wrap;align-items:center;font-size:13px;}
.nav a{text-decoration:none;letter-spacing:.02em;color:var(--ink-soft);}
.nav a:hover{color:var(--ink);text-decoration:none;}
.nav a.active{color:var(--ink);border-bottom:1px solid var(--accent);padding-bottom:2px;}
.nav .btn{background:var(--ink);color:var(--cream);padding:9px 18px;border-radius:3px;border:0;
  font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;}
.nav .btn:hover{background:var(--accent-ink);color:var(--cream);}

/* nav disclosure menu — pure CSS, native <details>, matching the FAQ's no-JS pattern.
   Desktop: the <details> wrapper is invisible; links sit inline exactly as before and
   the hamburger is hidden (author display on the ul overrides the UA closed-hiding).
   Mobile (<=700px): the summary becomes a hamburger that toggles a dropdown panel. */
/* modern engines wrap closed <details> content in ::details-content with
   content-visibility:hidden — neutralize it so our own display rules govern in
   every state (older engines hide via UA display:none, which author display beats). */
.nav-menu::details-content{content-visibility:visible;}
.nav-menu > summary{display:none;list-style:none;cursor:pointer;}
.nav-menu > summary::-webkit-details-marker{display:none;}
.nav-menu > ul{display:flex;} /* inherits the .nav ul rules; stays inline on desktop */

@media(max-width:700px){
  .nav .nav-note{display:none;}
  .nav-menu{position:relative;}
  .nav-menu > summary{
    display:inline-flex;align-items:center;justify-content:center;width:26px;height:22px;
  }
  .nav-menu > summary .bars,
  .nav-menu > summary .bars::before,
  .nav-menu > summary .bars::after{
    content:"";display:block;width:22px;height:2px;background:var(--ink);
  }
  .nav-menu > summary .bars{position:relative;}
  .nav-menu > summary .bars::before,
  .nav-menu > summary .bars::after{position:absolute;left:0;}
  .nav-menu > summary .bars::before{top:-7px;}
  .nav-menu > summary .bars::after{top:7px;}

  .nav-menu > ul{
    display:none;position:absolute;right:0;top:calc(100% + 16px);
    flex-direction:column;align-items:stretch;gap:2px;
    background:var(--cream);border:1px solid rgba(23,21,15,.12);border-radius:5px;
    padding:12px 16px;min-width:232px;box-shadow:0 14px 40px rgba(23,21,15,.14);z-index:40;
  }
  .nav-menu[open] > ul{display:flex;}
  .nav-menu > ul li{width:100%;}
  .nav-menu > ul a{display:block;padding:9px 0;font-size:15px;}
  .nav-menu > ul a.btn{margin-top:10px;text-align:center;padding:12px 18px;}
}

/* layout — whitespace does the separating; no zebra sections */
main{display:block;}
section{padding:80px 0;border:0;}
section.alt{background:transparent;}

/* annotation labels — review scaffolding. HIDDEN BY DEFAULT so they can never ship:
   the CSS renders nothing unless <body class="review"> opts in. To go live, drop the
   review class (grep -rl 'class="review"' finds every page). Optional hardening: gate
   the class on hostname in JS so production auto-hides with no manual step. */
.annot{display:none;}
body.review .annot{
  font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--accent-ink);border:1px dashed rgba(169,127,49,.45);
  display:inline-block;padding:2px 8px;border-radius:3px;margin-bottom:22px;opacity:.75;
}

/* type */
/* line-wrapping — balance evens out multi-line display headings (no lone
   last word, no lopsided ragged edge); pretty keeps body copy from dropping a
   single-word orphan onto the final line. Both are progressive: engines that
   don't support them fall back to normal wrapping, so nothing breaks. balance
   only kicks in on short blocks (browsers cap it at a handful of lines), which
   is exactly the heading/lead case — long paragraphs stay on pretty. */
h1,h2,h3,.lead,.lede,.pull,.name,.tagline,blockquote,.hero h1,.reframe h2,.beat h2{text-wrap:balance;}
p,li,td,.desc,.body,.footer-bio-line,.hero .body{text-wrap:pretty;}
h1{font-family:var(--serif);font-weight:400;font-size:clamp(40px,6vw,76px);line-height:1.02;letter-spacing:-.01em;margin:0 0 26px;max-width:900px;}
h2{font-family:var(--serif);font-weight:400;font-size:clamp(28px,3.6vw,40px);line-height:1.15;margin:0 0 18px;max-width:760px;}
h3{font-family:var(--serif);font-weight:400;font-size:24px;line-height:1.2;margin:0 0 8px;}
.lead{font-family:var(--serif);font-size:clamp(20px,2.3vw,26px);line-height:1.4;color:var(--ink);max-width:680px;}
.eyebrow{font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 24px;}
.muted{color:var(--ink-soft);}
.small{font-size:14px;}
.center{text-align:center;}
.center h2,.center .lead{margin-left:auto;margin-right:auto;}

/* buttons + quiet links */
.cta-row{display:flex;gap:22px;align-items:center;margin:30px 0 4px;flex-wrap:wrap;}
.btn{
  display:inline-block;padding:14px 28px;border-radius:3px;text-decoration:none;border:0;
  font-size:13px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);
}
.btn.primary{background:var(--ink);color:var(--cream);}
.btn.primary:hover{background:var(--accent-ink);}
.btn.secondary{background:transparent;color:var(--ink-soft);border:1px solid var(--ink-faint);}
.btn.secondary:hover{color:var(--ink);border-color:var(--ink);}
.btn.small{padding:9px 16px;font-size:12px;}
.link-quiet{
  text-decoration:none;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-soft);border-bottom:1px solid var(--ink-faint);padding-bottom:2px;
}
.link-quiet:hover{color:var(--ink);border-color:var(--ink);}

/* boxes dissolve into rows — structure is the ornament */
.placeholder{
  background:var(--cream-2);border:1px dashed rgba(23,21,15,.25);border-radius:2px;
  color:var(--ink-faint);font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  display:flex;align-items:center;justify-content:center;text-align:center;
  padding:28px;min-height:120px;
}
.card{border:0;border-top:1px solid rgba(23,21,15,.14);border-radius:0;padding:24px 0 10px;background:transparent;}

/* stat card — the payoff number as a gold serif numeral, the same accent-on-figures
   treatment the homepage origin block uses. For case-study "The result" rows: the
   value carries the weight, the label sits quiet beneath it. Handles both true
   numerals (66%, 80+) and short phrases (Self-serve) by letting the value wrap. */
.card.stat h3{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(30px,3.4vw,42px);line-height:1.03;
  color:var(--accent-ink);margin:0 0 8px;
}

.grid{display:grid;gap:0 56px;}
.grid.two{grid-template-columns:1fr 1fr;}
.grid.three{grid-template-columns:1fr 1fr 1fr;}

/* numbered steps — serif numerals, no circles or boxes */
.steps{counter-reset:step;list-style:none;padding:0;margin:8px 0 0;max-width:760px;}
.steps > li{
  counter-increment:step;border:0;border-top:1px solid rgba(23,21,15,.12);border-radius:0;
  padding:28px 0 12px 64px;position:relative;margin:0;background:transparent;
}
.steps > li:first-child{border-top:0;}
.steps > li:last-child{padding-bottom:28px;}
.steps > li::before{
  content:counter(step) ".";position:absolute;left:0;top:26px;width:auto;height:auto;
  border:0;border-radius:0;display:block;
  font-family:var(--serif);font-weight:400;font-size:26px;color:var(--ink-faint);
}

/* recognition list */
.triggers{list-style:none;padding:0;margin:0;max-width:760px;}
.triggers li{padding:15px 0;border-top:1px solid rgba(23,21,15,.12);border-bottom:0;color:var(--ink);font-size:18px;}
.triggers li:first-child{border-top:0;}

/* tables — rules, not cells */
table{border-collapse:collapse;width:100%;font-size:16px;margin:8px 0;}
th,td{border:0;border-bottom:1px solid rgba(23,21,15,.14);padding:16px 24px 16px 0;text-align:left;vertical-align:top;background:transparent;}
thead th{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);}
tbody th{font-family:var(--serif);font-weight:400;font-size:19px;color:var(--ink);}
td{color:var(--ink-soft);}

/* FAQ */
.faq details{border:0;border-top:1px solid rgba(23,21,15,.12);border-radius:0;padding:6px 0;margin:0;}
.faq details:first-child{border-top:0;}
.faq details:last-child{border-bottom:1px solid rgba(23,21,15,.12);}
.faq summary{
  cursor:pointer;font-weight:600;font-size:16px;padding:14px 0;
  list-style:none;position:relative;padding-right:34px;
}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{
  content:"+";position:absolute;right:2px;top:50%;transform:translateY(-50%);
  font-family:var(--serif);font-weight:400;font-size:24px;line-height:1;
  color:var(--ink-faint);transition:color .15s ease;
}
.faq details[open] summary::after{content:"\2212";color:var(--accent-ink);} /* minus sign */
.faq summary:hover::after{color:var(--accent-ink);}
.faq details[open] summary{border-bottom:0;margin-bottom:2px;}

/* pull line — the voice-marker beat */
.pull{
  border-left:2px solid var(--accent);padding:4px 0 4px 26px;margin:30px 0 8px;
  font-family:var(--serif);font-style:italic;font-size:clamp(22px,3vw,30px);line-height:1.35;color:var(--ink);
}
.kicker{font-style:italic;}

/* email capture */
.capture{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0;}
.capture input{
  flex:1 1 240px;padding:13px 15px;font-size:15px;font-family:var(--sans);
  background:rgba(255,255,255,.55);border:1px solid rgba(23,21,15,.25);border-radius:3px;color:var(--ink);
}

/* footer — the reusable four-block epilogue from the homepage */
footer.site{background:var(--ink);color:var(--cream);padding:80px 0 40px;font-size:inherit;border:0;}
footer.site .divider{border-top:1px solid rgba(246,242,230,.16);padding-top:40px;margin-top:40px;}
footer.site .divider:first-child{border-top:0;padding-top:0;margin-top:0;}
.footer-bio{display:flex;gap:26px;align-items:center;flex-wrap:wrap;}
.footer-bio-photo{
  flex:0 0 auto;width:84px;height:84px;border-radius:3px;
  background:linear-gradient(135deg,#C9C2A4 0%,#B7AE8C 45%,#9C9276 100%);
  position:relative;overflow:hidden;
}
.footer-bio-text{flex:1 1 320px;}
.footer-bio-name{font-family:var(--serif);font-style:italic;font-size:22px;margin-bottom:8px;color:var(--cream);}
.footer-bio-line{font-size:15px;line-height:1.6;color:rgba(246,242,230,.72);max-width:540px;margin-bottom:10px;}
.footer-bio .link-quiet{color:rgba(246,242,230,.85);border-color:rgba(246,242,230,.4);}
.footer-bio .link-quiet:hover{color:var(--accent);border-color:var(--accent);}
.footer-cta{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;}
.footer-cta .tagline{
  font-family:var(--serif);font-style:normal;font-weight:400;letter-spacing:-.005em;
  font-size:clamp(22px,2.6vw,30px);line-height:1.25;max-width:520px;margin:0;color:var(--cream);
}
.footer-cta .btn.primary{background:var(--cream);color:var(--ink);}
.footer-cta .btn.primary:hover{background:var(--accent);color:var(--ink);}
.footer-promo{display:flex;flex-direction:column;gap:12px;}
.footer-promo a{
  font-size:14px;color:rgba(246,242,230,.75);text-decoration:none;
  border-bottom:1px solid rgba(246,242,230,.28);padding-bottom:2px;display:inline-block;width:fit-content;
}
.footer-promo a:hover{color:var(--accent);border-color:var(--accent);}
footer.site .row{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;}
footer.site .brand{font-family:var(--serif);font-size:20px;}
footer.site .row ul{list-style:none;padding:0;margin:0;display:flex;gap:22px;flex-wrap:wrap;}
footer.site .row li{margin:0;}
footer.site a{color:rgba(246,242,230,.7);text-decoration:none;font-size:13px;}
footer.site a:hover{color:var(--accent);}
footer.site .fine{font-size:12px;color:rgba(246,242,230,.4);margin-top:26px;}

.spacer-s{height:10px;}
.spacer{height:26px;}

@media(max-width:720px){
  section{padding:56px 0;}
  .grid.two,.grid.three{grid-template-columns:1fr;}
  .footer-cta{flex-direction:column;align-items:flex-start;}
}

/* ═══ V1 IMAGE SUPPRESSION ═══════════════════════════════════════════════════
   V1 ships without photography. This hides the decorative footer bio-photo
   square across every page; the elements stay in the markup where they live, so
   the bio text simply runs full width. The three in-body photo spots are HTML-
   commented in place instead (homepage .photo bands in index.html, About hero,
   Studio screenshot) — the homepage .photo is redefined in index.html's inline
   style, so CSS here can't reach it. TO RESTORE FOR V2: delete this block and
   un-comment those three photo blocks. */
.footer-bio-photo{display:none;}
/* ════════════════════════════════════════════════════════════════════════════ */
