/* matrices . earth: swiss studio system
   shared stylesheet for the four interior pages: about, services, blogs (writing), contact.
   swiss bones (white ground, grid, thin rules, numbered mono heads) kept from round 1;
   identity layer inherited from the landing page: per-page accent = that page's landing
   square, four-square nav, noto sans mono wordmark, bracket motif, banner-glyph footer.
   external requests: the google fonts stylesheet only (same family the landing loads). */

:root{
  --paper:#ffffff;
  --ink:#101014;
  --muted:#5c5c66;
  --rule:#e4e4ea;
  --accent:#161616;
  --accent-ink:#161616;
  --sq-about:#464f24;
  --sq-services:#191814;
  --sq-writing:#a9a8a4;
  --sq-contact:#6a593b;
  --serif:Charter,"Bitstream Charter","Iowan Old Style",Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:'Noto Sans Mono',ui-monospace,SFMono-Regular,Consolas,monospace;
  --pad:clamp(1.25rem,5vw,4rem);
  --max:1220px;
}

/* per-page accent: each room takes the color of its landing-page door.
   --accent paints graphics (squares, rules, display glyphs); --accent-ink paints
   text and underlines. on writing, #a9a8a4 fails AA on white, so text drops to
   the darkened companion #6f6e6a; elsewhere the two are the same color. */
body.page-about{--accent:var(--sq-about);--accent-ink:var(--sq-about)}
body.page-services{--accent:var(--sq-services);--accent-ink:var(--sq-services)}
body.page-writing{--accent:var(--sq-writing);--accent-ink:#6f6e6a}
body.page-contact{--accent:var(--sq-contact);--accent-ink:var(--sq-contact)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:1.0625rem;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
::selection{background:var(--accent-ink);color:#fff}
img,svg{max-width:100%}
a{color:inherit;text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:2px;text-underline-offset:.28em;transition:text-decoration-color .18s ease,color .18s ease}
a:hover{text-decoration-color:var(--accent-ink)}
a:focus-visible{outline:2px solid var(--accent-ink);outline-offset:3px;border-radius:1px}
.wrap{max-width:var(--max);margin:0 auto;padding-inline:var(--pad)}
.dot{color:var(--accent-ink)}
.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:#fff;padding:.6rem 1rem;z-index:20}
.skip:focus{left:var(--pad)}

/* ---- header: wordmark left, four-square nav right.
   the squares are the landing page's four doors in miniature: every nav item
   always wears its own landing color (never the page accent). the current
   page's square is solid; the other three sit at 45% and rise to full on
   hover, echoing the landing's hover-scale feel. ---- */
.nav{
  position:sticky;top:0;z-index:10;
  background:rgba(255,255,255,.94);
  border-bottom:1px solid var(--rule);
}
.nav .wrap{
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:.5rem 1.5rem;
  padding-block:1rem;
}
.nav-mark{font-family:var(--mono);font-weight:200;font-size:1.35rem;letter-spacing:-0.01em}
.dnav{display:flex;flex-wrap:wrap;gap:.4rem 1.35rem;font-family:var(--mono);font-size:.85rem;letter-spacing:.04em}
.dnav a{
  display:inline-flex;align-items:center;gap:.5rem;
  color:var(--muted);text-decoration:none;
}
.dnav a::before{
  content:"";flex:none;width:10px;height:10px;
  background:var(--sq,var(--ink));
  opacity:.45;
  transition:opacity .18s ease,transform .18s ease;
}
.dnav a.sq-about{--sq:var(--sq-about)}
.dnav a.sq-services{--sq:var(--sq-services)}
.dnav a.sq-writing{--sq:var(--sq-writing)}
.dnav a.sq-contact{--sq:var(--sq-contact)}
.dnav a:hover{color:var(--ink)}
.dnav a:hover::before,.dnav a:focus-visible::before{opacity:1}
.dnav a[aria-current="page"]{color:var(--ink)}
.dnav a[aria-current="page"]::before{opacity:1}
@media (prefers-reduced-motion:no-preference){
  .dnav a:hover::before,.dnav a:focus-visible::before{transform:scale(1.15)}
}

/* ---- page head: huge lowercase display, quiet meta line ---- */
.page-head{padding-block:clamp(3.75rem,10vw,7.5rem) clamp(3rem,7vw,5.5rem)}
.eyebrow{font-family:var(--mono);font-size:.75rem;letter-spacing:.09em;color:var(--muted)}
.page-title{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(3.5rem,14vw,10rem);
  line-height:.95;letter-spacing:-0.04em;
  margin-top:clamp(1rem,3vw,2rem);
}
/* bracket motif: thin matrix brackets in the page accent frame each h1,
   echoing the [ ] frame around the landing banner. display-scale glyphs,
   so the raw accent is allowed even on writing. */
.page-title::before,.page-title::after{
  font-family:var(--mono);font-weight:200;
  font-size:.85em;letter-spacing:0;
  color:var(--accent);
}
.page-title::before{content:"[";margin-right:.18em}
.page-title::after{content:"]";margin-left:.18em}
/* the h1 dot is display-scale too: it takes the raw page accent */
.page-title .dot{color:var(--accent)}
.eyebrow + .page-title{margin-top:clamp(1rem,3vw,2rem)}
.page-head .page-title:first-child{margin-top:0}
.page-lede{
  font-family:var(--serif);
  font-size:clamp(1.3rem,3vw,2rem);
  line-height:1.4;letter-spacing:-0.01em;
  max-width:44ch;
  margin-top:clamp(1.5rem,4vw,2.75rem);
}
.page-foot{
  margin-top:clamp(2.25rem,6vw,4rem);
  display:flex;justify-content:space-between;align-items:baseline;
  flex-wrap:wrap;gap:.5rem 2rem;
  font-size:.85rem;color:var(--muted);
}
.page-foot a{color:var(--ink)}
.page-foot .cta{color:var(--accent-ink);text-decoration-color:var(--accent-ink)}

/* ---- sections ---- */
main > section:not(.page-head){border-top:1px solid var(--rule)}
.section-pad{padding-block:clamp(3.5rem,8vw,6.5rem)}
.sec-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:1rem;
  margin-bottom:clamp(2rem,5vw,3.5rem);
}
.sec-label{font-family:var(--mono);font-size:.75rem;letter-spacing:.09em;color:var(--muted)}
.sec-index{font-family:var(--mono);font-size:.75rem;letter-spacing:.09em;color:var(--accent-ink)}

.copy{max-width:58ch}
.copy p + p{margin-top:1.1rem}
.note{color:var(--muted);font-size:.95rem;max-width:58ch;margin-top:clamp(2rem,5vw,3rem)}

/* ---- numbered pillar rows (domains, service groups) ---- */
.pillar{
  display:grid;grid-template-columns:1fr;gap:.6rem 1.5rem;
  padding-block:clamp(1.6rem,3.5vw,2.4rem);
  border-top:1px solid var(--rule);
}
.pillar:first-of-type{border-top:none;padding-top:0}
.pillar .num{font-family:var(--mono);font-size:.8rem;letter-spacing:.06em;color:var(--accent-ink)}
.pillar h2,.pillar h3{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(1.7rem,3.6vw,2.6rem);
  letter-spacing:-0.02em;line-height:1.1;
}
.pillar p{color:var(--ink);max-width:58ch}

/* thin-rule offering list inside a pillar */
.svc-list{list-style:none;max-width:58ch;width:100%}
.svc-list li{padding-block:.65rem;border-top:1px solid var(--rule)}
.svc-list li:first-child{border-top:none;padding-top:.15rem}

/* ---- name + description rows (applied domains, deliverables) ---- */
.work-row{
  display:grid;grid-template-columns:1fr;gap:.6rem 1.5rem;
  padding-block:clamp(1.6rem,3.5vw,2.4rem);
  border-top:1px solid var(--rule);
}
.work-row:first-of-type{border-top:none;padding-top:0}
.work-name{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(1.7rem,3.6vw,2.5rem);
  letter-spacing:-0.02em;line-height:1.1;
}
.work-desc{max-width:58ch}

/* ---- credential rows ---- */
.cred-label{font-family:var(--mono);font-size:.75rem;letter-spacing:.09em;color:var(--muted);margin-bottom:.6rem}
.cred-group + .cred-group{margin-top:2.25rem}
.cred{
  display:flex;justify-content:space-between;align-items:baseline;gap:.35rem 2rem;flex-wrap:wrap;
  padding-block:.9rem;border-top:1px solid var(--rule);
}
.cred-group .cred:last-child{border-bottom:1px solid var(--rule)}
.cred .deg{font-family:var(--serif);font-size:1.1rem;letter-spacing:-0.01em}
.cred .inst{font-family:var(--mono);font-size:.8rem;letter-spacing:.05em;color:var(--muted)}

/* ---- link rows (contact channels, publication) ---- */
.link-list{list-style:none}
.link-list li{border-top:1px solid var(--rule)}
.link-list li:last-child{border-bottom:1px solid var(--rule)}
.link-list a{
  display:flex;justify-content:space-between;align-items:baseline;gap:.35rem 2rem;flex-wrap:wrap;
  padding-block:1.1rem;text-decoration:none;
}
.link-list .what{font-family:var(--serif);font-size:clamp(1.2rem,2.6vw,1.6rem);letter-spacing:-0.01em}
.link-list .where{font-family:var(--mono);font-size:.8rem;letter-spacing:.05em;color:var(--muted);overflow-wrap:anywhere}
.link-list .arrow{color:var(--accent-ink);transition:transform .18s ease;display:inline-block}
.link-list a:hover .what{text-decoration:underline;text-decoration-color:var(--accent-ink);text-decoration-thickness:2px;text-underline-offset:.28em}
.link-list a:hover .arrow{transform:translateX(4px)}
.link-list a:focus-visible{outline:2px solid var(--accent-ink);outline-offset:3px}
.pub-desc{max-width:58ch;margin-bottom:clamp(2rem,5vw,3rem)}

/* ---- footer ---- */
footer{border-top:1px solid var(--rule)}
footer .wrap{
  display:flex;justify-content:space-between;align-items:baseline;
  flex-wrap:wrap;gap:.75rem 2rem;
  padding-block:2rem;
  font-size:.85rem;color:var(--muted);
}
.foot-mark{
  display:inline-flex;align-items:center;gap:.55rem;
  font-family:var(--mono);font-weight:200;font-size:1.05rem;color:var(--ink);letter-spacing:.02em;
}
/* miniature of the landing banner: indigo circle crossed by thin white axes */
.foot-glyph{flex:none;display:block}
.foot-links{display:flex;flex-wrap:wrap;gap:.25rem 1.4rem}
.foot-links a:hover{color:var(--ink)}

/* ---- twelve-column alignment at desk widths ---- */
@media (min-width:860px){
  .pillar{grid-template-columns:repeat(12,1fr)}
  .pillar .num{grid-column:1 / 2;padding-top:.55rem}
  .pillar h2,.pillar h3{grid-column:2 / 6}
  .pillar p{grid-column:6 / 13;padding-top:.35rem}
  .pillar .svc-list{grid-column:6 / 13;padding-top:.35rem}
  .work-row{grid-template-columns:repeat(12,1fr)}
  .work-head{grid-column:1 / 6}
  .work-desc{grid-column:6 / 13;padding-top:.35rem}
  .cred-cols{display:grid;grid-template-columns:repeat(12,1fr);gap:1.5rem}
  .cred-cols > .cred-group{grid-column:span 6}
  .cred-cols > .cred-group + .cred-group{margin-top:0}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none !important;transition:none !important}
}
