:root{
  --ink:#1b1830;
  --ink2:#232041;
  --violet:#5b51a8;
  --violet-soft:#8b82cf;
  --olive:#7e7c49;
  --olive-soft:#b3ae6e;
  --cream:#f2eee1;
  --dim:#a49fb6;
  --rule:rgba(242,238,225,.15);
  --dead:#c05a48;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.reveal{transition:none!important;opacity:1!important;transform:none!important}}
body{
  background:var(--ink);
  color:var(--cream);
  font-family:'Spectral',Georgia,serif;
  font-weight:300;
  line-height:1.8;
  font-size:17px;
}
::selection{background:var(--violet);color:#fff}
img{max-width:100%;display:block}
a{color:var(--olive-soft)}
a:focus-visible{outline:2px solid var(--olive-soft);outline-offset:3px}
.mono{font-family:'IBM Plex Mono',monospace}
.wrap{max-width:980px;margin:0 auto;padding:0 24px}

/* nav */
nav{position:sticky;top:0;z-index:30;background:rgba(27,24,48,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}
nav .wrap{display:flex;align-items:center;gap:8px 20px;padding:13px 24px;flex-wrap:wrap}
nav .brand{font-family:'Lora',serif;font-weight:700;font-size:16px;color:var(--cream);text-decoration:none;margin-right:auto;letter-spacing:.02em}
nav a.lnk{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);text-decoration:none;padding:3px 0}
nav a.lnk:hover{color:var(--cream)}
nav a.lnk.on{color:var(--olive-soft);border-bottom:1px solid var(--olive-soft)}

/* page head */
.pagehead{background:linear-gradient(122deg, #5b51a8 0%, #4d4877 38%, #6d6a4e 76%, #7e7c49 100%);padding:110px 24px 90px;text-align:center;position:relative}
.pagehead::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom, rgba(27,24,48,0) 55%, rgba(27,24,48,.9) 100%);pointer-events:none}
.pagehead > *{position:relative;z-index:1}
.pagehead .eyebrow{margin-bottom:14px}
.pagehead h1{font-family:'Lora',serif;font-weight:700;font-size:clamp(2.2rem,5.6vw,3.4rem);line-height:1.12;text-shadow:0 2px 22px rgba(0,0,0,.35)}
.pagehead p.sub{max-width:640px;margin:18px auto 0;font-size:18px;color:rgba(255,255,255,.92)}

.eyebrow{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--olive-soft)}
section{padding:84px 0}
section + section{border-top:1px solid var(--rule)}
h2{font-family:'Lora',serif;font-weight:600;font-size:clamp(1.7rem,4vw,2.4rem);line-height:1.2;margin:12px 0 24px}
h3{font-family:'Lora',serif;font-weight:600}
.lede{font-size:19px;max-width:680px}
p + p{margin-top:1em}
.muted{color:var(--dim)}
.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease, transform .6s ease}
.reveal.in{opacity:1;transform:none}

/* home hero */
.hero{min-height:96vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:90px 24px 70px;background:linear-gradient(122deg, #5b51a8 0%, #4d4877 40%, #6d6a4e 78%, #7e7c49 100%);position:relative}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom, rgba(27,24,48,0) 60%, rgba(27,24,48,1) 100%)}
.hero > *{position:relative;z-index:1}
.hero img.logo{width:min(460px,86%);margin-bottom:34px;border-radius:12px;box-shadow:0 24px 70px rgba(0,0,0,.45)}
.hero .dates{font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.3em;color:rgba(255,255,255,.85);margin-bottom:16px}
.hero h1{font-family:'Lora',serif;font-weight:700;font-size:clamp(2.1rem,5.5vw,3.3rem);line-height:1.15;margin-bottom:16px;text-shadow:0 2px 24px rgba(0,0,0,.35)}
.hero .tagline{font-family:'Lora',serif;font-style:italic;font-size:clamp(1.05rem,2.4vw,1.35rem);color:rgba(255,255,255,.9);margin-bottom:26px}
.hero .plaque{max-width:560px;font-size:16px;color:rgba(255,255,255,.85)}

/* section cards on home */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:22px;margin-top:44px}
.card{display:block;text-decoration:none;color:var(--cream);border:1px solid var(--rule);border-radius:8px;padding:26px 26px 30px;background:var(--ink2);transition:border-color .25s ease, transform .25s ease}
.card:hover{border-color:var(--olive-soft);transform:translateY(-3px)}
.card .n{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.26em;color:var(--olive-soft);text-transform:uppercase}
.card h3{font-size:1.35rem;margin:10px 0 8px}
.card p{font-size:14.5px;color:var(--dim)}

/* timeline */
.timeline{margin-top:48px;position:relative;padding-left:34px}
.timeline::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:1px;background:var(--rule)}
.t-item{position:relative;padding-bottom:46px}
.t-item:last-child{padding-bottom:0}
.t-item::before{content:"";position:absolute;left:-30px;top:9px;width:9px;height:9px;border-radius:50%;background:var(--ink);border:1.5px solid var(--olive-soft)}
.t-item .when{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--olive-soft);margin-bottom:6px}
.t-item h3{font-size:1.4rem;margin-bottom:8px}
.t-item p{color:var(--dim);max-width:620px;font-size:16px}

/* services */
.svc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;margin-top:44px}
.svc{border:1px solid var(--rule);background:var(--ink2);border-radius:8px;overflow:hidden}
.svc img{aspect-ratio:16/10;object-fit:cover;width:100%;filter:saturate(.6);opacity:.9}
.svc .pad{padding:20px 22px 24px}
.svc h3{font-size:1.25rem;margin-bottom:8px}
.svc p{font-size:14.5px;color:var(--dim)}
.svc .p{margin-top:12px;font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--olive-soft)}
.pricebook{margin-top:56px;border:1px solid var(--rule);border-radius:8px;padding:34px 34px 28px;background:var(--ink2)}
.pricebook h3{font-size:1.45rem;margin-bottom:4px}
.pricebook .note{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.14em;color:var(--dim);margin-bottom:22px}
table{width:100%;border-collapse:collapse;font-size:15px}
td{padding:10px 6px;border-bottom:1px dashed var(--rule);vertical-align:top}
td:last-child{text-align:right;font-family:'IBM Plex Mono',monospace;font-size:13.5px;color:var(--olive-soft);white-space:nowrap}
tr:last-child td{border-bottom:none}
.tbl-sub{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--dim);padding-top:24px!important}

/* partnership and team */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;margin-top:44px}
.duo img{border-radius:8px;border:1px solid var(--rule)}
@media(max-width:760px){.duo{grid-template-columns:1fr}}
.team{display:grid;grid-template-columns:minmax(240px,380px) 1fr;gap:44px;margin-top:44px;align-items:start}
.team img{border-radius:8px;border:1px solid var(--rule)}
@media(max-width:760px){.team{grid-template-columns:1fr}}
.member{border-top:1px solid var(--rule);padding:22px 0}
.member:first-of-type{border-top:none;padding-top:0}
.member h3{font-size:1.45rem}
.member .role{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--olive-soft);margin:6px 0 10px}
.member p{font-size:15.5px;color:var(--dim)}
.namegrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:30px}
.namecard{border:1px solid var(--rule);border-radius:8px;padding:20px 22px;background:var(--ink2)}
.namecard h3{font-size:1.15rem}
.namecard p{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);margin-top:6px}
.tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-top:36px}
.tool{border:1px solid var(--rule);border-radius:8px;padding:20px 22px;background:var(--ink2)}
.tool h3{font-size:1.05rem}
.tool p{font-size:14px;color:var(--dim);margin-top:6px}

/* numbers */
.nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:44px;border-radius:8px;overflow:hidden}
.num{background:var(--ink2);padding:30px 26px}
.num .v{font-family:'Lora',serif;font-weight:600;font-size:2.2rem;line-height:1}
.num .l{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin-top:12px}

/* ledger */
.ledger{margin-top:44px;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:8px;overflow:hidden}
.ledger .col{background:var(--ink2);padding:34px 32px}
.ledger h3{font-family:'IBM Plex Mono',monospace;font-weight:500;font-size:12px;letter-spacing:.28em;text-transform:uppercase;margin-bottom:24px;padding-bottom:12px;border-bottom:1px solid var(--rule)}
.ledger .credit h3{color:var(--olive-soft)}
.ledger .debit h3{color:var(--dead)}
.ledger ul{list-style:none}
.ledger li{padding:9px 0;border-bottom:1px dashed var(--rule);font-size:15.5px;display:flex;justify-content:space-between;gap:14px}
.ledger li:last-child{border-bottom:none}
.ledger li .amt{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--olive-soft);white-space:nowrap}
.ledger .debit li{color:var(--dim)}
@media(max-width:700px){.ledger{grid-template-columns:1fr}}
.balance{margin-top:26px;font-family:'Lora',serif;font-style:italic;font-size:1.3rem;color:var(--dim);max-width:660px}

/* archives */
.doc{border:1px solid var(--rule);border-radius:8px;background:var(--ink2);margin-top:34px;overflow:hidden}
.doc .dochead{padding:16px 26px;border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;align-items:baseline}
.doc .dochead h3{font-size:1.1rem}
.doc .dochead .src{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.doc .body{padding:26px 28px;font-size:15.5px;color:#d8d3c4;white-space:pre-wrap}
.doc .body .inactive{color:var(--dead);font-family:'IBM Plex Mono',monospace;font-size:13px}

/* contact in memoriam */
.mem{margin-top:44px;display:grid;gap:16px;max-width:640px}
.dead-row{border:1px solid var(--rule);border-radius:8px;padding:18px 22px;display:flex;justify-content:space-between;align-items:center;gap:18px;background:var(--ink2);flex-wrap:wrap}
.dead-row .what{font-family:'IBM Plex Mono',monospace;font-size:14px;color:var(--cream);word-break:break-all}
.dead-row .stamp{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.22em;color:var(--dead);border:1px solid var(--dead);border-radius:3px;padding:4px 9px;white-space:nowrap}
.qrbox{margin-top:36px;max-width:340px}
.qrbox img{border-radius:8px;border:1px solid var(--rule);background:#fff}
.qrbox p{font-size:13.5px;color:var(--dim);margin-top:12px}

/* epitaph */
.epitaph-text{font-family:'Lora',serif;font-size:clamp(1.3rem,3vw,1.7rem);font-style:italic;line-height:1.6;max-width:720px;margin-top:30px}

/* pager */
.pager{display:flex;justify-content:space-between;gap:20px;margin-top:70px;padding-top:30px;border-top:1px solid var(--rule)}
.pager a{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--olive-soft)}
.pager a:hover{color:var(--cream)}

footer{border-top:1px solid var(--rule);padding:42px 24px 58px;text-align:center;font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.18em;color:var(--dim);line-height:2.2}
