:root {
  --bg:       #07090f;
  --bg2:      #0b0d15;
  --bg3:      #0f1120;
  --purple:   #9d6fd4;
  --ink:      #E8E9EF;
  --ink-low:  #8C8C9C;
  --ink-dim:  #4A4A5C;
  --rule:     rgba(232,233,239,0.07);
  --rule-mid: rgba(232,233,239,0.12);
  --ink-hi:    rgba(232,233,239,0.93);
  --ink-med:   rgba(232,233,239,0.76);
  --ink-faint: rgba(232,233,239,0.55);
  /* Type scale */
  --fs-2xs: 11px;
  --fs-xs:  12px;
  --fs-sm:  14px;
  --fs-base: 15px;
  --fs-md:  18px;
  --fs-lg:  20px;
  --fs-xl:  24px;
  /* Letter spacing */
  --ls-tightest: -0.02em;
  --ls-tight:    -0.01em;
  --ls-wide:      0.12em;
  --ls-wider:     0.18em;
  --ls-widest:    0.22em;
  --ls-caps:      0.32em;
  /* Line heights */
  --lh-tight:   1.2;
  --lh-snug:    1.45;
  --lh-normal:  1.6;
  --lh-relaxed: 1.75;
  --lh-loose:   1.85;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{font-size:16px;scroll-behavior:smooth;}
body{background:var(--bg);color:var(--ink);font-family:Georgia,serif;font-weight:400;line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-kerning:normal;font-optical-sizing:auto;overflow-x:hidden;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.veil{position:fixed;inset:0;background:#000;z-index:900;pointer-events:none;animation:unveil 1.2s cubic-bezier(0.4,0,0.2,1) 0.1s forwards;}
@keyframes unveil{to{opacity:0;}}
.grain{position:fixed;inset:0;pointer-events:none;z-index:1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.76' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.038'/%3E%3C/svg%3E");background-size:256px;}
.vignette{position:fixed;inset:0;background:radial-gradient(ellipse 110% 100% at 50% 50%,transparent 35%,rgba(0,0,0,0.65) 100%);pointer-events:none;z-index:1;}
.wrap{position:relative;z-index:2;max-width:660px;margin:0 auto;padding:0 40px;}
nav{padding:32px 0;display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--rule);}
.nav-links{display:flex;align-items:center;gap:24px;}
.logo{font-style:italic;font-weight:300;font-size:16px;letter-spacing:0.22em;color:var(--ink-low);text-decoration:none;}
.logo-dot{color:var(--purple);text-shadow:0 0 10px rgba(157,111,212,0.7);animation:dotPulse 8s ease-in-out infinite;}
@keyframes dotPulse{0%,100%{opacity:0.65;text-shadow:0 0 6px rgba(157,111,212,0.5);}50%{opacity:1;text-shadow:0 0 14px rgba(157,111,212,0.9),0 0 24px rgba(157,111,212,0.4);}}
.nav-email{font-weight:300;font-size:11px;letter-spacing:0.14em;color:var(--ink-low);text-decoration:none;transition:color 0.5s,text-shadow 0.5s;}
.nav-email:hover{color:var(--ink);}
.nav-icon{display:flex;align-items:center;color:var(--ink-low);text-decoration:none;transition:color 0.5s;}
.nav-icon:hover{color:var(--ink);}
footer{border-top:1px solid var(--rule);padding:48px 0 56px;text-align:center;}
.footer-text{font-size:11px;color:var(--ink-dim);letter-spacing:0.14em;text-transform:uppercase;}
.footer-nav{display:flex;flex-direction:column;align-items:stretch;gap:0;margin:0 auto 40px;max-width:260px;width:100%;}
.footer-nav a{display:block;font-size:12px;letter-spacing:0.15em;color:var(--ink-low);text-decoration:none;text-transform:uppercase;padding:13px 0;text-align:center;border-bottom:1px solid var(--rule);transition:color 0.4s;}
.footer-nav a:first-child{border-top:1px solid var(--rule);}
.footer-nav a:hover{color:var(--ink);}
.footer-nav a.footer-nav-active{color:var(--purple);}
/* Testimonial slider — CSS grid stacking keeps container height fixed at tallest slide */
.testi-slides{display:grid;}
.testi-slide{grid-area:1/1;opacity:0;visibility:hidden;pointer-events:none;transition:opacity 0.42s ease,visibility 0.42s;}
.testi-slide.active{opacity:1;visibility:visible;pointer-events:auto;}
/* Higher specificity to override .about p rules on the homepage */
.testi-slider .testi-quote{font-style:italic;color:var(--ink-med);line-height:var(--lh-relaxed);font-size:clamp(17px,2.4vw,22px);margin:0;max-width:none;letter-spacing:normal;text-align:center;text-wrap:balance;}
.testi-slider .testi-attr{font-size:var(--fs-2xs);color:var(--ink-low);letter-spacing:var(--ls-wide);text-transform:uppercase;margin:16px 0 0;max-width:none;text-align:center;}
.testi-nav{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:20px;margin-top:28px;}
.testi-prev,.testi-next{background:transparent;border:none;cursor:pointer;color:var(--ink-dim);padding:12px;transition:color 0.3s;line-height:0;flex-shrink:0;}
.testi-prev:hover,.testi-next:hover{color:var(--ink-low);}
.testi-dots{display:flex;flex-direction:row;gap:2px;align-items:center;}
.testi-dot{width:6px;height:6px;border-radius:50%;background:var(--ink-dim);border:none;cursor:pointer;padding:10px;background-clip:content-box;transition:background 0.3s,transform 0.3s;flex-shrink:0;display:inline-block;}
.testi-dot.active{background:var(--purple);transform:scale(1.4);}
/* Keyboard focus */
:focus-visible{outline:2px solid var(--purple);outline-offset:3px;border-radius:2px;}
/* Reduced motion */
@media(prefers-reduced-motion:reduce){
  .veil{animation:none !important;opacity:0 !important;}
  .testi-slide{transition:none;}
  .logo-dot{animation:none;}
  *{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;}
}
/* Service page eclipse */
.service-eclipse-wrap{flex-shrink:0;display:flex;align-items:center;pointer-events:none;opacity:0.72;will-change:transform;}
.service-eclipse-wrap canvas{width:180px;height:180px;display:block;}
@media(max-width:760px){.service-eclipse-wrap{display:none;}}
/* UFO keyframes for service pages (also defined in index.css for homepage) */
@keyframes ufoFloat{0%,100%{transform:translateY(0px) rotate(-1deg);}33%{transform:translateY(-14px) rotate(1.5deg);}66%{transform:translateY(-7px) rotate(-0.5deg);}}
@keyframes beamPulse{0%,100%{opacity:1;}50%{opacity:0.4;}}
/* About extract — bio block on service landing pages */
.about-extract{padding:60px 0 0;border-top:1px solid var(--rule);}
.about-extract .section-label{margin-bottom:28px;}
.about-extract-inner{display:flex;align-items:flex-start;gap:32px;}
.ae-ufo-wrap{flex-shrink:0;align-self:flex-start;position:relative;width:130px;padding-bottom:28px;overflow:visible;}
.ae-ufo{display:block;width:130px;height:130px;max-width:130px;max-height:130px;object-fit:contain;animation:ufoFloat 6s ease-in-out infinite;filter:drop-shadow(0 0 18px rgba(157,111,212,0.4)) drop-shadow(0 0 38px rgba(157,111,212,0.14));}
.ae-beam{position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:50px;height:76px;background:linear-gradient(180deg,rgba(157,111,212,0.22) 0%,rgba(157,111,212,0) 100%);clip-path:polygon(20% 0%,80% 0%,100% 100%,0% 100%);animation:beamPulse 6s ease-in-out infinite;pointer-events:none;}
.about-extract-body{padding-top:6px;}
.about-extract-body p{font-size:16px;color:var(--ink-low);line-height:1.8;font-weight:300;letter-spacing:0.02em;margin-bottom:18px;max-width:440px;text-wrap:pretty;}
.about-extract-link{display:inline-block;font-size:11px;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink-dim);text-decoration:none;border-bottom:1px solid var(--rule-mid);padding-bottom:2px;transition:color 0.2s,border-color 0.2s;}
.about-extract-link:hover{color:var(--ink-low);border-color:var(--ink-low);}
@media(max-width:600px){.about-extract-inner{flex-direction:column;gap:0;}.ae-ufo-wrap{width:110px;margin-bottom:28px;}.ae-ufo{width:110px;height:110px;max-width:110px;max-height:110px;}.ae-beam{width:44px;height:66px;}}
/* FAQ accordion — shared across journal and service pages */
.faq-section{margin-top:64px;}
.faq-section-label{font-size:11px;letter-spacing:0.32em;color:var(--ink-low);margin-bottom:28px;display:flex;align-items:center;gap:18px;text-transform:uppercase;}
.faq-section-label::after{content:'';flex:1;height:1px;background:var(--rule);}
.faq-list{display:grid;gap:0;}
.faq-item{border-top:1px solid var(--rule);}
.faq-item:last-child{border-bottom:1px solid var(--rule);}
.faq-toggle{width:100%;background:none;border:none;padding:20px 0;display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;text-align:left;}
.faq-q{font-size:15px;font-weight:300;color:var(--ink);line-height:1.45;font-family:inherit;flex:1;min-width:0;}
.faq-chevron{width:14px;height:14px;flex-shrink:0;color:var(--ink-low);transition:transform 0.35s cubic-bezier(0.16,1,0.3,1);}
.faq-toggle.open .faq-chevron{transform:rotate(180deg);}
.faq-toggle.open .faq-q{color:var(--purple);}
.faq-body{max-height:0;overflow:hidden;transition:max-height 0.45s cubic-bezier(0.16,1,0.3,1);}
.faq-body p{font-size:15px;color:var(--ink-med);line-height:1.75;padding:0 0 20px;font-weight:300;}
/* Article CTA footer — shared across journal and service pages */
.article-cta{border-top:1px solid var(--rule);padding:56px 0 48px;text-align:center;}
.article-cta-note{font-size:11px;color:var(--ink-low);letter-spacing:0.12em;margin-bottom:20px;}
.article-cta-link{font-style:italic;font-weight:300;font-size:clamp(20px,3.5vw,28px);color:var(--ink-faint);text-decoration:none;letter-spacing:-0.01em;display:inline-block;transition:color 0.3s;}
.article-cta-link:hover{color:var(--ink);}
.article-cta-link .cta-name{color:var(--ink);letter-spacing:0.22em;}
.article-cta-link .cta-dot{color:var(--purple);text-shadow:0 0 10px rgba(157,111,212,0.7);}
.article-cta-social{margin-top:16px;}
.article-cta-social a{font-size:11px;letter-spacing:0.12em;color:var(--ink-low);text-decoration:none;transition:color 0.3s;}
.article-cta-social a:hover{color:var(--purple);}
