/* Matthew Roche — personal academic portfolio */
:root {
  color-scheme: light;
  --paper: #f8f8f4;
  --paper-alt: #f0f1eb;
  --card: #ffffff;
  --ink: #1b302f;
  --ink-strong: #162b2b;
  --ink-faint: #75817b;
  --muted: #55635d;
  --line: #dce1d9;
  --green: #3d746e;
  --green-light: #e4eee8;
  --sand: #d9ab7a;
  --dark: #18322f;
  --shadow: 0 22px 75px rgba(24,49,44,.09);
  --serif: 'Instrument Serif', Georgia, 'Times New Roman', serif;
  --sans: 'DM Sans', 'Segoe UI', Arial, sans-serif;
  --mono: 'DM Mono', Consolas, monospace;
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --paper: #152522;
  --paper-alt: #1d302b;
  --card: #21372f;
  --ink: #e8f0e9;
  --ink-strong: #f8fcf6;
  --ink-faint: #a3b1a9;
  --muted: #bdc8bf;
  --line: #3a5047;
  --green: #b7ded0;
  --green-light: #2a493e;
  --dark: #0d1c19;
  --shadow: 0 22px 75px rgba(0,0,0,.16);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 94px; }
body { margin:0; min-width:320px; color:var(--ink); background:var(--paper); font-family:var(--sans); -webkit-font-smoothing:antialiased; }
body.menu-open { overflow:hidden; }
a { color:inherit; text-decoration:none; }
button { font:inherit; }
button, a { -webkit-tap-highlight-color:transparent; }
:focus-visible { outline:3px solid #c78b48; outline-offset:4px; }
::selection { background:#d9e8dd; color:#192f29; }
img, svg { max-width:100%; }
.container { width:calc(100% - 100px); max-width:1200px; width:min(1200px, calc(100% - 100px)); margin:0 auto; }
.skip-link { position:absolute; left:14px; top:-100px; padding:12px; background:var(--ink);color:var(--paper); z-index:300; }
.skip-link:focus { top:10px; }
.site-header { height:86px; position:sticky; z-index:100; top:0; background:color-mix(in srgb, var(--paper) 92%, transparent); border-bottom:1px solid var(--line); backdrop-filter:blur(22px); }
.header-inner { height:100%; display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:28px; }
.brand { display:inline-flex; align-items:center; gap:15px; white-space:nowrap; }
.brand-mark { font-family:var(--serif); font-size:39px; font-style:italic; line-height:.9; letter-spacing:-2.5px; }
.brand-mark span, .footer-brand span { color:var(--sand); }
.brand-wordmark { font-size:14px; font-weight:700; letter-spacing:-.2px; }
.desktop-nav { display:flex; align-items:center; justify-content:flex-end; gap:25px; min-width:0; }
.desktop-nav a { color:var(--muted); font-size:12.5px; font-weight:600; transition:color .2s; position:relative; white-space:nowrap; }
.desktop-nav a:hover, .desktop-nav a.active { color:var(--green); }
.desktop-nav a.active:after { content:'';height:3px;width:3px;border-radius:50%;position:absolute;bottom:-9px;left:50%;background:var(--green); }
.header-actions { display:flex; align-items:center; gap:14px; }
.icon-button { display:grid; place-items:center; cursor:pointer; border:0; background:none; width:34px; height:34px; color:var(--ink); }
.theme-toggle svg { width:19px; height:19px; }
.sun-icon { display:none; }
[data-theme="dark"] .sun-icon { display:block; }
[data-theme="dark"] .moon-icon { display:none; }
.header-contact { font-size:12px; font-weight:700; background:var(--ink-strong); color:var(--paper); border-radius:3px; padding:13px 17px; transition:transform .2s, opacity .2s; white-space:nowrap; }
.header-contact span { margin-left:6px; }
.header-contact:hover, .button:hover { transform:translateY(-2px); }
.menu-toggle { display:none; flex-direction:column; justify-content:center; gap:4px; }
.menu-toggle span { width:20px; height:1.5px; background:var(--ink); }
.mobile-nav[hidden] { display:none !important; }
.mobile-nav { position:absolute; z-index:99; top:85px; left:0; right:0; padding:20px 6vw 35px; background:var(--paper); border-bottom:1px solid var(--line); box-shadow:var(--shadow); }
.mobile-nav a { display:block; padding:14px 0; font-size:18px; font-weight:500; border-bottom:1px solid var(--line); }
.hero { position:relative; display:grid; grid-template-columns:minmax(0,1.07fr) minmax(0,.93fr); gap:65px; align-items:center; padding-top:94px; padding-bottom:115px; min-height:720px; }
.eyebrow, .small-overline { display:flex; align-items:center; gap:12px; font-family:var(--mono); font-size:10px; font-weight:500; color:var(--green); letter-spacing:1.7px; }
.eyebrow-line { width:23px; height:1px; background:var(--green); }
h1, h2, h3, h4, p { margin-top:0; }
.hero h1 { font-family:var(--serif); font-size:94px;font-size:clamp(71px,6.6vw,106px); font-weight:400; line-height:.98; letter-spacing:-2.5px; margin:35px 0 30px; }
h1 em, h2 em { color:var(--green); font-weight:400; }
.hero-lead { font-size:16px; max-width:470px; line-height:1.9; color:var(--muted); }
.hero-lead strong { color:var(--ink-strong); }
.hero-buttons { display:flex; gap:17px; align-items:center; margin-top:29px; flex-wrap:wrap; }
.button { display:inline-flex;align-items:center;justify-content:space-between; gap:22px; padding:16px 22px; min-height:53px; font-size:12px; font-weight:700; border-radius:3px; transition:transform .2s, background .2s; }
.button-primary { background:var(--ink-strong); color:var(--paper); }
.button-quiet { color:var(--green); padding-inline:8px; }
.button span { font-size:17px; font-weight:400; }
.hero-socials { display:flex; align-items:center; gap:19px; margin-top:70px; }
.hero-socials span { color:var(--ink-faint); font-family:var(--mono); font-size:10px; letter-spacing:1.5px; }
.hero-socials a { font-size:12px; font-weight:700; border-bottom:1px solid var(--line); padding-bottom:4px; }
.hero-socials a:hover, .text-link:hover { color:var(--green); }
.hero-visual { position:relative; min-width:0; padding:29px 13px 18px 22px; }
.hero-visual:before { content:''; position:absolute; inset:7px 0 55px 60px; background:var(--green-light); border-radius:190px 6px 6px 6px; }
.photo-shell { position:relative; z-index:2; aspect-ratio:.855; overflow:hidden; border-radius:194px 5px 5px 5px; background:#9ac5e5; box-shadow:0 25px 70px rgba(20,58,55,.13); }
.photo-shell img { display:block; width:100%; height:100%; object-fit:cover; object-position:center center; }
.photo-decoration { position:absolute; top:-8px; right:-26px; width:120px; height:130px; z-index:1; color:var(--green); opacity:.35; font-family:var(--serif); font-size:31px; }
.photo-decoration span { position:absolute; }
.photo-decoration span:nth-child(1) { top:0;left:19px; }
.photo-decoration span:nth-child(2) { top:54px;left:90px; }
.photo-decoration span:nth-child(3) { top:93px;left:12px; }
.photo-caption { position:relative; z-index:2; display:flex; align-items:center; justify-content:center; gap:13px; padding:20px 0 0 5px; font:9px var(--mono); letter-spacing:1px; color:var(--muted); }
.caption-dot { height:6px; width:6px; border-radius:50%; background:#66ab83; box-shadow:0 0 0 4px rgba(91,157,113,.13); }
.caption-slash { color:var(--sand); }
.float-math { position:absolute; z-index:3; left:-33px; bottom:85px; padding:17px 20px; border:1px solid var(--line); border-radius:3px; background:var(--card); box-shadow:0 12px 40px rgba(26,55,46,.1); transform:rotate(-3deg); }
.float-math span { font-family:var(--serif); font-size:23px; font-style:italic; color:var(--ink); }
.scroll-cue { position:absolute; bottom:36px; left:0; display:flex; align-items:center; gap:13px; font:10px var(--mono); letter-spacing:1.4px; color:var(--ink-faint); }
.scroll-line { width:36px; height:1px; background:var(--ink-faint); }
.topic-strip { border-block:1px solid var(--line); background:var(--paper-alt); overflow:hidden; }
.topic-strip-inner { width:calc(100% - 100px); max-width:1200px; width:min(1200px, calc(100% - 100px)); margin:auto; display:flex; justify-content:space-between; align-items:center; gap:20px; padding:23px 0; white-space:nowrap; }
.topic-strip-inner span { font:10px var(--mono); letter-spacing:1.4px; color:var(--muted); }
.topic-strip-inner b { font-size:15px; color:var(--sand); font-weight:400; }
.section { padding-top:134px; padding-bottom:140px; }
.section-heading { margin-bottom:57px; }
.section-index { display:flex; align-items:center; gap:15px; color:var(--green); font:10px var(--mono); letter-spacing:1.5px; margin-bottom:29px; }
.section-index-line { height:1px; width:37px; background:var(--green); opacity:.65; }
.section h2 { font:400 75px/1.04 var(--serif);font:400 clamp(50px,5.2vw,79px)/1.04 var(--serif); letter-spacing:-.8px; margin:0; }
.section-heading-row { display:flex; justify-content:space-between; align-items:flex-end; gap:60px; }
.section-heading-row p { max-width:295px; font-size:14px; line-height:1.8; color:var(--muted); margin:0 0 8px; }
.about-grid { display:grid;grid-template-columns:.98fr 1.02fr; gap:110px; }
.large-prose { font-family:var(--serif); font-size:34px;font-size:clamp(25px,2.5vw,36px); line-height:1.37; font-weight:400; letter-spacing:-.25px; }
.large-prose strong { color:var(--green); font-weight:400; }
.about-signature { margin-top:50px; font:italic 37px var(--serif); color:var(--ink); }
.about-signature span { display:inline-block; margin-left:8px; font:10px var(--mono); color:var(--ink-faint); letter-spacing:1px; }
.about-details p { color:var(--muted); font-size:14px; line-height:2; margin-bottom:17px; }
.about-tags { margin-top:25px;display:flex; flex-wrap:wrap; gap:8px; }
.about-tags span { padding:9px 13px; border:1px solid var(--line); font-size:11px; border-radius:2px; color:var(--muted); }
.academia-section { background:var(--paper-alt); }
.academic-top { display:grid; grid-template-columns:1.15fr .85fr; gap:20px; }
.uni-card { position:relative; padding:40px 42px 31px; min-height:440px; background:var(--dark); color:#f2f5ee; overflow:hidden; }
.uni-card:after { content:''; width:350px; height:350px; border:1px solid rgba(228,236,224,.15);border-radius:50%; position:absolute;right:-105px;top:30px;box-shadow:0 0 0 55px rgba(220,237,219,.035),0 0 0 111px rgba(220,237,219,.025);pointer-events:none; }
.uni-eyebrow { display:flex;justify-content:space-between;gap:20px;font:10px var(--mono);letter-spacing:1px;color:#d7d9cc; }
.uni-icon { position:absolute; right:70px; top:124px; width:100px;height:100px; color:#e5ece0;opacity:.38; }
.uni-school { display:block;margin-top:104px;font:11px var(--mono); letter-spacing:1.5px; color:#accbc0; }
.uni-card h3 { font:400 53px/1.04 var(--serif); letter-spacing:-.5px; margin:14px 0 17px; position:relative;z-index:1; }
.uni-card p { position:relative;z-index:1;font-size:12px;line-height:1.7;color:#c7d5cc;max-width:385px;margin:0 0 30px; }
.uni-footer { position:relative;z-index:1;border-top:1px solid rgba(230,237,224,.19); padding-top:19px; display:flex;justify-content:space-between;gap:10px; font-size:10px;color:#c6d4c9; }
.academia-metrics { display:grid;grid-template-rows:1fr 1fr;gap:20px; }
.metric-card { background:var(--card);padding:26px 32px;position:relative;overflow:hidden; min-height:196px; }
.metric-label { font:10px var(--mono);letter-spacing:1.2px;color:var(--muted); }
.metric-number { margin:7px 0 0;font:400 77px/.95 var(--serif);letter-spacing:-2px;color:var(--ink-strong); }
.metric-number span { font-size:32px;vertical-align:top;margin-left:2px; }
.metric-card p { margin:9px 0 0;color:var(--muted);font-size:12px; }
.metric-rule { position:absolute; bottom:0; left:0; right:0; height:5px;background:var(--line); }
.metric-rule span { display:block;background:var(--green);height:100%; }
.dark-metric { background:#d9e7d9; color:#1d332e; }
.dark-metric .metric-label,.dark-metric p { color:#405b50; }
.dark-metric .metric-number { color:#1d332e; }
.metric-scribble { position:absolute;right:31px;bottom:19px;font:italic 44px var(--serif);color:#5a8677;opacity:.45;transform:rotate(-8deg); }
.modules { margin-top:45px; }
.modules-title { display:flex;align-items:baseline;justify-content:space-between;gap:30px;margin-bottom:15px; }
.modules-title h3 { margin:0;font:400 33px var(--serif); }
.modules-title span { font:9px var(--mono);letter-spacing:1px;color:var(--ink-faint); }
.modules-table { width:100%; border-collapse:collapse; text-align:left; }
.modules-table th { font:10px var(--mono);letter-spacing:1.1px;color:var(--ink-faint);padding:17px 9px 15px; border-bottom:1px solid var(--ink); }
.modules-table td { border-bottom:1px solid var(--line);padding:18px 9px;font-size:13px; }
.modules-table td:first-child { font-weight:600; }
.modules-table td:nth-child(2) { font:11px var(--mono);color:var(--ink-faint); }
.modules-table th:nth-child(3),.modules-table td:nth-child(3) { text-align:center; }
.modules-table td strong { font-size:15px; }
.modules-table th:nth-child(4),.modules-table td:nth-child(4) { width:20%; }
.grade-track { background:var(--line); height:5px; border-radius:6px;overflow:hidden; }
.grade-track span { display:block; height:100%;background:var(--green); }
.prior-education { color:var(--muted);font-size:12px;line-height:1.8;margin:22px 9px 0; }
.prior-education strong { color:var(--ink); }
.academia-bottom { margin-top:53px; padding-top:31px;border-top:1px solid var(--line);display:grid;grid-template-columns:.85fr 1.15fr;gap:50px; }
.academia-bottom h3 { font:400 36px var(--serif); margin:13px 0 0; }
.skill-collections { display:grid;gap:22px; }
.skill-collections span { font:10px var(--mono); letter-spacing:1px;color:var(--green); }
.skill-collections p { margin:8px 0 0;font-size:13px;line-height:1.8; }
.project-grid { display:grid;grid-template-columns:repeat(2,1fr);gap:25px; }
.project-card { background:var(--card);border:1px solid var(--line);transition:transform .25s,box-shadow .25s; }
.project-card:hover { transform:translateY(-5px);box-shadow:var(--shadow); }
.project-visual { height:300px;position:relative;overflow:hidden;padding:24px 29px;background:#e1ece5;color:#31554e; }
.visual-top, .visual-bottom { display:flex;align-items:center;justify-content:space-between;font:10px var(--mono);letter-spacing:1.2px; }
.project-visual-f1 svg { margin:10px 0 -5px; width:100%;height:212px; }
.visual-bottom { position:absolute; bottom:22px;left:29px;right:29px; }
.visual-bottom span:nth-child(2) { font:italic 24px var(--serif); }
.project-visual-ems { background:#dfe7e0; }
.mock-window { position:relative;left:26px;top:30px;height:215px;width:95%;border:1px solid #9cb5a7;background:#f8fbf7;box-shadow:0 12px 30px rgba(18,51,38,.12); }
.window-toolbar { height:34px;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:0 13px;border-bottom:1px solid #dbe5dd;color:#87998d;font:8px var(--mono);letter-spacing:1px; }
.window-dots { display:flex;gap:5px; }
.window-dots i { display:block;width:7px;height:7px;border-radius:50%;background:#c6d8ca; }
.window-dots i:first-child { background:#e3c09b; }
.window-content { height:180px;display:flex; }
.mock-sidebar { width:67px;background:#e8efe9;border-right:1px solid #dbe4da;padding:20px 11px;display:flex;flex-direction:column;gap:14px; }
.mock-sidebar div { height:6px;width:37px;background:#a8bcad;border-radius:3px; }
.mock-sidebar div:nth-child(2) { background:#759783; }
.mock-sidebar div:last-child { width:24px; }
.mock-main { flex:1;padding:18px 22px; }
.mock-title { height:10px;width:55%;background:#8da99b;border-radius:3px;margin-bottom:20px; }
.mock-stat-row { display:flex;gap:8px;margin-bottom:20px; }
.mock-stat-row b { flex:1;height:48px;border:1px solid #d5e2d8;background:#eff5ee; }
.mock-stat-row b:nth-child(2) { background:#dcece0; }
.mock-list { display:flex;flex-direction:column;gap:9px; }
.mock-list span { height:7px;width:100%;background:#e0eae0;border-radius:2px; }
.mock-list span:nth-child(even) { width:77%; }
.project-body { padding:34px 35px 35px; }
.project-overline { font:10px var(--mono);letter-spacing:.8px;color:var(--green); }
.project-overline span { color:var(--sand);margin:0 7px; }
.project-body h3 { font:400 44px/1.05 var(--serif);font:400 clamp(34px,3.1vw,46px)/1.05 var(--serif);margin:19px 0 16px;letter-spacing:-.5px; }
.project-body p { min-height:113px;font-size:13px;line-height:1.86;color:var(--muted);margin-bottom:23px; }
.project-tech { display:flex; flex-wrap:wrap;gap:7px; }
.project-tech span { padding:8px 11px;background:var(--paper-alt);font:10px var(--mono);color:var(--muted); }
.text-link { display:inline-flex;align-items:center;gap:20px;font-size:12px;font-weight:700;border-bottom:1px solid var(--green);padding-bottom:8px;transition:color .2s; }
.project-body .text-link { margin-top:30px; }
.text-link span { font-size:17px; }
.projects-elsewhere { text-align:center; padding-top:34px;color:var(--muted);font-size:13px; }
.projects-elsewhere a { font-weight:700;color:var(--green);border-bottom:1px solid var(--green);padding-bottom:3px; }
.writing-section { background:var(--paper-alt); }
.writing-grid { display:grid;grid-template-columns:1fr 1fr;gap:22px; }
.writing-column { background:var(--card);padding:36px 38px 38px;min-height:365px; }
.writing-column-head { display:flex;align-items:center;justify-content:space-between; }
.writing-column-head > div { display:flex;align-items:center;gap:12px; }
.writing-icon { width:41px;height:41px;display:grid;place-items:center;border:1px solid var(--line);font:italic 25px var(--serif);color:var(--green); }
.writing-column-head span { font:10px var(--mono);letter-spacing:1px;color:var(--green); }
.writing-counter { font:22px var(--serif) !important;color:var(--ink-faint) !important; }
.writing-column h3 { font:400 36px var(--serif);margin:26px 0 14px; }
.writing-column > p { font-size:13px;line-height:1.8;color:var(--muted);max-width:410px; }
.content-items { margin-top:25px; }
.empty-content { border-top:1px solid var(--line);padding-top:22px;display:flex;gap:17px;align-items:center; }
.empty-illustration { flex:0 0 47px; width:47px;height:47px;display:grid;place-items:center;background:var(--paper-alt);border-radius:50%;font-size:25px;color:var(--green); }
.empty-content strong,.empty-content span { display:block; }
.empty-content strong { font-size:12px;font-weight:700;margin-bottom:6px; }
.empty-content div > span { font-size:11px;color:var(--ink-faint); }
.editorial-entry { margin-top:19px;padding-top:18px;border-top:1px solid var(--line); }
.entry-number { color:var(--green);font:10px var(--mono);letter-spacing:1px;text-transform:uppercase; }
.editorial-entry h4 { font:400 26px var(--serif);margin:9px 0; }
.editorial-entry p { font-size:12px;line-height:1.8;color:var(--muted); }
.entry-bottom { display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:12px; }
.entry-bottom>span { color:var(--ink-faint);font:10px var(--mono); }
.writing-quote { margin-top:22px; min-height:145px;padding:28px 37px;position:relative;display:flex;align-items:center;gap:26px;overflow:hidden;background:#dce7dc;color:#284e43; }
.writing-quote > span { font:90px/.5 var(--serif);color:#86ab98; }
.writing-quote p { position:relative;z-index:1;font:italic 28px/1.2 var(--serif);max-width:650px;margin:0; }
.quote-motif { position:absolute;right:40px;top:35px;font:italic 70px var(--serif);color:#84aa96;opacity:.22; }
.tutoring-section { padding-bottom:135px; }
.tutoring-hero { display:grid;grid-template-columns:1.2fr .8fr;gap:30px;background:#24463f;color:#f2f6ed;padding:53px 60px 45px;min-height:350px;align-items:center; }
.tutoring-label { font:10px var(--mono);letter-spacing:1px;color:#c2d4c7; }
.tutoring-hero h3 { font:400 48px/1.08 var(--serif);margin:17px 0; }
.tutoring-hero p { max-width:555px;font-size:13px;line-height:1.9;color:#d8e3d9; }
.button-light { background:#e8efe5;color:#23443a;margin-top:12px; }
.tutoring-stamp { position:relative;justify-self:center;border:1px solid rgba(233,243,226,.35);border-radius:50%;height:225px;width:225px;display:flex;flex-direction:column;justify-content:center;align-items:center;transform:rotate(8deg); }
.tutoring-stamp:after { content:'';position:absolute;inset:11px;border:1px dashed rgba(233,243,226,.29);border-radius:50%; }
.tutoring-stamp span { font:9px var(--mono);letter-spacing:1px;color:#dce6dd; }
.tutoring-stamp strong { font:italic 83px/.95 var(--serif);font-weight:400; }
.tutoring-stamp span:nth-of-type(2) { font-size:8px; }
.stamp-lines { display:flex;gap:5px;margin-top:15px; }
.stamp-lines i { height:1px;width:19px;background:#e9f0e9; }
.tutoring-features { display:grid;grid-template-columns:repeat(3,1fr);gap:0;padding:39px 0 44px; }
.tutoring-features>div { padding-right:36px;padding-left:36px;border-right:1px solid var(--line); }
.tutoring-features>div:first-child { padding-left:0; }
.tutoring-features>div:last-child { border:0; }
.feature-number { color:var(--green);font:11px var(--mono); }
.tutoring-features h4 { font:400 26px var(--serif);margin:17px 0 10px; }
.tutoring-features p { font-size:12px;line-height:1.8;color:var(--muted);margin:0; }
.resource-panel { border:1px solid var(--line);padding:29px;display:flex;align-items:center;gap:27px; }
.resource-panel-icon { flex:0 0 65px;height:65px;display:grid;place-items:center;background:var(--green-light);color:var(--green); }
.resource-panel-icon svg { width:37px;height:37px; }
.resource-panel>div:nth-child(2) { flex:1; }
.resource-panel>div:nth-child(2) span { font:10px var(--mono);letter-spacing:1px;color:var(--green); }
.resource-panel h3 { font:400 30px var(--serif);margin:8px 0; }
.resource-panel p { font-size:12px;color:var(--muted);line-height:1.7;margin:0; }
.resource-status { font:10px var(--mono);white-space:nowrap;padding:12px 15px;background:var(--paper-alt);color:var(--ink-faint); }
.resource-list:not(:empty) { margin-top:18px;border-top:1px solid var(--line); }
.resource-item { display:flex;justify-content:space-between;align-items:center;gap:15px;padding:19px 6px;border-bottom:1px solid var(--line); }
.resource-item strong,.resource-item div>span { display:block; }
.resource-item strong { font-size:13px;margin-bottom:5px; }
.resource-item div>span { font-size:11px;color:var(--muted); }
.resource-download { font-size:11px;color:var(--green); }
.contact-section { background:#172d29;color:#edf3ed;padding:73px 0 48px; }
.contact-top { display:flex;justify-content:space-between;gap:40px;align-items:flex-start; }
.contact-index { color:#accfc2; }
.contact-index .section-index-line { background:#accfc2; }
.contact-top>p { max-width:275px;font:10px/1.8 var(--mono);letter-spacing:1px;text-align:right;color:#acc8bb; }
.contact-main { display:grid;grid-template-columns:1.2fr .8fr;gap:65px;align-items:end;padding:55px 0 65px; }
.contact-main h2 { font:400 104px/.95 var(--serif);font:400 clamp(64px,7.5vw,107px)/.95 var(--serif);letter-spacing:-1px;margin-bottom:26px; }
.contact-main h2 em { color:#b7d7c3; }
.contact-email { display:inline-flex;align-items:center;gap:15px;max-width:100%;font-size:clamp(13px,1.5vw,19px);padding-bottom:9px;border-bottom:1px solid #7a9a87;overflow-wrap:anywhere; }
.contact-email:hover { color:#c0ddc8; }
.contact-aside { padding-left:38px;border-left:1px solid rgba(218,235,220,.22); }
.contact-asterisk { color:#c0dec2;font:80px/1 var(--serif);margin-bottom:17px; }
.contact-aside p { font-size:13px;line-height:1.95;color:#c4d4c8;max-width:300px; }
.contact-phone { display:inline-block;color:#edf3ed;font-size:14px;font-weight:600;margin-top:10px;border-bottom:1px solid #648a75;padding-bottom:7px; }
.contact-bottom { display:flex;gap:20px;border-top:1px solid rgba(220,234,221,.23);padding-top:27px; }
.contact-bottom a { display:flex;justify-content:space-between;gap:60px;align-items:center;padding:8px 21px 8px 0;margin-right:30px;font:10px var(--mono);letter-spacing:1.2px;color:#e7eee8; }
.contact-bottom span { font-size:17px; }
.site-footer { background:#10211e;color:#b2c6b8;padding:23px 0; }
.site-footer .container { display:flex;align-items:center;gap:27px; }
.footer-brand { font:italic 31px var(--serif);color:#eef5ed;letter-spacing:-2px; }
.site-footer .container>span:nth-child(2) { font-size:11px; }
.site-footer a { margin-left:auto;font:9px var(--mono);letter-spacing:1.1px; }
@media(max-width:1130px) {
  .container,.topic-strip-inner { width:min(1150px,calc(100% - 68px)); }
  .desktop-nav { gap:17px; }
  .desktop-nav a { font-size:11.5px; }
  .header-inner { gap:15px; }
  .hero { gap:42px; }
  .hero h1 { font-size:83px;font-size:clamp(65px,6vw,87px); }
  .about-grid { gap:60px; }
}
@media(max-width:960px) {
  .desktop-nav,.header-contact { display:none; }
  .menu-toggle { display:flex; }
  .brand-wordmark { font-size:14px; }
  .header-inner { width:calc(100% - 56px);grid-template-columns:1fr auto; }
  .hero { padding-top:65px;padding-bottom:95px; min-height:0; gap:34px; }
  .hero h1 { font-size:79px;font-size:clamp(62px,7.3vw,86px); }
  .hero-lead { font-size:14px; }
  .hero-socials { margin-top:44px; }
  .photo-caption { font-size:8px;gap:7px; }
  .float-math { padding:13px;bottom:72px;left:-15px; }
  .float-math span { font-size:18px; }
  .section { padding-top:105px;padding-bottom:110px; }
  .section h2 { font-size:65px;font-size:clamp(49px,6.4vw,69px); }
  .about-grid { gap:42px; }
  .uni-card h3 { font-size:44px; }
  .metric-number { font-size:69px; }
  .project-body h3 { font-size:37px; }
  .project-body p { min-height:140px; }
  .writing-column { padding:29px 27px; }
  .writing-column h3 { font-size:31px; }
}
@media(max-width:700px) {
  html { scroll-padding-top:74px; }
  .container,.topic-strip-inner { width:calc(100% - 42px); }
  .site-header { height:72px; }
  .header-inner { width:calc(100% - 42px); }
  .brand-mark { font-size:34px; }
  .mobile-nav { top:71px; }
  .hero { display:flex;flex-direction:column;align-items:stretch;padding-top:50px;padding-bottom:94px;gap:40px; }
  .hero h1 { font-size:72px;font-size:clamp(61px,13vw,94px);line-height:.95;margin:25px 0; }
  .hero-lead { max-width:520px; }
  .hero-socials { margin-top:35px; }
  .hero-visual { width:min(470px,90%);align-self:center;margin-top:13px;padding:10px 0 4px; }
  .hero-visual:before { inset:-9px -15px 60px 35px; }
  .photo-shell { border-radius:160px 5px 5px 5px;aspect-ratio:.92; }
  .photo-decoration { display:none; }
  .photo-caption { font-size:9px; }
  .float-math { left:-18px;bottom:70px; }
  .scroll-cue { bottom:27px; }
  .topic-strip-inner { width:max-content;gap:22px;padding-left:21px;padding-right:21px; }
  .section { padding-top:84px;padding-bottom:94px; }
  .section-heading { margin-bottom:37px; }
  .section h2 { font-size:58px;font-size:clamp(48px,10vw,69px); }
  .section-heading-row { display:block; }
  .section-heading-row p { max-width:500px;margin-top:22px; }
  .about-grid { grid-template-columns:1fr; gap:27px; }
  .about-signature { margin-top:25px; }
  .large-prose { font-size:30px; }
  .academic-top,.project-grid,.writing-grid { grid-template-columns:1fr; }
  .uni-card { padding:35px 29px;min-height:390px; }
  .uni-card h3 { font-size:49px; }
  .uni-icon { right:45px;top:116px; }
  .academia-metrics { grid-template-columns:1fr 1fr;grid-template-rows:auto;gap:12px; }
  .metric-card { padding:20px 17px;min-height:190px; }
  .metric-number { font-size:59px; }
  .metric-number span { font-size:25px; }
  .metric-card p { font-size:11px; }
  .metric-scribble { font-size:27px;right:15px; }
  .modules-title { display:block; }
  .modules-title span { display:block;margin-top:10px; }
  .modules-table { min-width:580px; }
  .modules-table-wrap { overflow-x:auto; }
  .academia-bottom { grid-template-columns:1fr;gap:24px; }
  .project-visual { height:280px; }
  .project-body p { min-height:0; }
  .writing-column { min-height:0; }
  .writing-quote { padding:28px 22px; }
  .writing-quote p { font-size:24px; }
  .quote-motif { display:none; }
  .tutoring-hero { grid-template-columns:1fr;padding:37px 27px;gap:38px; }
  .tutoring-hero h3 { font-size:45px; }
  .tutoring-stamp { height:195px;width:195px; }
  .tutoring-stamp strong { font-size:70px; }
  .tutoring-features { grid-template-columns:1fr;padding:23px 0; }
  .tutoring-features>div,.tutoring-features>div:first-child { padding:20px 0;border-right:0;border-bottom:1px solid var(--line); }
  .resource-panel { flex-wrap:wrap;gap:14px;padding:21px; }
  .resource-panel>div:nth-child(2) { flex:1 1 calc(100% - 90px); }
  .resource-status { margin-left:0; }
  .contact-section { padding-top:64px; }
  .contact-top { display:block; }
  .contact-top>p { text-align:left;margin-top:12px; }
  .contact-main { grid-template-columns:1fr;gap:42px;padding:25px 0 46px; }
  .contact-main h2 { font-size:75px;font-size:clamp(60px,13vw,94px); }
  .contact-aside { padding-left:0;border:0; }
  .contact-asterisk { margin-bottom:5px; }
  .contact-bottom { flex-wrap:wrap; }
  .contact-bottom a { margin-right:12px;gap:12px; }
  .site-footer .container { gap:12px; }
  .site-footer .container>span:nth-child(2) { font-size:9px; }
}
@media(max-width:390px) {
  .hero h1 { font-size:57px; }
  .hero-socials { gap:12px; }
  .hero-socials a { font-size:11px; }
  .photo-caption { font-size:7px; }
  .metric-label { font-size:8px; }
  .metric-number { font-size:52px; }
  .uni-eyebrow { font-size:8px; }
  .project-body { padding:27px 25px; }
  .resource-panel-icon { flex-basis:50px;height:50px; }
  .resource-panel h3 { font-size:26px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none !important;animation:none !important; } }
