/* Hallmark · scholarly-corporate editorial · redesign: full · content and photography preserved */
/* Critique · replaces repeated template furniture with precise type, measured space and authentic evidence */
:root {
  --paper: #f4f0e8; --surface: #fffdf8; --surface-soft: #ebe4d8; --ink: #26211f;
  --primary: #641f2b; --primary-deep: #42131b; --primary-light: #7b3240; --accent: #9b7440; --accent-soft: #d7bf98; --muted: #695f59;
  --line: #d6cec1; --line-strong: #b9ac9b; --on-primary: #fffdf8; --focus: #8b5d13;
  --shadow-soft: rgba(38, 33, 31, .08); --overlay-deep: rgba(66, 19, 27, .74);
  --overlay-mid: rgba(66, 19, 27, .38); --overlay-clear: rgba(66, 19, 27, .04);
  --gutter: clamp(20px, 5vw, 64px); --content: 1180px; --reading: 72ch;
  --serif: "Fraunces", Georgia, serif; --sans: "Source Sans 3", Arial, sans-serif;
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 24px;
  --space-6: 32px; --space-7: 48px; --space-8: 64px; --space-9: 96px;
  --motion-fast: 160ms; --motion-ease: cubic-bezier(.2, .8, .2, 1);
}
* { box-sizing: border-box; }
html { overflow-x: clip; scroll-behavior: smooth; }
body { margin: 0; overflow-x: clip; background: var(--paper); color: var(--ink); font: 400 17px/1.62 var(--sans); text-rendering: optimizeLegibility; }
body::before { content: ""; display: block; height: 4px; background: var(--primary); }
::selection { color: var(--on-primary); background: var(--primary); }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration-color: var(--accent); text-underline-offset: .22em; }
a:hover { color: var(--primary); }
a:active { transform: translateY(1px); }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
.shell { width: min(var(--content), calc(100% - 2 * var(--gutter))); margin-inline: auto; }
.narrow { max-width: 800px; }
.skip-link { position: fixed; z-index: 1000; inset: var(--space-3) auto auto var(--space-3); padding: var(--space-2) var(--space-4); background: var(--surface); box-shadow: 0 8px 24px var(--shadow-soft); }
.skip-link:not(:focus) { width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); padding: 0; }

.site-header { position: relative; z-index: 20; background: var(--surface); border-bottom: 1px solid var(--line); }
.header-inner { min-height: 82px; display: flex; align-items: center; justify-content: space-between; gap: var(--space-6); }
.site-name { flex: 0 0 auto; color: var(--primary); font: 500 24px/1.1 var(--serif); letter-spacing: -.015em; text-decoration: none; }
.header-nav, .footer-nav { display: flex; align-items: center; gap: var(--space-5); margin: 0; padding: 0; list-style: none; font-size: 15px; }
.header-nav a, .footer-nav a { text-decoration: none; }
.header-nav a { position: relative; display: inline-flex; min-height: 44px; align-items: center; }
.header-nav a::after { content: ""; position: absolute; right: 0; bottom: 7px; left: 0; height: 2px; transform: scaleX(0); transform-origin: right; background: var(--accent); transition: transform var(--motion-fast) var(--motion-ease); }
.header-nav a:hover::after, .header-nav a[aria-current="page"]::after { transform: scaleX(1); transform-origin: left; }
.header-nav a[aria-current="page"] { color: var(--primary); font-weight: 600; }
.mobile-menu { display: none; }

main { min-height: 65vh; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { color: var(--primary); font-family: var(--serif); font-weight: 500; overflow-wrap: break-word; min-width: 0; }
h1 { margin-bottom: 0; font-size: clamp(42px, 5vw, 72px); line-height: .99; letter-spacing: -.038em; text-wrap: balance; }
h2 { margin-bottom: var(--space-4); font-size: clamp(30px, 3.2vw, 44px); line-height: 1.08; letter-spacing: -.024em; }
h3 { margin-bottom: var(--space-2); font-size: clamp(21px, 2vw, 26px); line-height: 1.18; }

.hero { position: relative; display: flex; min-height: min(720px, calc(100dvh - 86px)); align-items: center; overflow: clip; background: radial-gradient(circle at 84% 34%, color-mix(in srgb, var(--accent-soft) 42%, transparent) 0, transparent 27%), linear-gradient(124deg, var(--surface) 0 54%, var(--paper) 70%, var(--surface-soft) 100%); border-bottom: 1px solid var(--line); }
.hero::before { content: ""; position: absolute; width: min(50vw, 660px); aspect-ratio: 1; right: -8%; top: 4%; border: 1px solid color-mix(in srgb, var(--accent) 42%, transparent); border-radius: 50%; pointer-events: none; }
.hero::after { content: ""; position: absolute; width: 1px; height: 72%; right: 37%; top: 14%; background: linear-gradient(to bottom, transparent, var(--accent-soft) 20%, var(--accent-soft) 80%, transparent); pointer-events: none; }
.hero-grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(300px, .75fr); gap: var(--space-7); align-items: center; padding-block: var(--space-8); }
.hero-copy { min-width: 0; }
.hero-copy::before { content: "Finance, valuation and economics"; display: block; margin-bottom: var(--space-5); color: var(--accent); font-size: 14px; font-weight: 600; }
.hero h1 { max-width: 17ch; }
.hero-copy > p { max-width: 65ch; margin: var(--space-5) 0 0; color: var(--muted); font-size: clamp(18px, 1.6vw, 20px); }
.portrait-frame { width: min(100%, 400px); margin: 0 0 0 auto; background: var(--surface); }
.portrait-frame img { width: 100%; height: clamp(430px, 43vw, 560px); object-fit: cover; object-position: 50% 22%; border: 1px solid var(--line); }
.hero .portrait-frame { position: relative; }
.hero .portrait-frame::before { content: ""; position: absolute; inset: 18px -18px -18px 18px; z-index: -1; background: linear-gradient(145deg, var(--accent-soft), var(--surface-soft) 58%, var(--primary-light)); }
figcaption { margin-top: var(--space-2); color: var(--muted); font-size: 13px; }
.button-row { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-6); }
.button { display: inline-flex; min-height: 48px; align-items: center; justify-content: center; padding: var(--space-3) var(--space-5); border: 1px solid var(--primary); color: var(--primary); font-size: 15px; font-weight: 600; text-decoration: none; transition: transform var(--motion-fast) var(--motion-ease), background-color var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease); }
.button.primary, .button:hover { background: var(--primary); color: var(--on-primary); }
.button:hover { transform: translateY(-2px); }
.button:active { transform: translateY(1px); }

.credential-strip { background: linear-gradient(105deg, var(--primary-deep), var(--primary) 48%, var(--primary-light)); color: var(--on-primary); }
.credential-strip-inner { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.credential-strip span { display: flex; min-height: 72px; align-items: center; justify-content: center; padding: var(--space-3) var(--space-4); border-left: 1px solid color-mix(in srgb, var(--on-primary) 22%, transparent); text-align: center; font-size: 14px; font-weight: 600; }
.credential-strip span:last-child { border-right: 1px solid color-mix(in srgb, var(--on-primary) 22%, transparent); }

.page-intro { position: relative; display: grid; min-height: clamp(420px, 42vw, 580px); align-items: stretch; overflow: clip; background: radial-gradient(circle at 43% 18%, color-mix(in srgb, var(--accent-soft) 26%, transparent), transparent 28%), linear-gradient(126deg, var(--surface) 0 34%, var(--paper) 50%, var(--surface-soft) 100%); border-bottom: 1px solid var(--line); }
.page-intro::before { content: ""; position: absolute; z-index: 3; top: 10%; bottom: 10%; left: 50%; width: 1px; background: linear-gradient(to bottom, transparent, var(--accent-soft) 20%, var(--accent-soft) 80%, transparent); pointer-events: none; }
.page-intro > .shell { position: relative; z-index: 2; display: flex; max-width: none; width: 50%; margin: 0; padding: var(--space-9) max(var(--gutter), calc((100vw - var(--content)) / 2)) var(--space-8); flex-direction: column; justify-content: center; }
.page-intro h1 { max-width: 10.5ch; }
.page-intro p { max-width: 52ch; margin: var(--space-5) 0 0; color: var(--muted); font-size: clamp(18px, 1.6vw, 20px); line-height: 1.55; }
.page-intro::after { content: ""; position: absolute; inset: 0 0 0 50%; background-color: var(--surface-soft); background-position: center; background-size: cover; }
.about-hero::after { background-image: linear-gradient(90deg, var(--overlay-mid), var(--overlay-clear) 45%), linear-gradient(0deg, color-mix(in srgb, var(--primary-deep) 14%, transparent), transparent 46%), url("/assets/about-working.jpeg"); background-position: 42% 38%; }
.practice-hero::after { background-image: linear-gradient(90deg, var(--overlay-deep), var(--overlay-clear) 58%), linear-gradient(0deg, color-mix(in srgb, var(--primary-deep) 18%, transparent), transparent 52%), url("/assets/practice-fintech.jpeg"); background-position: 38% 46%; }
.teaching-hero::after { background-image: linear-gradient(90deg, var(--overlay-mid), var(--overlay-clear) 52%), linear-gradient(0deg, color-mix(in srgb, var(--primary-deep) 16%, transparent), transparent 48%), url("/assets/speaking.jpeg"); background-position: 58% 29%; }
.credentials-hero::after { background-image: linear-gradient(90deg, var(--overlay-mid), var(--overlay-clear) 52%), linear-gradient(0deg, color-mix(in srgb, var(--primary-deep) 15%, transparent), transparent 48%), url("/assets/portrait.jpeg"); background-position: 50% 14%; }
.contact-hero::after { background-image: linear-gradient(90deg, var(--overlay-mid), var(--overlay-clear) 52%), linear-gradient(0deg, color-mix(in srgb, var(--primary-deep) 17%, transparent), transparent 50%), url("/assets/contact-office.jpeg"); background-position: 45% 42%; }

.section { padding-block: var(--space-9); background: var(--paper); }
.section:nth-of-type(even) { background: var(--surface); }
.section + .section { border-top: 1px solid var(--line); }
.section-lead { max-width: var(--reading); color: var(--muted); font-size: 19px; }
.section h2::after { content: ""; display: block; width: 48px; height: 2px; margin-top: var(--space-4); background: linear-gradient(90deg, var(--accent), var(--accent-soft)); }
.text-link { display: inline-block; margin-top: var(--space-5); color: var(--primary); font-weight: 600; text-decoration-thickness: 1px; transition: text-decoration-thickness var(--motion-fast) var(--motion-ease); }
.text-link:hover { text-decoration-thickness: 2px; }
.ruled-list { margin: var(--space-7) 0 0; padding: 0; border-top: 1px solid var(--accent); list-style: none; }
.ruled-list li { display: grid; grid-template-columns: minmax(220px, .72fr) minmax(0, 1.55fr); gap: var(--space-5) var(--space-8); padding: var(--space-6) var(--space-4); border-bottom: 1px solid var(--line); transition: background-color var(--motion-fast) var(--motion-ease); }
.ruled-list li:hover { background: color-mix(in srgb, var(--accent-soft) 14%, transparent); }
.ruled-list h3, .ruled-list p { margin: 0; }
.quote-line { max-width: 900px; margin-bottom: var(--space-2); color: var(--ink); font: 400 clamp(24px, 3vw, 36px)/1.35 var(--serif); }
.quote-line::before { content: ""; display: block; width: 72px; height: 1px; margin-bottom: var(--space-5); background: linear-gradient(90deg, var(--accent), transparent); }

.profile-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-8); align-items: start; }
.profile-grid .portrait-frame { display: none; }
.profile-grid p { max-width: var(--reading); }
.profile-grid p + p { margin-top: var(--space-4); }
.timeline { margin: var(--space-6) 0 0; padding: 0; border-top: 1px solid var(--accent); list-style: none; }
.timeline li { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: var(--space-5); padding: var(--space-5) var(--space-3); border-bottom: 1px solid var(--line); transition: background-color var(--motion-fast) var(--motion-ease); }
.timeline li:hover { background: color-mix(in srgb, var(--accent-soft) 14%, transparent); }
.year { color: var(--accent); font-weight: 600; font-variant-numeric: tabular-nums; }

.practice { border-top: 1px solid var(--accent); }
.practice details { border-bottom: 1px solid var(--line); background: transparent; transition: background-color var(--motion-fast) var(--motion-ease); }
.practice details:hover { background: color-mix(in srgb, var(--accent-soft) 12%, transparent); }
.practice details[open] { background: var(--surface); }
.practice summary { display: grid; grid-template-columns: 48px minmax(230px, .9fr) minmax(0, 1.25fr) auto; gap: var(--space-5) var(--space-6); align-items: baseline; padding: var(--space-6) var(--space-4) var(--space-6) 0; cursor: pointer; list-style: none; }
.practice summary::-webkit-details-marker { display: none; }
.practice summary::after { content: "+"; color: var(--accent); font: 500 25px/1 var(--serif); }
.practice details[open] summary::after { content: "−"; }
.practice .number { color: var(--accent); font-weight: 600; font-variant-numeric: tabular-nums; }
.practice .title { color: var(--primary); font: 500 clamp(21px, 2vw, 26px)/1.2 var(--serif); }
.practice .summary { color: var(--muted); }
.practice-body { max-width: 780px; margin: 0 0 var(--space-6) 104px; padding-right: var(--space-5); }
.practice-body ul { margin: 0; padding-left: var(--space-5); }
.practice-body li + li { margin-top: var(--space-2); }
.engagement-note { margin: var(--space-5) 0 0; padding-left: var(--space-4); border-left: 2px solid var(--accent); color: var(--muted); font-size: 15px; }

.lecture { margin: var(--space-7) 0 0; }
.lecture img { width: 100%; max-height: 600px; object-fit: cover; object-position: 58% 30%; border: 1px solid var(--line); }
.teaching-hero + .section .lecture { display: none; }
.table-wrap { overflow-x: auto; border-top: 2px solid var(--primary); background: var(--surface); }
table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
th, td { padding: var(--space-4); border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
tbody tr { transition: background-color var(--motion-fast) var(--motion-ease); }
tbody tr:hover { background: color-mix(in srgb, var(--accent-soft) 14%, transparent); }
th { color: var(--primary); font-size: 14px; font-weight: 600; }
.credential-groups { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-7) var(--space-8); }
.credential-list { margin: 0; padding: 0; border-top: 2px solid var(--primary); list-style: none; }
.credential-list li { padding: var(--space-4) var(--space-3); border-bottom: 1px solid var(--line); transition: background-color var(--motion-fast) var(--motion-ease); }
.credential-list li:hover { background: color-mix(in srgb, var(--accent-soft) 14%, transparent); }

.contact-card { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr); gap: var(--space-7) var(--space-8); padding: var(--space-8); background: linear-gradient(135deg, var(--surface), color-mix(in srgb, var(--accent-soft) 12%, var(--surface))); border-top: 3px solid var(--primary); box-shadow: 0 24px 60px var(--shadow-soft); }
.contact-card address { font-style: normal; }
.contact-card .firm-name { color: var(--primary); font: 500 30px/1.2 var(--serif); }
.contact-lines { margin: 0; padding: 0; list-style: none; }
.contact-lines li + li { margin-top: var(--space-4); }
.contact-lines span { display: block; color: var(--muted); font-size: 14px; font-weight: 600; }
.contact-note { margin-top: var(--space-5); color: var(--muted); font-size: 15px; }

.site-footer { padding-block: var(--space-8) var(--space-5); background: linear-gradient(112deg, var(--primary-deep), var(--primary) 68%, var(--primary-light)); color: var(--on-primary); border-top: 3px solid var(--accent); }
.footer-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr) auto; gap: var(--space-6) var(--space-8); }
.footer-title { margin-bottom: var(--space-2); font: 500 24px/1.2 var(--serif); }
.site-footer address { font-style: normal; }
.footer-firm { margin: 0 0 var(--space-2); }
.footer-nav { align-items: flex-start; flex-direction: column; gap: var(--space-1); }
.footer-nav a { display: inline-flex; min-height: 32px; align-items: center; }
.copyright { margin: var(--space-6) 0 0; padding-top: var(--space-4); border-top: 1px solid color-mix(in srgb, var(--on-primary) 28%, transparent); font-size: 14px; }

@media (max-width: 1000px) {
  .header-inner { min-height: 74px; }
  .desktop-nav { display: none; }
  .mobile-menu { position: relative; display: block; }
  .mobile-menu summary { display: inline-flex; min-height: 44px; align-items: center; padding: 0 var(--space-4); border: 1px solid var(--line-strong); cursor: pointer; list-style: none; font-weight: 600; }
  .mobile-menu summary::-webkit-details-marker { display: none; }
  .mobile-menu[open] summary { color: var(--on-primary); background: var(--primary); border-color: var(--primary); }
  .mobile-menu nav { position: absolute; top: calc(100% + var(--space-2)); right: 0; width: 300px; padding: var(--space-3); background: var(--surface); border: 1px solid var(--line); }
  .mobile-menu .header-nav { align-items: stretch; flex-direction: column; gap: 0; }
  .mobile-menu .header-nav a { padding-inline: var(--space-3); border-bottom: 1px solid var(--line); }
  .mobile-menu .header-nav li:last-child a { border-bottom: 0; }
  .mobile-menu .header-nav a::after { display: none; }
  .hero { min-height: auto; }
  .hero::after { right: 42%; }
  .hero-grid { grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr); gap: var(--space-7); }
  .credential-strip-inner { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .credential-strip span { border-bottom: 1px solid color-mix(in srgb, var(--on-primary) 22%, transparent); }
  .practice summary { grid-template-columns: 44px minmax(210px, .9fr) minmax(0, 1fr) auto; gap: var(--space-4) var(--space-5); }
  .footer-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}

@media (max-width: 720px) {
  body { font-size: 16.5px; }
  .header-inner { min-height: 68px; }
  .site-name { font-size: 21px; }
  .hero-grid, .contact-card, .credential-groups { grid-template-columns: minmax(0, 1fr); }
  .hero-grid { gap: var(--space-7); padding-block: var(--space-7) var(--space-8); }
  .hero::before { display: none; }
  .hero::after { display: none; }
  .hero-copy { order: 1; }
  .hero .portrait-frame { order: 2; width: 100%; margin: 0; }
  .portrait-frame img { height: min(118vw, 520px); object-position: 50% 18%; }
  .hero .portrait-frame::before { inset: 12px -12px -12px 12px; }
  .hero h1 { font-size: clamp(42px, 12vw, 58px); }
  .hero-copy > p { font-size: 18px; }
  .button-row { align-items: stretch; flex-direction: column; }
  .button { width: 100%; }
  .credential-strip-inner { grid-template-columns: minmax(0, 1fr); }
  .credential-strip span { min-height: 52px; justify-content: flex-start; border-right: 0; border-left: 0; text-align: left; }
  .page-intro { min-height: auto; grid-template-rows: auto 300px; }
  .page-intro > .shell { width: min(var(--content), calc(100% - 2 * var(--gutter))); margin-inline: auto; padding: var(--space-8) 0 var(--space-7); }
  .page-intro h1 { max-width: 11ch; font-size: clamp(42px, 12vw, 58px); }
  .page-intro p { font-size: 18px; }
  .page-intro::after { position: relative; inset: auto; grid-row: 2; width: 100%; min-height: 300px; }
  .page-intro::before { top: auto; right: 0; bottom: 300px; left: 0; width: auto; height: 1px; background: linear-gradient(90deg, transparent, var(--accent-soft), transparent); }
  .section { padding-block: var(--space-8); }
  .ruled-list li { grid-template-columns: minmax(0, 1fr); gap: var(--space-2); padding-block: var(--space-5); }
  .timeline li { grid-template-columns: 72px minmax(0, 1fr); gap: var(--space-4); }
  .practice summary { grid-template-columns: 38px minmax(0, 1fr) auto; gap: var(--space-3) var(--space-4); }
  .practice summary .summary { grid-column: 2 / 4; }
  .practice summary::after { grid-column: 3; grid-row: 1; }
  .practice-body { margin-left: 52px; padding-right: var(--space-4); }
  .footer-grid { grid-template-columns: minmax(0, 1fr); }
  .footer-nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lecture img { aspect-ratio: 4 / 3; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
